mirror of
https://github.com/c-cube/sidekick.git
synced 2026-05-05 08:54:24 -04:00
40 lines
998 B
OCaml
40 lines
998 B
OCaml
(** Core builtins *)
|
|
|
|
open Types_
|
|
open Term
|
|
|
|
type const_view += C_bool | C_eq | C_ite | C_not | C_true | C_false | C_proof
|
|
|
|
val bool : store -> t
|
|
val proof : store -> t
|
|
val c_not : store -> t
|
|
val c_eq : store -> t
|
|
val c_ite : store -> t
|
|
val true_ : store -> t
|
|
val false_ : store -> t
|
|
val bool_val : store -> bool -> t
|
|
val const_decoders : Const.decoders
|
|
|
|
val eq : store -> t -> t -> t
|
|
(** [eq a b] is [a = b] *)
|
|
|
|
val not : store -> t -> t
|
|
|
|
val ite : store -> t -> t -> t -> t
|
|
(** [ite a b c] is [if a then b else c] *)
|
|
|
|
val is_eq : t -> bool
|
|
val is_bool : t -> bool
|
|
|
|
val abs : store -> t -> bool * t
|
|
(** [abs t] returns an "absolute value" for the term, along with the sign of
|
|
[t].
|
|
|
|
The idea is that we want to turn [not a] into [(false, a)], or [(a != b)]
|
|
into [(false, a=b)]. For terms without a negation this should return
|
|
[(true, t)]. *)
|
|
|
|
val as_bool_val : t -> bool option
|
|
|
|
val open_eq : t -> (t * t) option
|
|
(** [open_eq (a=b)] returns [Some (a,b)], [None] for other terms. *)
|