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