package smtml

  1. Overview
  2. Docs
type t = expr Hc.hash_consed

Term definitions of the abstract syntax

and expr =
  1. | Val of Value.t
  2. | Ptr of int32 * t
  3. | Symbol of Symbol.t
  4. | List of t list
  5. | Array of t array
  6. | Tuple of t list
  7. | App : [> `Op of string ] * t list -> expr
  8. | Unop of Ty.t * Ty.unop * t
  9. | Binop of Ty.t * Ty.binop * t * t
  10. | Triop of Ty.t * Ty.triop * t * t * t
  11. | Relop of Ty.t * Ty.relop * t * t
  12. | Cvtop of Ty.t * Ty.cvtop * t
  13. | Extract of t * int * int
  14. | Concat of t * t
val equal : t -> t -> bool
val hash : t -> int
val make : expr -> t
val (@:) : expr -> Ty.t -> t
  • deprecated Please use 'make' instead
val view : t -> expr
val ty : t -> Ty.t
val mk_symbol : Symbol.t -> t
val is_symbolic : t -> bool
val get_symbols : t list -> Symbol.t list
val negate_relop : t -> (t, string) Stdlib.Result.t
val pp : Stdlib.Format.formatter -> t -> unit
val pp_smt : Stdlib.Format.formatter -> t list -> unit
val pp_list : Stdlib.Format.formatter -> t list -> unit
val to_string : t -> string
val value : Value.t -> t
val unop : Ty.t -> Ty.unop -> t -> t

Smart unop constructor, applies simplifications at constructor level

val unop' : Ty.t -> Ty.unop -> t -> t

Dumb unop constructor, no simplifications

val binop : Ty.t -> Ty.binop -> t -> t -> t

Smart binop constructor, applies simplifications at constructor level

val binop' : Ty.t -> Ty.binop -> t -> t -> t

Dumb binop constructor, no simplifications

val triop : Ty.t -> Ty.triop -> t -> t -> t -> t

Smart triop constructor, applies simplifications at constructor level

val triop' : Ty.t -> Ty.triop -> t -> t -> t -> t

Dumb triop constructor, no simplifications

val relop : Ty.t -> Ty.relop -> t -> t -> t

Smart relop constructor, applies simplifications at constructor level

val relop' : Ty.t -> Ty.relop -> t -> t -> t

Dumb relop constructor, no simplifications

val cvtop : Ty.t -> Ty.cvtop -> t -> t

Smart relop constructor, applies simplifications at constructor level

val cvtop' : Ty.t -> Ty.cvtop -> t -> t

Dumb cvtop constructor, no simplifications

val extract : t -> high:int -> low:int -> t

Smart extract constructor, applies simplifications at constructor level

val extract' : t -> high:int -> low:int -> t

Dumb extract constructor, no simplifications

val concat : t -> t -> t

Smart concat constructor, applies simplifications at constructor level

val concat' : t -> t -> t

Dumb concat constructor, no simplifications

val simplify : t -> t

Applies expression simplifications until a fixpoint

module Hc : sig ... end
module Bool : sig ... end
module Bitv : sig ... end
module Fpa : sig ... end
OCaml

Innovation. Community. Security.