Module C
module C: sig end
update x i s
updates the constraint map with the constraint
x in i
and modifies the use lists accordingly. As a side-effect,
C.changed
is updated.
type t = (Sign.t * Fact.justification option) Term.Map.t
val empty : 'a Term.Map.t
val eq : 'a -> 'a -> bool
val cnstrnts : 'a -> 'a
val to_list : ('a * 'b) Term.Map.t -> (Term.Map.key * 'a) list
val pp : Format.formatter -> (Sign.t * 'a) Term.Map.t -> unit
Parameters: |
fmt |
: |
Format.formatter
|
s |
: |
(Sign.t * 'a) Term.Map.t
|
|
val apply : 'a Term.Map.t -> Term.Map.key -> 'a
Parameters: |
s |
: |
'a Term.Map.t
|
a |
: |
Term.Map.key
|
|
val cnstrnt : (Sign.t * Fact.justification option) Term.Map.t ->
Term.Map.key -> Fact.cnstrnt
val mem : Term.Map.key -> 'a Term.Map.t -> bool
Parameters: |
a |
: |
Term.Map.key
|
s |
: |
'a Term.Map.t
|
|
update x i s
updates the constraint map with the constraint x in i
and modifies the use lists accordingly. As a side-effect, C.changed
is updated.
val changed : Term.Set.t Pervasives.ref
val update : Fact.cnstrnt ->
(Sign.t * Fact.justification option) Term.Map.t ->
(Sign.t * Fact.justification option) Term.Map.t
val restrict : Term.Map.key -> ('a * 'b) Term.Map.t -> ('a * 'b) Term.Map.t
Restrict the map.
Parameters: |
a |
: |
Term.Map.key
|
s |
: |
('a * 'b) Term.Map.t
|
|
Asserting an inequality
val add : Fact.cnstrnt ->
(Sign.t * Fact.justification option) Term.Map.t ->
Term.Set.t * (Sign.t * Fact.justification option) Term.Map.t
val merge : Fact.equal ->
(Sign.t * Fact.justification option) Term.Map.t ->
Term.Set.t * (Sign.t * Fact.justification option) Term.Map.t
Propagating a variable equality.
val merge1 : Fact.equal ->
(Sign.t * Fact.justification option) Term.Map.t ->
(Sign.t * Fact.justification option) Term.Map.t
Propagate disequalities to the constraint part. The following
is not complete and should be extended to all finite constraints,
but the disequality sets might become rather large then.
val diseq : Fact.diseq ->
(Sign.t * 'a) Term.Map.t -> Term.Set.t * (Sign.t * 'a) Term.Map.t
val diseq1 : Fact.diseq -> (Sign.t * 'a) Term.Map.t -> (Sign.t * 'a) Term.Map.t