Module Partition


module Partition: sig  end
Equalities and disequalities over variables and constraints on variables


Equalities and disequalities over variables and constraints on variables


type t = {
   mutable v : V.t;
   mutable d : D.t;
   mutable c : C.t;
}
val empty : t
Empty partition.
val pp : Format.formatter -> t -> unit
Pretty-printing
Parameters:
fmt : Format.formatter
s : t
val eq : t -> t -> bool
Test if states are unchanged.
Parameters:
s : t
t : t


Changed variables



type changed = {
   chv : Term.Set.t;
   chd : Term.Set.t;
   chc : Term.Set.t;
}
val nochange : changed
val is_unchanged : changed -> bool
Parameters:
ch : changed


Accessors


val v_of : t -> V.t
Parameters:
s : t
val d_of : t -> D.t
Parameters:
s : t
val c_of : t -> C.t
Parameters:
s : t
val v : t -> Term.t -> Term.t * Fact.justification option
Canonical variables module s.
Parameters:
s : t
val d : t -> Term.t -> (Term.t * Fact.justification option) list
All disequalities of some variable x.
Parameters:
s : t
val c : t -> Term.t -> Sign.t * Fact.justification option
Constraint of a variable.
Parameters:
s : t


Equality test


val is_equal : t -> Term.t -> Term.t -> Three.t
Parameters:
s : t
x : Term.t
y : Term.t


Updates


val update_v : t -> V.t -> t
Parameters:
p : t
v : V.t
val update_d : t -> D.t -> t
Parameters:
p : t
d : D.t
val update_c : t -> C.t -> t
Parameters:
p : t
c : C.t
val copy : t -> t
Shallow copy for protecting against destructive updates.
Parameters:
p : t
val merge : Fact.equal -> t -> changed * t
Merge a variable equality.
Parameters:
e : Fact.equal
s : t
val add : Fact.cnstrnt -> t -> changed * t
Adding a constraint
Parameters:
c : Fact.cnstrnt
s : t
val diseq : Fact.diseq -> t -> changed * t
Add and propagate disequalities of the form x <> y.
Parameters:
d : Fact.diseq
s : t
val gc : (Term.t -> bool) -> t -> t
Garbage collection.
Parameters:
f : Term.t -> bool
s : t