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.
66 lines
2.0 KiB
Plaintext
66 lines
2.0 KiB
Plaintext
import Adam.Metadata
|
|
import Std.Tactic.RCases
|
|
import Mathlib.Tactic.LeftRight
|
|
import Mathlib.Tactic.Contrapose
|
|
import Mathlib.Tactic.Use
|
|
import Mathlib.Tactic.Ring
|
|
import Mathlib
|
|
|
|
import Adam.ToBePorted
|
|
|
|
Game "Adam"
|
|
World "Contradiction"
|
|
Level 3
|
|
|
|
Title "Per Widerspruch"
|
|
|
|
Introduction
|
|
"**Oddeus**: Ich verstehe *Evenine* einfach nicht. Ich will euch auch gleich zeigen,
|
|
was sie mir letzthin geschrieben hat, aber zuerst schaut einmal unseren
|
|
wunderschönen Absurda-Tempel an!
|
|
|
|
Damit kommt ihr vor einen sehr hohen Turm, der ausschliesslich aus Dornenranken gewachsen
|
|
scheint.
|
|
|
|
**Oddeus**: Versteht ihr, was hier über dem Eingang steht?
|
|
"
|
|
|
|
-- Eine sehr nützliche Beweismethode ist per Widerspruch.
|
|
|
|
-- Wir habe schon gesehen, dass `contradiction` einen Widerspruch in den Annahmen
|
|
-- sucht, und damit jegliches beweisen kann.
|
|
|
|
-- Um dorthin zu kommen, können wir `by_contra h` brauchen, welches das aktuelle
|
|
-- Goal auf `False` setzt und die Negierung des Goals als Annahme hinzufügt.
|
|
|
|
-- Insbesondere braucht man `by_contra h` meistens, wenn im Goal eine Negierung
|
|
-- steht:
|
|
|
|
Statement (A B : Prop) (g : A → B) (b : ¬ B) : ¬ A := by
|
|
Hint "**Robo**: Ein `¬` im Goal heisst häufig, dass du einen Widerspruchsbeweis führen
|
|
möchtest.
|
|
|
|
**Du**: Und wie mach ich das? Mit `contradiction`?
|
|
|
|
**Robo**: Mit `by_contra h` fängst du einen an. Mit `contradiction` schliesst du ihn dann
|
|
später ab."
|
|
by_contra h
|
|
Hint "**Robo**: Jetzt hast du also eine Annahme `{h} : ¬ {A}`, und damit musst du einen
|
|
Widerspruch herbeileiten.
|
|
|
|
Ein Methode ist, dass du jetzt mit `suffices` sagts, zu was du denn gerne den Widerspruch
|
|
haben möchtest, zum Beispiel `suffices k : B`
|
|
"
|
|
suffices k : B
|
|
Hint "**Du**: Ah und jetzt kann ich einfach sagen dass sich die Anahmen `{B}` und `¬{B}`
|
|
widersprechen."
|
|
contradiction
|
|
Hint "**Robo**: Und jetzt kannst du noch das Ergebnis zeigen, das zu einem Widerspruch
|
|
geführt hat."
|
|
apply g
|
|
assumption
|
|
|
|
NewTactic by_contra
|
|
|
|
Conclusion "**Oddeus**: Sehr gut, kommt mit hinein!"
|