Module Congruence.FO
type term= Term.ttype tRepresents a congruence
val create : ?size:int -> unit -> tNew congruence.
- parameter size
a hint for the initial size of the hashtable.
val iter : t -> (mem:term -> repr:term -> unit) -> unitIterate on terms that are explicitely present in the congruence. The callback is given
mem, the term itself, andrepr, the current representative of the termmem.Invariant: when calling
iter cc f, iff ~mem ~repris called, thenfind cc mem == reprholds.
val iter_roots : t -> (term -> unit) -> unitIterate on the congruence classes' representative elements. Exactly one term per congruence class will be passed to the function.
val mk_eq : t -> term -> term -> tmk_eq congruence t1 t2asserts thatt1 = t2belongs to the congruence
val is_eq : t -> term -> term -> boolReturns true if the two terms are equal in the congruence. This updates the congruence, because the two terms need to be added.
val pp_debug : t CCFormat.printer