This commit is contained in:
Jon Eugster
2023-01-24 15:11:24 +01:00
parent eff64d9713
commit 6576aa0231
4 changed files with 14 additions and 53 deletions
@@ -19,9 +19,9 @@ Eine endliche Summe läuft erstmal immer über einen endlichen Index
`Fin n`, welcher $n$ Elemente
$\\{0, 1, \\ldots, n-1\\}$ beinhaltet.
Der Syntax für`∑ i : Fin n, (...)` (\\sum) ist der Syntax für $\\sum_{i=0}^n …$
Der Syntax für $\\sum_{i=0}^n a_i$ (\\sum) ist `∑ i : Fin n, …`
Als kann die Taktik `simp` (für \"simplification\") ganz viel Triviales vereinfachen.
Als erstes kann die Taktik `simp` (für \"simplification\") ganz viel Triviales vereinfachen.
`simp` ist eine der stärksten Taktiken in Lean und verwendet
ganz viele markierte Lemmas um das Goal zu vereinfachen.
@@ -30,15 +30,15 @@ Zum Beispiel kennt es ein Lemma das ungefähr so aussieht:
```
@[simp]
lemma sum_const_add (n : ℕ) : (∑ i in Fin n, 0) = 0 := by
[...]
sorry
```
Mit `simp?` anstatt `simp` kannst du zudem schauen, welche Lemmas von `simp` benutzt wurde.
"
Statement
"Zeige dass `∑_{i = 0} ^ {n-1} 0 = 0 + 0`."
(n : ℕ) : (∑ i : Fin n, 0) = 0 + 0 := by
"Zeige dass $\\sum_{i = 0} ^ {n-1} (0 + 0) = 0$."
(n : ℕ) : (∑ i : Fin n, (0 + 0)) = 0 := by
simp
Tactics simp
@@ -17,8 +17,12 @@ Jetzt wollen wir ein paar Lemmas zu Summen kennenlernen, die `simp` nicht automa
verwendet.
Als erstes, kann man eine endliche Summe $\\sum_{i = 0}^n a_i + b_i$ mit
`rw rw [Finset.sum_add_distrib]` als zwei Summen $\\sum_{i = 0}^n a_i + \\sum_{j = 0}^n b_j$
`rw [Finset.sum_add_distrib]` als zwei Summen $\\sum_{i = 0}^n a_i + \\sum_{j = 0}^n b_j$
auseinandernehmen.
Insbesondere ist auch zu beachten, dass der Index `i` keine natürliche Zahl ist, sondern
vom Typ `Fin n`, das heisst, man muss diesen eigentlich immer mit `(i : ℕ)`
als natürliche Zahl verwenden.
"
Statement
@@ -30,7 +30,7 @@ Für den Induktionsschritt braucht man fast immer zwei technische Lemmas:
-- Note: I don't want to deal with Nat-division, so I stated it as `2 * ... = ...` instead.
Statement
"Zeige $\\sum_{i = 0}^n i = \\frac{n ⬝ (n + 1)}{2}$."
"Zeige $\\sum_{i = 0}^n i = \\frac{n \\cdot (n + 1)}{2}$."
(n : ℕ) : 2 * (∑ i : Fin (n + 1), ↑i) = n * (n + 1) := by
induction n
simp