|
|
|
|
import TestGame.Metadata
|
|
|
|
|
import Std.Tactic.RCases
|
|
|
|
|
import Mathlib.Tactic.LeftRight
|
|
|
|
|
import Mathlib.Tactic.Contrapose
|
|
|
|
|
import Mathlib.Tactic.Use
|
|
|
|
|
import Mathlib.Tactic.Ring
|
|
|
|
|
|
|
|
|
|
import TestGame.ToBePorted
|
|
|
|
|
|
|
|
|
|
Game "TestGame"
|
|
|
|
|
World "Contradiction"
|
|
|
|
|
Level 1
|
|
|
|
|
|
|
|
|
|
Title "Have"
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
"
|
|
|
|
|
Manchmal, wollen wir nicht am aktuellen Goal arbeiten, sondern zuerst ein
|
|
|
|
|
Zwischenresultat beweisen, welches wir dann benützen können.
|
|
|
|
|
|
|
|
|
|
Mit `have [Name] : [Aussage]` kann man ein Zwischenresultat erstellen,
|
|
|
|
|
dass man anschliessen beweisen muss.
|
|
|
|
|
|
|
|
|
|
Wenn du zum Beispiel die Annahmen `(h : A → ¬ B)` und `(ha : A)` hast, kannst
|
|
|
|
|
du mit
|
|
|
|
|
```
|
|
|
|
|
have g : ¬ B
|
|
|
|
|
apply h
|
|
|
|
|
assumption
|
|
|
|
|
```
|
|
|
|
|
eine neue Annahme `(g : ¬ B)` erstellen. Danach beweist du zuerst diese Annahme,
|
|
|
|
|
bevor du dann mit dem Beweis forfährst.
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
Statement
|
|
|
|
|
"Angenommen, man hat eine Implikation $A \\Rightarrow \\neg B$ und weiss, dass
|
|
|
|
|
$A \\land B$ wahr ist. Zeige, dass dies zu einem Widerspruch führt."
|
|
|
|
|
(A B : Prop) (h : A → ¬ B) (g : A ∧ B) : False := by
|
|
|
|
|
rcases g with ⟨h₁, h₂⟩
|
|
|
|
|
have h₃ : ¬ B
|
|
|
|
|
apply h
|
|
|
|
|
assumption
|
|
|
|
|
contradiction
|
|
|
|
|
|
|
|
|
|
Message (A : Prop) (B : Prop) (h : A → ¬ B) (g : A ∧ B) : False =>
|
|
|
|
|
" Fang mal damit an, das UND in den Annahmen mit `rcases` aufzuteilen.
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
Message (A : Prop) (B : Prop) (h : A → ¬ B) (g : A) (f : B) : False =>
|
|
|
|
|
"
|
|
|
|
|
Auf Deutsch: \"Als Zwischenresultat haben wir `¬ B`.\"
|
|
|
|
|
|
|
|
|
|
In Lean :
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
have k : ¬ B
|
|
|
|
|
[Beweis von k]
|
|
|
|
|
```
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
-- example (n : ℕ) : n.succ + 2 = n + 3 := by
|
|
|
|
|
-- ring_nf
|
|
|
|
|
|
|
|
|
|
Conclusion ""
|
|
|
|
|
|
|
|
|
|
Tactics contradiction rcases haveₓ assumption apply
|
|
|
|
|
|
|
|
|
|
Lemmas Even Odd not_even not_odd
|