Literal.Make
module Sem : Xliteral.S
type elt = Sem.t
The type of semantic elements literals.
val pp : t Fmt.t
Pretty-printer for literals.
val hash : t -> int
Hash function for literals.
Equality of literals. Note that this does not try to look into the semantic content of syntaxic literals: x = y
as a term and x = y
as a semantic literal (where x
and y
are semantic values) are distinct.
normal_form l
returns the normal form of l
. The normal form of l
is a pair l', is_neg
such that:
l'
is neg l
if is_neg
is true
l'
is l
if is_neg
is false
normal_form l'
is l', false
val is_ground : t -> bool
normal_form l
returns the normal form of l
. The normal form of l
is a pair l', is_neg
such that:
l'
is neg l
if is_neg
is true
l'
is l
if is_neg
is false
normal_form l'
is l', false
is_ground l
is always true
if l
is a semantic literal, and otherwise is true
iff the syntaxic literal is ground (does not contain free variables nor free type variables).