lean4-htt/src/Lean/Data/LBool.lean
2025-07-25 12:02:51 +00:00

49 lines
883 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
-/
module
prelude
public import Init.Data.ToString.Basic
public section
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