You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lean4game/CREATE_GAME.md

98 lines
3.3 KiB
Markdown

# Level
A level is a single exercise that should be solved by the user. Here is an example:
```lean
import GameServer.Commands -- also import everything else you need.
Game "NNG"
World "Addition"
Level 2 -- must start at `1` and be consequtive.
Title "add_zero"
Introduction "" -- optional. Is displayed throughout the level.
Statement MyNat.zero_add -- optional. if name is specified, the lemma will be added to the inventory in future levels.
"description in mathematical term" -- optional. mathematical description
(n : ) : n + 0 = n := by -- statement: exactly how it would be in a `theorem`. (bug: forgets about implicit arguments)
intro k
rw [add_zero]
Hint "look at {k}." -- hint at this place. `{k}` gets the user's name for the variable (bug currently)
Hint (hidden := true) "more" -- hidden hint
use n
Branch -- A branch in the proof. Does not modify the goal but useful
simp -- to place hints at dead ends etc.
tauto
rw [add_comm]
rfl
LemmaTab "Nat" -- optional. specify the tab that's open in the lemma inventory
NewLemma add_zero -- optional. add lemma to inventory
NewTactic rw -- optional. add tactic to inventory
NewDefinition Nat -- optional. add definition to inventory
DisabledLemma add_zero -- optional. disable specific lemmas
DisabledTactic tauto simp -- optional. disable tactics
OnlyLemma add_zero -- optional. disable all lemmas but these
OnlyTactic assumption rw -- optional. disable all tactics but these
Conclusion "" -- optional. Show when level completed
```
And in the following there are some tips that might be important.
## Imports
You're level can import levels from the same world
```
import NNG.Levels.Addition.Level_1
```
as well as entire other worlds
```
import NNG.Levels.Multiplication
```
However, you must not import a single level in a different world's level or
it will mess up the World introduction texts (bug?)
## Documentation (Lemmas, Tactics, Definitions)
It will complain when the specified lemma/tactic names do not have documentation.
In that case you need to add `LemmaDoc`/`TacticDoc`/`DefinitionDoc` entries in the
doc part (and `ctrl+shift+X`-reload your file in VSCode). See info under `Game > Documentation`
# World
combines multiple levels, like a chapter. Description pending.
# Game
Combines different games in form of a directed graph. Description pending.
## Documentation
It is recommended to have all documentation for the inventory centrally and import it in
the levels
```lean
LemmaDoc MyNat.add_squared as "add_squared" in "Pow"
"(missing)"
TacticDoc constructor
"(missing)"
DefinitionDoc One as "1"
"(missing)"
```
Notes:
* The lemma name must be **fully qualified**. The string display name can be arbitrary.
* Tactics must have their proper name. use `TacticDoc «have» ""` if it does not work
without french quotes.
* Definition names can be arbitrary. E.g. I used `DefinitionDoc Symbol.Fun as "fun x ↦ x" "(missing)"` once.
There will be features added to get automatic information from mathlib!