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.
lean4game/server/testgame/TestGame/Levels/Proving/L07_Contrapose.lean

51 lines
1.5 KiB
Plaintext

import TestGame.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.Contrapose
import Mathlib.Tactic.Use
import Mathlib.Tactic.Ring
import TestGame.ToBePorted
Game "TestGame"
World "Proving"
Level 3
Title "Kontraposition"
Introduction
"
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.
Wenn das Goal eine Implikation ist, kann man `contrapose` anwenden.
"
Statement
"Ist n² ungerade, so ist auch n ungerade. Beweise durch Kontraposition."
(n : ) : Odd (n ^ 2) → Odd n := by
contrapose
rw [not_odd]
rw [not_odd]
apply even_square
Message (n : ) (h : Odd (n ^ 2)) : Odd n =>
2 years ago
"`intro` wär generell ein guter Ansatz! Aber hier wollen wir `contrapose` benützen, was eine
Implikation benötigt, deshalb ist `intro` hier der falsche Weg!"
Message (n : ) : Odd (n ^ 2) → Odd n =>
2 years ago
"Mit `contrapose` kann man die Implikation zu
`¬ (even n) → ¬ (even n^2)` umkehren."
Hint (n : ) : ¬Odd n → ¬Odd (n ^ 2) => "Du kennst bereits ein Lemma um `¬ odd ...` mit `rw`
2 years ago
umzuschreiben"
Message (n : ) : Even n → ¬Odd (n ^ 2) => "rw [not_odd] muss hier zweimal angewendet werden,
2 years ago
da rw das erste Mal `not_odd n` gebraucht hat und das zweite Mal `not_odd (n^2)` benützt."
Message (n : ) : Even n → Even (n ^ 2) => "Diese Aussage hast du bereits als Lemma bewiesen."
2 years ago
Tactics contrapose rw apply
Lemmas Even Odd not_even not_odd even_square