You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lean4game/server/adam/Adam/Levels/Sum/L06_Summary.lean

93 lines
3.2 KiB
Plaintext

import Adam.Metadata
2 years ago
import Adam.ToBePorted
2 years ago
import Mathlib.Algebra.BigOperators.Fin
import Mathlib.Tactic.Ring
import Adam.ToBePorted
import Adam.Options.ArithSum
2 years ago
Game "Adam"
2 years ago
World "Sum"
2 years ago
Level 6
2 years ago
set_option tactic.hygienic false
2 years ago
Title "Zusammenfassung"
2 years ago
Introduction
"
2 years ago
**Du**: Robo gib mir nochmals eine Übersicht, bitte.
2 years ago
2 years ago
**Robo**: Aber klar:
2 years ago
| | Beschreibung |
|:---------------------|:------------------------------------------|
| `Fin n` | Ist ein Typ mit Zahlen $0, \\ldots, n-1$. |
| `∑ (i : Fin n), a i` | $\\sum_{i=0}^{n-1} a_i$ |
2 years ago
| `↑i` | Eine Coersion, z.B. `Fin n → `. |
2 years ago
2 years ago
und
2 years ago
| | Taktik | Beispiel |
|:---|:--------------------------|:-------------------------------------|
2 years ago
| 21 | `simp` | Simplifikation. |
| 22 | `induction n` | Induktion über $n$ |
2 years ago
2 years ago
Da löst sich aus der Steinlandschaft plötzlich ein grosser Steingolem. Er schaut euch
bedrohlich an und fragt in tiefer Stimme:
2 years ago
"
open BigOperators
2 years ago
Statement (m : ) : (∑ i : Fin (m + 1), (i : )^3) = (∑ i : Fin (m + 1), (i : ))^2 := by
Hint "**Du**: Gulp. Naja das wird schon klappen. Also man fängt wieder mit Induktion an…"
induction m
Hint "**Du**: Also den Induktionsanfang kann man einfach zeigen…"
2 years ago
simp
2 years ago
Hint "**Robo**: Und jetzt wieder `rw [Fin.sum_univ_castSucc]` und `simp` um vorwärts zu
kommen!"
2 years ago
rw [Fin.sum_univ_castSucc]
simp
2 years ago
Hint "**Robo**: Siehst du die Induktionshypothese hier drin?"
rw [n_ih]
Hint "**Du**: Ok, damit habe ich die linke Seite der Gleichung ziemlich gut bearbeitet.
Aber, ehm, mit der Rechten komme ich nicht weiter…
2 years ago
2 years ago
Der Golem schaut dich finster an.
2 years ago
2 years ago
**Robo**: Du willst `Fin.sum_univ_castSucc` auf der rechten Seite anwenden, aber es
gibt mehrere Orte, wo das Lemma passen würde.
Deshalb musst du mit `rw [Fin.sum_univ_castSucc (n := {n} + 1)]` angeben, wo genau.
2 years ago
**Du**: Was bedeutet das?
2 years ago
2 years ago
**Robo** Das Lemma hat eine Annahme `n` und du sagst ihm explizit, was es für dieses `n`
einsetzen muss, nämlich `{n} + 1`"
Branch
rw [Fin.sum_univ_castSucc]
Hint "**Robo**: Das hat jetzt einfach `Fin.sum_univ_castSucc` am ersten Ort angewendet,
wo das möglich war. Das ist nicht so ideal, die like Seite war schon okay.
2 years ago
2 years ago
**Robo**: Geh doch zurück und bring `rw` dazu am anderen Ort umzuschreiben."
rw [Fin.sum_univ_castSucc (n := n + 1)]
simp
Hint "**Robo**: `add_pow_two` ist auch noch nützlich!"
rw [add_pow_two]
Hint "**Du**: Ich glaube, ich sehe hier ne arithmetische Summe drin!!
2 years ago
2 years ago
**Robo**: Ich habe dir das dies von vorhin temporär als `arithmetic_sum` gespeichert,
damit du diese brauchen kannst."
rw [arithmetic_sum]
Hint "**Du**: Jetzt sollten es eigentlich nur noch arithmetische Operationen sein."
ring
2 years ago
2 years ago
NewLemma arithmetic_sum add_pow_two
2 years ago
2 years ago
Conclusion "Der Golem denkt ganz lange nach, und ihr bekommt das Gefühl, dass er gar nie
aggressive war, sondern nur eine sehr tiefe Stimme hat.
2 years ago
Mit einem kleinen Erdbeben setzt er sich hin und winkt euch dankend zu.
2 years ago
2 years ago
Damit zieht ihr weiter durch die karge Landschaft auf diesem Planet."