|
|
|
@ -14,53 +14,56 @@ Title "Kontraposition"
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
"
|
|
|
|
|
Ein Beweis durch Kontraposition benützt im Grunde das eben bewiesene Lemma
|
|
|
|
|
*Oddeus* reicht euch das Papier.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
lemma not_imp_not (A B : Prop) : (A → B) ↔ (¬ B → ¬ A) := by
|
|
|
|
|
[...]
|
|
|
|
|
```
|
|
|
|
|
**Du**: Da steht etwas über `contrapose` hier…
|
|
|
|
|
|
|
|
|
|
Dazu gibt es die Taktik `contrapose`, welche eine Implikation im Goal
|
|
|
|
|
entsprechend umdreht.
|
|
|
|
|
**Oddeus**: Das ist doch klar eine Aggression uns gegenüber!
|
|
|
|
|
|
|
|
|
|
Wir erinnern hier an die Taktik `revert h`, die aus der Annahme `h` eine Implikation
|
|
|
|
|
im Goal erstellt.
|
|
|
|
|
**Robo**: Wartet mal, vielleicht wollte euch eure Schwester einfach von ihren neuen
|
|
|
|
|
Endeckungen zeigen. Schaut, darunter ist eine Aufgabe.
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
Im Gegensatz dazu kann man auch einen Beweis durch Kontraposition führen.
|
|
|
|
|
Das ist kein Widerspruch, sondern benützt dass `A → B` und `(¬ B) → (¬ A)`
|
|
|
|
|
logisch equivalent sind.
|
|
|
|
|
-- Ein Beweis durch Kontraposition benützt im Grunde das eben bewiesene Lemma
|
|
|
|
|
|
|
|
|
|
Wenn das Goal eine Implikation ist, kann man `contrapose` anwenden.
|
|
|
|
|
"
|
|
|
|
|
-- ```
|
|
|
|
|
-- lemma not_imp_not (A B : Prop) : (A → B) ↔ (¬ B → ¬ A) := by
|
|
|
|
|
-- [...]
|
|
|
|
|
-- ```
|
|
|
|
|
|
|
|
|
|
Statement
|
|
|
|
|
"Ist n² ungerade, so ist auch n ungerade. Beweise durch Kontraposition."
|
|
|
|
|
(n : ℕ) (h : Odd (n ^ 2)): Odd n := by
|
|
|
|
|
revert h
|
|
|
|
|
contrapose
|
|
|
|
|
rw [not_odd]
|
|
|
|
|
rw [not_odd]
|
|
|
|
|
apply even_square
|
|
|
|
|
-- Dazu gibt es die Taktik `contrapose`, welche eine Implikation im Goal
|
|
|
|
|
-- entsprechend umdreht.
|
|
|
|
|
|
|
|
|
|
HiddenHint (n : ℕ) (h : Odd (n ^ 2)) : Odd n =>
|
|
|
|
|
"Um `contrapose` anzuwenden, brauchen wir eine Implikation `Odd (n ^ 2) → Odd n` im
|
|
|
|
|
Goal. Benutze `revert h`!"
|
|
|
|
|
-- Wir erinnern hier an die Taktik `revert h`, die aus der Annahme `h` eine Implikation
|
|
|
|
|
-- im Goal erstellt.
|
|
|
|
|
|
|
|
|
|
Hint (n : ℕ) : Odd (n ^ 2) → Odd n =>
|
|
|
|
|
"Mit `contrapose` kann man die Implikation zu
|
|
|
|
|
`¬ (Not n) → ¬ (Odd n^2)` umkehren."
|
|
|
|
|
-- Im Gegensatz dazu kann man auch einen Beweis durch Kontraposition führen.
|
|
|
|
|
-- Das ist kein Widerspruch, sondern benützt dass `A → B` und `(¬ B) → (¬ A)`
|
|
|
|
|
-- logisch equivalent sind.
|
|
|
|
|
|
|
|
|
|
Hint (n : ℕ) : ¬Odd n → ¬Odd (n ^ 2) => "Erinnere dich an das Lemma `not_odd`."
|
|
|
|
|
-- Wenn das Goal eine Implikation ist, kann man `contrapose` anwenden.
|
|
|
|
|
|
|
|
|
|
HiddenHint (n : ℕ) : ¬Odd n → ¬Odd (n ^ 2) => "Dieses kann mit `rw` gebraucht werden."
|
|
|
|
|
Statement (n : ℕ) (h : Odd (n ^ 2)): Odd n := by
|
|
|
|
|
Hint "**Oddeus**: Wie soll das den gehen?
|
|
|
|
|
|
|
|
|
|
Hint (n : ℕ) : Even n → ¬Odd (n ^ 2) =>
|
|
|
|
|
"rw [not_odd] muss hier zweimal angewendet werden."
|
|
|
|
|
**Robo**: `contrapose` benutzt das Lemma eurer Gelehrter, `not_imp_not`. Also es wandelt
|
|
|
|
|
ein Goal `A → B` zu `¬B → ¬A ` um.
|
|
|
|
|
|
|
|
|
|
**Du**: Aber das Goal ist doch gar keine Implikation?
|
|
|
|
|
|
|
|
|
|
**Robo**: Mit `revert {h}` kannst du die Annahme `{h}` als Implikationsannahme ins Goal
|
|
|
|
|
schieben."
|
|
|
|
|
revert h
|
|
|
|
|
Hint "*Oddeus*: Ob man jetzt wohl dieses `contrapose` benutzen kann?"
|
|
|
|
|
contrapose
|
|
|
|
|
Hint (hidden := true) "**Du**: Warte mal, jetzt kann man wohl `not_odd` verwenden…"
|
|
|
|
|
rw [not_odd]
|
|
|
|
|
rw [not_odd]
|
|
|
|
|
Hint "**Robo**: Und den Rest hast du bei *Evenine* als Lemma gezeigt!"
|
|
|
|
|
apply even_square
|
|
|
|
|
|
|
|
|
|
Hint (n : ℕ) : Even n → Even (n ^ 2) =>
|
|
|
|
|
"Diese Aussage hast du bereits als Lemma bewiesen, schau mal in der Bibliothek."
|
|
|
|
|
NewTactic contrapose
|
|
|
|
|
DisabledTactic by_contra
|
|
|
|
|
|
|
|
|
|
NewTactic contrapose rw apply
|
|
|
|
|
NewDefinition Even Odd
|
|
|
|
|
NewLemma not_even not_odd even_square
|
|
|
|
|
Conclusion "**Oddeus**: Ah ich sehe, die Aussage ist, dass wir das nur zusammen lösen konnten.
|
|
|
|
|
Ich danke euch, darauf wäre ich nie gekommen."
|
|
|
|
|