Module LogicRaw.PRED


module PRED: sig .. end


type relation =
| L_eq
| L_neq
| I_lt
| I_leq
| R_lt
| R_leq
| B_true
| B_false

type t =
| Ptrue
| Pfalse
| Prel of relation * LogicRaw.TERM.t list
| Pcall of LogicId.id * LogicRaw.TERM.t list
| Pimplies of t * t
| Pand of t * t
| Por of t * t
| Piff of t * t
| Pnot of t
| Pnamed of LogicId.id * t
| Pcond of LogicRaw.TERM.t * t * t
| Plet of LogicRaw.VAR.t * LogicRaw.TERM.t * t
| Pforall of LogicRaw.VAR.t * t
| Pexists of LogicRaw.VAR.t * t
val iter : (t -> unit) ->
(LogicRaw.TERM.t -> unit) -> t -> unit
val depend : LogicId.Iset.t -> t -> LogicId.Iset.t
val i_compare : (int -> bool) -> string -> string -> t
val p_call : LogicId.id -> LogicRaw.TERM.t list -> t
val val_of : t -> t
val cut : t -> t -> t
val p_not : t -> t
val p_and : t -> t -> t
val p_or : t -> t -> t
val p_xor : t -> t -> t
val p_implies : t -> t -> t
val p_cond : LogicRaw.TERM.t -> t -> t -> t
val p_iff : t -> t -> t
val p_bool : LogicRaw.TERM.t -> t
val p_prim : relation -> LogicRaw.TERM.t list -> t
val p_hasvar : LogicRaw.VAR.t list -> t -> bool
val p_forall : LogicRaw.VAR.t -> t -> t
val p_exists : LogicRaw.VAR.t -> t -> t
val p_let : LogicRaw.VAR.t -> LogicRaw.TERM.t -> t -> t