sig
type t = private
[< `Bot
| `It of
[ `And | `Or ] * Variable.t * Indexes.t * Indexes.t * Schema.t
| `Lit of Literal.t
| `Op of [ `And | `Equiv | `Imply | `Or | `Xor ] * Schema.t * Schema.t
| `Top ]
val bot : Schema.t
val top : Schema.t
val pos_lit : Proposition.t -> Indexes.t -> Schema.t
val neg_lit : Proposition.t -> Indexes.t -> Schema.t
val conj : Schema.t -> Schema.t -> Schema.t
val disj : Schema.t -> Schema.t -> Schema.t
val xor : Schema.t -> Schema.t -> Schema.t
val equiv : Schema.t -> Schema.t -> Schema.t
val imply : Schema.t -> Schema.t -> Schema.t
val it_conj : Variable.t -> Indexes.t -> Indexes.t -> Schema.t -> Schema.t
val it_disj : Variable.t -> Indexes.t -> Indexes.t -> Schema.t -> Schema.t
val to_string : Schema.t -> string
val list_to_string : Schema.t list -> string
val print : Schema.t -> unit
val equal : Schema.t -> Schema.t -> bool
val total_compare : Schema.t -> Schema.t -> int
val max_bound : ?acc:Indexes.t option -> Schema.t -> Indexes.t option
val contains_iterations : Schema.t -> bool
val neg : Schema.t -> Schema.t
val unfold_and_once :
var:Variable.t ->
sch:Schema.t -> t1:Indexes.t -> t2:Indexes.t -> Schema.t
val unfold_or_once :
var:Variable.t ->
sch:Schema.t -> t1:Indexes.t -> t2:Indexes.t -> Schema.t
exception Non_regular
val get_param : Schema.t -> Variable.t option
val is_regular : Schema.t -> bool
val compute_schema : Schema.t -> int -> Formula.t
val expr_involving_param : Schema.t -> Indexes.t option
type purable = t
val purity_add :
purable -> ?range:Purity.range option -> pur:Purity.t -> Purity.t
val purify :
purable -> cstr:Constraint.t -> pur:Purity.t -> Modified.t * purable
type variable = Variable.t
type term = Indexes.t
type substituable = t
val substitute : substituable -> var:variable -> by:term -> substituable
module PropSubs :
sig
type variable = Proposition.t
type term = Proposition.t
type substituable = t
val substitute :
substituable -> var:variable -> by:term -> substituable
end
module LoopingMap :
sig
type loopable = t
type 'a t
val empty : 'a t
val add : 'a t -> key:loopable -> data:'a -> 'a t
val find : 'a t -> key:loopable -> 'a option
end
end