You can open the namespaces
This commit is contained in:
parent
e9a3863eaf
commit
309f12da6f
64
Example.lean
64
Example.lean
@ -1,3 +1,5 @@
|
|||||||
|
open Or
|
||||||
|
open False renaming elim → negelim
|
||||||
variable (p q r : Prop)
|
variable (p q r : Prop)
|
||||||
|
|
||||||
-- commutativity of ∧ and ∨
|
-- commutativity of ∧ and ∨
|
||||||
@ -6,11 +8,11 @@ example : p ∧ q ↔ q ∧ p :=
|
|||||||
|
|
||||||
example : p ∨ q ↔ q ∨ p :=
|
example : p ∨ q ↔ q ∨ p :=
|
||||||
⟨λ
|
⟨λ
|
||||||
| Or.inl p => Or.inr p
|
| inl p => inr p
|
||||||
| Or.inr q => Or.inl q,
|
| inr q => inl q,
|
||||||
λ
|
λ
|
||||||
| Or.inl q => Or.inr q
|
| inl q => inr q
|
||||||
| Or.inr p => Or.inl p⟩
|
| inr p => inl p⟩
|
||||||
|
|
||||||
-- associativity of ∧ and ∨
|
-- associativity of ∧ and ∨
|
||||||
example : (p ∧ q) ∧ r ↔ p ∧ (q ∧ r) :=
|
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) :=
|
example : (p ∨ q) ∨ r ↔ p ∨ (q ∨ r) :=
|
||||||
⟨λ
|
⟨λ
|
||||||
| Or.inr r => Or.inr (Or.inr r)
|
| inr r => inr (inr r)
|
||||||
| Or.inl (Or.inr q) => Or.inr (Or.inl q)
|
| inl (inr q) => inr (inl q)
|
||||||
| Or.inl (Or.inl p) => Or.inl p,
|
| inl (inl p) => inl p,
|
||||||
λ
|
λ
|
||||||
| Or.inl p => Or.inl (Or.inl p)
|
| inl p => inl (inl p)
|
||||||
| Or.inr (Or.inl q) => Or.inl (Or.inr q)
|
| inr (inl q) => inl (inr q)
|
||||||
| Or.inr (Or.inr r) => Or.inr r⟩
|
| inr (inr r) => inr r⟩
|
||||||
|
|
||||||
-- distributivity
|
-- distributivity
|
||||||
example : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) :=
|
example : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) :=
|
||||||
⟨λ
|
⟨λ
|
||||||
| ⟨p, Or.inl q⟩ => Or.inl ⟨p,q⟩
|
| ⟨p, inl q⟩ => inl ⟨p,q⟩
|
||||||
| ⟨p, Or.inr r⟩ => Or.inr ⟨p,r⟩,
|
| ⟨p, inr r⟩ => inr ⟨p,r⟩,
|
||||||
λ
|
λ
|
||||||
| Or.inl ⟨p,q⟩ => ⟨p,Or.inl q⟩
|
| inl ⟨p,q⟩ => ⟨p,inl q⟩
|
||||||
| Or.inr ⟨p,r⟩ => ⟨p,Or.inr r⟩⟩
|
| inr ⟨p,r⟩ => ⟨p,inr r⟩⟩
|
||||||
|
|
||||||
example : p ∨ (q ∧ r) ↔ (p ∨ q) ∧ (p ∨ r) :=
|
example : p ∨ (q ∧ r) ↔ (p ∨ q) ∧ (p ∨ r) :=
|
||||||
⟨λ
|
⟨λ
|
||||||
| Or.inl p => ⟨Or.inl p, Or.inl p⟩
|
| inl p => ⟨inl p, inl p⟩
|
||||||
| Or.inr ⟨q,r⟩ => ⟨Or.inr q, Or.inr r⟩,
|
| inr ⟨q,r⟩ => ⟨inr q, inr r⟩,
|
||||||
λ
|
λ
|
||||||
| ⟨Or.inr q, Or.inr r⟩ => Or.inr ⟨q,r⟩
|
| ⟨inr q, inr r⟩ => inr ⟨q,r⟩
|
||||||
| ⟨Or.inl p, _⟩ => Or.inl p
|
| ⟨inl p, _⟩ => inl p
|
||||||
| ⟨ _, Or.inl p⟩ => Or.inl p⟩
|
| ⟨ _, inl p⟩ => inl p⟩
|
||||||
|
|
||||||
-- other properties
|
-- other properties
|
||||||
example : (p → (q → r)) ↔ (p ∧ q → r) :=
|
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) :=
|
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
|
|⟨f, _⟩, inl p => f p
|
||||||
|⟨_, g⟩, Or.inr q => g q⟩
|
|⟨_, g⟩, inr q => g q⟩
|
||||||
|
|
||||||
example : ¬(p ∨ q) ↔ ¬p ∧ ¬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
|
| ⟨np, _⟩, inl p => np p
|
||||||
| ⟨_ ,nq⟩, Or.inr q => nq q⟩
|
| ⟨_ ,nq⟩, inr q => nq q⟩
|
||||||
|
|
||||||
example : ¬p ∨ ¬q → ¬(p ∧ q)
|
example : ¬p ∨ ¬q → ¬(p ∧ q)
|
||||||
| Or.inl np, ⟨p,_⟩ => np p
|
| inl np, ⟨p,_⟩ => np p
|
||||||
| Or.inr nq, ⟨_,q⟩ => nq q
|
| inr nq, ⟨_,q⟩ => nq q
|
||||||
|
|
||||||
example : ¬(p ∧ ¬p) :=
|
example : ¬(p ∧ ¬p) :=
|
||||||
λ ⟨p,np⟩ => np p
|
λ ⟨p,np⟩ => np p
|
||||||
@ -75,14 +77,14 @@ example : ¬p → (p → q) :=
|
|||||||
λ np p => absurd p np
|
λ np p => absurd p np
|
||||||
|
|
||||||
example : (¬p ∨ q) → (p → q)
|
example : (¬p ∨ q) → (p → q)
|
||||||
| (Or.inl np), p => absurd p np
|
| (inl np), p => absurd p np
|
||||||
| (Or.inr q), _ => q
|
| (inr q), _ => q
|
||||||
|
|
||||||
example : p ∨ False ↔ p :=
|
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 :=
|
example : p ∧ False ↔ False :=
|
||||||
⟨λ ⟨_,f⟩ => f, λ f => False.elim f⟩
|
⟨λ ⟨_,f⟩ => f, λ f => negelim f⟩
|
||||||
|
|
||||||
example : (p → q) → (¬q → ¬p) :=
|
example : (p → q) → (¬q → ¬p) :=
|
||||||
λ f nq p => absurd (f p) nq
|
λ f nq p => absurd (f p) nq
|
||||||
|
Loading…
Reference in New Issue
Block a user