## `bool`: boolean operations

    value prefix &  : bool -> bool -> bool
    value prefix && : bool -> bool -> bool
    value prefix or : bool -> bool -> bool
    value prefix || : bool -> bool -> bool

  The boolean and is written `e1 & e2` or `e1 && e2`. The boolean or is written `e1 or e2` or `e1 || e2`. Both constructs are sequential, left-to-right: `e2` is evaluated only if needed. Actually, `e1 & e2` is equivalent to `if e1 then e2 else false`, and `e1 or e2` is equivalent to `if e1 then true else e2`.

    value prefix not : bool -> bool

  The boolean negation.

    value string_of_bool : bool -> string

  Return a string representing the given boolean.