module Stdlib.Data.Bool.Base;
import Juvix.Builtin.V1.Bool open public;
import Stdlib.Data.Fixity open;
--- Logical negation.
not : Bool -> Bool
  | true := false
  | false := true;
syntax operator || logical;
--- Logical disjunction. Evaluated lazily. Cannot be partially applied
builtin bool-or
|| : Bool -> Bool -> Bool
  | true _ := true
  | false a := a;
syntax operator && logical;
--- Logical conjunction. Evaluated lazily. Cannot be partially applied.
builtin bool-and
&& : Bool -> Bool -> Bool
  | true a := a
  | false _ := false;
--- Returns the first argument if ;true;, otherwise it returns the second argument. Evaluated lazily. Cannot be partially applied.
builtin bool-if
ite : {A : Type} -> Bool -> A -> A -> A
  | true a _ := a
  | false _ b := b;
--- Logical disjunction.
or (a b : Bool) : Bool := a || b;
--- Logical conjunction.
and (a b : Bool) : Bool := a && b;
builtin assert
assert (x : Bool) : Bool := x;