Initial commit: 15-unit Lean 4 + PL semantics tutorial curriculum
This commit is contained in:
90
tutorial-01-basics/03-propositions-and-proofs.md
Normal file
90
tutorial-01-basics/03-propositions-and-proofs.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Unit 3 — Propositions and Proofs
|
||||
|
||||
**Tutorial 1: Lean 4 Fundamentals** · [← Back to README](../README.md)
|
||||
|
||||
## Goals
|
||||
|
||||
- Understand propositions as types (Curry-Howard)
|
||||
- Write basic proofs using `example` and `theorem`
|
||||
- Use the tactic language: `intro`, `apply`, `exact`, `have`
|
||||
|
||||
## Source
|
||||
|
||||
*Theorem Proving in Lean 4* (TPIL), Chapters 2–3
|
||||
→ https://leanprover.github.io/theorem_proving_in_lean4/
|
||||
|
||||
## Concepts
|
||||
|
||||
| Concept | Lean |
|
||||
|---------|------|
|
||||
| Proposition | `P : Prop` — a type whose terms are proofs |
|
||||
| Implication `P → Q` | Function from proofs of `P` to proofs of `Q` |
|
||||
| Conjunction `P ∧ Q` | `And.intro` (constructor), `.left` / `.right` (projections) |
|
||||
| Disjunction `P ∨ Q` | `Or.inl` / `Or.inr` |
|
||||
| Negation `¬ P` | `P → False` |
|
||||
| Tactics | `intro`, `apply`, `exact`, `have`, `assumption` |
|
||||
|
||||
## Exercises
|
||||
|
||||
### Exercise 3.1 — Implicational logic
|
||||
|
||||
```lean
|
||||
-- (a) Identity
|
||||
theorem id_prop (A : Prop) : A → A :=
|
||||
by
|
||||
intro h
|
||||
exact h
|
||||
|
||||
-- (b) Composition
|
||||
theorem compose (A B C : Prop) : (A → B) → (B → C) → (A → C) :=
|
||||
by
|
||||
sorry
|
||||
|
||||
-- (c) Currying
|
||||
theorem curry (A B C : Prop) : (A → B → C) → (A ∧ B → C) :=
|
||||
by
|
||||
sorry
|
||||
```
|
||||
|
||||
### Exercise 3.2 — Conjunction and disjunction
|
||||
|
||||
```lean
|
||||
-- (a) Swap conjuncts
|
||||
theorem and_comm (A B : Prop) : A ∧ B → B ∧ A :=
|
||||
by
|
||||
sorry
|
||||
|
||||
-- (b) Disjunction is symmetric
|
||||
theorem or_comm (A B : Prop) : A ∨ B → B ∨ A :=
|
||||
by
|
||||
sorry
|
||||
|
||||
-- (c) Forward reasoning with `have`
|
||||
theorem forward_example (A B C : Prop) (h1 : A → B) (h2 : B → C) (ha : A) : C :=
|
||||
by
|
||||
have hb : B := h1 ha
|
||||
sorry
|
||||
```
|
||||
|
||||
### Exercise 3.3 — Negation
|
||||
|
||||
```lean
|
||||
-- (a) Contradiction
|
||||
theorem contrapositive (A B : Prop) : (A → B) → (¬ B → ¬ A) :=
|
||||
by
|
||||
sorry
|
||||
|
||||
-- (b) Double negation introduction
|
||||
theorem double_neg_intro (A : Prop) : A → ¬ ¬ A :=
|
||||
by
|
||||
sorry
|
||||
|
||||
-- (c) Ex falso quodlibet
|
||||
theorem ex_falso (A : Prop) : False → A :=
|
||||
by
|
||||
sorry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
← [Previous: Unit 2](02-inductive-types.md) · Next: [Unit 4 — Quantifiers and Equality](04-quantifiers-and-equality.md)
|
||||
Reference in New Issue
Block a user