Module LogicRaw.TERM


module TERM: sig .. end


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 primitive * t list
| Tcall of LogicId.id * t list
| Tgetfield of t * LogicTau.field
| Tsetfield of t * LogicTau.field * t
| Taccess of t * t
| Tupdate of t * t * t
| Tif of t * t * t
| Tlet of LogicRaw.VAR.t * t * t
| Tvar of LogicRaw.VAR.t
val iter : (t -> unit) -> t -> unit
val depend : LogicId.Iset.t -> t -> LogicId.Iset.t
val equal : t -> t -> bool
val different : t -> t -> bool
val i_compute : (My_bigint.t -> My_bigint.t -> My_bigint.t) ->
string -> string -> t
val i_compare : (int -> bool) -> string -> string -> t
val e_not : t -> t
val e_and : t -> t -> t
val e_or : t -> t -> t
val e_zero : t
val e_int : int -> t
val e_prim : primitive -> t list -> t
val e_call : LogicId.id -> t list -> t
val e_cond : t -> t -> t -> t
val e_getfield : t -> LogicTau.field -> t
val e_setfield : t -> LogicTau.field -> t -> t
val e_access : t -> t -> t
val e_update : t -> t -> t -> t
val e_hasvar : LogicRaw.VAR.t list -> t -> bool