Make.DThe type of domains for a single value.
This is an abstract type that is instanciated by the theory. Note that it is expected that this type can carry explanations.
equal d1 d2 returns true if the domains d1 and d2 are identical. Explanations should not be taken into consideration, i.e. two domains with different explanations but identical semantics content should compare equal.
val pp : t Fmt.tPretty-printer for domains.
exception Inconsistent of Explanation.tException raised by intersect when an inconsistency is detected.
val filter_ty : Ty.t -> boolFilter for the types of values this domain can be attached to.
type constant = NF.constantThe type of constant values.
val add_explanation : ex:Explanation.t -> t -> tadd_explanation ~ex d adds the justification ex to the domain d. The returned domain is identical to the domain of d, only the justifications are changed.
intersect d1 d2 returns a new domain d that subsumes both d1 and d2. Any explanation justifying that d1 and d2 apply to the same value must have been added to d1 and d2.
type var = NF.Composite.tThe type of (composite) variable this domain applies to.
type atom = NF.Atom.tThe type of atomic variables this domain applies to.