rewrite story for Predicate

pull/53/head
Marcus Zibrowius 2 years ago
parent 62d2e0918c
commit 750e2bde32

@ -65,11 +65,11 @@ Ihr wollt bestimmt weiter zu Quantus, unserem Schestermond, oder?
**Du**: Ehm, vielleicht … **Du**: Ehm, vielleicht …
**Operationsleiter**: Dann habe ich noch eine letzte Bitte. Ich habe hier noch einen Brief für die Königin von Quantus! Auch schon von meinem Vorgänger geerbt. Die Post will ihn nicht annehmen, weil ich die Adresse nicht weiß. Könntet Ihr ihn vielleicht zu ihr mitnehmen? **Operationsleiter**: Dann habe ich noch eine letzte Bitte. Ich habe hier noch ein Päckchen für die Königin von Quantus! Auch schon von meinem Vorgänger geerbt. Die Post will es nicht annehmen, weil ich die Adresse nicht weiß. Könntet Ihr es vielleicht zu ihr mitnehmen?
**Du**: Klar! Robo, halt mal. **Du**: Klar! Robo, halt mal.
Robo nimmt den Brief und lässt ihn irgendwo in seinem Innern verschwinden. Robo nimmt das Päckchen und lässt es irgendwo in seinem Innern verschwinden.
Der Operationsleiter sieht ihn entgeistert an. Der Operationsleiter sieht ihn entgeistert an.
**Robo**: Keine Angst, ich verdaue nichts!" **Robo**: Keine Angst, ich verdaue nichts!"

@ -12,16 +12,33 @@ Game "Adam"
World "Predicate" World "Predicate"
Title "Prädikate" Title "Prädikate"
Introduction "Eure Reise geht weiter zum zweiten Mond. Dieser ist etwas grösser und Introduction "Auf dem Schwestermond Quantus erwartet Euch bereits ein großer Ansammlung von Formalosopheninnen. Sie reden alle wild durcheinander und Ihr habt Probleme, Euch überhaupt Gehör zu verschaffen. Robo produziert schließlich ein lautes Gong-Geräusch, das sie kurzzeitig zur Ruhe bringt.
komplett mit buschartigen Pflanzen überwachsen. Der Landeanflug sit etwas kniffliger,
aber offenbar kann Robo nicht nur Lean übersetzen, sondern auch mit maschineller Genauigkeit
navigieren.
Ihr werdet sofort empfangen und man führt euch zur lokalen Machthaberin. **Du**: Wir haben einen Brief für Eure Königin. Könntet Ihr uns zu Eurer Königin führen?
Ihr kommt an verschiedensten riesigen Büschen vorbei, die offensichtlich innen Ausgehöhlt sind
und so als Wände für Behausungen der Wesen hier dienen.
Man führt euch in einen der Büsche. Nun entdecksts du dass das Blätterdach künstlich verstärkt ist, **Alle** *(im Chor)*: Wir sind schon alle hier!
offensichtlich um Regen abzuweisen.
Vor euch steht eine Frau, die euch als Machthabering *Evenine* vorgestellt wird." **Du**: Ok. Und wer von Euch ist die Königin?
Nun herrscht betretenes Schweigen. Alle zucken mit den Schultern.
**Du**: Habt Ihr überhaupt eine Königin?
**Alle** *(im Chor)*: Ja, ja. Wir haben eine Königen, wir haben eine Königen.
**Robo** *(zu Dir)*: Ich fasse mal zusammen. Es existiert eine Königen, aber keiner weiß, wer sie ist …
**Du**: Ist das nicht ein Widerspruch?
**Robo**: Fragst Du, Du als Mathematiker? Nein, das ist kein Widerspruch. Das ist einfach eine „reine Existenzaussage“.
Du bist Dir nicht ganz sicher, wie ernst er das meint.
**Du**: Dann ich schlage vor, wir übergeben das Päckchen einfach an *alle* Bewohner. Dann haben wir es ja insbesondere der Königin übergeben.
**Du** *(in die Menge*): Wir haben Euch ein Päckchen von Implis gebracht. Hier, das ist für Euch.
Robo spuckt es aus, wirft es in die Menge, und die Formalosophinnen reißen es auf. Darin befinden sich ein paar loser Seiten, die sie sofort eingehend studieren.
Zwei Minuten später liegen die Seiten wieder bei Euch. Es sind wieder mathematische Probleme. Und die Formalosophinnen wollen sehen, wie Ihr sie löst.
"

@ -10,27 +10,21 @@ Level 1
Title "Natürliche Zahlen" Title "Natürliche Zahlen"
Introduction Introduction
" ""
**Evenine**: Willkommen Reisende! Wir leben hier in Einklang mit der Natur und allem natürlichen,
so sagt mir, könnt ihr mit natürlichen Zahlen umgehen?
"
Statement (x y : ) : (x + y) ^ 2 = x ^ 2 + 2 * x * y + y ^ 2 := by Statement (x y : ) : (x + y) ^ 2 = x ^ 2 + 2 * x * y + y ^ 2 := by
Hint "**Du**: Das hab ich in der Schule gelernt, man rechnet das einfach aus, Hint "**Du**: Das ist doch Schulmathematik! Man rechnet das einfach aus,
indem man die Terme umsortiert. indem man die Terme umsortiert.
**Robo**: Behaupte doch mit `ring`, dass das so ist. **Robo**: Wenn die Gleichung stimmt, kannst Du auf Leansch sogar einfach mit `ring` beweisen, dass das so ist.
**Du**: Aber `` ist doch gar kein Ring? **Du**: Aber `` ist doch gar kein Ring?
**Robo**: `ring` funktioniert schon für Halbringe, aber sie heisst ring, weil sie auf **Robo**: `ring` funktioniert sogar für sogenannte Halbringe. Ich glaube, man sagt `ring`, weil es in (kommutativen) Ringen am besten funktioniert.
(kommutativen) Ringen am besten funktioniert.
" "
ring ring
Conclusion Conclusion
" ""
*Evenine: Ja das stimmt schon. Und das genügt uns auf diesem Planet auch als Antwort.*
"
NewTactic ring NewTactic ring

@ -8,19 +8,13 @@ Level 2
Title "Rewrite" Title "Rewrite"
Introduction Introduction
" ""
Robo spuckt den Brief aus, den er dabei hatte, und gibt ihn *Evenine*.
**Evenine**: Das verstehe ich nicht, wisst ihr was damit gemeint ist?
Und sie händigt Dir den Brief:
"
Statement (a b c d : ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c := by Statement (a b c d : ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c := by
Hint "**Du**: Schau mal, das ist ja fast genau, was wir auf *Implis* gemacht haben, Hint "**Du**: Schau mal, dieses Problem sieht so ähnlich aus wie eines, das wir auf *Implis* schon gelöst hatten.
nur jetzt mit Gleichheiten von Zahlen anstatt Genau-Dann-Wenn-Aussagen! Nur, das hier jetzt Gleichheiten von Zahlen statt Genau-Dann-Wenn-Aussagen stehen!
**Robo**: `=` und `↔` kannst du praktisch gleich behandeln wenns um `rw` geht." **Robo**: Richtig. Und im Grunde macht das gar keinen Unterscheid. Du kannst `=` und `↔` praktisch mit `rw` praktisch gleich behandeln."
Hint (hidden := true) "**Du**: Also auch `rw [hₓ]` und `rw [← hₓ]`? Hint (hidden := true) "**Du**: Also auch `rw [hₓ]` und `rw [← hₓ]`?
**Robo**: Probiers doch einfach." **Robo**: Probiers doch einfach."
@ -32,8 +26,6 @@ Statement (a b c d : ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c :
assumption assumption
Conclusion Conclusion
" ""
**Evenine**: Danke viemals, das hilft uns vermutlich, jetzt Frage ich mich aber…
"
NewTactic assumption rw NewTactic assumption rw

@ -8,9 +8,7 @@ Level 3
Title "Rewrite" Title "Rewrite"
Introduction Introduction
" ""
**Evenine**: Mit diesem neuen Wissen, könnt ihr mir bei folgendem helfen:
"
Statement Statement
" "
@ -23,14 +21,13 @@ $$
$$ $$
" "
(a b : ) (h : a = b) (g : a + a ^ 2 = b + 1) : b + b ^ 2 = b + 1 := by (a b : ) (h : a = b) (g : a + a ^ 2 = b + 1) : b + b ^ 2 = b + 1 := by
Hint "**Du**: Ah da ersetzt man ja einfach `{a}` durch `{b}` in der anderen Annahme! Hint "**Du**: Hier muss man, glaube ich, einfach in Annahme `{g}` die Variable `{a}` durch `{b}` ersetzen.
**Robo**: Genau! Das machst du mit `rw [{h}] at {g}`." **Robo**: Genau! Das machst Du mit `rw [{h}] at {g}`."
rw [h] at g rw [h] at g
Hint (hidden := true) "**Robo**: Schau mal durch die Annahmen." Hint (hidden := true) "**Robo**: Schau mal durch die Annahmen."
assumption assumption
Conclusion " Conclusion "
**Robo**: Noch ein Trick: Mit `rw [h] at *` kann man im weiteren `h` in **allen** Annahmen und **Robo**: Noch ein Trick: Mit `rw [{h}] at *` kann man gleichzeitig mittels `{h}` **alle** Annahmen und das Goal umschreiben.
dem Goal umschreiben.
" "

@ -8,28 +8,19 @@ Level 4
Title "Natürliche Zahlen" Title "Natürliche Zahlen"
Introduction Introduction
" ""
*Evenines* Berater meldet sich.
**Berater**: Das stimmt wohl, aber das Problem, das uns eigentlich beschäftigt hat, eure
Natürlichkeit, war folgendes:
"
Statement Statement
(x y z : ) (h : x = 2 * y + 1) (g : z = 3 * y + 1): x ^ 2 = 4 * y ^ 2 + z + y := by (x y z : ) (h : x = 2 * y + 1) (g : z = 3 * y + 1): x ^ 2 = 4 * y ^ 2 + z + y := by
Hint "**Du**: Ich versteh das Pattern. Wenn ich zuerst alles so umschreibe, dass Hint "**Du**: Ich vermute, wenn ich zuerst alles so umschreibe, dass
das Goal nur noch rechnen und umsortieren ist, dann kann `ring` den Rest machen! das Beweisziel nur noch rechnen und umsortieren zu beweisen ist, erledigt `ring` den Rest!
**Robo**: Noch ein Trick: Entweder kannst du zwei Befehle `rw [h₁]` und `rw [h₂]` schreiben, **Robo**: Genau. Und noch ein Trick: Zwei Schritte `rw [h₁]` und `rw [h₂]` kann man zu einem einzigen Schritt zusammenfassen: `rw [h₁, h₂]`."
oder du kannst das gleich in einem machen : rw [h₁, h₂]."
rw [h, g] rw [h, g]
ring ring
Conclusion Conclusion
" ""
*Evenine* bedankt sich nochmals für die Botschaft und ihr werdet zu einem kleineren Busch geführt,
der ein gemütlich warmes Innenleben an den Tag legt.
"
NewTactic ring rw NewTactic ring rw

@ -8,29 +8,24 @@ Title "Definitionally equal"
Introduction Introduction
" "
Müde ruht ihr euch in eurer Bleibe aus. Du schaust doch eine Lücke in den Blättern vielen Beim nächsten Problem bekommt ihr ausnahmsweise Hilfe vom Publikum.
kleinen Vögeln bei der Nahrungssuche zu.
**Du**: Sag mal Robo, ich hab vorhin ein Kind überhört, dass seinem Spielgefährten erklärt hat, **Alle**: `rfl`, `rfl`, …
folgendes sei mit `rfl` zu beweisen:
" "
Statement : 1 + 1 = 2 := by Statement : 1 + 1 = 2 := by
Hint "**Du**: Wieso nicht `ring`? Hint "**Du**: Wieso nicht `ring`?
**Robo**: Klar, `ring` geht auch und ist intuitiver. **Robo**: Klar, `ring` würde normalerweise auch funktioneren. Aber ich würde mich hier dem Mehrheitswillen beugen …"
Für `rfl` kommt es darauf an, wie die Sachen genau definiert sind: `1 + 1` ist als
`(0.succ).succ` definiert und `2` halt ebenfalls.
"
rfl rfl
OnlyTactic rfl OnlyTactic rfl
Conclusion Conclusion
" "
**Du**: Dann war das mehr Glück? **Robo**: Der Grund, warum hier ausnahmsweise auch mal `rfl` funktioniert hat, ist, dass auf beiden Seiten tatsächlich *per Definition* dasselbe steht. Das soll heißen, wenn man links in `1 + 1` die Definition von `1` und `+ 1` einsetzt, und rechts die Definition von `2`, dann erhält man *buchstäblich* dasselbe (nämlich `(0.succ).succ`).
**Robo**: Das ist eine Art die Welt zu sehen… **Du**: Na schön. Muss ich mir jetzt diese Definition von `2` merken?
Damit fällst du in einen ruhigen Schlaf. **Robo**: Ich glaube eher nicht.
" "

@ -16,8 +16,8 @@ Title "Gerade/Ungerade"
Introduction Introduction
" "
Am nächsten Tag erklärt euch *Evenine*, dass es auf dem Mond zwei Gruppierungen gibt, Ihr habt nun alle Fragen aus dem königlichen Päckchen beantwortet, und die Formalosophinnen applaudieren. Dann wollen Sie aber auch noch ein paar Fragen stellen, aber sie können sich nicht einigen, welche.
ihre und die ihres Halbbruders *Oddeus*. Die Mottos sind Ihr heute abwechselnd die Rufe „Even“ und „Odd“ aus der Menge heraus. Deshalb zeigt Dir Robo vorsichtshalber schon einmal die entsprechenden Definitionen an:
``` ```
def Even (n : ) : Prop := ∃ r, n = r + r def Even (n : ) : Prop := ∃ r, n = r + r
@ -29,18 +29,20 @@ und
def Odd (n : ) : Prop := ∃ r, n = 2 * r + 1 def Odd (n : ) : Prop := ∃ r, n = 2 * r + 1
``` ```
**Evenine**: Hier, ich zeige euch mal etwas was man bei uns machen kann: Schließlich taucht von irgendwo aus der Menge folgendes Papier auf:
" "
Statement even_square (n : ) (h : Even n) : Even (n ^ 2) := by Statement even_square (n : ) (h : Even n) : Even (n ^ 2) := by
Hint "**Robo**: Du kannst Dir mit `unfold Even` auch hier auf dem Papier die Definition sehen."
Branch Branch
unfold Even unfold Even
Hint "Rob**: Am besten machst du auch noch `unfold Even at h`, damit du verstehst was los ist." Hint "Robo**: Am besten machst Du auch noch `unfold Even at h`, damit Du verstehst, was los ist."
Hint "**Robo**: Wie du oben siehst, ist `Even n` dadurch definiert, Hint "**Robo**: Wie Du oben siehst, ist `Even n` dadurch definiert,
dass ein `r` existiert so dass `r + r = n`. Am besten dass ein `r` existiert so dass `r + r = n` ist. Am besten
öffnest du diese Definition mit `unfold Even at *` einmal, dann siehst du besser, was los ist. " öffnest du diese Definition mit `unfold Even at *` einmal.
Dann siehst Du besser, was los ist. "
unfold Even at * unfold Even at *
Hint "**Du**: Also von `{h}` weiss ich jetzt dass ein `r` existiert, so dass `r + r = n` Hint "**Du**: Also von `{h}` weiß ich jetzt, dass ein `r` existiert, so dass `r + r = n`
**Robo**: Mit `rcases h with ⟨r, hr⟩` kannst du dieses `r` tatsächlich einführen." **Robo**: Mit `rcases h with ⟨r, hr⟩` kannst du dieses `r` tatsächlich einführen."
rcases h with ⟨r, hr⟩ rcases h with ⟨r, hr⟩
@ -48,18 +50,18 @@ Statement even_square (n : ) (h : Even n) : Even (n ^ 2) := by
**Robo**: Genau. Und mit `use _` gibst du diese Zahl an." **Robo**: Genau. Und mit `use _` gibst du diese Zahl an."
Hint (hidden := true) "**Robo**: Also sowas ähnliches wie `use 4 * r ^ 3`, aber ich kann Hint (hidden := true) "**Robo**: Also sowas ähnliches wie `use 4 * r ^ 3`, aber ich kann
dir leider nicht sagen, welche Zahl passt. Dir leider nicht sagen, welche Zahl passt.
" "
Branch Branch
rw [hr] rw [hr]
Hint "**Robo**: Das geht auch, jetzt musst du aber wirklich `use` verwenden." Hint "**Robo**: Das geht auch, jetzt musst Du aber wirklich `use` verwenden."
use 2 * r ^ 2 use 2 * r ^ 2
ring ring
use 2 * r ^ 2 use 2 * r ^ 2
Hint "**Du**: Ah und jetzt `ring`! Hint "**Du**: Ah, und jetzt `ring`!
**Robo**: Aber zuerst must du noch mit **Robo**: Aber zuerst musst Du noch mit
`rw` `n` durch `r + r` ersetzen, da `ring` das sonst nicht weiss." `rw` `n` durch `r + r` ersetzen, da `ring` das sonst nicht weiß."
rw [hr] rw [hr]
ring ring
@ -70,4 +72,4 @@ Statement even_square (n : ) (h : Even n) : Even (n ^ 2) := by
NewTactic unfold use NewTactic unfold use
NewDefinition Even Odd NewDefinition Even Odd
Conclusion "**Evenine**: Seht ihr?" Conclusion "Applaus!"

@ -16,19 +16,18 @@ Title "Gerade/Ungerade"
Introduction Introduction
" "
**Du**: Aber, das sagt doch gar nichts aus, genau das gleiche könnte ich für `Odd` Sofort taucht das nächste Blatt auf. Anscheinend hatten sie sich auf einen Kompromiss geeinigt.
auch sagen. Hier seht!
" "
Statement odd_square (n : ) (h : Odd n) : Odd (n ^ 2) := by Statement odd_square (n : ) (h : Odd n) : Odd (n ^ 2) := by
unfold Odd at * unfold Odd at *
rcases h with ⟨r, hr⟩ rcases h with ⟨r, hr⟩
Hint "**Robo**: Ich hab noch einen Trick auf Lager: Hint "**Robo**: Ich hab noch einen Trick auf Lager:
Wenn du jetzt herausfinden willst, welche Zahl du einsetzen musst, könntest Wenn du jetzt herausfinden willst, welche Zahl Du einsetzen musst, könntest
du schon jetzt mit `rw [{hr}]` weitermachen…" Du schon jetzt mit `rw [{hr}]` weitermachen …"
rw [hr] rw [hr]
Hint "**Robo**: Wenn du jetzt `ring` benötigst, dann schreibt es einfach alles in Hint "**Robo**: Wenn Du jetzt `ring` benötigst, dann schreibt es einfach alles in
Normalform um, das hilft beim vergleichen." Normalform um, das hilft beim Vergleichen."
ring ring
Hint "**Du**: Was bedeutet `ring_nf`? Hint "**Du**: Was bedeutet `ring_nf`?
@ -39,5 +38,5 @@ Statement odd_square (n : ) (h : Odd n) : Odd (n ^ 2) := by
-- TODO: Allow `ring_nf` as part of `ring`. -- TODO: Allow `ring_nf` as part of `ring`.
Conclusion "**Evenine**: Tatsächlich. Vielleicht sind wir gar nich tso unterschiedlich. Könntet Conclusion "Applaus!"
ihr mal mit ihm reden gehen?"

@ -15,10 +15,7 @@ Title "Für alle"
Introduction Introduction
" "
Ihr macht euch also auf den Weg. Unterwegs trefft ihr einen Händler und ihr lässt euch von Nach längerem Durcheinander findet ein weiteres Blatt aus der Menge zu Euch.
ihm den Weg zeigen, sowie einige Tipps zu den beiden Geschwistern geben.
**Händler**: Also seht, die beiden sind gar nicht so verschieden. Ein altes Sprichwort sagt:
" "
-- Zum `∃` gehört auch das \"für alle\" `∀` (`\\forall`). -- Zum `∃` gehört auch das \"für alle\" `∀` (`\\forall`).
@ -40,7 +37,7 @@ ihm den Weg zeigen, sowie einige Tipps zu den beiden Geschwistern geben.
Statement : ∀ (x : ), (Even x) → Odd (1 + x) := by Statement : ∀ (x : ), (Even x) → Odd (1 + x) := by
Hint "**Du**: Das `∀` heisst sicher \"für alle\". Hint "**Du**: Das `∀` heisst sicher \"für alle\".
**Robo**: Und man schreibt `\\forall`. Ein `∀ x, …` im Goal kannst du wie eine **Robo**: Und man schreibt `\\forall`. Ein `∀ x, …` im Beweisziel kannst Du wie eine
Implikation mit `intro x` angehen." Implikation mit `intro x` angehen."
intro x h intro x h
unfold Even at h unfold Even at h
@ -50,4 +47,4 @@ Statement : ∀ (x : ), (Even x) → Odd (1 + x) := by
rw [hy] rw [hy]
ring ring
Conclusion "**Händler**: Sichere Reise!" Conclusion "Wieder werdet Ihr mit einem Applaus belohnt, und die Formalosophinnen beratschlagen sich, was sie Euch noch vorlegen wollen."

@ -14,9 +14,7 @@ Title "PushNeg"
Introduction Introduction
" "
Das Dorf von *Oddeus* scheint stärker befestigt zu sein, all jenes von *Evenine*. Ihr kommt Nach langem Hin und Her einigen sie sich schließlich auf folgende Frage:
and eine Wand aus Dornenranken. Beim Eingang steht eine Wache, die auch zuruft:
" "
-- Zum Schluss, immer wenn man irgendwo eine Verneinung `¬∃` oder `¬∀` sieht (`\\not`), kann man -- Zum Schluss, immer wenn man irgendwo eine Verneinung `¬∃` oder `¬∀` sieht (`\\not`), kann man
@ -32,56 +30,51 @@ and eine Wand aus Dornenranken. Beim Eingang steht eine Wache, die auch zuruft:
open Nat open Nat
Statement : ¬ ∃ (n : ), ∀ (k : ) , Odd (n + k) := by Statement : ¬ ∃ (n : ), ∀ (k : ) , Odd (n + k) := by
Hint "**Du**: Also ich kann mal das `¬` durch die Quantifier hindurchschieben. Hint "**Du**: Ich würde gern diese Negation `¬` am Quantor vorbeischieben.
**Robo**: `push_neg` macht genau das!
**Robo**: Intern braucht das zwei Lemmas **Robo**: `push_neg` macht genau das! Oder Du könntest `rw` mit den folgenden Lemmas verwenden:
``` ```
not_exists (A : Prop) : ¬ (∃ x, A) ↔ ∀x, (¬A) not_exists (A : Prop) : ¬ (∃ x, A) ↔ ∀x, (¬A)
not_forall (A : Prop) : ¬ (∀ x, A) ↔ ∃x, (¬A) not_forall (A : Prop) : ¬ (∀ x, A) ↔ ∃x, (¬A)
``` ```
die du natürlich auch mit `rw` gebrauchen könntest." "
Branch Branch
unfold Odd unfold Odd
push_neg push_neg
Hint "**Robo**: Der Weg ist etwas schwieriger. Ich würde nochmals zurück und schauen, Hint "**Robo**: Dieser Lösungsweg scheint mir etwas zu schwierig.
dass du irgendwann `¬Odd` kriegst, was du dann mit `rw [←even_iff_not_odd]` Ich würde nochmal zurückgehen und schauen,
zu `Even` umwandeln. dass Du irgendwie `¬Odd` erhältst.
kannst." Das kannst Du dann mit `rw [←even_iff_not_odd]`
zu `Even` umwandeln."
push_neg push_neg
intro n intro n
Hint "**Robo**: Welche Zahl du jetzt mit `use` brauchst, danach wirst du vermutlich das Hint "**Robo**: Jetzt brauchst Du eine Zahl mit `use`, und danach vermutlich das Lemma `←even_iff_not_odd` brauchen.
Lemma `←even_iff_not_odd` brauchen.
**Du**: Könnte ich jetzt schon `rw [←even_iff_not_odd]` machen? **Du**: Könnte ich jetzt schon `rw [←even_iff_not_odd]` anwenden?
**Robo**: Ne, `rw` kann nicht innerhalb von Quantifiern umschreiben. **Robo**: Nee, `rw` kann nicht innerhalb von Quantoren umschreiben.
**Du**: Aber wie würde ich das machen? **Du**: Aber wie würde ich das machen?
**Robo**: Zeig ich dir später, die Wache wird schon ganz ungeduldig! **Robo**: Zeig ich dir später, nicht hier vor großem Publikum.
Im Moment würde ich zuerst mit `use` eine richtige Zahl angeben, und danach umschreiben." Ich würde jetzt lieber mit `use` eine richtige Zahl angeben, und danach umschreiben."
Branch Branch
use n + 2 use n + 2
Hint "**Robo**: Gute Wahl! Jetzt kannst du `←even_iff_not_odd` verwenden." Hint "**Robo**: Gute Wahl! Jetzt kannst Du `←even_iff_not_odd` verwenden."
Branch Branch
use n + 4 use n + 4
Hint "**Robo**: Gute Wahl! Jetzt kannst du `←even_iff_not_odd` verwenden." Hint "**Robo**: Gute Wahl! Jetzt kannst Du `←even_iff_not_odd` verwenden."
use n use n
Hint "**Robo**: Gute Wahl! Jetzt kannst du `←even_iff_not_odd` verwenden." Hint "**Robo**: Gute Wahl! Jetzt kannst Du `←even_iff_not_odd` verwenden."
rw [←even_iff_not_odd] rw [←even_iff_not_odd]
unfold Even unfold Even
use n use n
--ring --ring
Conclusion "Damit werdet ihr eingelassen. Conclusion "Die Formalosophinnen sind ganz begeistert.
**Robo**: Entweder wir suchen direkt diesen *Oddeus*, oder wir schauen uns einmal um. Die Wahl
ist deine!
**Du**: Kannst du mir nochmals einen Überblick geben, was wir gelernt haben? **Du**: Kannst Du mir nochmal einen neun Überblick geben?
**Robo**: **Robo**:

Loading…
Cancel
Save