add definitions

This commit is contained in:
Alexander Bentkamp
2023-03-01 17:31:58 +01:00
parent 2be1a348ee
commit a44efef7de
13 changed files with 40 additions and 24 deletions
+5 -4
View File
@@ -91,13 +91,14 @@ partial def findForbiddenTactics (inputCtx : Parser.InputContext) (levelParams :
for n in ns do
let some (.thmInfo ..) := (← getEnv).find? n
| return () -- not a theroem -> ignore
match levelParams.lemmas.find? (fun l => l.name.toString == n) with
| none => addErrorMessage info s!"You have not unlocked the lemma '{n}' yet!"
let lemmasAndDefs := levelParams.lemmas ++ levelParams.definitions
match lemmasAndDefs.find? (fun l => l.name.toString == n) with
| none => addErrorMessage info s!"You have not unlocked the lemma/definition '{n}' yet!"
| some lem =>
if lem.locked then
addErrorMessage info s!"You have not unlocked the lemma '{n}' yet!"
addErrorMessage info s!"You have not unlocked the lemma/definition '{n}' yet!"
else if lem.disabled then
addErrorMessage info s!"The lemma '{n}' is disabled in this level!"
addErrorMessage info s!"The lemma/definition '{n}' is disabled in this level!"
where addErrorMessage (info : SourceInfo) (s : MessageData) :=
modify fun st => { st with
messages := st.messages.add {
+8 -4
View File
@@ -42,8 +42,9 @@ Fields:
structure LevelInfo where
index : Nat
title : String
tactics: Array Availability
lemmas: Array Availability
tactics : Array Availability
lemmas : Array Availability
definitions : Array Availability
introduction : String
descrText : String := ""
descrFormat : String := ""
@@ -57,8 +58,9 @@ structure LoadLevelParams where
structure DidOpenLevelParams where
uri : String
levelModule : Name
tactics: Array Availability
lemmas: Array Availability
tactics : Array Availability
lemmas : Array Availability
definitions : Array Availability
deriving ToJson, FromJson
structure Doc where
@@ -91,6 +93,7 @@ def handleDidOpenLevel (params : Json) : GameServerM Unit := do
levelModule := lvl.module
tactics := lvl.tactics.computed
lemmas := lvl.lemmas.computed
definitions := lvl.definitions.computed
: DidOpenLevelParams
}
}
@@ -119,6 +122,7 @@ partial def handleServerEvent (ev : ServerEvent) : GameServerM Bool := do
title := lvl.title,
tactics := lvl.tactics.computed,
lemmas := lvl.lemmas.computed,
definitions := lvl.definitions.computed,
descrText := lvl.descrText,
descrFormat := lvl.descrFormat --toExpr <| format (lvl.goal.raw) --toString <| Syntax.formatStx (lvl.goal.raw) --Syntax.formatStx (lvl.goal.raw) , -- TODO
introduction := lvl.introduction }
+2 -2
View File
@@ -61,13 +61,13 @@ LemmaDoc not_forall as not_forall in "Logic"
LemmaDoc not_exists as not_exists in "Logic"
"`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`."
LemmaDoc Even as Even in "Nat"
DefinitionDoc Even
"
`even n` ist definiert als `∃ r, a = 2 * r`.
Die Definition kann man mit `unfold even at *` einsetzen.
"
LemmaDoc Odd as Odd in "Nat"
DefinitionDoc Odd
"
`odd n` ist definiert als `∃ r, a = 2 * r + 1`.
Die Definition kann man mit `unfold odd at *` einsetzen.
@@ -66,4 +66,5 @@ Conclusion ""
NewTactics «have»
DisabledTactics «suffices»
NewLemmas Even Odd not_even not_odd
NewDefinitions Even Odd
NewLemmas not_even not_odd
@@ -62,5 +62,5 @@ Conclusion ""
NewTactics «suffices»
DisabledTactics «have»
NewLemmas Even Odd not_even not_odd
NewDefinitions Even Odd
NewLemmas not_even not_odd
@@ -62,4 +62,5 @@ Hint (n : ℕ) : Even n → Even (n ^ 2) =>
"Diese Aussage hast du bereits als Lemma bewiesen, schau mal in der Bibliothek."
NewTactics contrapose rw apply
NewLemmas Even Odd not_even not_odd even_square
NewDefinitions Even Odd
NewLemmas not_even not_odd even_square
@@ -72,5 +72,5 @@ HiddenHint (n: ℕ) (h : Odd (n ^ 2)) (g : Even n) : Even (n ^ 2) =>
NewTactics contradiction by_contra rw apply assumption -- TODO: suffices, have
NewLemmas Odd Even not_odd not_even even_square
NewDefinitions Even Odd
NewLemmas not_odd not_even even_square
@@ -68,4 +68,4 @@ Hint (n : ℕ) (x : ℕ) (hx : n = x + x) : (x + x) ^ 2 = 2 * x ^ 2 + 2 * x ^ 2
"Die Taktik `ring` löst solche Gleichungen."
NewTactics unfold rcases use rw ring
NewLemmas Even Odd
NewDefinitions Even Odd
@@ -63,5 +63,5 @@ Hint (n : ℕ) : n + n = 2 * n => "Recap: `ring` löst Gleichungen in `ℕ`."
Conclusion ""
NewTactics push_neg intro use rw unfold ring
NewLemmas Even Odd not_even not_odd not_exists not_forall
NewDefinitions Even Odd
NewLemmas not_even not_odd not_exists not_forall
@@ -51,5 +51,5 @@ Statement
Conclusion ""
NewTactics push_neg intro use rw unfold ring
NewLemmas Even Odd not_even not_odd not_exists not_forall
NewDefinitions Even Odd
NewLemmas not_even not_odd not_exists not_forall