lean4-htt/src/Lean/Data/LBool.lean
2020-12-13 16:30:07 -08:00

43 lines
812 B
Text

/-
Copyright (c) 2019 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura
-/
namespace Lean
inductive LBool where
| false
| true
| undef
deriving Inhabited, BEq
namespace LBool
def neg : LBool → LBool
| true => false
| false => true
| undef => undef
def and : LBool → LBool → LBool
| true, b => b
| a, _ => a
def toString : LBool → String
| true => "true"
| false => "false"
| undef => "undef"
instance : ToString LBool := ⟨toString⟩
end LBool
end Lean
def Bool.toLBool : Bool → Lean.LBool
| true => Lean.LBool.true
| false => Lean.LBool.false
@[inline] def toLBoolM {m : Type → Type} [Monad m] (x : m Bool) : m Lean.LBool := do
let b ← x
pure b.toLBool