Module Algebra.Bool

Boolean semiring: ({false, true}, ∨, ∧, false, true).

This is the two-element Boolean semiring used by the residual NFA benchmark family. Concretely, zero = false, one = true, add = (∨), mul = (∧).

SMT encoding uses QF_BV (bitvector logic with 1-bit values), which is the tightest available logic for Boolean variables in Smtml.

module Log : sig ... end
module T : sig ... end
include module type of struct include T end
type t = Base.bool
val compare : t -> t -> Base.int
val equal : t -> t -> Base.bool
val hash_fold_t : Ppx_hash_lib.Std.Hash.state -> t -> Ppx_hash_lib.Std.Hash.state
val hash : t -> Ppx_hash_lib.Std.Hash.hash_value
val sexp_of_t : t -> Sexplib0.Sexp.t
include sig ... end
type comparator_witness = Base__Comparator.Make(T).comparator_witness
val comparator : (T.t, comparator_witness) Base__Comparator.comparator
val zero : bool
val one : bool
val rand : ?non_zero:Base.Float.t -> ?max:'a -> unit -> bool

Generate a random Boolean: true with probability non_zero (default 0.5).

val add : Base.bool -> Base.bool -> Base.bool
val mul : Base.bool -> Base.bool -> Base.bool
val elements : unit -> bool list
val to_string : Base.Bool.t -> string
module SMT : sig ... end