我只是阅读了Lean的文档,并尝试做3.7. Exercises,
并没有完成所有这些,但是这里是前四个练习(没有经典推理):
变量p q r:属性
-∧和的可交换性
例如:p∧q↔q∧p:=对不起
例如:p∨q↔q∨p:=对不起-∧和∨的关联性
例如:(p∧q)∧r↔p∧(q∧r):=对不起
例如:(p∨q)∨r↔p∨(q∨r):=对不起
这是我在前四个练习中所做的:
variables p q r : Prop
-- commutativity of ∧ and ∨
example : p ∧ q ↔ q ∧ p :=
iff.intro
(assume h : p ∧ q,show q ∧ p,from and.intro (and.right h) (and.left h))
(assume h : q ∧ p,show p ∧ q,from and.intro (and.right h) (and.left h))
example : p ∨ q ↔ q ∨ p :=
iff.intro
(assume h : p ∨ q,show q ∨ p,from
or.elim h
(assume hp : p,from or.intro_right q hp)
(assume hq : q,from or.intro_left p hq))
(assume h : q ∨ p,show p ∨ q,from
or.elim h
(assume hq : q,from or.intro_right p hq)
(assume hp : p,from or.intro_left q hp))
-- associativity of ∧ and ∨
example : (p ∧ q) ∧ r ↔ p ∧ (q ∧ r) :=
iff.intro
(assume h: (p ∧ q) ∧ r,have hpq : p ∧ q,from and.elim_left h,have hqr : q ∧ r,from and.intro (and.right hpq) (and.right h),show p ∧ (q ∧ r),from and.intro (and.left hpq) (hqr))
(assume h: p ∧ (q ∧ r),from and.elim_right h,from and.intro (and.left h) (and.left hqr),show (p ∧ q) ∧ r,from and.intro (hpq) (and.right hqr))
example : (p ∨ q) ∨ r ↔ p ∨ (q ∨ r) :=
iff.intro
(assume hpqr : (p ∨ q) ∨ r,show p ∨ (q ∨ r),from or.elim hpqr
(assume hpq : p ∨ q,from or.elim hpq
(assume hp : p,from or.intro_left (q ∨ r) hp)
(assume hq : q,have hqr : q ∨ r,from or.intro_left r hq,from or.intro_right p hqr))
(assume hr : r,from or.intro_right q hr,from or.intro_right p hqr))
(assume hpqr : p ∨ (q ∨ r),show (p ∨ q) ∨ r,from or.elim hpqr
(assume hp : p,have hpq : (p ∨ q),from or.intro_left q hp,from or.intro_left r hpq)
(assume hqr : (q ∨ r),from or.elim hqr
(assume hq : q,from or.intro_right p hq,from or.intro_left r hpq)
(assume hr : r,from or.intro_right (p ∨ q) hr)))
我认为这是有效的,但是很长一段时间,这是我们能做到的最好吗,还是有更好的方法在Lean中编写这些证明,任何建议都将不胜感激。