bump mathlib and use Even/Odd.

This commit is contained in:
Jon Eugster
2023-01-20 11:42:01 +01:00
parent 6e0469d3bf
commit d2be90a8a0
12 changed files with 84 additions and 102 deletions
@@ -1,4 +1,6 @@
import TestGame.Metadata
import Mathlib.Data.Nat.Prime
import Std.Tactic.RCases
import Mathlib.Tactic.LeftRight
import Mathlib.Tactic.Contrapose
@@ -8,44 +10,30 @@ import Mathlib.Tactic.Ring
import TestGame.ToBePorted
Game "TestGame"
World "Proving"
World "Prime"
Level 1
Title "Ad absurdum"
Title "Primzahlen"
Introduction
"
In diesem Kapitel lernen wir die wichtigsten Beweistechniken kennen.
Zuerst repetieren wir, dass man vorhandene Lemmas mit `rw` und `apply` benützen kann.
Aber, die Aussagen müssen wirklich exakte Gegenteile sein.
Hier musst du zuerst eines der folgenden Lemmas benützen, um einer der Terme umzuschreiben.
```
lemma not_odd (n : ℕ): ¬ odd n ↔ even n := by
...
lemma not_even (n : ℕ): ¬ even n ↔ odd n := by
...
```
"
Statement
"Sei $n$ eine natürliche Zahl die sowohl gerade wie auch ungerade ist.
Zeige, dass daraus $n = 42$ folgt. (oder, tatsächlich $n = x$ für jedes beliebige $x$)."
(n : ℕ) (h_even : even n) (h_odd : odd n) : n = 42 := by
rw [← not_even] at h_odd
contradiction
Message (n : ℕ) (h_even : even n) (h_odd : odd n) : n = 42 =>
"Schreibe zuerst eine der Aussagen mit `rw [←not_even] at h_odd` um, damit diese genaue
Gegenteile werden."
"TODO"
(n : ℕ) : ∃! (n : ℕ), Nat.Prime n ∧ Even n := by
use (2 : ℕ)
constructor
simp only [true_and]
use 1
intro y
rintro ⟨h₁, h₂⟩
rw [← Nat.Prime.even_iff]
assumption
assumption
Conclusion ""
Tactics contradiction rw
Tactics
Lemmas even odd not_even not_odd
Lemmas