changes to levels
parent
01e2b3b4a1
commit
9d1a591670
@ -1,33 +0,0 @@
|
||||
import TestGame.Metadata
|
||||
import Mathlib
|
||||
|
||||
Game "TestGame"
|
||||
World "Implication"
|
||||
Level 20
|
||||
|
||||
Title "Nicht-nicht"
|
||||
|
||||
Introduction
|
||||
"
|
||||
Wenn man ein Nicht (`¬`) im Goal hat, will man meistens einen Widerspruch starten,
|
||||
wie im nächsten Level dann gezeigt wird. Manchmal aber hat man Terme der Form
|
||||
`¬ (¬ A)`, in welchem Fall das Lemma `not_not` nützlich ist, welches du mit
|
||||
`rw` oder `apply` benützen kannst.
|
||||
"
|
||||
|
||||
Statement
|
||||
"Zeige, dass $\\neg(\\neg A)$ äquivalent zu $A$ ist."
|
||||
(A : Prop) : ¬ (¬ A) ↔ A := by
|
||||
rw [not_not]
|
||||
|
||||
Message (A : Prop) : ¬ (¬ A) ↔ A => "Da `not_not` ein Lemma der Form `X ↔ Y` ist,
|
||||
kannst du wahlweise `rw [not_not]` oder `apply not_not` benützen.
|
||||
|
||||
- `rw` ersetzt `¬ (¬ A)` mit `A` und schliesst dann `A ↔ A` mit `rfl`.
|
||||
- `apply` hingegen funktioniert hier nur, weil das gesamte Goal
|
||||
genau mit der Aussage des Lemmas übereinstimmt.
|
||||
"
|
||||
|
||||
Tactics rw apply
|
||||
|
||||
Lemmas not_not
|
@ -1 +1,9 @@
|
||||
import TestGame.Levels.Predicate.L01_Ring
|
||||
import TestGame.Levels.Predicate.L02_Rewrite
|
||||
import TestGame.Levels.Predicate.L03_Rewrite
|
||||
import TestGame.Levels.Predicate.L04_Ring
|
||||
import TestGame.Levels.Predicate.L05_Rfl
|
||||
import TestGame.Levels.Predicate.L06_Exists
|
||||
import TestGame.Levels.Predicate.L07_Forall
|
||||
import TestGame.Levels.Predicate.L08_PushNeg
|
||||
import TestGame.Levels.Predicate.L09_Summary
|
||||
|
@ -0,0 +1 @@
|
||||
import TestGame.Levels.Prime.L01_Prime
|
Loading…
Reference in New Issue