module Atom:sig..end
Interface for the atoms of the language
type t =
| |
True |
(* | the atom | *) |
| |
False |
(* | the atom | *) |
| |
Comp of |
(* | application of builtin predicate (=, <>, <, <=) | *) |
| |
Ite of |
(* |
| *) |
the type of atoms
val compare : t -> t -> intcompares two atoms. The order defined by this function is important
as it gives a way to efficiently find relevant substitutions in the module
Instantiation
val trivial_is_implied : t -> t -> intreturn true if it can be immediately said that the atom in the first
argument implies the second
val neg : t -> treturns the negation of the atom
val hash : t -> int
val equal : t -> t -> bool
val subst : Variable.subst -> t -> tApply the substitution given in argument to the atom. This function is not
very efficient in practice, prefer the use of ArrayAtom.apply_sust
when possible.
val has_var : Variable.t -> t -> boolreturns true if the atom contains the variable given in argument
val has_vars : Variable.t list -> t -> boolreturns true if the atom contains one of the variable given in
argument
val variables : t -> Variable.Set.treturns the existential variables of the given atom
val variables_proc : t -> Variable.Set.tsame as variables but only return skolemized variables of the form
#i
val print : Format.formatter -> t -> unitprints an atom