Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file Congruence_intf.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445(* This file is free software, part of Zipperposition. See file "license" for more details. *)(** The congruence stores a finite representation of a set of (ground)
equations an inequalities. It is {b backtrackable}, ie one can go
back to a previous point as long as it is compatible with
a LIFO usage. *)moduletypeS=sigtypetermtypet(** Represents a congruence *)valcreate:?size:int->unit->t(** New congruence.
@param size a hint for the initial size of the hashtable. *)valiter:t->(mem:term->repr:term->unit)->unit(** Iterate on terms that are explicitly present in the congruence.
The callback is given [mem], the term itself, and [repr],
the current representative of the term [mem].
Invariant: when calling [iter cc f], if [f ~mem ~repr] is called,
then [find cc mem == repr] holds.
*)valiter_roots:t->(term->unit)->unit(** Iterate on the congruence classes' representative elements.
Exactly one term per congruence class will be passed to the
function. *)valadd:t->term->t(** Add the term to the congruence closure *)valmk_eq:t->term->term->t(** [mk_eq congruence t1 t2] asserts that [t1 = t2] belongs to
the congruence *)valis_eq:t->term->term->bool(** Returns true if the two terms are equal in the congruence. This
updates the congruence, because the two terms need to be added. *)valpp_debug:tCCFormat.printerend