lean4-htt/src/Lean/Data/LBool.lean
2020-10-27 16:11:48 -07:00

52 lines
980 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
| false
| true
| undef
namespace LBool
instance : Inhabited LBool := ⟨false⟩
def neg : LBool → LBool
| true => false
| false => true
| undef => undef
def and : LBool → LBool → LBool
| true, b => b
| a, _ => a
def beq : LBool → LBool → Bool
| true, true => Bool.true
| false, false => Bool.true
| undef, undef => Bool.true
| _, _ => Bool.false
instance : HasBeq LBool := ⟨beq⟩
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