You can open the namespaces

This commit is contained in:
2025-01-30 20:04:53 +01:00
parent e9a3863eaf
commit 309f12da6f

View File

@ -1,3 +1,5 @@
open Or
open False renaming elim negelim
variable (p q r : Prop)
-- commutativity of ∧ and
@ -6,11 +8,11 @@ example : p ∧ q ↔ q ∧ p :=
example : p q q p :=
λ
| Or.inl p => Or.inr p
| Or.inr q => Or.inl q,
| inl p => inr p
| inr q => inl q,
λ
| Or.inl q => Or.inr q
| Or.inr p => Or.inl p
| inl q => inr q
| inr p => inl p
-- associativity of ∧ and
example : (p q) r p (q r) :=
@ -18,31 +20,31 @@ example : (p ∧ q) ∧ r ↔ p ∧ (q ∧ r) :=
example : (p q) r p (q r) :=
λ
| Or.inr r => Or.inr (Or.inr r)
| Or.inl (Or.inr q) => Or.inr (Or.inl q)
| Or.inl (Or.inl p) => Or.inl p,
| inr r => inr (inr r)
| inl (inr q) => inr (inl q)
| inl (inl p) => inl p,
λ
| Or.inl p => Or.inl (Or.inl p)
| Or.inr (Or.inl q) => Or.inl (Or.inr q)
| Or.inr (Or.inr r) => Or.inr r
| inl p => inl (inl p)
| inr (inl q) => inl (inr q)
| inr (inr r) => inr r
-- distributivity
example : p (q r) (p q) (p r) :=
λ
| p, Or.inl q => Or.inl p,q
| p, Or.inr r => Or.inr p,r,
| p, inl q => inl p,q
| p, inr r => inr p,r,
λ
| Or.inl p,q => p,Or.inl q
| Or.inr p,r => p,Or.inr r
| inl p,q => p,inl q
| inr p,r => p,inr r
example : p (q r) (p q) (p r) :=
λ
| Or.inl p => Or.inl p, Or.inl p
| Or.inr q,r => Or.inr q, Or.inr r,
| inl p => inl p, inl p
| inr q,r => inr q, inr r,
λ
| Or.inr q, Or.inr r => Or.inr q,r
| Or.inl p, _ => Or.inl p
| _, Or.inl p => Or.inl p
| inr q, inr r => inr q,r
| inl p, _ => inl p
| _, inl p => inl p
-- other properties
example : (p (q r)) (p q r) :=
@ -50,20 +52,20 @@ example : (p → (q → r)) ↔ (p ∧ q → r) :=
example : ((p q) r) (p r) (q r) :=
λ f => λ p => f (Or.inl p), λ q => f (Or.inr q),
λ f => λ p => f (inl p), λ q => f (inr q),
λ
|f, _, Or.inl p => f p
|_, g, Or.inr q => g q
|f, _, inl p => f p
|_, g, inr q => g q
example : ¬(p q) ¬p ¬q :=
λ f => λ p => f (Or.inl p), λ q => f (Or.inr q),
λ f => λ p => f (inl p), λ q => f (inr q),
λ
| np, _, Or.inl p => np p
| _ ,nq, Or.inr q => nq q
| np, _, inl p => np p
| _ ,nq, inr q => nq q
example : ¬p ¬q ¬(p q)
| Or.inl np, p,_ => np p
| Or.inr nq, _,q => nq q
| inl np, p,_ => np p
| inr nq, _,q => nq q
example : ¬(p ¬p) :=
λ p,np => np p
@ -75,14 +77,14 @@ example : ¬p → (p → q) :=
λ np p => absurd p np
example : (¬p q) (p q)
| (Or.inl np), p => absurd p np
| (Or.inr q), _ => q
| (inl np), p => absurd p np
| (inr q), _ => q
example : p False p :=
λ h => Or.elim h id False.elim, λ p => Or.inl p
λ h => elim h id negelim, λ p => inl p
example : p False False :=
λ _,f => f, λ f => False.elim f
λ _,f => f, λ f => negelim f
example : (p q) (¬q ¬p) :=
λ f nq p => absurd (f p) nq