levels.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user