small fixes
This commit is contained in:
+1
-1
@@ -44,7 +44,7 @@ function App() {
|
|||||||
if (finished) {
|
if (finished) {
|
||||||
mainComponent = <GoodBye message={conclusion} />
|
mainComponent = <GoodBye message={conclusion} />
|
||||||
} else if (curLevel > 0) {
|
} else if (curLevel > 0) {
|
||||||
mainComponent = <Level nbLevels={5} level={curLevel} setCurLevel={setCurLevel} setLevelTitle={setLevelTitle} setFinished={setFinished}/>
|
mainComponent = <Level nbLevels={99} level={curLevel} setCurLevel={setCurLevel} setLevelTitle={setLevelTitle} setFinished={setFinished}/>
|
||||||
} else {
|
} else {
|
||||||
mainComponent = <Welcome setNbLevels={setNbLevels} startGame={startGame} setConclusion={setConclusion}/>
|
mainComponent = <Welcome setNbLevels={setNbLevels} startGame={startGame} setConclusion={setConclusion}/>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import TestGame.Metadata
|
import TestGame.Metadata
|
||||||
|
import Mathlib
|
||||||
|
|
||||||
Game "TestGame"
|
Game "TestGame"
|
||||||
World "TestWorld"
|
World "TestWorld"
|
||||||
@@ -16,38 +17,40 @@ kann man die Taktik `rw` (steht für 'rewrite') brauchen um im Goal
|
|||||||
das eine durch das andere zu ersetzen.
|
das eine durch das andere zu ersetzen.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement umschreiben
|
Statement (A : Prop) (hA : A) : A := by
|
||||||
"
|
|
||||||
Angenommen man hat die Gleichheiten
|
|
||||||
`a = b`, `a = d`, `c = d`.
|
|
||||||
Zeige dass `b = c`.
|
|
||||||
"
|
|
||||||
(a b c d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c := by
|
|
||||||
rw [h₁]
|
|
||||||
rw [←h₂]
|
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
-- Gleich am Anfang anzeigen.
|
-- Statement umschreiben
|
||||||
Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
|
-- "
|
||||||
"Wenn man eine Annahme `(h₁ : c = d)` hat, kann man mit `rw [h₁]` (oder `rewrite [h₁]`) das erste
|
-- Angenommen man hat die Gleichheiten
|
||||||
`c` im Goal mit `d` ersetzen."
|
-- `a = b`, `a = d`, `c = d`.
|
||||||
|
-- Zeige dass `b = c`.
|
||||||
|
-- "
|
||||||
|
-- (a b c d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c := by
|
||||||
|
-- rw [h₁]
|
||||||
|
-- rw [←h₂]
|
||||||
|
-- assumption
|
||||||
|
|
||||||
Hint (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
|
-- -- Gleich am Anfang anzeigen.
|
||||||
"Die kleinen Zahlen `h₁ h₂ h₃` werden in Lean oft verwendet und man schreibt diese mit
|
-- Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
|
||||||
`\\1`, `\\2`, `\\3`, …"
|
-- "Wenn man eine Annahme `(h₁ : c = d)` hat, kann man mit `rw [h₁]` (oder `rewrite [h₁]`) das erste
|
||||||
|
-- `c` im Goal mit `d` ersetzen."
|
||||||
|
|
||||||
Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = d =>
|
-- Hint (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
|
||||||
"Mit `rw [← h₂]` (`\\l`, also klein L wie \"left\") kann man eine Hypotheses
|
-- "Die kleinen Zahlen `h₁ h₂ h₃` werden in Lean oft verwendet und man schreibt diese mit
|
||||||
`(h₂ : a = b)` rückwärts anwenden und `b` durch `a` ersetzen."
|
-- `\\1`, `\\2`, `\\3`, …"
|
||||||
|
|
||||||
-- TODO: Muss ich das wirklich mehrmals auflisten?
|
-- Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = d =>
|
||||||
Message (x : ℕ) : x = x =>
|
-- "Mit `rw [← h₂]` (`\\l`, also klein L wie \"left\") kann man eine Hypotheses
|
||||||
"Der Hauptunterschied zwischen `rw` und `rewrite` ist, dass das erste automatisch versucht,
|
-- `(h₂ : a = b)` rückwärts anwenden und `b` durch `a` ersetzen."
|
||||||
anschliessend `rfl` anzuwenden. Bei `rewrite` musst du `rfl` explizit noch aufrufen."
|
|
||||||
|
-- -- TODO: Muss ich das wirklich mehrmals auflisten?
|
||||||
|
-- Message (x : ℕ) : x = x =>
|
||||||
|
-- "Der Hauptunterschied zwischen `rw` und `rewrite` ist, dass das erste automatisch versucht,
|
||||||
|
-- anschliessend `rfl` anzuwenden. Bei `rewrite` musst du `rfl` explizit noch aufrufen."
|
||||||
|
|
||||||
Conclusion "Übrigens, mit `rw [h₁] at h₂` kann man auch eine andere Annahme umschreiben
|
Conclusion "Übrigens, mit `rw [h₁] at h₂` kann man auch eine andere Annahme umschreiben
|
||||||
anstatt dem Goal."
|
anstatt dem Goal."
|
||||||
-- TODO: Das macht es doch unmöglich mit den Messages...
|
-- TODO: Das macht es doch unmöglich mit den Messages...
|
||||||
|
|
||||||
Tactics assumption
|
Tactics assumption rw
|
||||||
Tactics rw
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import TestGame.Metadata
|
import TestGame.Metadata
|
||||||
|
|
||||||
|
set_option tactic.hygienic false
|
||||||
|
|
||||||
Game "TestGame"
|
Game "TestGame"
|
||||||
World "TestWorld"
|
World "TestWorld"
|
||||||
Level 8
|
Level 8
|
||||||
@@ -8,7 +10,8 @@ Title "Implikation"
|
|||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
"
|
"
|
||||||
Wenn das Goal von der Form `A → B` ist, kann man mit `intro` annehmen, dass `A` wahr ist
|
Wenn das Goal von der Form `A → B` ist, kann man mit `intro hA` annehmen, dass `A` wahr ist
|
||||||
|
(i.e. erstellt eine Annahme `(hA : A)`)
|
||||||
und das Goal wird zu `B`.
|
und das Goal wird zu `B`.
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|||||||
@@ -26,5 +26,4 @@ Statement
|
|||||||
rw [←h₂]
|
rw [←h₂]
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
Tactics rw
|
Tactics rw assumption
|
||||||
Tactics assumption
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ aus mehreren Einzelteilen besteht: `⟨A → B, B → A⟩`. Man sagt also Lean,
|
|||||||
ob das Goal aus solchen Einzelteilen \"konstruiert\" werden kann.
|
ob das Goal aus solchen Einzelteilen \"konstruiert\" werden kann.
|
||||||
"
|
"
|
||||||
|
|
||||||
Tactics constructor
|
Tactics constructor assumption
|
||||||
Tactics assumption
|
|
||||||
|
|
||||||
-- TODO : `case mpr =>` ist mathematisch noch sinnvoll.
|
-- TODO : `case mpr =>` ist mathematisch noch sinnvoll.
|
||||||
|
|||||||
@@ -55,4 +55,4 @@ Message (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) : C ∧ A =>
|
|||||||
Message (A : Prop) (B : Prop) (C : Prop) (h : A → C) : C ∧ A =>
|
Message (A : Prop) (B : Prop) (C : Prop) (h : A → C) : C ∧ A =>
|
||||||
"Ein UND im Goal kann mit `constructor` aufgeteilt werden."
|
"Ein UND im Goal kann mit `constructor` aufgeteilt werden."
|
||||||
|
|
||||||
Tactics left right assumption constructor rcases
|
Tactics left right assumption constructor rcases apply
|
||||||
|
|||||||
Reference in New Issue
Block a user