Module Logtk.Int_lit
Arithmetic Integer Literal
type term= Term.t
Type Decls
Basics
val make : op -> Z.t Monome.t -> Z.t Monome.t -> tval make_no_simp : op -> Z.t Monome.t -> Z.t Monome.t -> tval mk_eq : Z.t Monome.t -> Z.t Monome.t -> tval mk_neq : Z.t Monome.t -> Z.t Monome.t -> tval mk_less : Z.t Monome.t -> Z.t Monome.t -> tval mk_lesseq : Z.t Monome.t -> Z.t Monome.t -> tval mk_divides : ?sign:bool -> Z.t -> power:int -> Z.t Monome.t -> tval mk_not_divides : Z.t -> power:int -> Z.t Monome.t -> tval negate : t -> tval sign : t -> boolval polarity : t -> boolUsed for the literal ordering
val is_pos : t -> boolval is_neg : t -> boolval is_eq : t -> boolval is_neq : t -> boolval is_eqn : t -> bool= or !=
val is_ineq : t -> bool< or <=
Operators
val generic_unif : ('subst, Z.t Monome.t) unif -> ('subst, t) unifGeneric unification/matching/variant, given such an operation on monomes
val apply_subst : Subst.Renaming.t -> Subst.t -> t Scoped.t -> tval apply_subst_no_simp : Subst.Renaming.t -> Subst.t -> t Scoped.t -> tSame as
apply_substbut takes careB NOTsimplifying the literal. In practice, mostly useful for comparison purpose.
val matching : ?subst:Subst.t -> t Scoped.t -> t Scoped.t -> Subst.t Iter.tchecks whether subst(lit_a) is equal to lit_b. Returns alternative substitutions s such that s(lit_a) = lit_b and s contains subst.
val variant : ?subst:Subst.t -> t Scoped.t -> t Scoped.t -> Subst.t Iter.tval unify : ?subst:Unif_subst.t -> t Scoped.t -> t Scoped.t -> Unif_subst.t Iter.tval subsumes : ?subst:Subst.t -> t Scoped.t -> t Scoped.t -> Subst.t Iter.tFind substitutions such that
subst(lit_a)implieslit_b. This is more general than matching.
val are_variant : t -> t -> boolval is_trivial : t -> boolval is_absurd : t -> boolval fold_terms : ?pos:Position.t -> ?vars:bool -> ?var_args:bool -> ?fun_bodies:bool -> ?ty_args:bool -> which:[< `Max | `All ] -> ord:Ordering.t -> subterms:bool -> t -> (term * Position.t) Iter.tval max_terms : ord:Ordering.t -> t -> term listMaximal terms of the literal
val to_form : t -> Term.t SLiteral.tConversion into a simple literal
Iterators
module Seq : sig ... endFocus on a Term
module Focus : sig ... endmodule Util : sig ... end