tweaks in bool.quox

This commit is contained in:
rhiannon morris 2023-08-12 10:28:19 +02:00
parent 5c4053e9d2
commit c5403a970e

View file

@ -1,34 +1,35 @@
load "misc.quox"; load "misc.quox"
namespace bool { namespace bool {
def0 Bool : ★ = {true, false}; def0 Bool : ★ = {true, false}
def if-dep : 0.(P : Bool → ★) → (b : Bool) → ω.(P 'true) → ω.(P 'false) → P b = def if-dep : 0.(P : Bool → ★) → (b : Bool) → ω.(P 'true) → ω.(P 'false) → P b =
λ P b t f ⇒ case b return b' ⇒ P b' of { 'true ⇒ t; 'false ⇒ f }; λ P b t f ⇒ case b return b' ⇒ P b' of { 'true ⇒ t; 'false ⇒ f }
def if : 0.(A : ★) → (b : Bool) → ω.A → ω.A → A = def if : 0.(A : ★) → Bool → ω.A → ω.A → A =
λ A ⇒ if-dep (λ _ ⇒ A); λ A ⇒ if-dep (λ _ ⇒ A)
def0 if-same : (A : ★) → (b : Bool) → (x : A) → if A b x x ≡ x : A = def0 if-same : (A : ★) → (b : Bool) → (x : A) → if A b x x ≡ x : A =
λ A b x ⇒ if-dep (λ b' ⇒ if A b' x x ≡ x : A) b (δ _ ⇒ x) (δ _ ⇒ x); λ A b x ⇒ if-dep (λ b' ⇒ if A b' x x ≡ x : A) b (δ _ ⇒ x) (δ _ ⇒ x)
def if2 : 0.(A B : ★) → (b : Bool) → ω.A → ω.B → if¹ ★ b A B = def if2 : 0.(A B : ★) → (b : Bool) → ω.A → ω.B → if¹ ★ b A B =
λ A B ⇒ if-dep (λ b ⇒ if-dep¹ (λ _ ⇒ ) b A B); λ A B ⇒ if-dep (λ b ⇒ if¹ ★ b A B)
def0 T : Bool → ★ = λ b ⇒ if¹ ★ b True False; def0 T : Bool → ★ = λ b ⇒ if¹ ★ b True False
def boolω : Bool → [ω.Bool] = def dup : Bool → [ω.Bool] =
λ b ⇒ if [ω.Bool] b ['true] ['false]; λ b ⇒ if [ω.Bool] b ['true] ['false]
def true-not-false : Not ('true ≡ 'false : Bool) = def0 true-not-false : Not ('true ≡ 'false : Bool) =
λ eq ⇒ coe (𝑖 ⇒ T (eq @𝑖)) 'true; λ eq ⇒ coe (𝑖 ⇒ T (eq @𝑖)) 'true
-- [todo] infix -- [todo] infix
def and : Bool → ω.Bool → Bool = λ a b ⇒ if Bool a b 'false; def and : Bool → ω.Bool → Bool = λ a b ⇒ if Bool a b 'false
def or : Bool → ω.Bool → Bool = λ a b ⇒ if Bool a 'true b; def or : Bool → ω.Bool → Bool = λ a b ⇒ if Bool a 'true b
} }
def0 Bool = bool.Bool; def0 Bool = bool.Bool
def if = bool.if