Module Blang.O

include Constructors
val base : 'a -> 'a t
val true_ : _ t
val false_ : _ t
val constant : Base.Bool.t -> _ t

function true -> true_ | false -> false_

val not_ : 'a t -> 'a t
val and_ : 'a t Base.List.t -> 'a t

n-ary And

val or_ : 'a t Base.List.t -> 'a t

n-ary Or

val if_ : 'a t -> 'a t -> 'a t -> 'a t

if_ if then else

val (&&) : 'a t -> 'a t -> 'a t
val (||) : 'a t -> 'a t -> 'a t
val (==>) : 'a t -> 'a t -> 'a t

a ==> b is "a implies b". This is not => to avoid making it look like a comparison operator.

val not : 'a t -> 'a t