sig
type t
type range = Variable.t * Indexes.t * Indexes.t
val empty : Purity.t
val add :
?range:Purity.range option -> lit:Literal.t -> Purity.t -> Purity.t
val merge : Purity.t -> Purity.t -> Purity.t
val is_pure : cstr:Constraint.t -> pur:Purity.t -> Literal.t -> bool
module type Purable =
sig
type purable
val purity_add :
Purity.Purable.purable ->
?range:Purity.range option -> pur:Purity.t -> Purity.t
val purify :
Purity.Purable.purable ->
cstr:Constraint.t ->
pur:Purity.t -> Modified.t * Purity.Purable.purable
end
end