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.
Parameters:
s : t
t : t
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.
Parameters:
s : t
x : Term.t
val is_diseq : t -> Term.t -> Term.t -> Jst.t option
Check if two terms are known to be disequal.
Parameters:
s : t
x : Term.t
y : Term.t
val empty : t
The empty disequality context.
val is_empty : t -> bool
Check if the argument disequality context is empty.
Parameters:
s : t
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.
Parameters:
e : Fact.Equal.t
s : t
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).
Parameters:
d : Fact.Diseq.t
s : t
val diff : t -> t -> t
diff d1 d2 contains all disequalities in d1 not in d2.
Parameters:
d1 : t
d2 : t