module Focus:sig..end
type 'a t = {
|
term : |
|||
|
coeff : |
(* |
Never 0
| *) |
|
rest : |
val get : 'a Monome.monome -> int -> 'a tInvalid_argument if the index is invalidval focus_term : 'a Monome.monome -> Monome.term -> 'a t optionval focus_term_exn : 'a Monome.monome -> Monome.term -> 'a t
val to_monome : 'a t -> 'a Monome.monomeval coeff : 'a t -> 'a
val term : 'a t -> Monome.term
val rest : 'a t -> 'a Monome.monome
val sum : 'a t -> 'a Monome.monome -> 'a t
val difference : 'a t -> 'a Monome.monome -> 'a t
val uminus : 'a t -> 'a t
val product : 'a t -> 'a -> 'a tInvalid_argument if the number is 0val map : ?term:(Monome.term -> Monome.term) ->
?coeff:('a -> 'a) ->
?rest:('a Monome.monome -> 'a Monome.monome) ->
'a t -> 'a t
val scale : Z.t t ->
Z.t t -> Z.t t * Z.t tval is_max : ord:Libzipperposition.Ordering.t -> 'a t -> boolval fold_m : pos:Libzipperposition.Position.t ->
'a Monome.monome ->
'b -> ('b -> 'a t -> Libzipperposition.Position.t -> 'b) -> 'bval apply_subst : renaming:Libzipperposition.Substs.Renaming.t ->
Libzipperposition.Substs.t ->
'a t Libzipperposition.Scoped.t -> 'a trest
because some of them may become equal to the focused term.val apply_subst_no_renaming : Libzipperposition.Substs.t ->
'a t Libzipperposition.Scoped.t -> 'a tf(x)* + 2a and f(y)* + f(z) + b (where focused terms are starred)
will yield both
(1,1,x=y) and (1,2,x=y=z) since f(z) becomes focused too.
Again, arith constants are not unifiable with unshielded variables.
val unify_ff : ?subst:Libzipperposition.Substs.t ->
'a t Libzipperposition.Scoped.t ->
'a t Libzipperposition.Scoped.t ->
('a t * 'a t * Libzipperposition.Substs.t)
Sequence.tval unify_mm : ?subst:Libzipperposition.Substs.t ->
'a Monome.monome Libzipperposition.Scoped.t ->
'a Monome.monome Libzipperposition.Scoped.t ->
('a t * 'a t * Libzipperposition.Substs.t)
Sequence.tm1 and m2. For each such unifier we
return the versions of m1 and m2 where the unified terms
are focused.val unify_self : ?subst:Libzipperposition.Substs.t ->
'a t Libzipperposition.Scoped.t ->
('a t * Libzipperposition.Substs.t) Sequence.t2f(x)+a, {x=y} for the monome f(x)+f(y)+a where f(x) is focused.val unify_self_monome : ?subst:Libzipperposition.Substs.t ->
'a Monome.monome Libzipperposition.Scoped.t ->
('a t * Libzipperposition.Substs.t) Sequence.tval pp : 'a t CCFormat.printer