sig
  type primitive =
      L_eq
    | L_neq
    | I_add
    | I_sub
    | I_mul
    | I_div
    | I_mod
    | I_opp
    | I_lt
    | I_leq
    | I_lsl
    | I_lsr
    | I_band
    | I_bor
    | I_bxor
    | I_bnot
    | R_add
    | R_sub
    | R_mul
    | R_div
    | R_opp
    | R_lt
    | R_leq
    | R_of_I
    | I_of_R
    | B_and
    | B_or
    | B_not
  type t =
      Ttrue
    | Tfalse
    | Tint of string
    | Treal of string
    | Tprim of LogicRaw.TERM.primitive * LogicRaw.TERM.t list
    | Tcall of LogicId.id * LogicRaw.TERM.t list
    | Tgetfield of LogicRaw.TERM.t * LogicTau.field
    | Tsetfield of LogicRaw.TERM.t * LogicTau.field * LogicRaw.TERM.t
    | Taccess of LogicRaw.TERM.t * LogicRaw.TERM.t
    | Tupdate of LogicRaw.TERM.t * LogicRaw.TERM.t * LogicRaw.TERM.t
    | Tif of LogicRaw.TERM.t * LogicRaw.TERM.t * LogicRaw.TERM.t
    | Tlet of LogicRaw.VAR.t * LogicRaw.TERM.t * LogicRaw.TERM.t
    | Tvar of LogicRaw.VAR.t
  val iter : (LogicRaw.TERM.t -> unit) -> LogicRaw.TERM.t -> unit
  val depend : LogicId.Iset.t -> LogicRaw.TERM.t -> LogicId.Iset.t
  val equal : LogicRaw.TERM.t -> LogicRaw.TERM.t -> bool
  val different : LogicRaw.TERM.t -> LogicRaw.TERM.t -> bool
  val i_compute :
    (My_bigint.t -> My_bigint.t -> My_bigint.t) ->
    string -> string -> LogicRaw.TERM.t
  val i_compare : (int -> bool) -> string -> string -> LogicRaw.TERM.t
  val e_not : LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_and : LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_or : LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_zero : LogicRaw.TERM.t
  val e_int : int -> LogicRaw.TERM.t
  val e_prim :
    LogicRaw.TERM.primitive -> LogicRaw.TERM.t list -> LogicRaw.TERM.t
  val e_call : LogicId.id -> LogicRaw.TERM.t list -> LogicRaw.TERM.t
  val e_cond :
    LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_getfield : LogicRaw.TERM.t -> LogicTau.field -> LogicRaw.TERM.t
  val e_setfield :
    LogicRaw.TERM.t -> LogicTau.field -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_access : LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_update :
    LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t -> LogicRaw.TERM.t
  val e_hasvar : LogicRaw.VAR.t list -> LogicRaw.TERM.t -> bool
end