Module D
module D: sig end
Disequality context.
Author(s): Harald Ruess
type t
Elements of type
D.t
represent sets of
variable disequalities.
val pp : t Pretty.printer
Pretty-printing.
Parameters: |
fmt |
: |
Format.formatter
|
s |
: |
Set.t Term.Map.t
|
|
val eq : t -> t -> bool
eq s t
holds iff s
and t
are 'physically' equal.
If eq s t
equals false
, then it is not necessarily
true that s
and t
are not logically equivalent.
module Set: sig end
Set of disequal terms together with justifications.
val diseqs : t -> Term.t -> Set.t
diseqs s x
returns set of disequalites of the form x <> y
such that x <> y
is represented in s
.
val is_diseq : t -> Term.t -> Term.t -> Jst.t option
Check if two terms are known to be disequal.
val empty : t
The empty disequality context.
val is_empty : t -> bool
Check if the argument disequality context is empty.
val merge : Fact.Equal.t -> t -> t * Fact.Diseq.Set.t
merge e s
propagates an equality
e
of the form
x = y
into the disequality context by computing a new disequality
context which is equal to
s
except that every
x
has been
replaced by
y
. Raises
Exc.Inconsistent
if
x <> y
is
valid in
s
. The second argument returns the newly generated
disequalities.
val add : Fact.Diseq.t -> t -> t * Fact.Diseq.Set.t
add d s
adds a disequality d
of the form
x <> y
to the disequality context s
. As a side
effect, both x
and y
are added to the set D.changed
.
The second argument returns newly generated disequalities (at most one).
val diff : t -> t -> t
diff d1 d2
contains all disequalities in d1
not in d2
.