big refactor

This commit is contained in:
Jon Eugster
2023-05-15 15:05:02 +02:00
parent e81546a18d
commit 2604c89284
127 changed files with 585 additions and 770 deletions

View File

@@ -25,4 +25,4 @@ RUN lake clean && lake build
WORKDIR /game/lake-packages/GameServer/server/build/bin/
CMD ./gameserver --server /game/ NNG NNG
CMD ./gameserver --server /game/ Game Game

View File

@@ -1,15 +1,15 @@
import GameServer.Commands
import NNG.Levels.Tutorial
import NNG.Levels.Addition
import NNG.Levels.Multiplication
import NNG.Levels.Power
import NNG.Levels.Function
import NNG.Levels.Proposition
import NNG.Levels.AdvProposition
import NNG.Levels.AdvAddition
import NNG.Levels.AdvMultiplication
--import NNG.Levels.Inequality
import Game.Levels.Tutorial
import Game.Levels.Addition
import Game.Levels.Multiplication
import Game.Levels.Power
import Game.Levels.Function
import Game.Levels.Proposition
import Game.Levels.AdvProposition
import Game.Levels.AdvAddition
import Game.Levels.AdvMultiplication
--import Game.Levels.Inequality
Game "NNG"
Title "Natural Number Game"

88
Game/Doc/Definitions.lean Normal file
View File

@@ -0,0 +1,88 @@
import GameServer.Commands
-- DefinitionDoc MyNat as ""
-- "
-- The Natural Numbers. These are constructed through:
-- * `(0 : )`, an element called zero.
-- * `(succ : )`, the successor function , i.e. one is `succ 0` and two is `succ (succ 0)`.
-- * `induction` (or `rcases`), tactics to treat the cases $n = 0$ and `n = m + 1` seperately.
-- ## Game Modifications
-- This notation is for our own version of the natural numbers, called `MyNat`.
-- The natural numbers implemented in Lean's core are called `Nat`.
-- If you end up getting someting of type `Nat` in this game, you probably
-- need to write `(4 : )` to force it to be of type `MyNat`.
-- *Write with `\\N`.*
-- "
-- DefinitionDoc Add as "+" "
-- Addition on `` is defined through two axioms:
-- * `add_zero (a : ) : a + 0 = a`
-- * `add_succ (a d : ) : a + succ d = succ (a + d)`
-- "
-- DefinitionDoc Pow as "^" "
-- Power on `` is defined through two axioms:
-- * `pow_zero (a : ) : a ^ 0 = 1`
-- * `pow_succ (a b : ) : a ^ succ b = a ^ b * a`
-- ## Game-specific notes
-- Note that you might need to manually specify the type of the first number:
-- ```
-- (2 : ) ^ 1
-- ```
-- If you write `2 ^ 1` then lean will try to work in it's inbuild `Nat`, not in
-- the game's natural numbers `MyNat`.
-- "
-- DefinitionDoc One as "1" "
-- `1 : ` is by definition `succ 0`. Use `one_eq_succ_zero`
-- to change between the two.
-- "
-- DefinitionDoc False as "False" "
-- `False` is a proposition that that is always false, in contrast to `True` which is always true.
-- A proof of `False`, i.e. `(h : False)` is used to implement a contradiction: From a proof of `False`
-- anything follows, *ad absurdum*.
-- For example, \"not\" (`¬ A`) is therefore implemented as `A → False`.
-- (\"If `A` is true then we have a contradiction.\")
-- "
-- DefinitionDoc Not as "¬" "
-- Logical \"not\" is implemented as `¬ A := A → False`.
-- *Write with `\\n`.*
-- "
-- DefinitionDoc And as "∧" "
-- (missing)
-- *Write with `\\and`.*
-- "
-- DefinitionDoc Or as "" "
-- (missing)
-- *Write with `\\or`.*
-- "
-- DefinitionDoc Iff as "↔" "
-- (missing)
-- *Write with `\\iff`.*
-- "
-- DefinitionDoc Mul as "*" ""
-- DefinitionDoc Ne as "≠" ""

190
Game/Doc/Tactics.lean Normal file
View File

@@ -0,0 +1,190 @@
import GameServer.Commands
-- TacticDoc rfl
-- "
-- ## Summary
-- `rfl` proves goals of the form `X = X`.
-- ## Details
-- The `rfl` tactic will close any goal of the form `A = B`
-- where `A` and `B` are *exactly the same thing*.
-- ## Example:
-- If it looks like this in the top right hand box:
-- ```
-- Objects:
-- a b c d :
-- Goal:
-- (a + b) * (c + d) = (a + b) * (c + d)
-- ```
-- then `rfl` will close the goal and solve the level.
-- ## Game modifications
-- `rfl` in this game is weakened.
-- The real `rfl` could also proof goals of the form `A = B` where the
-- two sides are not *exactly identical* but merely
-- *\"definitionally equal\"*. That means the real `rfl`
-- could prove things like `a + 0 = a`.
-- "
-- TacticDoc rw
-- "
-- ## Summary
-- If `h` is a proof of `X = Y`, then `rw [h]` will change
-- all `X`s in the goal to `Y`s.
-- ### Variants
-- * `rw [← h]` (changes `Y` to `X`)
-- * `rw [h] at h2` (changes `X` to `Y` in hypothesis `h2` instead of the goal)
-- * `rw [h] at *` (changes `X` to `Y` in the goal and all hypotheses)
-- ## Details
-- The `rw` tactic is a way to do \"substituting in\". There
-- are two distinct situations where use this tactics.
-- 1) If `h : A = B` is a hypothesis (i.e., a proof of `A = B`)
-- in your local context (the box in the top right)
-- and if your goal contains one or more `A`s, then `rw [h]`
-- will change them all to `B`'s.
-- 2) The `rw` tactic will also work with proofs of theorems
-- which are equalities (look for them in the drop down
-- menu on the left, within Theorem Statements).
-- For example, in world 1 level 4
-- we learn about `add_zero x : x + 0 = x`, and `rw [add_zero]`
-- will change `x + 0` into `x` in your goal (or fail with
-- an error if Lean cannot find `x + 0` in the goal).
-- Important note: if `h` is not a proof of the form `A = B`
-- or `A ↔ B` (for example if `h` is a function, an implication,
-- or perhaps even a proposition itself rather than its proof),
-- then `rw` is not the tactic you want to use. For example,
-- `rw (P = Q)` is never correct: `P = Q` is the true-false
-- statement itself, not the proof.
-- If `h : P = Q` is its proof, then `rw [h]` will work.
-- Pro tip 1: If `h : A = B` and you want to change
-- `B`s to `A`s instead, try `rw ←h` (get the arrow with `\\l` and
-- note that this is a small letter L, not a number 1).
-- ### Example:
-- If it looks like this in the top right hand box:
-- ```
-- Objects:
-- x y :
-- Assumptions:
-- h : x = y + y
-- Goal:
-- succ (x + 0) = succ (y + y)
-- ```
-- then
-- `rw [add_zero]`
-- will change the goal into `succ x = succ (y + y)`, and then
-- `rw [h]`
-- will change the goal into `succ (y + y) = succ (y + y)`, which
-- can be solved with `rfl`.
-- ### Example:
-- You can use `rw` to change a hypothesis as well.
-- For example, if your local context looks like this:
-- ```
-- Objects:
-- x y :
-- Assumptions:
-- h1 : x = y + 3
-- h2 : 2 * y = x
-- Goal:
-- y = 3
-- ```
-- then `rw [h1] at h2` will turn `h2` into `h2 : 2 * y = y + 3`.
-- ## Game modifications
-- The real `rw` tactic does automatically try to call `rfl` afterwards. We disabled this
-- feature for the game.
-- "
-- TacticDoc induction
-- "
-- "
-- TacticDoc exact
-- "
-- "
-- TacticDoc apply
-- "
-- "
-- TacticDoc intro
-- "
-- "
-- TacticDoc «have»
-- "
-- "
-- TacticDoc constructor
-- "
-- "
-- TacticDoc rcases
-- "
-- "
-- TacticDoc left
-- "
-- "
-- TacticDoc revert
-- "
-- "
-- TacticDoc tauto
-- "
-- "
-- TacticDoc use
-- "
-- "
-- TacticDoc right
-- "
-- "
-- TacticDoc by_cases
-- "
-- "
-- TacticDoc contradiction
-- "
-- "
-- TacticDoc exfalso
-- "
-- "
-- TacticDoc simp
-- "
-- "
-- TacticDoc «repeat»
-- "
-- "

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_6
import Game.Levels.Addition.Level_6
Game "NNG"
World "Addition"

View File

@@ -1,11 +1,12 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Addition"
Level 1
Title "the induction tactic."
--namespace MyNat
open MyNat
Introduction
@@ -33,7 +34,6 @@ To prove `0 + n = n` we need to use induction on $n$. While we're here,
note that `zero_add` is about zero add something, and `add_zero` is about something add zero.
The names of the proofs tell you what the theorems are. Anyway, let's prove `0 + n = n`.
"
Statement MyNat.zero_add
"For all natural numbers $n$, we have $0 + n = n$."
(n : ) : 0 + n = n := by

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_1
import Game.Levels.Addition.Level_1
Game "NNG"
World "Addition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_2
import Game.Levels.Addition.Level_2
Game "NNG"
World "Addition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_3
import Game.Levels.Addition.Level_3
Game "NNG"
World "Addition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_4
import Game.Levels.Addition.Level_4
Game "NNG"
World "Addition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Addition.Level_5
import Game.Levels.Addition.Level_5
Game "NNG"
World "Addition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_13
import Game.Levels.AdvAddition.Level_13
Game "NNG"
World "AdvAddition"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.AdvAddition
import NNG.Levels.Addition
import Game.Metadata
import Game.MyNat.AdvAddition
import Game.Levels.Addition
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_9
import Game.Levels.AdvAddition.Level_9
import Std.Tactic.RCases
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_10
import Game.Levels.AdvAddition.Level_10
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_11
import Game.Levels.AdvAddition.Level_11
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_12
import Game.Levels.AdvAddition.Level_12
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_1
import Game.Levels.AdvAddition.Level_1
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_2
import Game.Levels.AdvAddition.Level_2
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_3
import Game.Levels.AdvAddition.Level_3
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_4
import Game.Levels.AdvAddition.Level_4
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_5
import Game.Levels.AdvAddition.Level_5
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_6
import Game.Levels.AdvAddition.Level_6
Game "NNG"
World "AdvAddition"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_7
import Game.Levels.AdvAddition.Level_7
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvAddition.Level_8
import Game.Levels.AdvAddition.Level_8
Game "NNG"
World "AdvAddition"

View File

@@ -1,7 +1,7 @@
import NNG.Levels.AdvMultiplication.Level_1
import NNG.Levels.AdvMultiplication.Level_2
import NNG.Levels.AdvMultiplication.Level_3
import NNG.Levels.AdvMultiplication.Level_4
import Game.Levels.AdvMultiplication.Level_1
import Game.Levels.AdvMultiplication.Level_2
import Game.Levels.AdvMultiplication.Level_3
import Game.Levels.AdvMultiplication.Level_4
Game "NNG"

View File

@@ -1,5 +1,5 @@
import NNG.Levels.Multiplication
import NNG.Levels.AdvAddition
import Game.Levels.Multiplication
import Game.Levels.AdvAddition
Game "NNG"
World "AdvMultiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvMultiplication.Level_1
import Game.Levels.AdvMultiplication.Level_1
Game "NNG"
World "AdvMultiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvMultiplication.Level_2
import Game.Levels.AdvMultiplication.Level_2
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.AdvMultiplication.Level_3
import Game.Levels.AdvMultiplication.Level_3
Game "NNG"
World "AdvMultiplication"

View File

@@ -0,0 +1,23 @@
import Game.Levels.AdvProposition.Level_1
import Game.Levels.AdvProposition.Level_2
import Game.Levels.AdvProposition.Level_3
import Game.Levels.AdvProposition.Level_4
import Game.Levels.AdvProposition.Level_5
import Game.Levels.AdvProposition.Level_6
import Game.Levels.AdvProposition.Level_7
import Game.Levels.AdvProposition.Level_8
import Game.Levels.AdvProposition.Level_9
import Game.Levels.AdvProposition.Level_10
Game "NNG"
World "AdvProposition"
Title "Advanced Proposition World"
Introduction
"
In this world we will learn five key tactics needed to solve all the
levels of the Natural Number Game, namely `constructor`, `rcases`, `left`, `right`, and `exfalso`.
These, and `use` (which we'll get to in Inequality World) are all the
tactics you will need to beat all the levels of the game.
"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"
@@ -62,4 +62,3 @@ Get to it via the main menu.
-- In fact the tactic `tauto` just kills this goal (and many other logic goals) immediately. You'll be
-- able to use it from now on.

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"
@@ -46,4 +46,3 @@ Statement -- and_symm
exact p
NewTactic rcases

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"
@@ -36,4 +36,3 @@ Statement
NewTactic left right
NewDefinition Or

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "AdvProposition"

View File

@@ -1,12 +1,12 @@
import NNG.Levels.Function.Level_1
import NNG.Levels.Function.Level_2
import NNG.Levels.Function.Level_3
import NNG.Levels.Function.Level_4
import NNG.Levels.Function.Level_5
import NNG.Levels.Function.Level_6
import NNG.Levels.Function.Level_7
import NNG.Levels.Function.Level_8
import NNG.Levels.Function.Level_9
import Game.Levels.Function.Level_1
import Game.Levels.Function.Level_2
import Game.Levels.Function.Level_3
import Game.Levels.Function.Level_4
import Game.Levels.Function.Level_5
import Game.Levels.Function.Level_6
import Game.Levels.Function.Level_7
import Game.Levels.Function.Level_8
import Game.Levels.Function.Level_9
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
-- TODO: Cannot import level from different world.

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Multiplication
import Game.Metadata
import Game.MyNat.Multiplication
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,4 +1,4 @@
import NNG.Metadata
import Game.Metadata
Game "NNG"
World "Function"

View File

@@ -1,20 +1,20 @@
import NNG.Levels.Inequality.Level_1
-- import NNG.Levels.Inequality.Level_2
-- import NNG.Levels.Inequality.Level_3
-- import NNG.Levels.Inequality.Level_4
-- import NNG.Levels.Inequality.Level_5
-- import NNG.Levels.Inequality.Level_6
-- import NNG.Levels.Inequality.Level_7
-- import NNG.Levels.Inequality.Level_8
-- import NNG.Levels.Inequality.Level_9
-- import NNG.Levels.Inequality.Level_10
-- import NNG.Levels.Inequality.Level_11
-- import NNG.Levels.Inequality.Level_12
-- import NNG.Levels.Inequality.Level_13
-- import NNG.Levels.Inequality.Level_14
-- import NNG.Levels.Inequality.Level_15
-- import NNG.Levels.Inequality.Level_16
-- import NNG.Levels.Inequality.Level_17
import Game.Levels.Inequality.Level_1
-- import Game.Levels.Inequality.Level_2
-- import Game.Levels.Inequality.Level_3
-- import Game.Levels.Inequality.Level_4
-- import Game.Levels.Inequality.Level_5
-- import Game.Levels.Inequality.Level_6
-- import Game.Levels.Inequality.Level_7
-- import Game.Levels.Inequality.Level_8
-- import Game.Levels.Inequality.Level_9
-- import Game.Levels.Inequality.Level_10
-- import Game.Levels.Inequality.Level_11
-- import Game.Levels.Inequality.Level_12
-- import Game.Levels.Inequality.Level_13
-- import Game.Levels.Inequality.Level_14
-- import Game.Levels.Inequality.Level_15
-- import Game.Levels.Inequality.Level_16
-- import Game.Levels.Inequality.Level_17
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
--import Mathlib.Tactic.Ring
Game "NNG"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.LE
import Game.Metadata
import Game.MyNat.LE
import Mathlib.Tactic.Use
Game "NNG"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
import Std.Tactic.RCases
Game "NNG"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,6 +1,6 @@
import NNG.Metadata
import NNG.MyNat.LE
import NNG.Tactic.Use
import Game.Metadata
import Game.MyNat.LE
import Game.Tactic.Use
Game "NNG"
World "Inequality"

View File

@@ -1,12 +1,12 @@
import NNG.Levels.Multiplication.Level_1
import NNG.Levels.Multiplication.Level_2
import NNG.Levels.Multiplication.Level_3
import NNG.Levels.Multiplication.Level_4
import NNG.Levels.Multiplication.Level_5
import NNG.Levels.Multiplication.Level_6
import NNG.Levels.Multiplication.Level_7
import NNG.Levels.Multiplication.Level_8
import NNG.Levels.Multiplication.Level_9
import Game.Levels.Multiplication.Level_1
import Game.Levels.Multiplication.Level_2
import Game.Levels.Multiplication.Level_3
import Game.Levels.Multiplication.Level_4
import Game.Levels.Multiplication.Level_5
import Game.Levels.Multiplication.Level_6
import Game.Levels.Multiplication.Level_7
import Game.Levels.Multiplication.Level_8
import Game.Levels.Multiplication.Level_9
Game "NNG"

View File

@@ -1,5 +1,5 @@
import NNG.MyNat.Multiplication
import NNG.Levels.Addition
import Game.MyNat.Multiplication
import Game.Levels.Addition
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_1
import Game.Levels.Multiplication.Level_1
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_2
import Game.Levels.Multiplication.Level_2
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_3
import Game.Levels.Multiplication.Level_3
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_4
import Game.Levels.Multiplication.Level_4
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_5
import Game.Levels.Multiplication.Level_5
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_6
import Game.Levels.Multiplication.Level_6
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_7
import Game.Levels.Multiplication.Level_7
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Multiplication.Level_8
import Game.Levels.Multiplication.Level_8
Game "NNG"
World "Multiplication"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_8
import Game.Levels.Power.Level_8
Game "NNG"
World "Power"

View File

@@ -1,5 +1,5 @@
import NNG.Levels.Multiplication
import NNG.MyNat.Power
import Game.Levels.Multiplication
import Game.MyNat.Power
Game "NNG"
World "Power"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_1
import Game.Levels.Power.Level_1
Game "NNG"
World "Power"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_2
import Game.Levels.Power.Level_2
Game "NNG"
World "Power"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_3
import Game.Levels.Power.Level_3
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_4
import Game.Levels.Power.Level_4
Game "NNG"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_5
import Game.Levels.Power.Level_5
Game "NNG"
World "Power"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_6
import Game.Levels.Power.Level_6
Game "NNG"
World "Power"

View File

@@ -1,4 +1,4 @@
import NNG.Levels.Power.Level_7
import Game.Levels.Power.Level_7
-- import Mathlib.Tactic.Ring
Game "NNG"

View File

@@ -1,12 +1,12 @@
import NNG.Levels.Proposition.Level_1
import NNG.Levels.Proposition.Level_2
import NNG.Levels.Proposition.Level_3
import NNG.Levels.Proposition.Level_4
import NNG.Levels.Proposition.Level_5
import NNG.Levels.Proposition.Level_6
import NNG.Levels.Proposition.Level_7
import NNG.Levels.Proposition.Level_8
import NNG.Levels.Proposition.Level_9 -- `cc` is not ported
import Game.Levels.Proposition.Level_1
import Game.Levels.Proposition.Level_2
import Game.Levels.Proposition.Level_3
import Game.Levels.Proposition.Level_4
import Game.Levels.Proposition.Level_5
import Game.Levels.Proposition.Level_6
import Game.Levels.Proposition.Level_7
import Game.Levels.Proposition.Level_8
import Game.Levels.Proposition.Level_9 -- `cc` is not ported
Game "NNG"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"
@@ -24,4 +24,3 @@ Statement
apply hqr
apply hpq
exact p

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Addition
import Game.Metadata
import Game.MyNat.Addition
Game "NNG"
World "Proposition"

View File

@@ -1,7 +1,7 @@
import NNG.Levels.Tutorial.Level_1
import NNG.Levels.Tutorial.Level_2
import NNG.Levels.Tutorial.Level_3
import NNG.Levels.Tutorial.Level_4
import Game.Levels.Tutorial.Level_1
import Game.Levels.Tutorial.Level_2
import Game.Levels.Tutorial.Level_3
import Game.Levels.Tutorial.Level_4
Game "NNG"
World "Tutorial"

View File

@@ -1,5 +1,5 @@
import NNG.Metadata
import NNG.MyNat.Multiplication
import Game.Metadata
import Game.MyNat.Multiplication
Game "NNG"
World "Tutorial"

Some files were not shown because too many files have changed in this diff Show More