more levels. lake-packages

This commit is contained in:
Jon Eugster
2022-12-06 11:14:24 +01:00
parent 80e1c6f5e0
commit b61ffb4499
11 changed files with 166 additions and 85 deletions
@@ -17,37 +17,34 @@ kann man die Taktik `rw` (steht für 'rewrite') brauchen um im Goal
das eine durch das andere zu ersetzen.
"
Statement (A : Prop) (hA : A) : A := by
Statement umschreiben
"
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
-- Statement umschreiben
-- "
-- 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
-- Gleich am Anfang anzeigen.
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
`c` im Goal mit `d` ersetzen."
-- -- Gleich am Anfang anzeigen.
-- 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
-- `c` im Goal mit `d` ersetzen."
Hint (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
"Die kleinen Zahlen `h₁ h₂ h₃` werden in Lean oft verwendet und man schreibt diese mit
`\\1`, `\\2`, `\\3`, …"
-- Hint (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = c =>
-- "Die kleinen Zahlen `h₁ h₂ h₃` werden in Lean oft verwendet und man schreibt diese mit
-- `\\1`, `\\2`, `\\3`, …"
Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = d =>
"Mit `rw [← h₂]` (`\\l`, also klein L wie \"left\") kann man eine Hypotheses
`(h₂ : a = b)` rückwärts anwenden und `b` durch `a` ersetzen."
-- Message (a : ℕ) (b : ℕ) (c : ℕ) (d : ℕ) (h₁ : c = d) (h₂ : a = b) (h₃ : a = d) : b = d =>
-- "Mit `rw [← h₂]` (`\\l`, also klein L wie \"left\") kann man eine Hypotheses
-- `(h₂ : a = b)` rückwärts anwenden und `b` durch `a` ersetzen."
-- -- 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."
-- 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
anstatt dem Goal."
@@ -1,5 +1,8 @@
import TestGame.Metadata
import Init.Data.ToString
#check List UInt8
Game "TestGame"
World "TestWorld"
Level 9
@@ -2,7 +2,7 @@ import TestGame.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.LeftRight
set_option tactic.hygienic false
--set_option tactic.hygienic false
Game "TestGame"
World "TestWorld"