module ArithLit:sig
..end
typeterm =
Libzipperposition.FOTerm.t
type
op =
| |
Equal |
| |
Different |
| |
Less |
| |
Lesseq |
type 'm
divides = {
|
num : |
|
power : |
|
monome : |
|
sign : |
num^power divides monome
or not.type
t = private
| |
Binary of |
|||
| |
Divides of |
(* |
Arithmetic literal (on integers)
| *) |
typelit =
t
val equal : t -> t -> bool
val equal_com : t -> t -> bool
val compare : t -> t -> int
include Interfaces.HASH
val make : op -> Z.t Monome.t -> Z.t Monome.t -> t
val mk_eq : Z.t Monome.t -> Z.t Monome.t -> t
val mk_neq : Z.t Monome.t -> Z.t Monome.t -> t
val mk_less : Z.t Monome.t -> Z.t Monome.t -> t
val mk_lesseq : Z.t Monome.t -> Z.t Monome.t -> t
val mk_divides : ?sign:bool -> Z.t -> power:int -> Z.t Monome.t -> t
val mk_not_divides : Z.t -> power:int -> Z.t Monome.t -> t
val negate : t -> t
val sign : t -> bool
val polarity : t -> bool
val is_pos : t -> bool
val is_neg : t -> bool
val is_eq : t -> bool
val is_neq : t -> bool
val is_eqn : t -> bool
val is_ineq : t -> bool
val is_less : t -> bool
val is_lesseq : t -> bool
val is_divides : t -> bool
val pp : t CCFormat.printer
val pp_tstp : t CCFormat.printer
val to_string : t -> string
val fold : ('a -> term -> 'a) -> 'a -> t -> 'a
val map : (term -> term) -> t -> t
type'a
unif =subst:Libzipperposition.Substs.t ->
'a Libzipperposition.Scoped.t ->
'a Libzipperposition.Scoped.t -> Libzipperposition.Substs.t Sequence.t
val generic_unif : Z.t Monome.t unif -> t unif
val apply_subst : renaming:Libzipperposition.Substs.Renaming.t ->
Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t -> t
val apply_subst_no_renaming : Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t -> t
val apply_subst_no_simp : renaming:Libzipperposition.Substs.Renaming.t ->
Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t -> t
ArithLit.apply_subst
but takes care simplifying the
literal. In practice, mostly useful for comparison purpose.val matching : ?subst:Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t ->
t Libzipperposition.Scoped.t ->
Libzipperposition.Substs.t Sequence.t
val variant : ?subst:Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t ->
t Libzipperposition.Scoped.t ->
Libzipperposition.Substs.t Sequence.t
val unify : ?subst:Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t ->
t Libzipperposition.Scoped.t ->
Libzipperposition.Substs.t Sequence.t
val subsumes : ?subst:Libzipperposition.Substs.t ->
t Libzipperposition.Scoped.t ->
t Libzipperposition.Scoped.t ->
Libzipperposition.Substs.t Sequence.t
subst(lit_a)
implies lit_b
. This is
more general than matching.val are_variant : t -> t -> bool
val is_trivial : t -> bool
val is_absurd : t -> bool
val fold_terms : ?pos:Libzipperposition.Position.t ->
?vars:bool ->
?ty_args:bool ->
which:[< `All | `Max ] ->
ord:Libzipperposition.Ordering.t ->
subterms:bool ->
t -> (term * Libzipperposition.Position.t) Sequence.t
val max_terms : ord:Libzipperposition.Ordering.t -> t -> term list
val to_form : t -> Libzipperposition.FOTerm.t Libzipperposition.SLiteral.t
module Seq:sig
..end
module Focus:sig
..end
module Util:sig
..end