|
|
|
|
import TestGame.Metadata
|
|
|
|
|
import Mathlib
|
|
|
|
|
|
|
|
|
|
Game "TestGame"
|
|
|
|
|
World "Logic"
|
|
|
|
|
Level 6
|
|
|
|
|
|
|
|
|
|
Title "Implikation"
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
"Als nächstes widmen wir uns der Implikation $A \\Rightarrow B$.
|
|
|
|
|
|
|
|
|
|
Mit zwei logischen Aussagen `(A : Prop)`, `(B : Prop)` schreibt man eine Implikation
|
|
|
|
|
als `A → B` (`\\to`).
|
|
|
|
|
|
|
|
|
|
Wenn man als Goal $B$ hat und eine Impikation `(g : A → B)` kann man mit `apply g` diese
|
|
|
|
|
anwenden, worauf das Goal $A$ ist. Auf Papier würde man an der Stelle
|
|
|
|
|
folgendes zu schreiben: \"Es genügt $A$ zu zeigen, denn $A$ impliziert $B$\".
|
|
|
|
|
|
|
|
|
|
*Bemerke:* Das ist der selbe Pfeil, der später auch für Funktionen wie `ℕ → ℕ` gebraucht
|
|
|
|
|
wird, deshalb heisst er `\\to`."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Statement
|
|
|
|
|
"Seien $A$, $B$ logische Aussagen, wobei $A$ wahr ist und $A$ impliziert $B$.
|
|
|
|
|
Zeige, dass $B$ wahr ist."
|
|
|
|
|
(A B : Prop) (hA : A) (g : A → B) : B := by
|
|
|
|
|
apply g
|
|
|
|
|
assumption
|
|
|
|
|
|
|
|
|
|
Hint (A : Prop) (B : Prop) (hA : A) (g : A → B) : A =>
|
|
|
|
|
"Mit `apply g` kannst du die Implikation `g` anwenden."
|
|
|
|
|
|
|
|
|
|
Hint (A : Prop) (B : Prop) (hA : A) (g : A → B) : A =>
|
|
|
|
|
"Nachdem du die Implikation `A → B` angewendet hast, musst du nur noch $A$ zeigen,
|
|
|
|
|
dafür hast du bereits einen Beweis in den Annahmen."
|
|
|
|
|
|
|
|
|
|
Tactics apply assumption
|
|
|
|
|
|
|
|
|
|
-- Mathjax notes
|
|
|
|
|
-- `\\\\( \\\\)` or `$ $` for inline
|
|
|
|
|
-- and `$$ $$` block.
|
|
|
|
|
-- align block:
|
|
|
|
|
-- $$\\begin{aligned} 2x - 4 &= 6 \\\\\\\\ 2x &= 10 \\\\\\\\ x &= 5 \\end{aligned}$$
|