|
|
|
import Adam.Metadata
|
|
|
|
import Std.Tactic.RCases
|
|
|
|
import Mathlib.Tactic.LeftRight
|
|
|
|
import Mathlib.Tactic.Contrapose
|
|
|
|
import Mathlib.Tactic.Use
|
|
|
|
import Mathlib.Tactic.Ring
|
|
|
|
|
|
|
|
import Adam.ToBePorted
|
|
|
|
|
|
|
|
Game "Adam"
|
|
|
|
World "Contradiction"
|
|
|
|
Level 1
|
|
|
|
|
|
|
|
Title "Was wir haben, haben wir."
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
"
|
|
|
|
**Benedictus**: Hier, schaut mal. Das habe ich für Euch vorbereitet.
|
|
|
|
"
|
|
|
|
|
|
|
|
-- 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 (A B : Prop) (h : A → ¬ B) (k : A ∧ B) : False := by
|
|
|
|
Hint "**Du**: Also als erstes teile ich wohl mal das Und (`∧`) auf."
|
|
|
|
rcases k with ⟨h₁, h₂⟩
|
|
|
|
Hint "**Du**: Und jetzt …
|
|
|
|
|
|
|
|
**Benedictus**: … solltest Du Dir ein passendes Zwischenresultat zurechtlegen.
|
|
|
|
|
|
|
|
**Robo**: Ja! Probier mal `have g : ¬ B`!"
|
|
|
|
have g : ¬ B
|
|
|
|
· Hint "**Du**: Was? Jetzt hab ich einfach angenommen, dass sei richtig?
|
|
|
|
|
|
|
|
**Robo**: Nee, jetzt musst Du das erst noch beweisen, bevor Du es dann benutzen kannst."
|
|
|
|
Hint (hidden := true) "**Robo**: `apply` sollte helfen"
|
|
|
|
apply h
|
|
|
|
assumption
|
|
|
|
· Hint (hidden := true) "**Du**: Und wie war das nochmals wenn zwei Annahmen sich widersprechen?
|
|
|
|
|
|
|
|
**Robo**: `contradiction`."
|
|
|
|
contradiction
|
|
|
|
|
|
|
|
NewTactic «have»
|
|
|
|
DisabledTactic «suffices»
|
|
|
|
|
|
|
|
Conclusion "**Benedictus**: Das sieht gut aus!"
|