type t
= term
type view
=
| True |
| False |
| Atom of t |
| Eq of t * t |
| Neq of t * t |
| Equiv of t * t |
| Xor of t * t |
| Imply of t * t |
| And of t list |
| Or of t list |
| Not of t |
| Forall of t Var.t * t |
| Exists of t Var.t * t |
val view : t -> view
val true_ : t
val false_ : t
val atom : t -> t
val eq : ?loc:location -> t -> t -> t
val neq : ?loc:location -> t -> t -> t
val equiv : ?loc:location -> t -> t -> t
val xor : ?loc:location -> t -> t -> t
val imply : ?loc:location -> t -> t -> t
val and_ : ?loc:location -> t list -> t
val or_ : ?loc:location -> t list -> t
val not_ : ?loc:location -> t -> t
val ite : ?loc:location -> t -> t -> t -> t
val forall : ?loc:location -> t Var.t -> t -> t
val exists : ?loc:location -> t Var.t -> t -> t
val eq_or_equiv : t -> t -> t
val neq_or_xor : t -> t -> t
val forall_l : ?loc:location -> t Var.t list -> t -> t
val exists_l : ?loc:location -> t Var.t list -> t -> t
val unfold_binder : Binder.t -> t -> t Var.t list * t
val unfold_forall : t -> t Var.t list * t
val close_forall : ?loc:location -> t -> t
val box_opaque : t -> t
val is_var : view -> bool