From f2eed5fc0c39fc2a5b27fb3a8fc042a03d419792 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Wed, 15 Mar 2023 16:55:50 +0100 Subject: [PATCH 01/29] repair command line --- client/src/components/Level.tsx | 43 ++++++++++++++++--- .../src/components/infoview/CommandLine.tsx | 15 ------- client/src/components/infoview/main.tsx | 2 +- client/src/state/progress.ts | 20 ++++++++- 4 files changed, 56 insertions(+), 24 deletions(-) diff --git a/client/src/components/Level.tsx b/client/src/components/Level.tsx index 7f4437b..442037d 100644 --- a/client/src/components/Level.tsx +++ b/client/src/components/Level.tsx @@ -22,7 +22,7 @@ import './level.css' import { Button } from './Button' import { ConnectionContext, useLeanClient } from '../connection'; import { useGetGameInfoQuery, useLoadLevelQuery } from '../state/api'; -import { codeEdited, selectCode, progressSlice, selectCompleted } from '../state/progress'; +import { changedSelection, codeEdited, selectCode, selectSelections, progressSlice, selectCompleted } from '../state/progress'; import { useAppDispatch, useAppSelector } from '../hooks'; import { useStore } from 'react-redux'; @@ -76,6 +76,7 @@ function PlayableLevel({worldId, levelId}) { const introductionPanelRef = useRef(null) const initialCode = useAppSelector(selectCode(worldId, levelId)) + const initialSelections = useAppSelector(selectSelections(worldId, levelId)) const [commandLineMode, setCommandLineMode] = useState(true) const [commandLineInput, setCommandLineInput] = useState("") @@ -86,6 +87,8 @@ function PlayableLevel({worldId, levelId}) { useEffect(() => { // Scroll to top when loading a new level introductionPanelRef.current!.scrollTo(0,0) + // Reset command line input when loading a new level + setCommandLineInput("") }, [levelId]) React.useEffect(() => { @@ -122,8 +125,6 @@ function PlayableLevel({worldId, levelId}) { }]); } - const connection = React.useContext(ConnectionContext) - const gameInfo = useGetGameInfoQuery() const level = useLoadLevelQuery({world: worldId, level: levelId}) @@ -136,10 +137,37 @@ function PlayableLevel({worldId, levelId}) { setCanUndo(code.trim() !== "") } + const onDidChangeSelection = (monacoSelections) => { + const selections = monacoSelections.map( + ({selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn}) => + {return {selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn}}) + dispatch(changedSelection({world: worldId, level: levelId, selections})) + } + const completed = useAppSelector(selectCompleted(worldId, levelId)) const {editor, infoProvider, editorConnection} = - useLevelEditor(worldId, levelId, codeviewRef, initialCode, onDidChangeContent) + useLevelEditor(worldId, levelId, codeviewRef, initialCode, initialSelections, onDidChangeContent, onDidChangeSelection) + + // Effect when command line mode gets enabled + useEffect(() => { + if (editor && commandLineMode) { + let endPos = editor.getModel().getFullModelRange().getEndPosition() + if (editor.getModel().getLineContent(endPos.lineNumber).trim() !== "") { + editor.executeEdits("command-line", [{ + range: monaco.Selection.fromPositions(endPos, endPos), + text: "\n", + forceMoveMarkers: true + }]); + } + endPos = editor.getModel().getFullModelRange().getEndPosition() + let currPos = editor.getPosition() + if (currPos.column != 1 || (currPos.lineNumber != endPos.lineNumber && currPos.lineNumber != endPos.lineNumber - 1)) { + // This is not a position that would naturally occur from CommandLine, reset: + editor.setSelection(monaco.Selection.fromPositions(endPos, endPos)) + } + } + }, [editor, commandLineMode]) const [inventoryDoc, setInventoryDoc] = useState<{name: string, type: string}>(null) @@ -249,7 +277,7 @@ function LevelAppBar({isLoading, levelId, worldId, levelTitle}) { } -function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCode, onDidChangeContent) { +function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCode, initialSelections, onDidChangeContent, onDidChangeSelection) { const connection = React.useContext(ConnectionContext) @@ -340,8 +368,11 @@ function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCo model = monaco.editor.createModel(initialCode, 'lean4', uri) } model.onDidChangeContent(() => onDidChangeContent(model.getValue())) + editor.onDidChangeCursorSelection(() => onDidChangeSelection(editor.getSelections())) editor.setModel(model) - editor.setPosition(model.getFullModelRange().getEndPosition()) + if (initialSelections) { + editor.setSelections(initialSelections) + } infoviewApi.serverRestarted(leanClient.initializeResult) infoProvider.openPreview(editor, infoviewApi) diff --git a/client/src/components/infoview/CommandLine.tsx b/client/src/components/infoview/CommandLine.tsx index b565761..72fa488 100644 --- a/client/src/components/infoview/CommandLine.tsx +++ b/client/src/components/infoview/CommandLine.tsx @@ -170,21 +170,6 @@ export function CommandLine() { return () => { l.dispose() } }, [oneLineEditor, runCommand]) - // Effect when command line mode gets enabled - useEffect(() => { - if (commandLineMode) { - const endPos = editor.getModel().getFullModelRange().getEndPosition() - if (editor.getModel().getLineContent(endPos.lineNumber).trim() !== "") { - editor.executeEdits("command-line", [{ - range: monaco.Selection.fromPositions(endPos, endPos), - text: commandLineInput + "\n", - forceMoveMarkers: false - }]); - } - editor.setPosition(editor.getModel().getFullModelRange().getEndPosition()) - } - }, [commandLineMode]) - const handleSubmit : React.FormEventHandler = (ev) => { ev.preventDefault() runCommand() diff --git a/client/src/components/infoview/main.tsx b/client/src/components/infoview/main.tsx index dcb0ec7..369bdf7 100644 --- a/client/src/components/infoview/main.tsx +++ b/client/src/components/infoview/main.tsx @@ -18,7 +18,7 @@ import { EditorContext, ConfigContext, ProgressContext, VersionContext } from '. import { WithRpcSessions } from '../../../../node_modules/lean4-infoview/src/infoview/rpcSessions'; import { ServerVersion } from '../../../../node_modules/lean4-infoview/src/infoview/serverVersion'; import { useAppDispatch, useAppSelector } from '../../hooks'; -import { codeEdited, levelCompleted, selectCompleted } from '../../state/progress'; +import { levelCompleted, selectCompleted } from '../../state/progress'; export function Main(props: {world: string, level: number}) { diff --git a/client/src/state/progress.ts b/client/src/state/progress.ts index 5512322..6005d4f 100644 --- a/client/src/state/progress.ts +++ b/client/src/state/progress.ts @@ -5,9 +5,15 @@ import { loadState } from "./localStorage"; interface ProgressState { level: {[world: string]: {[level: number]: LevelProgressState}} } - +interface Selection { + selectionStartLineNumber: number, + selectionStartColumn: number, + positionLineNumber: number + positionColumn: number +} interface LevelProgressState { code: string, + selections: Selection[], completed: boolean } @@ -32,6 +38,10 @@ export const progressSlice = createSlice({ state.level[action.payload.world][action.payload.level].code = action.payload.code state.level[action.payload.world][action.payload.level].completed = false }, + changedSelection(state, action: PayloadAction<{world: string, level: number, selections: Selection[]}>) { + addLevelProgress(state, action) + state.level[action.payload.world][action.payload.level].selections = action.payload.selections + }, levelCompleted(state, action: PayloadAction<{world: string, level: number}>) { addLevelProgress(state, action) state.level[action.payload.world][action.payload.level].completed = true @@ -53,6 +63,12 @@ export function selectCode(world: string, level: number) { } } +export function selectSelections(world: string, level: number) { + return (state) => { + return selectLevel(world, level)(state).selections + } +} + export function selectCompleted(world: string, level: number) { return (state) => { return selectLevel(world, level)(state).completed @@ -65,4 +81,4 @@ export function selectProgress() { } } -export const { codeEdited, levelCompleted } = progressSlice.actions +export const { changedSelection, codeEdited, levelCompleted } = progressSlice.actions From 86302522a54eb01b8d407aea571ebc0c15667122 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Wed, 15 Mar 2023 17:02:43 +0100 Subject: [PATCH 02/29] add atomic to fix interpolatedStr issue --- server/leanserver/GameServer/Commands.lean | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/leanserver/GameServer/Commands.lean b/server/leanserver/GameServer/Commands.lean index fd1044c..fee9758 100644 --- a/server/leanserver/GameServer/Commands.lean +++ b/server/leanserver/GameServer/Commands.lean @@ -62,7 +62,7 @@ partial def reprintCore : Syntax → Option Format def reprint (stx : Syntax) : Format := reprintCore stx |>.getD "" -syntax hintArg := " (" (&"strict" <|> &"hidden") " := " withoutPosition(term) ")" +syntax hintArg := atomic(" (" (&"strict" <|> &"hidden") " := " withoutPosition(term) ")") /-- A tactic that can be used inside `Statement`s to indicate in which proof states players should see hints. The tactic does not affect the goal state. -/ From b0d9816ce6aed3da2a85c148497f94982442bf31 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Wed, 15 Mar 2023 17:41:52 +0100 Subject: [PATCH 03/29] simpler solution to remove indented lines --- server/leanserver/GameServer/Commands.lean | 35 +++- .../GameServer/StrInterpolation.lean | 149 ------------------ 2 files changed, 32 insertions(+), 152 deletions(-) delete mode 100644 server/leanserver/GameServer/StrInterpolation.lean diff --git a/server/leanserver/GameServer/Commands.lean b/server/leanserver/GameServer/Commands.lean index fee9758..9004c62 100644 --- a/server/leanserver/GameServer/Commands.lean +++ b/server/leanserver/GameServer/Commands.lean @@ -1,7 +1,6 @@ import Lean import GameServer.EnvExtensions -import GameServer.StrInterpolation open Lean Meta @@ -64,12 +63,42 @@ def reprint (stx : Syntax) : Format := syntax hintArg := atomic(" (" (&"strict" <|> &"hidden") " := " withoutPosition(term) ")") +/-- Remove any spaces at the beginning of a new line -/ +partial def removeIndentation (s : String) : String := + let rec loop (i : String.Pos) (acc : String) (removeSpaces := false) : String := + let c := s.get i + let i := s.next i + if s.atEnd i then + acc.push c + else if removeSpaces && c == ' ' then + loop i acc (removeSpaces := true) + else if c == '\n' then + loop i (acc.push c) (removeSpaces := true) + else + loop i (acc.push c) + loop ⟨0⟩ "" + /-- A tactic that can be used inside `Statement`s to indicate in which proof states players should see hints. The tactic does not affect the goal state. -/ -elab "Hint" args:hintArg* msg:Lean.Parser.interpolatedStrNoIndent : tactic => do +elab "Hint" args:hintArg* msg:interpolatedStr(term) : tactic => do let mut strict := false let mut hidden := false + -- remove spaces at the beginngng of new lines + let msg := TSyntax.mk $ msg.raw.setArgs $ ← msg.raw.getArgs.mapM fun m => do + match m with + | Syntax.node info k args => + logInfo k + if k == interpolatedStrLitKind && args.size == 1 then + match args.get! 0 with + | (Syntax.atom info' val) => + let val := removeIndentation val + return Syntax.node info k #[Syntax.atom info' val] + | _ => return m + else + return m + | _ => return m + for arg in args do match arg with | `(hintArg| (strict := true)) => strict := true @@ -85,7 +114,7 @@ elab "Hint" args:hintArg* msg:Lean.Parser.interpolatedStrNoIndent : tactic => do -- named differently by the player. let varsName := `vars let text ← withLocalDeclD varsName (mkApp (mkConst ``Array [levelZero]) (mkConst ``Expr)) fun vars => do - let mut text ← expandInterpolatedStr ⟨msg.raw⟩ (← `(MessageData)) (← `(toMessageData)) + let mut text ← `(m! $msg) let goalDecl ← goal.getDecl let decls := goalDecl.lctx.decls.toArray.filterMap id for i in [:decls.size] do diff --git a/server/leanserver/GameServer/StrInterpolation.lean b/server/leanserver/GameServer/StrInterpolation.lean deleted file mode 100644 index db08b36..0000000 --- a/server/leanserver/GameServer/StrInterpolation.lean +++ /dev/null @@ -1,149 +0,0 @@ -/- Adapted from `Lean.Parser.StrInterpolation` - -This version of interpolated strings deletes any initial spaces from -new lines. This keeps Markdown from interpreting indented material -as quotes. --/ -import Lean -namespace Lean.Parser - -/-- Push `(Syntax.node tk )` onto syntax stack if parse was successful. -/ -def mkNodeTokenNoWs (n : SyntaxNodeKind) (startPos : String.Pos) : ParserFn := fun c s => Id.run do - if s.hasError then - return s - let input := c.input - let stopPos := s.pos - let leading := mkEmptySubstringAt input startPos - let val := input.extract startPos stopPos - let wsStopPos := s.pos - let trailing := { str := input, startPos := stopPos, stopPos := wsStopPos : Substring } - let info := SourceInfo.original leading startPos trailing stopPos - s.pushSyntax (Syntax.mkLit n val info) - -partial def interpolatedStrNoIndentFn (p : ParserFn) : ParserFn := fun c s => - let input := c.input - let stackSize := s.stackSize - let rec parse (startPos : String.Pos) (c : ParserContext) (s : ParserState) : ParserState := - let i := s.pos - if input.atEnd i then - let s := s.pushSyntax Syntax.missing - let s := s.mkNode interpolatedStrKind stackSize - s.setError "unterminated string literal" - else - let curr := input.get i - let s := s.setPos (input.next i) - if curr == '\"' then - let s := mkNodeToken interpolatedStrLitKind startPos c s - s.mkNode interpolatedStrKind stackSize - else if curr == '\n' then - -- Ignore initial spaces on a new line - let s := mkNodeTokenNoWs interpolatedStrLitKind startPos c s - let s := takeWhileFn (fun curr => curr == ' ') c s - parse s.pos c s - else if curr == '\\' then - andthenFn (quotedCharCoreFn isQuotableCharForStrInterpolant) (parse startPos) c s - else if curr == '{' then - let s := mkNodeToken interpolatedStrLitKind startPos c s - let s := p c s - if s.hasError then s - else - let i := s.pos - let curr := input.get i - if curr == '}' then - let s := s.setPos (input.next i) - parse i c s - else - let s := s.pushSyntax Syntax.missing - let s := s.mkNode interpolatedStrKind stackSize - s.setError "'}'" - else - parse startPos c s - let startPos := s.pos - if input.atEnd startPos then - s.mkEOIError - else - let curr := input.get s.pos; - if curr != '\"' then - s.mkError "interpolated string" - else - let s := s.next input startPos - parse startPos c s - -@[inline] def interpolatedStrNoIndentNoAntiquot (p : Parser) : Parser := { - fn := interpolatedStrNoIndentFn (withoutPosition p).fn, - info := mkAtomicInfo "interpolatedStrNoIndent" -} - -def interpolatedStrNoIndent : Parser := - withAntiquot (mkAntiquot "interpolatedStrNoIndent" interpolatedStrKind) $ interpolatedStrNoIndentNoAntiquot termParser - -open Lean.PrettyPrinter -open Lean.PrettyPrinter.Parenthesizer -open Lean.PrettyPrinter.Formatter - -@[combinator_parenthesizer interpolatedStrNoIndent] -def interpolatedStrNoIndent.parenthesizer := interpolatedStr.parenthesizer - -@[combinator_formatter interpolatedStrNoIndent] -def interpolatedStrNoIndent.formatter := interpolatedStr.formatter - -end Lean.Parser - - -/- Adapted from Init/Meta -/ -open Lean - -private def decodeInterpStrQuotedChar (s : String) (i : String.Pos) : Option (Char × String.Pos) := do - match Syntax.decodeQuotedChar s i with - | some r => some r - | none => - let c := s.get i - let i := s.next i - if c == '{' then pure ('{', i) - else none - -private partial def decodeInterpStrLit (s : String) : Option String := - let rec loop (i : String.Pos) (acc : String) : Option String := - let c := s.get i - let i := s.next i - if c == '\"' || c == '{' then - pure acc - else if c == '\n' then - pure (acc.push c) - else if s.atEnd i then - pure acc - else if c == '\\' then do - let (c, i) ← decodeInterpStrQuotedChar s i - loop i (acc.push c) - else - loop i (acc.push c) - let c := s.get 0 - if c == '\"' || c == '}' then - loop ⟨1⟩ "" - else - loop ⟨0⟩ "" -partial def isInterpolatedStrLit? (stx : Syntax) : Option String := - match Syntax.isLit? interpolatedStrLitKind stx with - | none => none - | some val => decodeInterpStrLit val - -open Elab - -def expandInterpolatedStrChunks (chunks : Array Syntax) (mkAppend : Syntax → Syntax → TermElabM Syntax) (mkElem : Syntax → TermElabM Syntax) : TermElabM Syntax := do - let mut i := 0 - let mut result := Syntax.missing - for elem in chunks do - let elem ← match isInterpolatedStrLit? elem with - | none => mkElem elem - | some str => mkElem (Syntax.mkStrLit str) - if i == 0 then - result := elem - else - result ← mkAppend result elem - i := i+1 - return result - -open TSyntax.Compat in -def expandInterpolatedStr (interpStr : TSyntax interpolatedStrKind) (type : Term) (toTypeFn : Term) : TermElabM Term := do - let r ← expandInterpolatedStrChunks interpStr.raw.getArgs (fun a b => `($a ++ $b)) (fun a => `($toTypeFn $a)) - `(($r : $type)) From 32a17ed9e80e90088ed72f803efb9023520c9fb8 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Wed, 15 Mar 2023 18:30:35 +0100 Subject: [PATCH 04/29] storytime --- server/testgame/TestGame.lean | 17 ++- .../Levels/Function/L08_Bijective.lean | 2 +- .../testgame/TestGame/Levels/Implication.lean | 2 +- .../Levels/Implication/L01_Intro.lean | 3 +- .../Levels/Implication/L05_Apply.lean | 2 +- .../TestGame/Levels/Implication/L06_Iff.lean | 2 +- .../TestGame/Levels/Implication/L07_Rw.lean | 2 + .../testgame/TestGame/Levels/Inequality.lean | 8 ++ .../TestGame/Levels/Inequality/L01_LE.lean | 25 ++-- .../TestGame/Levels/Inequality/L02_Pos.lean | 71 ++++------ .../Levels/Inequality/L03_Linarith.lean | 15 ++- .../Levels/Inequality/L04_Linarith.lean | 23 ++-- server/testgame/TestGame/Levels/Lean.lean | 26 ++++ .../TestGame/Levels/Lean/L01_Type.lean | 41 ++++++ .../TestGame/Levels/Lean/L02_Universe.lean | 44 +++++++ .../Levels/Lean/L03_ImplicitArguments.lean | 71 ++++++++++ .../Levels/Lean/L04_InstanceArguments.lean | 57 ++++++++ .../testgame/TestGame/Levels/LeanStuff.lean | 8 -- .../TestGame/Levels/LeanStuff/L01_Type.lean | 49 ------- .../Levels/LeanStuff/L02_Universe.lean | 51 -------- .../LeanStuff/L03_ImplicitArguments.lean | 63 --------- .../LeanStuff/L04_InstanceArguments.lean | 78 ----------- server/testgame/TestGame/Levels/Prime.lean | 9 +- .../TestGame/Levels/Prime/L01_Dvd.lean | 59 ++++----- .../Levels/Proposition/L03_Assumption.lean | 4 +- .../TestGame/Levels/Proposition/L09_And.lean | 4 +- server/testgame/TestGame/Levels/Sum.lean | 10 ++ .../TestGame/Levels/Sum/L01_Simp.lean | 59 ++++++--- .../testgame/TestGame/Levels/Sum/L02_Sum.lean | 41 ++++-- .../TestGame/Levels/Sum/L03_ArithSum.lean | 105 ++++++++------- .../TestGame/Levels/Sum/L04_SumOdd.lean | 39 +----- .../TestGame/Levels/Sum/L05_SumComm.lean | 23 +++- .../TestGame/Levels/Sum/L06_Summary.lean | 123 +++++++----------- 33 files changed, 559 insertions(+), 577 deletions(-) create mode 100644 server/testgame/TestGame/Levels/Lean.lean create mode 100644 server/testgame/TestGame/Levels/Lean/L01_Type.lean create mode 100644 server/testgame/TestGame/Levels/Lean/L02_Universe.lean create mode 100644 server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean create mode 100644 server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean delete mode 100644 server/testgame/TestGame/Levels/LeanStuff.lean delete mode 100644 server/testgame/TestGame/Levels/LeanStuff/L01_Type.lean delete mode 100644 server/testgame/TestGame/Levels/LeanStuff/L02_Universe.lean delete mode 100644 server/testgame/TestGame/Levels/LeanStuff/L03_ImplicitArguments.lean delete mode 100644 server/testgame/TestGame/Levels/LeanStuff/L04_InstanceArguments.lean diff --git a/server/testgame/TestGame.lean b/server/testgame/TestGame.lean index f48f3f7..8b9445a 100644 --- a/server/testgame/TestGame.lean +++ b/server/testgame/TestGame.lean @@ -11,7 +11,7 @@ import TestGame.Levels.Sum import TestGame.Levels.Numbers import TestGame.Levels.Inequality -import TestGame.Levels.LeanStuff +import TestGame.Levels.Lean import TestGame.Levels.SetTheory import TestGame.Levels.Function import TestGame.Levels.SetFunction @@ -23,23 +23,22 @@ Game "TestGame" Title "Lean 4 game" Introduction " -TODO " Conclusion "Fertig!" -Path Proposition → Implication → Predicate -Path Predicate → Contradiction → Sum → LeanStuff -Path LeanStuff → SetTheory → SetTheory2 → SetFunction +Path Proposition → Implication → Predicate → Predicate → Contradiction → Sum → Lean +Path Predicate → Inequality → Sum +-- Path Predicate → Prime -- → Induction +-- Path Sum → Inequality -- → Induction + +Path Lean → SetTheory → SetTheory2 → SetFunction +Path Lean → Function → SetFunction -Path Predicate → Prime -- → Induction -Path Sum → Inequality -- → Induction -Path Inequality → Function Path SetTheory2 → Numbers Path Module → Basis → Module2 -Path LeanStuff → Function → SetFunction MakeGame diff --git a/server/testgame/TestGame/Levels/Function/L08_Bijective.lean b/server/testgame/TestGame/Levels/Function/L08_Bijective.lean index 1fc8135..c7a2889 100644 --- a/server/testgame/TestGame/Levels/Function/L08_Bijective.lean +++ b/server/testgame/TestGame/Levels/Function/L08_Bijective.lean @@ -33,6 +33,6 @@ Hint : Bijective (fun (n : ℤ) ↦ n + 1) => Conclusion "Zufrieden drückt euch der Gelehrte eine neue Fackel in die Hand und -zeigt euch den Weg nach draussen." +zeigt euch den Weg nach draußen." NewDefinition Bijective diff --git a/server/testgame/TestGame/Levels/Implication.lean b/server/testgame/TestGame/Levels/Implication.lean index 0d06e71..23e5361 100644 --- a/server/testgame/TestGame/Levels/Implication.lean +++ b/server/testgame/TestGame/Levels/Implication.lean @@ -28,7 +28,7 @@ aber niemand von den Einwohnern wusste was davon... erzählen… Und damit leitet Robo den Landeanflug ein. Implis scheint ein riesiger Tagbau zu sein auf -dem nach allem möglichen gegraben wird. Überall seht ihr Förderbänder kreuz und queer. +dem nach allem möglichen gegraben wird. Überall seht ihr Förderbänder kreuz und quer. Das Operationsteam begrüsst euch freundlich und lädt zum Essen im Kommandoturm. " diff --git a/server/testgame/TestGame/Levels/Implication/L01_Intro.lean b/server/testgame/TestGame/Levels/Implication/L01_Intro.lean index 7a60817..36b9d6d 100644 --- a/server/testgame/TestGame/Levels/Implication/L01_Intro.lean +++ b/server/testgame/TestGame/Levels/Implication/L01_Intro.lean @@ -18,7 +18,8 @@ Statement (A B : Prop) (hb : B) : A → (A ∧ B) := by Hint "**Du**: Einen Moment, das ist eine Implikation (`\\to`), also `A` impliziert `A und B`, soweit so gut, also eine Tautologie. - **Robo**: Die scheinen hier `tauto` auch nicht zu verstehen. + **Robo**: Du hast recht, eigentlich könnte man `tauto` sagen, + aber das scheinen die hier tauto nicht zu verstehen. Implikationen kannst du aber mit `intro h` angehen." intro hA Hint "**Du**: Jetzt habe ich also angenommen, dass `A` wahr ist und muss `A ∧ B` zeigen, diff --git a/server/testgame/TestGame/Levels/Implication/L05_Apply.lean b/server/testgame/TestGame/Levels/Implication/L05_Apply.lean index 78b48cc..90fa447 100644 --- a/server/testgame/TestGame/Levels/Implication/L05_Apply.lean +++ b/server/testgame/TestGame/Levels/Implication/L05_Apply.lean @@ -8,7 +8,7 @@ Title "Implikation" Introduction " -Selbstsicher folgt ihr den Anweisungen und geht nach draussen zum +Selbstsicher folgt ihr den Anweisungen und geht nach draußen zum defekten Kontrollelement. Dieses zeigt ein kompliziertes Diagram: $$ \\begin{CD} diff --git a/server/testgame/TestGame/Levels/Implication/L06_Iff.lean b/server/testgame/TestGame/Levels/Implication/L06_Iff.lean index 7f5ea41..84a4130 100644 --- a/server/testgame/TestGame/Levels/Implication/L06_Iff.lean +++ b/server/testgame/TestGame/Levels/Implication/L06_Iff.lean @@ -37,7 +37,7 @@ hier bei `(h : A ↔ B)` heissen sie `h.mp` und `h.mpr`. **Operationsleiter**: \"Modulo Ponens\" ist ein lokaler Begriff hier, aber das ist doch nicht wichtig. -**Robo**: Und das \"r\" in `mpr` stünde für \"reverse\" weils die Rückrichtung ist. +**Robo**: Und das \"r\" in `mpr` stünde für \"reverse\" weil's die Rückrichtung ist. " NewTactic constructor diff --git a/server/testgame/TestGame/Levels/Implication/L07_Rw.lean b/server/testgame/TestGame/Levels/Implication/L07_Rw.lean index a224432..d984d80 100644 --- a/server/testgame/TestGame/Levels/Implication/L07_Rw.lean +++ b/server/testgame/TestGame/Levels/Implication/L07_Rw.lean @@ -3,6 +3,8 @@ import TestGame.Metadata import Init.Data.ToString -- #check List UInt8 +set_option tactic.hygienic false + Game "TestGame" World "Implication" Level 7 diff --git a/server/testgame/TestGame/Levels/Inequality.lean b/server/testgame/TestGame/Levels/Inequality.lean index 12df4bf..b1684b6 100644 --- a/server/testgame/TestGame/Levels/Inequality.lean +++ b/server/testgame/TestGame/Levels/Inequality.lean @@ -6,3 +6,11 @@ import TestGame.Levels.Inequality.L04_Linarith Game "TestGame" World "Inequality" Title "Ungleichung" + +Introduction " +Später erinnerst du dich gar nicht mehr wo und wann du diese Unterhaltung hattest, geschweige +denn mit wem. Vielleicht war es ein Traum, oder eine Erscheinung. Vielleicht war es +auch nur eines Abends über einer Runde Getränke. + +Aber auf jedenfall hast du irgendwo gelernt, was du nun weisst. +" diff --git a/server/testgame/TestGame/Levels/Inequality/L01_LE.lean b/server/testgame/TestGame/Levels/Inequality/L01_LE.lean index e3d1b9c..81eec99 100644 --- a/server/testgame/TestGame/Levels/Inequality/L01_LE.lean +++ b/server/testgame/TestGame/Levels/Inequality/L01_LE.lean @@ -8,17 +8,26 @@ Title "Kleinergleich" Introduction " -Ungleichheiten werden in Lean generell immer als Kleinergleich `≤` (`\\le`) oder `<` -geschrieben. +*(Gesrpäch)* -Die Symbole `≥` und `>` gibt es zwar auch, sind aber nur Notation für die gleiche -Aussage mit `≤` und `<`. +**Robo** (*lallend*, oder war's fröhlich proklamierend?): +…und deshalb sind `≥` und `>` eigentlich nur Notationen für `≤`, +welches man übrigens `\\le` schreibt, was für Less-Equal (also Kleinergleich) steht… -Zudem sind `<` und `≤` auf `ℕ` so definiert, dass `0 < n` und `1 ≤ n` per Definition -äquivalent sind. Die folgende Aussage ist also mit `rfl` beweisbar. +**Du**: Wir haben's verstanden, man benützt also Standartmässig lieber `≤` und `<`, +aber damit weiß ich eh nichts anzufangen. + +**dritte Person**: Komm schon, das kannst du ja sicher: " Statement -"$0 < n$ und $1 ≤ n$ sind äquivalente Aussagen." - (n m : ℕ) : m < n ↔ m.succ ≤ n := by + (n m : ℕ) : m < n ↔ m.succ ≤ n := by + Hint "**Robo**: Du Narr! Das ist doch eine Kuriosität, dass `m < n` auf `ℕ` per Definition + als `m + 1 ≤ n` definiert ist! + + **dritte Person**: Du verdirbst den Witz! Ich wollte ihn doch nur testen." rfl + +OnlyTactic rfl + +Conclusion "**Du**: Ha. ha… Na aber jetzt mal ehrlich, wie funktioniert das eigentlich?" diff --git a/server/testgame/TestGame/Levels/Inequality/L02_Pos.lean b/server/testgame/TestGame/Levels/Inequality/L02_Pos.lean index 9ebd15c..8dbb898 100644 --- a/server/testgame/TestGame/Levels/Inequality/L02_Pos.lean +++ b/server/testgame/TestGame/Levels/Inequality/L02_Pos.lean @@ -12,67 +12,42 @@ Title "Kleinergleich" Introduction " -Es gibt zwei intrinsische Möglichkeiten, zu sagen dass `(n : ℕ)` nicht Null ist: -`n ≠ 0` oder `0 < n`. +*weitere Person*: …ich sag dir, eine positive Zahl kann man sowohl mit `0 < n` +als auch `n ≠ 0` darstellen. -Das folgende Lemma kannst du immer brauchen um zwischen den beiden zu wechseln. +*Robo*: Und da gibts leider keinen Standard dazu. -(*Note:* `0 < n` wird in Lemma-Namen oft mit `_pos` beschrieben anstatt `zero_lt`, siehe z.B. -`Nat.succ_pos`.) +**weitere Person*: Ja und, da kann man ja einfach mit `Nat.pos_iff_ne_zero` +wechseln. Wart mal, wieso galt das nochmals… +" +Statement Nat.pos_iff_ne_zero (n : ℕ) : 0 < n ↔ n ≠ 0 := by + Hint "**Robo** (*flüsternd*): Wenn du ein bisschen schwere Maschinerie auffahren willst, + um in zu beeindrucken, hab ich was. Mach doch eine Fallunterscheidung ob `n` Null ist + oder nicht! -" + **Du** (*flüsternd*): Und wie geht das? -Statement Nat.pos_iff_ne_zero -"Benutze Induktion um zu zeigen, dass $0 < n$ und $n \\ne 0$ äquivalent sind." - (n : ℕ) : 0 < n ↔ n ≠ 0 := by - induction n + **Robo** (*laut und selbstsicher*): Wir fangen mit `rcases n` an!" + rcases n + Hint "**Du**: Hmm, das muss man doch vereinfachen können. + + **Robo** (*flüsternd*): Zweiter pompöser Auftritt: sag einfach `simp` und lass das alles + automatisch geschehen." simp + Hint "**Du**: Und hier fang ich wohl am besten an wie ich das schon kenne." constructor intro simp intro + Hint "**Robo**: Warte! Den Rest geb ich dir als Lemma: `Nat.suc_pos`." apply Nat.succ_pos NewTactic simp NewLemma Nat.succ_pos +DisabledLemma Nat.pos_iff_ne_zero -Hint : 0 < Nat.zero ↔ Nat.zero ≠ 0 => -"Den Induktionsanfang kannst du oft mit `simp` lösen." - -Hint (n : ℕ) (h : 0 < n ↔ n ≠ 0) : 0 < Nat.succ n ↔ Nat.succ n ≠ 0 => -"Jetzt der Induktionsschritt. Fang mal mit `constructor` an." - -HiddenHint (n : ℕ) : 0 < Nat.succ n → Nat.succ n ≠ 0 => -"Auch das kann `simp`." - -Hint (n : ℕ) : n.succ ≠ 0 => -"Auch das kann `simp`." - -Hint (n : ℕ) : 0 < Nat.succ n => -"Hier kannst du das Lemma `Nat.succ_pos` mit `apply` anwenden." - - - -/- Second, less ideal path -/ - -Hint (n : ℕ) (h : 0 < n) : n ≠ 0 => -"An dieser Stelle fürst du am besten einen Beweis durch Widerspruch." - -HiddenHint (n : ℕ) (h : 0 < n) : n ≠ 0 => -"Das macht man mit `by_contra`." - -Hint (n : ℕ) (h : 0 < n) (g : n = 0) : False => -"Brauche `rw [_] at _` um eine Annahme `0 < 0` zu erzeugen." - -HiddenHint (h : 0 < 0) : False => -"Mit `contradiction` schliesst du den Widerspruchsbeweis." - -Hint (n : ℕ) (h : n ≠ 0) : 0 < n => -"Diese Richtung beweist du am besten per Induktion." - -HiddenHint (n : ℕ) (h : n ≠ 0) : 0 < n => -"Starte mit `induction n`." +Conclusion "**Du**: Oh `simp` ist ja echt nicht schlecht… - HiddenHint : 0 < Nat.zero => -"Mit `contradiction` kannst du den Induktionsanfang schliessen." +Die andere Person scheint beeindruckt, hat aber gleichzeitig auch das Bedürfnis, Dich aus +der Reserve zu locken." diff --git a/server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean b/server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean index b63fab6..83c551c 100644 --- a/server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean +++ b/server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean @@ -9,15 +9,18 @@ Title "Linarith" Introduction " -Die Taktik `linarith` kann alle Systeme von linearen (Un-)gleichungen über `ℤ`, `ℚ`, etc. lösen. -Über `ℕ` ist sie etwas schwächer, aber einfache Aussagen kann sie trotzdem beweisen. +**dritte Person**: Nah wenn wir so spielen: " -Statement -"Wenn $n \\ge 2$, zeige, dass $n$ nich Null sein kann." - (n : ℕ) (h : 2 ≤ n) : n ≠ 0 := by +Statement (n : ℕ) (h : 2 ≤ n) : n ≠ 0 := by + Hint "**Du**: `simp` geht hier nicht, was mir ja auch einläuchtet. + + **Robo**: Ist auch keine Vereinfachung, die du machen willst. Stattdessen, + `linarith` kann lineare Gleichungen und Ungleichungen lösen. Das ist das Powertool + in der hinsicht." linarith NewTactic linarith - NewLemma Nat.pos_iff_ne_zero + +Conclusion "**Du**: Naja so beeindruckend war das jetzt auch noch nicht." diff --git a/server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean b/server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean index b06c0fc..b688b02 100644 --- a/server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean +++ b/server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean @@ -9,20 +9,21 @@ Title "Linarith" Introduction " -Sobald man mit einem Ring arbeitet, der eine lineare Order hat (also z.B. `ℤ` oder `ℚ`), -ist `linarith` stärker und kann Systeme von Gleichungen und Ungleichungen angehen. +**Robo**: Die Taktik kann aber noch viel mehr. -`linarith` kann aber nur mit linearen Ungleichungen umgehen, mit Termen der Form `x ^ 2` -kann es nicht umgehen. -" +**weitere Person**: Hier, probier mal! -Statement -" -Angenommen man hat für zwei Ganzzahlen $x, y$ folgende Ungleichungen. $$ -\\begin{aligned} 5 * y &\\le 35 - 2 * x \\\\ 2 * y &\\le x + 3 \\end{aligned} +\\begin{aligned} + 5 * y &\\le 35 - 2 * x \\\\ + 2 * y &\\le x + 3 +\\end{aligned} $$ -Zeige, dass $y \\le 5$. " - (x y : ℤ) (h₂ : 5 * y ≤ 35 - 2 * x) (h₃ : 2 * y ≤ x + 3) : y ≤ 5 := by + +Statement (x y : ℤ) (h₂ : 5 * y ≤ 35 - 2 * x) (h₃ : 2 * y ≤ x + 3) : y ≤ 5 := by linarith + +Conclusion "**Du**: Boah, das ist schon gar nicht schlecht. + +Und damit endet auch Deine Erinnerung und wer weiss was du anschließend gemacht hast…" diff --git a/server/testgame/TestGame/Levels/Lean.lean b/server/testgame/TestGame/Levels/Lean.lean new file mode 100644 index 0000000..849ce7c --- /dev/null +++ b/server/testgame/TestGame/Levels/Lean.lean @@ -0,0 +1,26 @@ +import TestGame.Levels.Lean.L01_Type +import TestGame.Levels.Lean.L02_Universe +import TestGame.Levels.Lean.L03_ImplicitArguments +import TestGame.Levels.Lean.L04_InstanceArguments + +Game "TestGame" +World "Lean" +Title "Lean" + +Introduction +"Während ihr weiter durch Täler, über Geröllhalden und zwischen monumentalen Steintürmen +umherzieht, fragst Du eines Tages Robo. + +**Du**: Sag mal, hast du dir je Gedanken dazu gemacht, wie du eigentlich funktionierts? + +**Robo**: Was meinst du, wie ich funktioniere? Ich bin halt… ich… + +**Du**: Ja schon, aber was woher weisst du denn alles was du weisst? + +**Robo**: Das kann ich dir sagen. Früher habe ich viele Datenträger verschlungen, +und dadurch gelernt. + +**Du**: Ob so eine Diskette wohl lecker schmeckt? Egal, ich hab ein paar Fragen zu deinem +Lean-Modul. + +**Robo**: Na dann nur zu!" diff --git a/server/testgame/TestGame/Levels/Lean/L01_Type.lean b/server/testgame/TestGame/Levels/Lean/L01_Type.lean new file mode 100644 index 0000000..079051d --- /dev/null +++ b/server/testgame/TestGame/Levels/Lean/L01_Type.lean @@ -0,0 +1,41 @@ +import TestGame.Metadata + +import Mathlib + +set_option tactic.hygienic false + +Game "TestGame" +World "Lean" +Level 1 + +Title "Typen" + +Introduction +" +**Du**: Also, wieso schreib ich denn sowohl `(n : ℕ)` für eine natürliche Zahl wie +auch `(h : A ∧ ¬ B)` für eine Aussage? + +**Robo**: Alles in Lean sind Objekte von einem *Typen*, man nennt das auch +\"dependent type theory\". Rechts vom `:` steht immer der Typ der dieses Objekt hat. + +**Du**: Verstehe, dann war `ℕ` der Typ der natürlichen Zahlen, `Prop` der Typ +aller logischen Aussagen, und so weiter. Un wenn `R` einfach irgendein Typ ist, dann… + +**Robot: …würdest du das als `(R : Type)` schreiben. + +**Du**: Also sind Typen ein bisschen jene Grundlage, die in meinem Studium die +Mengen eingenommen haben? + +**Robo**: Genau. Ein Ring ist dann zum Beispiel als `(R : Type) [Ring R]` definiert, +also als Typen, auf dem eine Ringstruktur besteht. + +**Robo**: Hier ein Beispiel. Die Taktik `ring` funktioniert in jedem Typen, der +genügend Struktur definiert hat, zum Beispiel in einem kommutativen Ring: +" + +Statement (R : Type) [CommRing R] (a b : R) : a + b = b + a := by + ring + +Conclusion "**Robo**: `[CommRing R]` nennt man übrigens eine Instanz und die +eckigen Klammern sagen Lean, dass es automatisch suchen soll, ob es so eine Instanz +findet, wenn man ein Lemma anwenden will." diff --git a/server/testgame/TestGame/Levels/Lean/L02_Universe.lean b/server/testgame/TestGame/Levels/Lean/L02_Universe.lean new file mode 100644 index 0000000..9566a99 --- /dev/null +++ b/server/testgame/TestGame/Levels/Lean/L02_Universe.lean @@ -0,0 +1,44 @@ +import TestGame.Metadata + +import Mathlib + +set_option tactic.hygienic false + +Game "TestGame" +World "Lean" +Level 2 + +Title "Universen" + +Introduction +"**Du**: Aber wenn alles Typen sind, welcher Typ hat dann `Type`? + +**Robo**: `Type 1` und dieser hat Typ `Type 2`, etc. + +**Robo**: Die Zahl nennt man *Universum*. Manchmal führt man Universen explizit +mit `universum u` ein, öfter siehst du `(R : Type _)`, was einfach ein Platzhalter +für irgend ein Universum ist. + +**Du**: Das klingt ein bisschen nach Mengentheoretische Probleme, die man normalerweise +ignoriert. + +**Robo**: Genau! Deshalb schreibt man eigentlich immer einfach `Type _` und ist glücklich. +Spezifischer muss man erst werden wenn man sowas wie Kategorientheorie anschaut, wo +man die Universen tatsächlich kontrollieren muss. + +**Du**: Oke, hier rein, da raus. Aber hast du mir noch eine Aufgabe? +" + +universe u + +Statement + (R : Type u) [CommRing R] (a b : R) : a + b = b + a := by + Hint "**Robo**: Naja, Aufgaben zu Universen sind nicht so natürlich, + aber vorige Aufgabe würde man eigentlich besser so schreiben, da + kannst du mindestens das Uniersum beobachten." + ring + +Conclusion "**Du**: Na dann. Aber gut dass ich's mal gesehen hab." + +-- Hint (R : Type) (h : CommRing R) (a : R) (b : R) : a + b = b + a => +-- "" diff --git a/server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean b/server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean new file mode 100644 index 0000000..d68da37 --- /dev/null +++ b/server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean @@ -0,0 +1,71 @@ +import TestGame.Metadata + +import Mathlib +import TestGame.Options.BigOperators + +set_option tactic.hygienic false + +Game "TestGame" +World "Lean" +Level 3 + +Title "Implizite Argumente" + +Introduction +" +**Du**: Was mich aber mehr beschäftigt, ist, dass Lemmas manchmal viel mehr Argumente +haben als ich hinschreiben muss. + +**Robo**: Lean kann manche Argumente aus dem Kontext erschliessen. Hast du zum Beispiel +ein Lemma von vorhin + +``` +lemma Fin.sum_univ_castSucc {β : Type _} [AddCommMonoid β] {n : ℕ} (f : Fin (n + 1) → β) : + ∑ i : Fin (n + 1), f i = ∑ i : Fin n, f (↑Fin.castSucc.toEmbedding i) + f (Fin.last n) := by + sorry +``` + +dann reicht es ja Lean `f` zu geben und daraus kann es herausfinden, was die anderen +(`β`, `n`) sein müssen. + +**Robo**: Solche *implizite Argumente* markiert man dann mit `{_ : _}` während +*explizite Arumente* mit `(_ : _)` markiert werden. + +**Du**: Dann könnte ich also einfach `Fin.sum_univ_castSucc f` schreiben? + +**Robo**: Genau! + +**Du**: Und was war dann das `(n := m + 1)` vorhin genau? + +**Robo**: Damit kann man im Aussnahmefall die impliziten Argumente doch angeben. Hier haben wir +gesagt, es soll für das Argument `n` den Term `m + 1` einsetzen. Hier mach das doch noch einmal +unter weniger Stress: +" + +open BigOperators + +Statement (m : ℕ) : ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i := by + Branch + rw [Fin.sum_univ_castSucc] + Hint "**Robo**: Siehst du, ohne die Hilfe macht es das Falsche. Deshalb muss man hier + explizit mit `Fin.sum_univ_castSucc (n := m + 1)` nachhelfen." + rw [Fin.sum_univ_castSucc] + Hint "**Robo**: Na klar, in dem Beispiel kannst du einfach weiter umschreiben bis es + nicht mehr geht, aber das war nicht der Punkt…" + rw [Fin.sum_univ_castSucc] + Hint "**Robo**: Na klar, in dem Beispiel kannst du einfach weiter umschreiben bis es + nicht mehr geht, aber das war nicht der Punkt…" + rfl + rw [Fin.sum_univ_castSucc (n := m + 1)] + rfl + +OnlyTactic rw rfl + +Conclusion "**Du**: Gibt es auch noch ander Methoden implizite Argumente anzugeben. + +**Robo** `@Fin.sum_univ_castSucc` würde *alle* Argumente explizit machen, +aber das ist unparktischer, weil man dann irgendwie +`@Fin.sum_univ_castSucc _ _ (m + 1)` schreiben müsste. + +**Du**: Ah und ich sehe der `_` ist überall in Lean ein Platzhalter, der automatisch +gefüllt wird." diff --git a/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean b/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean new file mode 100644 index 0000000..380a181 --- /dev/null +++ b/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean @@ -0,0 +1,57 @@ +import TestGame.Metadata + +import Mathlib +import TestGame.Options.BigOperators + +set_option tactic.hygienic false + +Game "TestGame" +World "Lean" +Level 4 + +Title "Instanz-Argumente" + +Introduction +"**Du**: Also nochmals als Zusammenfassung, dann gibt es 3 Arten von Argumenten, +explizite mit `()`, implizite mit `{}` und Instanzen mit `[]`? + +**Robo**: Korrekt. Instanzen sind damit auch Implizite Argumente. Der Unterschied +zwischen `{}` und `[]` ist also *wie* Lean diese füllt. + +**Du**: Verstehe, bei den ersten sucht es logisch nach einer richtigen Möglichkeit, +beim zweiten geht's durch alle Instanzen, die es kennt. + + +**Robo**: Funktioniert hier bei mir nicht, aber wenn du ausserhalb eines Beweises +`#synth Ring ℤ` in ein Dokument schreibt, zeigt dir Lean, ob es eine Instanz finden kann. + +**Du**: Ich glaube das macht alles Sinn. + +**Robo**: Hier, mach nochmals das Gleiche wie vorhin aber mit @-Syntax um das zu +verinnerlichen: +" + +open BigOperators + +Statement (m : ℕ) : + ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i := by + Hint "*Robo*: Schreibe `rw [@Fin.sum_univ_castSucc _ _ (m + 1)]` + anstatt `rw [Fin.sum_univ_castSucc (n := m + 1)]`!" + rw [@Fin.sum_univ_castSucc _ _ (m + 1)] + rfl + +OnlyTactic rw rfl + +Conclusion " +**Du**: Danke Robo! + +Um zwei weitere Ecken und plötzlich steht ihr wieder vor dem Golem, dem ihr schon begegnet seit. +Dieser lädt euch zum Abendmahl ein. Ihr erfährt, dass er ganz gerne liest und er zeigt euch +sein neustes Buch, das er leider nicht lesen kann. Nich tnur ist es der zweite Band einer Serie +(der Erste hat offensichtlich was mit \"Urbildern\" zu tun), sondern ist es auch in einem +Dialekt geschrieben, der anscheinend nur auf einem Nachbarsmond gesprochen wird. + +Ihr beschliesst dem herzlichen Golem zu helfen und sowohl dem Mond einen Besuch abzustatten, +um den Dialekt zu lernen, wie auch auf dem zweiten Mond in der Bibliothek nach dem +ersten Band zu suchen. +" diff --git a/server/testgame/TestGame/Levels/LeanStuff.lean b/server/testgame/TestGame/Levels/LeanStuff.lean deleted file mode 100644 index c0e6935..0000000 --- a/server/testgame/TestGame/Levels/LeanStuff.lean +++ /dev/null @@ -1,8 +0,0 @@ -import TestGame.Levels.LeanStuff.L01_Type -import TestGame.Levels.LeanStuff.L02_Universe -import TestGame.Levels.LeanStuff.L03_ImplicitArguments -import TestGame.Levels.LeanStuff.L04_InstanceArguments - -Game "TestGame" -World "LeanStuff" -Title "Lean" diff --git a/server/testgame/TestGame/Levels/LeanStuff/L01_Type.lean b/server/testgame/TestGame/Levels/LeanStuff/L01_Type.lean deleted file mode 100644 index 1a6fd1c..0000000 --- a/server/testgame/TestGame/Levels/LeanStuff/L01_Type.lean +++ /dev/null @@ -1,49 +0,0 @@ -import TestGame.Metadata - -import Mathlib - -set_option tactic.hygienic false - -Game "TestGame" -World "LeanStuff" -Level 1 - -Title "Typen" - -Introduction -" -Dieses Kapitel führt ein paar Lean-spezifische Sachen ein, die du wissen solltest. - -Mathematisch haben diese Sachen keinen Inhalt, aber es ist wichtig, dass du etwas -verstehst wie Lean manche Sachen macht. - -Als erstes geht es um Typen. - -Oft sieht man Argumente von der Form `(U : Type)` was heisst \"sei $U$ ein Typ.\" -Als Mathematiker kann man sich Typen ein bisschen wie Mengen vorstellen, in dem Sinn -dass sie die Grundlage der Mathematik bilden: Alles sind Typen. - -Zum Beispiel ist `ℕ` der Typ der natürlichen Zahlen, `Prop` der Typ der logischen -Aussagen, und ein Ring ist ein Typ `(R : Type)` zusammen mit einer Instanz `[Ring R]`, -die sagt, dass auf diesem Typ eine Ringstruktur besteht. - -**Achtung**: Wie du aber gleich sehen wirst sind Typen und Mengen in Lean unterschiedliche -Sachen. - -Hier ein kleines Beispiel zu Typen und Instanzen: -" - -Statement -"" - (R : Type) [CommRing R] (a b : R) : a + b = b + a := by - ring - -Hint (R : Type) (h : CommRing R) (a : R) (b : R) : a + b = b + a => -" -Die Taktik `ring` funktioniert in jedem Typen, -ist aber stärker, je nach Instanz auf dem Typen. - -In Mathlib sind Instanzen `[CommSemiring ℕ]`, [CommRing ℤ]`, `[Field ℚ]`, etc. definiert. -Die Taktik `ring` muss eine dieser Instanzen finden, die sagen, dass die Addition kommutative ist, -damit das Lemma `add_comm` angewendet und die Aussage bewiesen werden kann. -" diff --git a/server/testgame/TestGame/Levels/LeanStuff/L02_Universe.lean b/server/testgame/TestGame/Levels/LeanStuff/L02_Universe.lean deleted file mode 100644 index c75343e..0000000 --- a/server/testgame/TestGame/Levels/LeanStuff/L02_Universe.lean +++ /dev/null @@ -1,51 +0,0 @@ -import TestGame.Metadata - -import Mathlib - -set_option tactic.hygienic false - -Game "TestGame" -World "LeanStuff" -Level 2 - -Title "Universen" - -Introduction -" -Ein weitere Syntax, den man in Lean abundzu sieht sind Universen. - -Diese sind für Mathematiker erst einmal nicht so wichtig, und es reicht zu wissen, -dass diese existieren. - -Da alle Objekte in Lean einen Typ haben, kann man sich fragen, welchen Typ hat eigentlich `Type` -selber? Die Anwort darauf ist dass `Type` vom Typ `Type 1` ist und dieses wiederum vom Typ `Type 2` -usw. - -Da Lemmas in Lean gerne so algemein wie möglich formuliert werden, sieht man oft `(R : Type _)` -anstatt `(R : Type)`, wobei `_` einfach ein Platzhalter für eine Zahl ist. - -Alternativ kann man auch explizit Universum-Levels definieren, so sind die folgenden beiden -Aussdrücke äquivalent: - -``` -variable (R : Type _) - -universe u -variable (R : Type u) -``` - -In der Praxis kann man immer ohne bedenken `Type _` verwendenen und wenn man auf -(mengentheoretische) -Probleme stösst, muss man dan eventuell die Universen spezifizieren. - -*Die Normalform ist eigentlich `(R : Type _)` zu schreiben solange man kein Grund hat -das Universum einzuschränken.* -" - -Statement -"" - (R : Type _) [CommRing R] (a b : R) : a + b = b + a := by - ring - --- Hint (R : Type) (h : CommRing R) (a : R) (b : R) : a + b = b + a => --- "" diff --git a/server/testgame/TestGame/Levels/LeanStuff/L03_ImplicitArguments.lean b/server/testgame/TestGame/Levels/LeanStuff/L03_ImplicitArguments.lean deleted file mode 100644 index 1d85c83..0000000 --- a/server/testgame/TestGame/Levels/LeanStuff/L03_ImplicitArguments.lean +++ /dev/null @@ -1,63 +0,0 @@ -import TestGame.Metadata - -import Mathlib -import TestGame.Options.BigOperators - -set_option tactic.hygienic false - -Game "TestGame" -World "LeanStuff" -Level 3 - -Title "Implizite Argumente" - -Introduction -" - -Auch wichtiger Syntax ist der Unterschied zwischen -impliziten und expliziten Argumenten von Lemmas. **Explizite Argumente** -schreibt man mit runden Klammern `()`, **impliziete Argumente** mit geschweiften `{}`. - -Als implizit werden alle Argumente markiert, die Lean selbständig aus dem Kontext -erschliessen und einfüllen kann. - -Als Beispiel schauen wir uns ein bekanntes Lemma an: -``` -lemma Fin.sum_univ_castSucc {β : Type _} [AddCommMonoid β] {n : ℕ} (f : Fin (n + 1) → β) : - ∑ i : Fin (n + 1), f i = ∑ i : Fin n, f (↑Fin.castSucc.toEmbedding i) + f (Fin.last n) := by - sorry -``` - -Hier ist unter anderem `n` als implizites Argument angegeben, da Lean aus `f` herauslesen kann, -was `n` sein muss. Falls man trotzdem einmal das implizites Argument angeben muss -(z.B. um `rw` zu helfen, wenn es mehrere Möglichkeiten gibt), -kann man dies mit `Fin.sum_univ_castSucc (n := m + 1)` machen. -" - -open BigOperators - -Statement -"Zeige $(\\sum_{i=0}^{m} i) + (m + 1) = \\sum_{i=0}^{m + 1} i$." - (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i := by - rw [Fin.sum_univ_castSucc (n := m + 1)] - rfl - -OnlyTactic rw rfl - -NewLemma Fin.sum_univ_castSucc - -HiddenHint (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i => -"Das Lemma `Fin.sum_univ_castSucc` hilft." - -Hint (m : ℕ) : - ∑ i : Fin m, (Fin.castSucc.toEmbedding i : ℕ) + ↑(Fin.last m) + (m + 1) = - ∑ i : Fin (Nat.succ m + 1), ↑i => -"Hier hat `rw` die falsche der beiden Summen umgeschrieben. Hilf ihm mit -`rw [Fin.sum_univ_castSucc (n := m + 1)]`." - -Hint (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = - ∑ i : Fin (m + 1), ↑i + (m + 1) => -"Jetzt sind beide Seiten gleich und das Goal kann mit `rfl` geschlossen werden." diff --git a/server/testgame/TestGame/Levels/LeanStuff/L04_InstanceArguments.lean b/server/testgame/TestGame/Levels/LeanStuff/L04_InstanceArguments.lean deleted file mode 100644 index b06d3d2..0000000 --- a/server/testgame/TestGame/Levels/LeanStuff/L04_InstanceArguments.lean +++ /dev/null @@ -1,78 +0,0 @@ -import TestGame.Metadata - -import Mathlib -import TestGame.Options.BigOperators - -set_option tactic.hygienic false - -Game "TestGame" -World "LeanStuff" -Level 4 - -Title "Instanz-Argumente" - -Introduction -" -Bezüglich impliziten Argumente gibt es noch einige weitere Punkte oder Tricks, -die man wissen sollte. - -* Instanz-Argumente wie `[Ring R]` sind auch impilzite Argumente. Der Unterschied ist, dass - Lean einen anderen Mechanismus braucht, um diese zu füllen: Es sucht nach einer entsprechenden - *Instanz* und, setzt die erste solche Instanz ein. - Ausserhalb eines Beweises könnte man auch mit - ``` - #synth Ring ℤ - ``` - testen, ob Lean eine ensprechende Instanz findet. Instanzen werden dafür gebraucht, Typen - mit (algebraischer) Stukturen zu versehen. -* Ein `_` irgendwo im Lean-Code ist immer ein Platzhalter, den Lean versucht aus dem Kontext zu - füllen. Das kann praktisch sein, wenn man etwas nicht ausschreiben will, das offensichtlich ist. -* Mit `@` kann man forcieren, dass alle Argumente explizit sind. - Für ein Lemma - ``` - lemma not_or_of_imp {A B : Prop} (h : A → B) : - ¬A ∨ B := sorry - ``` - heisst das zum Beispiel dass `not_or_of_imp g` das gleiche ist wie - `@not_or_of_imp _ _ g`. - - Und `Fin.sum_univ_castSucc (n := m + 1)` könnte man auch als - `@Fin.sum_univ_castSucc _ _ (m + 1)` schreiben. -" - -open BigOperators - -Statement -"Zeige $(\\sum_{i=0}^{m} i) + (m + 1) = \\sum_{i=0}^{m + 1} i$." - (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i := by - rw [Fin.sum_univ_castSucc (n := m + 1)] - rfl - -OnlyTactic rw rfl - -NewLemma Fin.sum_univ_castSucc - -Hint (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = ∑ i : Fin (Nat.succ m + 1), ↑i => -" - Probier nochmals das gleiche, diesmal mit -``` -rw [@Fin.sum_univ_castSucc _ _ (m + 1)] -``` -anstatt -``` -rw [Fin.sum_univ_castSucc (n := m + 1)] -``` -" - -Hint (m : ℕ) : - ∑ i : Fin m, (Fin.castSucc.toEmbedding i : ℕ) + ↑(Fin.last m) + (m + 1) = - ∑ i : Fin (Nat.succ m + 1), ↑i => -"Sackgasse!" - - -Hint (m : ℕ) : - ∑ i : Fin (m + 1), (i : ℕ) + (m + 1) = - ∑ i : Fin (m + 1), ↑i + (m + 1) => -"Jetzt sind beide Seiten gleich und das Goal kann mit `rfl` geschlossen werden." diff --git a/server/testgame/TestGame/Levels/Prime.lean b/server/testgame/TestGame/Levels/Prime.lean index c9fb5f6..51c241c 100644 --- a/server/testgame/TestGame/Levels/Prime.lean +++ b/server/testgame/TestGame/Levels/Prime.lean @@ -1,8 +1,11 @@ import TestGame.Levels.Prime.L01_Dvd -import TestGame.Levels.Prime.L04_Prime -import TestGame.Levels.Prime.L05_Prime -import TestGame.Levels.Prime.L06_ExistsUnique +-- import TestGame.Levels.Prime.L04_Prime +-- import TestGame.Levels.Prime.L05_Prime +-- import TestGame.Levels.Prime.L06_ExistsUnique Game "TestGame" World "Prime" Title "Teilbarkeit" + +Introduction "Ihr schlendert durch die Befestigung ohne direktes Ziel. Und sprecht mit +verschiedenen Einwohnern." diff --git a/server/testgame/TestGame/Levels/Prime/L01_Dvd.lean b/server/testgame/TestGame/Levels/Prime/L01_Dvd.lean index 5edc0da..89f93c8 100644 --- a/server/testgame/TestGame/Levels/Prime/L01_Dvd.lean +++ b/server/testgame/TestGame/Levels/Prime/L01_Dvd.lean @@ -1,6 +1,7 @@ import TestGame.Metadata import Mathlib.Tactic.Ring +import Mathlib Game "TestGame" World "Prime" @@ -10,43 +11,39 @@ Title "Teilbarkeit" Introduction " -Die Aussage \"$m$ teilt $n$.\" wird in Lean als `m | n` (`\\|`) geschrieben. +Ihr begenet einer Frau, die mit Vorschlaghammer und Schaufel anscheinend an einer Erweiterung +ihres Hauses baut. Im gespräch erzählt sie euch wie die Dornenwände gezüchtet wurden vor ihrer +Zeit, und über's Wetter und so. -**Wichtig:** `∣` (Teilbarkeit) ist ein spezielles Unicode Symbol, das nicht dem -senkrechten Strich auf der Tastatur (`|`) entspricht. Man erhält es mit `\\|`. - -`m ∣ n` bedeutet `∃ c, n = m * c`, das heisst, man kann damit genau gleich umgehen -wie mit einem `∃`-Quantifier. +**Handwerkerin**: (*langer Monolog*) …, und dann gestern habe ich zwei Herren überhört, +wie sie an folgender Aufgabe gesessen sind, könnt ihr mir das erklären? " -Statement dvd_add - "Wenn $m$ ein Teiler von $n$ und $k$ ist, dann teilt es die Summe." - (n m k : ℕ) (h : m ∣ n) (g : m ∣ k) : m ∣ n + k := by +-- Die Aussage \"$m$ teilt $n$.\" wird in Lean als `m | n` (`\\|`) geschrieben. + +-- **Wichtig:** `∣` (Teilbarkeit) ist ein spezielles Unicode Symbol, das nicht dem +-- senkrechten Strich auf der Tastatur (`|`) entspricht. Man erhält es mit `\\|`. + +-- `m ∣ n` bedeutet `∃ c, n = m * c`, das heisst, man kann damit genau gleich umgehen +-- wie mit einem `∃`-Quantifier. + +Statement dvd_add (n m k : ℕ) (h : m ∣ n) (g : m ∣ k) : m ∣ n + k := by + Hint "**Robo**: `n ∣ m` bedeutet \"$n$ teilt $m$\", der senkrechte Strich ist allerdings + ein spezieller, den man mit `\\|` schreibt. + Definiert ist dieses Symbol als `∃ c, n = m * c`. + + **Du**: Dann kann ich direkt `rcases` und `use` verwenden, wie wenns ein `∃` wäre? + + **Robo**: Genau!" + Hint (hidden := true) "**Robo**: Fang doch damit an, mit `rcases _ with ⟨x ,hx⟩` + alle Hyptothesen aufzuteilen." rcases h with ⟨x, h⟩ rcases g with ⟨y, g⟩ + Hint (hidden := true) "**Robo**: Jetzt musst du mit `use _` eine Zahl angeben so dass + `{n} + {k} = {m} * _` gilt." use x + y + Hint (hidden := true) "**Du**: Mit ein bisschen umschreiben kann man sicer `ring` verwenden." rw [h, g] ring -HiddenHint (n : ℕ) (m : ℕ) (k : ℕ) (h : m ∣ n) (g : m ∣ k) : m ∣ n + k => -" -Wenn man explizit mit der Definition von Teilbarkeit arbeiten will, -sollte man als erstes alle Annahmen der Form `x ∣ y` mit `rcases` aufteilen. -" - -HiddenHint (n : ℕ) (m : ℕ) (k : ℕ) (x : ℕ) (h : n = m * x) (g : m ∣ k) : m ∣ n + k => -" -Wenn man explizit mit der Definition von Teilbarkeit arbeiten will, -sollte man als erstes alle Annahmen der Form `x ∣ y` mit `rcases` aufteilen. -" - -HiddenHint (n : ℕ) (m : ℕ) (k : ℕ) (y : ℕ) (h : m ∣ n) (g : k = m * y) : m ∣ n + k => -" -Wenn man explizit mit der Definition von Teilbarkeit arbeiten will, -sollte man als erstes alle Annahmen der Form `x ∣ y` mit `rcases` aufteilen. -" - -HiddenHint (n : ℕ) (m : ℕ) (k : ℕ) (x : ℕ) (y : ℕ) (h : n = m * x) (g : k = m * y) : m ∣ n + k => -" -Jetzt kannst du mit `use` eine Zahl angeben, so dass $m * X = n + k$. -" +DisabledLemma dvd_add diff --git a/server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean b/server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean index 7a177eb..64cdbb7 100644 --- a/server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean +++ b/server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean @@ -22,9 +22,9 @@ Statement "" **Robo** Ja. Da kommst Du jetzt selbst drauf, wie das geht, oder? " - Hint (hidden := true) "Ist doch genau wie eben: + Hint (hidden := true) "**Robo**: Ist doch genau wie eben: die Aussage, die zu beweisen ist, gehört selbst zu den Annahmen. -Also wird `asumption` auch wieder funktionieren." +Also wird `assumption` auch wieder funktionieren." assumption Conclusion diff --git a/server/testgame/TestGame/Levels/Proposition/L09_And.lean b/server/testgame/TestGame/Levels/Proposition/L09_And.lean index 773259e..5411259 100644 --- a/server/testgame/TestGame/Levels/Proposition/L09_And.lean +++ b/server/testgame/TestGame/Levels/Proposition/L09_And.lean @@ -12,12 +12,12 @@ Title "Und" Introduction " Der nächste Formalosoph in der Reihe hat seine Frage bereìts mitgebracht. -Er legt sie uns vor, setzt sich hin, und häkelt. +Er legt sie uns vor, setzt sich hin und häkelt. " Statement "" (A B : Prop) (hA : A) (hB : B) : A ∧ B := by Hint " -**Du**: Also, wir haben zwei Annahmen: `{A}` gilt, und `{B}` gilt. Auch. Und beweisen sollen wir +**Du**: Also, wir haben zwei Annahmen: `{A}` gilt, und `{B}` gilt auch. Und beweisen sollen wir dass `{A} und {B}` gilt. Ich glaube, diese Formalospinner treiben mich noch zur Verzweiflung. Kann ich nicht wieder `trivial` sagen? diff --git a/server/testgame/TestGame/Levels/Sum.lean b/server/testgame/TestGame/Levels/Sum.lean index 3ca27b5..74c3fd7 100644 --- a/server/testgame/TestGame/Levels/Sum.lean +++ b/server/testgame/TestGame/Levels/Sum.lean @@ -8,3 +8,13 @@ import TestGame.Levels.Sum.L06_Summary Game "TestGame" World "Sum" Title "Endliche Summe" + +Introduction "Mit dem Gefühl, dass sich *Evenine* und *Oddeus* in Zukunft wieder +besser verstehen werden, steigt ihr in eurer Raumschiff und setzt eure Reise fort. + +Bald erreicht ihr einen neuen Planet. Die oberfläche scheint steinig zu sein, aber nicht etwa +geröll oder Chaos. Stattdessen, scheinen unzählige Steinplatten zu bizzaren hohen Türme +gestapelt und die ganze Landschaft wirkt wie ein grosses Puzzle in dem jede Platte +feinsäuberlich auf den darunterliegenden Platten aufbaut. + +Bald trefft ihr auch die Bewohner dieses Planeten an." diff --git a/server/testgame/TestGame/Levels/Sum/L01_Simp.lean b/server/testgame/TestGame/Levels/Sum/L01_Simp.lean index d7970de..bb8deb2 100644 --- a/server/testgame/TestGame/Levels/Sum/L01_Simp.lean +++ b/server/testgame/TestGame/Levels/Sum/L01_Simp.lean @@ -12,36 +12,55 @@ Title "Simp" Introduction " +**Unbekannte**: Willkommen auf *Indu*, unserem Planeten! Bevor ich euch herumzeigen will, +sagt mir, ob ihr unsere Lebensweise zu verstehen und schätzen wisst: In diesem Kapitel lernen wir endliche Summen und mehr Übungen zur Induktion. -Eine endliche Summe läuft erstmal immer über einen endlichen Index -`Fin n`, welcher $n$ Elemente -$\\{0, 1, \\ldots, n-1\\}$ beinhaltet. +" -Der Syntax für $\\sum_{i=0}^n a_i$ ist `∑ i : Fin n, _` (\\sum) +-- Eine endliche Summe läuft erstmal immer über einen endlichen Index +-- `Fin n`, welcher $n$ Elemente +-- $\\{0, 1, \\ldots, n-1\\}$ beinhaltet. -Als erstes kann die Taktik `simp` (für \"simplification\") ganz viel Triviales vereinfachen. -`simp` ist eine der stärksten Taktiken in Lean und verwendet -ganz viele markierte Lemmas um das Goal zu vereinfachen. +-- Der Syntax für $\\sum_{i=0}^n a_i$ ist `∑ i : Fin n, _` (\\sum) -Zum Beispiel kennt es ein Lemma das ungefähr so aussieht: +-- Als erstes kann die Taktik `simp` (für \"simplification\") ganz viel Triviales vereinfachen. +-- `simp` ist eine der stärksten Taktiken in Lean und verwendet +-- ganz viele markierte Lemmas um das Goal zu vereinfachen. -``` -@[simp] -lemma sum_const_add (n : ℕ) : (∑ i in Fin n, 0) = 0 := by - sorry -``` +-- Zum Beispiel kennt es ein Lemma das ungefähr so aussieht: -Die Taktik `simp` benützt alle Lemmas, die mit `@[simp]` markiert sind. +-- ``` +-- @[simp] +-- lemma sum_const_add (n : ℕ) : (∑ i in Fin n, 0) = 0 := by +-- sorry +-- ``` -(Tipp: `simp?` zeigt an, welche Lemmas `simp` benutzen würde.) -" +-- Die Taktik `simp` benützt alle Lemmas, die mit `@[simp]` markiert sind. + +-- (Tipp: `simp?` zeigt an, welche Lemmas `simp` benutzen würde.) open BigOperators -Statement -"Zeige $\\sum_{i = 0} ^ {n-1} (0 + 0) = 0$." - (n : ℕ) : (∑ i : Fin n, (0 + 0)) = 0 := by +Statement (n : ℕ) : (∑ i : Fin n, (0 + 0)) = 0 := by + Hint "BUG" + + -- TODO (Bug): Invalid escape sequence: + -- "**Du**: Oh das ist ganz schön viel neues… Mal sehen, das sagt wohl + -- $( \\sum_i 0 + 0 ) = 0$. Dann ist das vielleicht doch nicht so komplex. + + -- **Robo**: Genau! Man schreibt `\\sum`. Beachte den Index: + -- $( \\sum_\{i=0}^\{n-1} 0 + 0 ) = 0$, also `Fin n` ist ein Typ mit den Elementen + -- $\\{0, \\ldots, n-1\\}$. + + -- **Du**: Oke, also `Fin n` hat `n` Elemente. Und was mach ich jetzt? + + -- **Robo**: `simp` ist eine ganz starke Taktik, die viele Terme vereinfacht, wir + -- fangen besser an, diese zu benützen. + + -- Irgendwie hast du das Gefühl ein Déjà-vue zu haben…" simp -NewTactic simp +OnlyTactic simp + +Conclusion "**Unbekannte**: Sehr gut, folgt mir!" diff --git a/server/testgame/TestGame/Levels/Sum/L02_Sum.lean b/server/testgame/TestGame/Levels/Sum/L02_Sum.lean index 218187a..5ab6f40 100644 --- a/server/testgame/TestGame/Levels/Sum/L02_Sum.lean +++ b/server/testgame/TestGame/Levels/Sum/L02_Sum.lean @@ -13,29 +13,42 @@ Title "endliche Summe" Introduction " -Generell sind aber nur solche Lemmas `@[simp]` markiert, klar eine Vereinfachung darstellen. - -So ist ein Lemma wie `Finset.sum_add_distrib` kein `simp`-Lemma, da beide Seiten je -nach Situation bevorzugt sein könnte: - -$$ - \\sum_{i = 0}^n a_i + b_i = \\sum_{i = 0}^n a_i + \\sum_{j = 0}^n b_j -$$ - -Dieses Lemma kann aber mit `rw` angewendet werden. +Während euch die Person zu einem besonders herausragenden Steinturm führt, löchert +sie euch noch weiter mit Fragen. " open BigOperators Statement -"Zeige dass $\\sum_{i=0}^{n-1} (i + 1) = n + \\sum_{i=0}^{n-1} i$." + "$\\sum_{i=0}^{n-1} (i + 1) = n + \\sum_{i=0}^{n-1} i$." (n : ℕ) : ∑ i : Fin n, ((i : ℕ) + 1) = n + (∑ i : Fin n, (i : ℕ)) := by + -- Hint "**Du**: Hmm, wieder `simp`? + + -- **Robo**: Nicht ganz. `simp` benützt nur Lemmas, die klar eine Vereinfachung darstellen, + -- und in deiner Bibliothek mit `@[simp]` markiert wird. Hier brauchen wir eine andere + -- Umformung: + + -- $$ + -- \\sum_\{i = 0}^n a_i + b_i = \\sum_\{i = 0}^n a_i + \\sum_\{j = 0}^n b_j + -- $$ + + -- **Robo*: Da unklar ist, welche Seite \"einfacher\" ist, wird so ein Lemma nicht mit + -- `@[simp]` markiert. Das heisst du musst `Finset.sum_add_distrib` mit `rw` + -- explizit anwenden. + -- " rw [Finset.sum_add_distrib] - Hint "Die zweite Summe `∑ x : Fin n, 1` kann `simp` zu `n` vereinfacht werden." + Hint "**Robo**: Die zweite Summe `∑ x : Fin n, 1` kann jetzt aber mit + `simp` zu `n` vereinfacht werden." simp - Hint "Bis auf Umordnung sind jetzt beide Seiten gleich, darum kann `ring` das Goal schließen. + Hint "**Robo**: Bis auf Umordnung sind jetzt beide Seiten gleich! - Alternativ kann man auch mit `rw [add_comm]` dies explizit umordnen." + **Du**: Dann greift jetzt wohl `ring`! + + **Robo**: Genau! Und alternativ könntest du mit `rw [add_comm]` die Arbeit von `ring` + auch manuell machen." ring NewLemma Finset.sum_add_distrib add_comm + +Conclusion "Eure Begleitung scheint mit der Antwort zu frieden zu sein und zeigt +freudig an dem Turm empor, den ihr soeben erreicht habt." diff --git a/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean b/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean index fde2614..f515bb1 100644 --- a/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean +++ b/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean @@ -15,78 +15,75 @@ Title "Arithmetische Summe" Introduction " -Oft beweist man Aussagen über Summen am besten per Induktion. +**Du**: Wie werden solche Meisterwerke eigentlich gebaut? -Mit `induction n` startet man einen Induktionsbeweis. Dies erstellt 2 neue Goals: +Da zeigt eure Begleitung auf eine kleine Steinplatte neben dem Eingang, +auf der eien Beschreibung gekritzelt ist. -* **Induktionsanfang**: `n = 0`. Dieser kann ganz oft direkt mit `simp` bewiesen werden. -* **Induktionsschritt**: Man kriegt eine Annahme `(n_ih : P n)` und muss `P (n + 1)` - beweisen. Für endliche Summen will man normalerweise danach zuerst - `rw [Fin.sum_univ_castSucc]` brauchen, welches - $$\\sum_{i=0}^{n} a_i = \\sum_{i=0}^{n-1} a_i + a_n$$ - umschreibt. - -**Bemerkung:** - -Eine technische Sonderheit bezüglich endlichen Summen -ist der kleine Pfeil `↑` in `∑ i : Fin (n + 1), ↑i`. -Da `i : Fin n` technisch keine natürliche Zahl ist (sondern vom Typ `Fin n`), muss man -dieses zuerst mit `↑i` oder `(i : ℕ)` in eine natürliche Zahl umwandeln. Diese nennt man -*Coersion*. - -Gleichermassen, kommen hier im Induktionsschritt die Terme `↑(↑Fin.castSucc.toEmbedding i)` -und `↑(Fin.last (n + 1))` vor. Diese Terme können mit `simp` vereinfacht werden. +**Robo**: Das ist wohl der bekannte arithmetische Turm von Indu, über den hab ich schon +einmal Daten verarbeitet. Und die antwort auf deine Frage: Vermutlich ein Stein nach +dem anderen. " open BigOperators Statement arithmetic_sum -"Zeige $2 \\cdot \\sum_{i = 0}^n i = n \\cdot (n + 1)$." + "$2 \\cdot \\sum_{i = 0}^n i = n \\cdot (n + 1)$." (n : ℕ) : 2 * (∑ i : Fin (n + 1), ↑i) = n * (n + 1) := by + Hint "**Du**: Klar, die werden ja nicht oben anfangen mit bauen. Sag mal, + wie zeige ich denn die arithmetische Summe, die hier gekritzelt steht? + Ich würde gerne Induktion über $n$ anwenden. + + **Robo**: Ja dann ist's einfach `induction n`, ist doch logisch!" induction n + Hint "**Du**: Zuerst den Induktionsanfang… + + **Robo**: Diesen kannst du oft mit `simp` abkürzen!" simp + Hint "**Robo**: Jetzt im Induktionsschritt: Bei Induktion über endlichen Summen willst du + immer mit `rw [Fin.sum_univ_castSucc]` anfangen" -- : + + -- $$\\sum_\{i=0}^n a_i = \\sum_{i=0}^\{n-1} a_i + a_n$$" rw [Fin.sum_univ_castSucc] - rw [mul_add] + -- TODO: Bug. Dieser Hint wird nicht angezeigt. + Hint "**Du**: Oh das sieht jetz aber kompliziert aus… + + **Robo**: Da musst du etwas drüber hinweg lesen. Am besten machst du kurz `simp`, + dann sieht's schon wieder besser aus." simp - rw [n_ih] - rw [Nat.succ_eq_add_one] - ring + Hint "**Du**: Was bedeutet eigentlich der kleine Pfeil `↑`? -NewTactic induction -NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul + **Robo**: Das ist eine *Coersion*. Sowas wie wenn man eine natürliche Zahl als Integer anschaut, + also die natürliche Abbildung `ℕ ↪ ℤ`. Oder hier, wenn ein Element `x : Fin n` stattdessen als + Element in `(↑x : ℕ)` angeschaut wird. -Hint (n : ℕ) : 2 * (∑ i : Fin (n + 1), ↑i) = n * (n + 1) => -"Als Erinnerung, einen Induktionsbeweis startet man mit `induction n`." + **Robo**: Übrigens, um die Induktionshypothese anzuwenden brauchst du zuerst das Lemma + `mul_add`." + rw [mul_add] + Hint "**Du**: Und wie wende ich jetzt die Induktionshypothese an? -Hint : 2 * ∑ i : Fin (Nat.zero + 1), ↑i = Nat.zero * (Nat.zero + 1) => -"Den Induktionsanker $n = 0$ kann `simp` oft beweisen." + **Robo mit `rw` wie jede andere Annahme auch." + rw [n_ih] + Hint "**Robo**: Jetzt musst du noch kurz `rw [Nat.succ_eq_add_one]` anwenden. -Hint (n : ℕ) (hn : 2 * ∑ i : Fin (n + 1), ↑i = n * (n + 1)) : - 2 * ∑ i : Fin (Nat.succ n + 1), ↑i = Nat.succ n * (Nat.succ n + 1) => -"Den Induktionsschritt beginnt man oft mit `rw [Fin.sum_univ_castSucc]`." + **Du**: Aber wieso? --- Hint (n : ℕ) (hn : 2 * ∑ i : Fin (n + 1), ↑i = n * (n + 1)) : --- 2 * (∑ i : Fin (n + 1), ↑(Fin.castSucc.toEmbedding i) + --- ↑(Fin.last (n + 1))) = Nat.succ n * (Nat.succ n + 1) => --- "Die Taktik `simp` vereinfacht `↑(↑Fin.castSucc.toEmbedding i)`. " + **Robo**: Naja, `ring` ist jetzt auch noch nicht so stark, und erkennt nicht dass `n.succ` + und `n + 1` das gleiche sind. -Hint (n : ℕ) (hn : 2 * ∑ i : Fin (n + 1), ↑i = n * (n + 1)) : - 2 * (∑ x : Fin (n + 1), ↑x + (n + 1)) = Nat.succ n * (Nat.succ n + 1) => -"Um Die Induktionshypothese anzuwenden muss man noch -$$2 \\cdot ((\\sum_\{x=0}^n x) + (n + 1)) = 2 \\cdot \\sum_\{x=0}^n x + 2 \\cdot (n + 1))$$ -umschreiben. Dazu kannst du `mul_add` benützen. -" + **Du**: Aber das könnte man doch ändern, oder? -Hint (n : ℕ) (hn : 2 * ∑ i : Fin (n + 1), ↑i = n * (n + 1)) : - 2 * ∑ x : Fin (n + 1), ↑x + 2 * (n + 1) = Nat.succ n * (Nat.succ n + 1) => -"`simp` vereinfacht `↑(↑Fin.castSucc.toEmbedding i)` zu `↑i`. -Danach kann die Induktionshypothese mit `rw` angewendet werden." + **Robo**: Vielleicht wenn wir einmal einem Techniker begegnen, der mir ein Update + einspielen kann…" + Branch + ring_nf + Hint "**Robo**: Wie gesagt, brauch doch `rw [Nat.succ_eq_add_one]` als Fix für meine + kleinen Maken." + rw [Nat.succ_eq_add_one] + ring -Hint (n : ℕ) (hn : 2 * ∑ i : Fin (n + 1), ↑i = n * (n + 1)) : - n * (n + 1) + 2 * (n + 1) = Nat.succ n * (Nat.succ n + 1) => -" -Im Moment muss man hier `ring` noch helfen, -indem man mit `rw [Nat.succ_eq_add_one]` zuerst `Nat.succ n = n + 1` umschreibt. +NewTactic induction +NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul -(Dies wird irgendwann noch gefixt) -" +Conclusion "Du schaust dich um und bewunderst das Tal in dem hunderte, wenn nicht tausende, +Steintürme in allen Formen und Höhen stehen." diff --git a/server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean b/server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean index 640072a..fefeca5 100644 --- a/server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean +++ b/server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean @@ -12,47 +12,22 @@ Title "Summe aller ungeraden Zahlen" Introduction " -Hier nochmals eine Übung zur Induktion. +**Du**: Haben eigentlich alle Türme hier so kryptische Beschreibungen am Eingang? + +Du gehst zu einem etwas kleineren Nachbarsturm. " set_option tactic.hygienic false open BigOperators Statement odd_arithmetic_sum -"Zeige folgende Gleichung zur Summe aller ungeraden Zahlen: - -$\\sum_{i = 0}^n (2n + 1) = n ^ 2$." + "$\\sum_{i = 0}^n (2n + 1) = n ^ 2$." (n : ℕ) : (∑ i : Fin n, (2 * (i : ℕ) + 1)) = n ^ 2 := by - induction' n with n hn + Hint "**Robo**: Das funktioniert genau gleich wie zuvor, viel Glück." + induction n simp rw [Fin.sum_univ_castSucc] simp - rw [hn] + rw [n_ih] rw [Nat.succ_eq_add_one] ring - -HiddenHint (n : ℕ) : (∑ i : Fin n, (2 * (i : ℕ) + 1)) = n ^ 2 => -" -Fange wieder mit `induction {n}` an. -" - -HiddenHint : ∑ i : Fin Nat.zero, ((2 : ℕ) * i + 1) = Nat.zero ^ 2 => -" -Den Induktionsanfang kannst du wieder mit `simp` beweisen. -" - -HiddenHint (n : ℕ) : ∑ i : Fin (Nat.succ n), ((2 : ℕ) * i + 1) = Nat.succ n ^ 2 => -" -Den Induktionsschritt startest du mit `rw [Fin.sum_univ_castSucc]`. -" - -HiddenHint (n : ℕ) (hn : ∑ i : Fin n, (2 * (i : ℕ) + 1) = n ^ 2) : - ∑ x : Fin n, (2 * (x : ℕ) + 1) + (2 * n + 1) = Nat.succ n ^ 2 => -" -Hier kommt die Induktionshypothese {hn} ins Spiel. -" - -HiddenHint (n : ℕ) : n ^ 2 + (2 * n + 1) = Nat.succ n ^ 2 => -" -Mit `rw [Nat.succ_eq_add_one]` und `ring` kannst du hier abschliessen. -" diff --git a/server/testgame/TestGame/Levels/Sum/L05_SumComm.lean b/server/testgame/TestGame/Levels/Sum/L05_SumComm.lean index 957104e..48d69d0 100644 --- a/server/testgame/TestGame/Levels/Sum/L05_SumComm.lean +++ b/server/testgame/TestGame/Levels/Sum/L05_SumComm.lean @@ -18,19 +18,32 @@ Title "Summe vertauschen" Introduction " -Verschachtelte endliche Summen kann man beliebig tauschen. +Nun aber zeigt euch eure Begleiterin zwei weitere Türme mit einer kleinen Brücke, die +zwischen den beiden verläuft. Die Tafel am Eingang wurde von einem herunterfallenden Stein +zerstört. Auf der oberen Hälfte steht nur folgendes: $$\\sum_{i=0}^n\\sum_{j=0}^m a_{ij} = \\sum_{j=0}^m\\sum_{i=0}^n a_{ij}$$ -Dieses Lemma heisst `Finset.sum_comm` +**Du**: Ich glaube, ich kann das in eurem Dialekt formulieren und euch damit helfen! " Statement -"Zeige dass -$\\sum_{i=0}^n\\sum_{j=0}^m 2^i (1 + j) = \\sum_{j=0}^m\\sum_{i=0}^n 2^i (1 + j)$." - (n m : ℕ) : ∑ i : Fin n, ∑ j : Fin m, ( 2^i * (1 + j) : ℕ) = +(n m : ℕ) : ∑ i : Fin n, ∑ j : Fin m, ( 2^i * (1 + j) : ℕ) = ∑ j : Fin m, ∑ i : Fin n, ( 2^i * (1 + j) : ℕ) := by + Hint "**Robo**: Das sieht gut aus, aber du solltest das kurz beweisen, um sicher zu sein. + + **Du**: Hast du nicht ein Lemma dafür? + + **Robo**: Doch, probier mal `Finset.sum_comm`." rw [Finset.sum_comm] NewLemma Finset.sum_comm + +Conclusion " + Euer Begleiter ist ganz begeistert als er dir das Stück Papier aus den Händen nimmt, + auf dem du die Aussage gekritzelt hast. Gleich zückt sie einen Meißel und beginnt eine + neue Platte zu erstellen. + + Ihr winkt ihr noch zum Abschied und geht weiter. +" diff --git a/server/testgame/TestGame/Levels/Sum/L06_Summary.lean b/server/testgame/TestGame/Levels/Sum/L06_Summary.lean index 7657785..d4462d2 100644 --- a/server/testgame/TestGame/Levels/Sum/L06_Summary.lean +++ b/server/testgame/TestGame/Levels/Sum/L06_Summary.lean @@ -17,109 +17,76 @@ Title "Zusammenfassung" Introduction " -Zusammenfassung aus diesem Kapitel +**Du**: Robo gib mir nochmals eine Übersicht, bitte. -## Notationen / Begriffe +**Robo**: Aber klar: | | Beschreibung | |:---------------------|:------------------------------------------| | `Fin n` | Ist ein Typ mit Zahlen $0, \\ldots, n-1$. | | `∑ (i : Fin n), a i` | $\\sum_{i=0}^{n-1} a_i$ | +| `↑i` | Eine Coersion, z.B. `Fin n → ℕ`. | -## Taktiken +und | | Taktik | Beispiel | |:---|:--------------------------|:-------------------------------------| -| 20 | `simp` | Simplifikation. | -| 21 | `induction n` | Induktion über $n$ | +| 21 | `simp` | Simplifikation. | +| 22 | `induction n` | Induktion über $n$ | -Und hier noch eine etwas schwierigere Übung. - -Das Resultat aus Level 3 kannst du als `arithmetic_sum` wiederverwenden: -$$ -2 \\cdot \\sum_{i = 0}^n i = n \\cdot (n + 1) -$$ +Da löst sich aus der Steinlandschaft plötzlich ein grosser Steingolem. Er schaut euch +bedrohlich an und fragt in tiefer Stimme: " open BigOperators -Statement -"Zeige $\\sum_{i = 0}^m i^3 = (\\sum_{i = 0}^m i)^2$." - (m : ℕ) : (∑ i : Fin (m + 1), (i : ℕ)^3) = (∑ i : Fin (m + 1), (i : ℕ))^2 := by - induction' m with m hm +Statement (m : ℕ) : (∑ i : Fin (m + 1), (i : ℕ)^3) = (∑ i : Fin (m + 1), (i : ℕ))^2 := by + Hint "**Du**: Gulp. Naja das wird schon klappen. Also man fängt wieder mit Induktion an…" + induction m + Hint "**Du**: Also den Induktionsanfang kann man einfach zeigen…" simp + Hint "**Robo**: Und jetzt wieder `rw [Fin.sum_univ_castSucc]` und `simp` um vorwärts zu + kommen!" rw [Fin.sum_univ_castSucc] simp - rw [hm] - rw [Fin.sum_univ_castSucc (n := m + 1)] - simp - rw [add_pow_two] - rw [arithmetic_sum] - ring + Hint "**Robo**: Siehst du die Induktionshypothese hier drin?" + rw [n_ih] + Hint "**Du**: Ok, damit habe ich die linke Seite der Gleichung ziemlich gut bearbeitet. + Aber, ehm, mit der Rechten komme ich nicht weiter… -NewLemma arithmetic_sum add_pow_two + Der Golem schaut dich finster an. -HiddenHint (m : ℕ) : ∑ i : Fin (m + 1), (i : ℕ) ^ 3 = (∑ i : Fin (m + 1), ↑i) ^ 2 => -"Führe auch hier einen Induktionsbeweis." + **Robo**: Du willst `Fin.sum_univ_castSucc` auf der rechten Seite anwenden, aber es + gibt mehrere Orte, wo das Lemma passen würde. + Deshalb musst du mit `rw [Fin.sum_univ_castSucc (n := {n} + 1)]` angeben, wo genau. -HiddenHint : ∑ i : Fin (Nat.zero + 1), (i : ℕ) ^ 3 = (∑ i : Fin (Nat.zero + 1), ↑i) ^ 2 => -"`simp` kann den Induktionsanfang beweisen." + **Du**: Was bedeutet das? -Hint (m : ℕ) : ∑ i : Fin (Nat.succ m + 1), (i : ℕ) ^ 3 = (∑ i : Fin (Nat.succ m + 1), ↑i) ^ 2 => -"Im Induktionsschritt willst du das Goal so umformen, dass du folgende Therme -ersetzen kannst: - -* `∑ i : Fin (m + 1), ↑i ^ 3` (Induktionshypothese) -* `2 * (∑ i : Fin (m + 1), ↑i)` (arithmetische Summe) -" - -HiddenHint (m : ℕ) : ∑ i : - Fin (Nat.succ m + 1), (i : ℕ) ^ 3 = (∑ i : Fin (Nat.succ m + 1), ↑i) ^ 2 => -" -Als erstes kannst du mal mit dem bekannten `rw [Fin.sum_univ_castSucc]` anfangen. -" + **Robo** Das Lemma hat eine Annahme `n` und du sagst ihm explizit, was es für dieses `n` + einsetzen muss, nämlich `{n} + 1`" + Branch + rw [Fin.sum_univ_castSucc] + Hint "**Robo**: Das hat jetzt einfach `Fin.sum_univ_castSucc` am ersten Ort angewendet, + wo das möglich war. Das ist nicht so ideal, die like Seite war schon okay. -HiddenHint (m : ℕ) : ∑ i : Fin (m + 1), (Fin.castSucc.toEmbedding i : ℕ) ^ 3 + - ↑(Fin.last (m + 1)) ^ 3 = (∑ i : Fin (Nat.succ m + 1), ↑i) ^ 2 => -"Mit `simp` kriegst du das `↑(Fin.castSucc.toEmbedding i)` weg" - -Hint (m : ℕ) : ∑ x : Fin (m + 1), (x : ℕ) ^ 3 + (m + 1) ^ 3 = - (∑ i : Fin (Nat.succ m + 1), ↑i) ^ 2 => -"Jetzt kannst du die Induktionshypothese benützen." - -Hint (m : ℕ) : (∑ i : Fin (m + 1), (i : ℕ)) ^ 2 + (m + 1) ^ 3 = (∑ i : Fin (Nat.succ m + 1), ↑i) ^ 2 => -"Die linke Seite ist jetzt erst mal gut. Um auf der rechten Seite `Fin.sum_univ_castSucc` -anzuwenden, haben wir ein Problem: Lean schreibt immer die erste Instanz um, also würde gerne -auf der linken Seite `(∑ i : Fin (m + 1), ↑i) ^ 2` umschreiben. - -Wir können Lean hier weiterhelfen, indem wir manche Argemente von `Fin.sum_univ_castSucc` -explizit angeben. Die Funktion hat ein Argument mit dem Namen `n`, welches wir z.B. explizit -angeben können: - -``` -rw [Fin.sum_univ_castSucc (n := m + 1)] -``` -" + **Robo**: Geh doch zurück und bring `rw` dazu am anderen Ort umzuschreiben." + rw [Fin.sum_univ_castSucc (n := n + 1)] + simp + Hint "**Robo**: `add_pow_two` ist auch noch nützlich!" + rw [add_pow_two] + Hint "**Du**: Ich glaube, ich sehe hier ne arithmetische Summe drin!! -HiddenHint (m : ℕ) : (∑ i : Fin (m + 1), ↑i) ^ 2 + (m + 1) ^ 3 = - (∑ i : Fin (m + 1), ↑(Fin.castSucc.toEmbedding i) + ↑(Fin.last (m + 1))) ^ 2 => -"Wenn du noch einen AUsdruck `↑(Fin.castSucc.toEmbedding i)` hast, solltest du mal -`simp` aufrufen." + **Robo**: Ich habe dir das dies von vorhin temporär als `arithmetic_sum` gespeichert, + damit du diese brauchen kannst." + rw [arithmetic_sum] + Hint "**Du**: Jetzt sollten es eigentlich nur noch arithmetische Operationen sein." + ring -Hint (m : ℕ) : (∑ i : Fin (m + 1), ↑i) ^ 2 + (m + 1) ^ 3 = (∑ i : Fin (m + 1), ↑i + (m + 1)) ^ 2 => -"Die rechte Seite hat die Form $(a + b)^2$ welche mit `add_pow_two` zu $a^2 + 2ab + b^2$ -umgeschrieben werden kann." +NewLemma arithmetic_sum add_pow_two -HiddenHint (m : ℕ) : (∑ i : Fin (m + 1), ↑i) ^ 2 + (m + 1) ^ 3 = - (∑ i : Fin (m + 1), ↑i) ^ 2 + (2 * ∑ i : Fin (m + 1), ↑i) * (m + 1) + (m + 1) ^ 2 => -"Wenn du noch einen AUsdruck `↑(Fin.castSucc.toEmbedding i)` hast, solltest du mal -`simp` aufrufen." +Conclusion "Der Golem denkt ganz lange nach, und ihr bekommt das Gefühl, dass er gar nie +aggressive war, sondern nur eine sehr tiefe Stimme hat. -Hint (m : ℕ) : (∑ i : Fin (m + 1), ↑i) ^ 2 + (m + 1) ^ 3 = - (∑ i : Fin (m + 1), ↑i) ^ 2 + (2 * ∑ i : Fin (m + 1), ↑i) * (m + 1) + (m + 1) ^ 2 => -"Jetzt hast du in der Mitte `2 * ∑ i : Fin (m + 1), ↑i)`, welches du mit der -arithmetischen Summe `arithmetic_sum` umschreiben kannst." +Mit einem kleinen Erdbeben setzt er sich hin und winkt euch dankend zu. -Hint (m : ℕ) : (∑ i : Fin (m + 1), ↑i) ^ 2 + (m + 1) ^ 3 = - (∑ i : Fin (m + 1), ↑i) ^ 2 + m * (m + 1) * (m + 1) + (m + 1) ^ 2 => -"Den Rest sollte `ring` für dich übernehmen." +Damit zieht ihr weiter durch die karge Landschaft auf diesem Planet." From 7382b3a77b15301489c40597469d6742b70ebf48 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Wed, 15 Mar 2023 19:04:46 +0100 Subject: [PATCH 05/29] nothing of importance --- server/testgame/TestGame.lean | 4 +- .../TestGame/Levels/Prime/L04_Prime.lean | 46 ------------------- .../TestGame/Levels/Prime/L05_Prime.lean | 42 ----------------- 3 files changed, 2 insertions(+), 90 deletions(-) delete mode 100644 server/testgame/TestGame/Levels/Prime/L04_Prime.lean delete mode 100644 server/testgame/TestGame/Levels/Prime/L05_Prime.lean diff --git a/server/testgame/TestGame.lean b/server/testgame/TestGame.lean index 8b9445a..1574cc3 100644 --- a/server/testgame/TestGame.lean +++ b/server/testgame/TestGame.lean @@ -4,7 +4,7 @@ import TestGame.Levels.Proposition import TestGame.Levels.Implication import TestGame.Levels.Predicate import TestGame.Levels.Contradiction -import TestGame.Levels.Prime +-- import TestGame.Levels.Prime import TestGame.Levels.Sum -- import TestGame.Levels.Induction @@ -31,7 +31,7 @@ Conclusion Path Proposition → Implication → Predicate → Predicate → Contradiction → Sum → Lean Path Predicate → Inequality → Sum --- Path Predicate → Prime -- → Induction +-- Path Inequality → Prime -- Path Sum → Inequality -- → Induction Path Lean → SetTheory → SetTheory2 → SetFunction diff --git a/server/testgame/TestGame/Levels/Prime/L04_Prime.lean b/server/testgame/TestGame/Levels/Prime/L04_Prime.lean deleted file mode 100644 index 9256544..0000000 --- a/server/testgame/TestGame/Levels/Prime/L04_Prime.lean +++ /dev/null @@ -1,46 +0,0 @@ -import TestGame.Metadata -import Mathlib.Data.Nat.Prime - -import Std.Tactic.RCases -import Mathlib.Tactic.LeftRight -import Mathlib.Tactic.Contrapose -import Mathlib.Tactic.Use -import Mathlib.Tactic.Ring - -import TestGame.ToBePorted - -Game "TestGame" -World "Prime" -Level 2 - -Title "Primzahlen" - -Introduction -" -Eine Primzahl wird mit `(n : ℕ) (h : Nat.Prime n)` dargestellt. - -Wichtige Lemmas über Primzhalen werden mit - -``` -import Data.Nat.Prime -``` -importiert (siehe -[Docs](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Nat/Prime.html)). - -Insbesondere `Nat.prime_def_lt''` welches die aus der Schule bekannte Definition einer -Primzahl `Prime p ↔ 2 ≤ p ∧ (∀ m, m ∣ p → m = 1 ∨ m = p)` gibt. - -Beachte: In Lean gibt es auch noch den Ausdruck `Prime n`, der beschreibt generelle -Primelemente in einem generellen Ring. Wenn man mit natürlichen -Zahlen arbeitet, ist es besser `Nat.Prime` zu verwenden, obwohl man natürlich zeigen kann -dass die beiden äquivalent sind. -" - -Statement -"Zeige dass die einzigen Teiler einer Primzahl $1$ und $p$ sind." - (p : ℕ) (h : Nat.Prime p) : ∀ (x : ℕ), (x ∣ p) → x = 1 ∨ x = p := by - rw [Nat.prime_def_lt''] at h - rcases h with ⟨_, h₂⟩ - assumption - -NewLemma Nat.prime_def_lt'' diff --git a/server/testgame/TestGame/Levels/Prime/L05_Prime.lean b/server/testgame/TestGame/Levels/Prime/L05_Prime.lean deleted file mode 100644 index 61497bd..0000000 --- a/server/testgame/TestGame/Levels/Prime/L05_Prime.lean +++ /dev/null @@ -1,42 +0,0 @@ -import TestGame.Metadata -import Mathlib.Data.Nat.Prime - -import Std.Tactic.RCases -import Mathlib.Tactic.LeftRight -import Mathlib.Tactic.Contrapose -import Mathlib.Tactic.Use -import Mathlib.Tactic.Ring - -import TestGame.ToBePorted - -Game "TestGame" -World "Prime" -Level 3 - -Title "Primzahlen" - -Introduction -" -Mathematisch gesehen, bedeutet die Definition von vorhin dass $p$ ein -irreduzibles Element ist, und Primzahlen sind oft durch -`∀ (a b : ℕ), p ∣ a * b → p ∣ a ∨ p ∣ b` -definiert. Auf den natürlichen Zahlen, sind die beiden äquivalent. -" - -Statement -"Zeige dass $p \\ge 2$ eine Primzahl ist, genau dann wenn -$p \\mid a\\cdot b \\Rightarrow (p \\mid a) \\lor (p \\mid b)$." - (p : ℕ) (h₂ : 2 ≤ p): - Nat.Prime p ↔ ∀ (a b : ℕ), p ∣ a * b → p ∣ a ∨ p ∣ b := by - constructor - intro h a b - apply (Nat.Prime.dvd_mul h).mp - intro h - rw [Nat.prime_iff] - change p ≠ 0 ∧ ¬IsUnit p ∧ ∀ a b, p ∣ a * b → p ∣ a ∨ p ∣ b - rw [Nat.isUnit_iff, ←and_assoc] - constructor - constructor - linarith - linarith - assumption From 9480090cb48ae91a0fc30a64264418f2f3eaf9cc Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Wed, 15 Mar 2023 19:05:20 +0100 Subject: [PATCH 06/29] nothin of importance --- .../TestGame/Levels/Prime/L02_Prime.lean | 51 +++++++++++++++++++ .../TestGame/Levels/Prime/L03_Prime.lean | 41 +++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 server/testgame/TestGame/Levels/Prime/L02_Prime.lean create mode 100644 server/testgame/TestGame/Levels/Prime/L03_Prime.lean diff --git a/server/testgame/TestGame/Levels/Prime/L02_Prime.lean b/server/testgame/TestGame/Levels/Prime/L02_Prime.lean new file mode 100644 index 0000000..0cc19a3 --- /dev/null +++ b/server/testgame/TestGame/Levels/Prime/L02_Prime.lean @@ -0,0 +1,51 @@ +import TestGame.Metadata +import Mathlib.Data.Nat.Prime + +import Std.Tactic.RCases +import Mathlib.Tactic.LeftRight +import Mathlib.Tactic.Contrapose +import Mathlib.Tactic.Use +import Mathlib.Tactic.Ring + +-- import Data.Nat.Prime + +import TestGame.ToBePorted + +Game "TestGame" +World "Prime" +Level 2 + +Title "Primzahlen" + +Introduction +" +Als nächstes Begnet ihr einem Lehrer, der nachdenkend an der Sonne sitzt. + +**Lehrer**: Sagt mal, mich hat heute einer meiner Schüler was gefragt, +und ich glaube einfach, der ist in so jungen Jahren bereits schlauer als ich. + +Hier etwas Kontext: +" + +Statement (p : ℕ) (h : Nat.Prime p) : ∀ (x : ℕ), (x ∣ p) → x = 1 ∨ x = p := by + Hint "**Du**: Die einzigen Teiler einer Primzahl sind `1` und `p`, ist das + nicht eine der möglichen Definitionen über `ℕ`? + + **Robo**: Doch, oder zumindest fast. + Du kannst du mit `rw` und `Nat.prime_def_lt''` eine der Definitionen für `Nat.Prime` einsetzen + + **Du** Könnte ich nicht einfach `unfold Nat.Prime` sagen um mir das anzuschauen. + + **Robo**: Bloss nicht. Das ist so eine Definition, in die du besser nicht hineinschaust! + `Nat.Prime p` ist als `Irreducible p` definiert, was wiederum anhand von Einheiten + definiert ist… Da verlieren wir uns in Definition die wir im Moment gar nicht brauchen." + rw [Nat.prime_def_lt''] at h + rcases h with ⟨_, h₂⟩ + assumption + +NewLemma Nat.prime_def_lt'' + +Conclusion "**Du**: Ich sehe, meine \"Definition\" hätte auch `1` als Primzahl deklariert. Gut, +dass wir das überprüft haben. + +**Lehrer**: Und jetzt kommen wir zu dem, was mir Kopfschmerzen bereitet." diff --git a/server/testgame/TestGame/Levels/Prime/L03_Prime.lean b/server/testgame/TestGame/Levels/Prime/L03_Prime.lean new file mode 100644 index 0000000..741bb71 --- /dev/null +++ b/server/testgame/TestGame/Levels/Prime/L03_Prime.lean @@ -0,0 +1,41 @@ +import TestGame.Metadata +import Mathlib.Data.Nat.Prime + +import Std.Tactic.RCases +import Mathlib.Tactic.LeftRight +import Mathlib.Tactic.Contrapose +import Mathlib.Tactic.Use +import Mathlib.Tactic.Ring + +import TestGame.ToBePorted + +Game "TestGame" +World "Prime" +Level 3 + +Title "Primzahlen" + +Introduction +" +Der Lehrer erklärt sein Problem. + +**Lehrer**: Und dann fragte der Schüler, wie man denn folgendes herleitet. +Und dabei ist das weit über seiner Altersstufe! +" + +Statement + (p : ℕ) (h₂ : 2 ≤ p): Nat.Prime p ↔ ∀ (a b : ℕ), p ∣ a * b → p ∣ a ∨ p ∣ b := by + Hint "**Du**: Naja, mal schauen wie weit man mit `intro` und `constructor` kommt…" + constructor + intro h a b + Hint "**Robo**: Stop! Hier helfe ich dir etwas" + apply (Nat.Prime.dvd_mul h).mp + intro h + rw [Nat.prime_iff] + unfold Prime + rw [Nat.isUnit_iff, ←and_assoc] + constructor + constructor + linarith + linarith + assumption From d0b7838564d3050942ca5093905881a2a8f435de Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Thu, 16 Mar 2023 13:23:10 +0100 Subject: [PATCH 07/29] add display names for definitions and lemmas --- client/src/components/Inventory.tsx | 8 +- client/src/state/api.ts | 2 + server/leanserver/GameServer/Commands.lean | 78 +++++++++++---- .../leanserver/GameServer/EnvExtensions.lean | 3 +- server/leanserver/GameServer/Game.lean | 6 +- server/testgame/TestGame/LemmaDocs.lean | 94 +++++++++---------- 6 files changed, 118 insertions(+), 73 deletions(-) diff --git a/client/src/components/Inventory.tsx b/client/src/components/Inventory.tsx index bde6c8e..df5410c 100644 --- a/client/src/components/Inventory.tsx +++ b/client/src/components/Inventory.tsx @@ -55,14 +55,14 @@ function InventoryList({items, docType, openDoc} : {items: ComputedInventoryItem ).map(item => { if (tab == item.category) { return {openDoc(item.name, docType)}} - name={item.name} locked={item.locked} disabled={item.disabled} /> + name={item.name} displayName={item.displayName} locked={item.locked} disabled={item.disabled} /> } }) } } -function InventoryItem({name, locked, disabled, showDoc}) { +function InventoryItem({name, displayName, locked, disabled, showDoc}) { const icon = locked ? : disabled ? : "" const className = locked ? "locked" : disabled ? "disabled" : "" @@ -73,7 +73,7 @@ function InventoryItem({name, locked, disabled, showDoc}) { } } - return
{icon} {name}
+ return
{icon} {displayName}
} export function Documentation({name, type}) { @@ -81,7 +81,7 @@ export function Documentation({name, type}) { const doc = useLoadDocQuery({type: type, name: name}) return <> -

{doc.data?.name}

+

{doc.data?.displayName}

{doc.data?.text} } diff --git a/client/src/state/api.ts b/client/src/state/api.ts index bd5268c..581823c 100644 --- a/client/src/state/api.ts +++ b/client/src/state/api.ts @@ -12,6 +12,7 @@ interface GameInfo { export interface ComputedInventoryItem { name: string, + displayName: string, category: string, disabled: boolean, locked: boolean @@ -31,6 +32,7 @@ interface LevelInfo { interface Doc { name: string, + displayName: string, text: string } diff --git a/server/leanserver/GameServer/Commands.lean b/server/leanserver/GameServer/Commands.lean index 9004c62..9b4c716 100644 --- a/server/leanserver/GameServer/Commands.lean +++ b/server/leanserver/GameServer/Commands.lean @@ -303,14 +303,21 @@ def checkInventoryDoc (type : InventoryType) (name : Name) : CommandElabM Unit : /-! ### Tactics -/ -/-- Declare a documentation entry for some tactic. -Expect an identifier and then a string literal. -/ +/-- Documentation entry of a tactic. Example: + +``` +TacticDoc rw "`rw` stands for rewrite, etc. " +``` + +* The identifier is the tactics name. Some need to be escaped like `«have»`. +* The description is a string supporting Markdown. + -/ elab "TacticDoc" name:ident content:str : command => modifyEnv (inventoryDocExt.addEntry · { category := default type := .Tactic name := name.getId, - userName := name.getId, + displayName := name.getId.toString, content := content.getString }) /-- Declare tactics that are introduced by this level. -/ @@ -333,14 +340,23 @@ elab "OnlyTactic" args:ident* : command => do /-! ### Definitions -/ -/-- Declare a documentation entry for some definition. -Expect an identifier and then a string literal. -/ -elab "DefinitionDoc" name:ident content:str : command => +/-- Documentation entry of a definition. Example: + +``` +DefinitionDoc Function.Bijective as "Bijective" "defined as `Injective f ∧ Surjective`, etc." +``` + +* The first identifier is used in the commands `[New/Only/Disabled]Definition`. + It is preferably the true name of the definition. However, this is not required. +* The string following `as` is the displayed name (in the Inventory). +* The description is a string supporting Markdown. + -/ +elab "DefinitionDoc" name:ident "as" displayName:str content:str : command => modifyEnv (inventoryDocExt.addEntry · { category := default type := .Definition name := name.getId, - userName := name.getId, + displayName := displayName.getString, content := content.getString }) /-- Declare definitions that are introduced by this level. -/ @@ -364,15 +380,23 @@ elab "OnlyDefinition" args:ident* : command => do /-! ### Lemmas -/ -/-- Declare a documentation entry for some lemma. -Expect two identifiers and then a string literal. The first identifier is meant -as the real name of the lemma while the second is the displayed name. Currently -the real name isn't used. -/ -elab "LemmaDoc" name:ident "as" userName:ident "in" category:str content:str : command => +/-- Documentation entry of a lemma. Example: + +``` +LemmaDoc Nat.succ_pos as "succ_pos" in Nat "says `0 < n.succ`, etc." +``` + +* The first identifier is used in the commands `[New/Only/Disabled]Lemma`. + It is preferably the true name of the lemma. However, this is not required. +* The string following `as` is the displayed name (in the Inventory). +* The identifier after `in` is the category to group lemmas by (in the Inventory). +* The description is a string supporting Markdown. + -/ +elab "LemmaDoc" name:ident "as" displayName:str "in" category:str content:str : command => modifyEnv (inventoryDocExt.addEntry · { name := name.getId, type := .Lemma - userName := userName.getId, + displayName := displayName.getString, category := category.getString, content := content.getString }) @@ -430,9 +454,11 @@ elab "MakeGame" : command => do let Availability₀ : HashMap Name ComputedInventoryItem := HashMap.ofList $ ← allItems.toList.mapM fun name => do + let data := (← getInventoryDoc? name inventoryType).get! return (name, { name - category := (← getInventoryDoc? name inventoryType).get!.category + displayName := data.displayName + category := data.category locked := true disabled := false}) @@ -443,9 +469,11 @@ elab "MakeGame" : command => do let predecessors := game.worlds.predecessors worldId for predWorldId in predecessors do for item in newItemsInWorld.find! predWorldId do + let data := (← getInventoryDoc? item inventoryType).get! items := items.insert item { name := item - category := (← getInventoryDoc? item inventoryType).get!.category + displayName := data.displayName + category := data.category locked := false disabled := false } @@ -458,13 +486,25 @@ elab "MakeGame" : command => do for (levelId, level) in levels do for item in (level.getInventory inventoryType).new do - let category := (← getInventoryDoc? item inventoryType).get!.category - items := items.insert item {name := item, category, locked := false, disabled := false} + let data := (← getInventoryDoc? item inventoryType).get! + items := items.insert item { + name := item + displayName := data.displayName + category := data.category + locked := false + disabled := false + } let mut disabled : HashSet Name := {} for item in (level.getInventory inventoryType).disabled do - let category := (← getInventoryDoc? item inventoryType).get!.category - items := items.insert item {name := item, category, locked := false, disabled := false} + let data := (← getInventoryDoc? item inventoryType).get! + items := items.insert item { + name := item + displayName := data.displayName + category := data.category + locked := false + disabled := false + } -- (we set disabled to false at first because it applies only to the current level) disabled := disabled.insert item diff --git a/server/leanserver/GameServer/EnvExtensions.lean b/server/leanserver/GameServer/EnvExtensions.lean index 95a2976..e6fd7a0 100644 --- a/server/leanserver/GameServer/EnvExtensions.lean +++ b/server/leanserver/GameServer/EnvExtensions.lean @@ -43,7 +43,7 @@ instance : ToString InventoryType := ⟨fun t => match t with structure InventoryDocEntry where name : Name type : InventoryType - userName : Name + displayName : String category : String content : String deriving ToJson, Repr, Inhabited @@ -122,6 +122,7 @@ deriving Inhabited structure ComputedInventoryItem where name : Name + displayName : String category : String locked : Bool disabled : Bool diff --git a/server/leanserver/GameServer/Game.lean b/server/leanserver/GameServer/Game.lean index 123269d..95942e3 100644 --- a/server/leanserver/GameServer/Game.lean +++ b/server/leanserver/GameServer/Game.lean @@ -66,6 +66,7 @@ structure DidOpenLevelParams where structure Doc where name: String + displayName: String text: String deriving ToJson @@ -80,7 +81,7 @@ def handleDidOpenLevel (params : Json) : GameServerM Unit := do -- Execute the regular handling of the `didOpen` event handleDidOpen p let fw ← findFileWorker! m.uri - let s ← get + -- let s ← get let c ← read let some lvl ← GameServer.getLevelByFileName? ((System.Uri.fileUriToPath? m.uri).getD m.uri |>.toString) | do @@ -132,7 +133,7 @@ partial def handleServerEvent (ev : ServerEvent) : GameServerM Bool := do return true | Message.request id "loadDoc" params => let p ← parseParams LoadDocParams (toJson params) - let s ← get + -- let s ← get let c ← read let some doc ← getInventoryDoc? p.name p.type | do @@ -140,6 +141,7 @@ partial def handleServerEvent (ev : ServerEvent) : GameServerM Bool := do return true let doc : Doc := { name := doc.name.toString + displayName := doc.displayName text := doc.content } c.hOut.writeLspResponse ⟨id, ToJson.toJson doc⟩ return true diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/testgame/TestGame/LemmaDocs.lean index 3898ba9..d4af11a 100644 --- a/server/testgame/TestGame/LemmaDocs.lean +++ b/server/testgame/TestGame/LemmaDocs.lean @@ -1,7 +1,7 @@ import GameServer.Commands -- Wird im Level "Implication 11" ohne Beweis angenommen. -LemmaDoc not_not as not_not in "Logic" +LemmaDoc not_not as "not_not" in "Logic" " ### Aussage @@ -13,7 +13,7 @@ LemmaDoc not_not as not_not in "Logic" " -- Wird im Level "Implication 10" ohne Beweis angenommen. -LemmaDoc not_or_of_imp as not_or_of_imp in "Logic" +LemmaDoc not_or_of_imp as "not_or_of_imp" in "Logic" " ### Aussage @@ -26,7 +26,7 @@ LemmaDoc not_or_of_imp as not_or_of_imp in "Logic" " -- Wird im Level "Implication 12" bewiesen. -LemmaDoc imp_iff_not_or as imp_iff_not_or in "Logic" +LemmaDoc imp_iff_not_or as "imp_iff_not_or" in "Logic" " ### Aussage @@ -38,42 +38,42 @@ LemmaDoc imp_iff_not_or as imp_iff_not_or in "Logic" " -LemmaDoc Nat.succ_pos as Nat.succ_pos in "Nat" +LemmaDoc Nat.succ_pos as "Nat.succ_pos" in "Nat" " " -LemmaDoc Nat.pos_iff_ne_zero as Nat.pos_iff_ne_zero in "Nat" +LemmaDoc Nat.pos_iff_ne_zero as "Nat.pos_iff_ne_zero" in "Nat" " " -LemmaDoc zero_add as zero_add in "Addition" +LemmaDoc zero_add as "zero_add" in "Addition" "This lemma says `∀ a : ℕ, 0 + a = a`." -LemmaDoc add_zero as add_zero in "Addition" +LemmaDoc add_zero as "add_zero" in "Addition" "This lemma says `∀ a : ℕ, a + 0 = a`." -LemmaDoc add_succ as add_succ in "Addition" +LemmaDoc add_succ as "add_succ" in "Addition" "This lemma says `∀ a b : ℕ, a + succ b = succ (a + b)`." -LemmaDoc not_forall as not_forall in "Logic" +LemmaDoc not_forall as "not_forall" in "Logic" "`∀ (A : Prop), ¬(∀ x, A) ↔ ∃x, (¬A)`." -LemmaDoc not_exists as not_exists in "Logic" +LemmaDoc not_exists as "not_exists" in "Logic" "`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`." -DefinitionDoc Even +DefinitionDoc Even as "Even" " `even n` ist definiert als `∃ r, a = 2 * r`. Die Definition kann man mit `unfold even at *` einsetzen. " -DefinitionDoc Odd +DefinitionDoc Odd as "Odd" " `odd n` ist definiert als `∃ r, a = 2 * r + 1`. Die Definition kann man mit `unfold odd at *` einsetzen. " -DefinitionDoc Injective +DefinitionDoc Injective as "Injective" " `Injective f` ist definiert als @@ -83,7 +83,7 @@ DefinitionDoc Injective definiert. " -DefinitionDoc Surjective +DefinitionDoc Surjective as "Surjective" " `Surjective f` ist definiert als @@ -92,19 +92,19 @@ DefinitionDoc Surjective ``` " -DefinitionDoc Bijective +DefinitionDoc Bijective as "Bijective" " " -DefinitionDoc LeftInverse +DefinitionDoc LeftInverse as "LeftInverse" " " -DefinitionDoc RightInverse +DefinitionDoc RightInverse as "RightInverse" " " -DefinitionDoc StrictMono +DefinitionDoc StrictMono as "StrictMono" " `StrictMono f` ist definiert als @@ -114,93 +114,93 @@ DefinitionDoc StrictMono " -LemmaDoc even_iff_not_odd as even_iff_not_odd in "Nat" +LemmaDoc even_iff_not_odd as "even_iff_not_odd" in "Nat" "`Even n ↔ ¬ (Odd n)`" -LemmaDoc odd_iff_not_even as odd_iff_not_even in "Nat" +LemmaDoc odd_iff_not_even as "odd_iff_not_even" in "Nat" "`Odd n ↔ ¬ (Even n)`" -LemmaDoc even_square as even_square in "Nat" +LemmaDoc even_square as "even_square" in "Nat" "`∀ (n : ℕ), Even n → Even (n ^ 2)`" -LemmaDoc mem_univ as mem_univ in "Set" +LemmaDoc mem_univ as "mem_univ" in "Set" "x ∈ @univ α" -LemmaDoc not_mem_empty as not_mem_empty in "Set" +LemmaDoc not_mem_empty as "not_mem_empty" in "Set" "" -LemmaDoc empty_subset as empty_subset in "Set" +LemmaDoc empty_subset as "empty_subset" in "Set" "" -LemmaDoc Subset.antisymm_iff as Subset.antisymm_iff in "Set" +LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set" "" -LemmaDoc Nat.prime_def_lt'' as Nat.prime_def_lt'' in "Nat" +LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat" "" -LemmaDoc Finset.sum_add_distrib as Finset.sum_add_distrib in "Sum" +LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum" "" -LemmaDoc Fin.sum_univ_castSucc as Fin.sum_univ_castSucc in "Sum" +LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" "" -LemmaDoc Nat.succ_eq_add_one as Nat.succ_eq_add_one in "Sum" +LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" "" -LemmaDoc add_comm as add_comm in "Nat" +LemmaDoc add_comm as "add_comm" in "Nat" "" -LemmaDoc mul_add as mul_add in "Nat" +LemmaDoc mul_add as "mul_add" in "Nat" "" -LemmaDoc add_mul as add_mul in "Nat" +LemmaDoc add_mul as "add_mul" in "Nat" "" -LemmaDoc arithmetic_sum as arithmetic_sum in "Sum" +LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum" "" -LemmaDoc add_pow_two as add_pow_two in "Nat" +LemmaDoc add_pow_two as "add_pow_two" in "Nat" "" -LemmaDoc Finset.sum_comm as Finset.sum_comm in "Sum" +LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum" "" -LemmaDoc Function.comp_apply as Function.comp_apply in "Function" +LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function" "" -LemmaDoc not_le as not_le in "Logic" +LemmaDoc not_le as "not_le" in "Logic" "" -LemmaDoc if_pos as if_pos in "Logic" +LemmaDoc if_pos as "if_pos" in "Logic" "" -LemmaDoc if_neg as if_neg in "Logic" +LemmaDoc if_neg as "if_neg" in "Logic" "" -LemmaDoc StrictMono.injective as StrictMono.injective in "Function" +LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function" "" -LemmaDoc StrictMono.add as StrictMono.add in "Function" +LemmaDoc StrictMono.add as "StrictMono.add" in "Function" "" -LemmaDoc Odd.strictMono_pow as Odd.strictMono_pow in "Function" +LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function" "" -LemmaDoc Exists.choose as Exists.choose in "Function" +LemmaDoc Exists.choose as "Exists.choose" in "Function" "" -LemmaDoc Exists.choose_spec as Exists.choose_spec in "Function" +LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function" "" -LemmaDoc congrArg as congrArg in "Function" +LemmaDoc congrArg as "congrArg" in "Function" "" -LemmaDoc congrFun as congrFun in "Function" +LemmaDoc congrFun as "congrFun" in "Function" "" -LemmaDoc Iff.symm as Iff.symm in "Logic" +LemmaDoc Iff.symm as "Iff.symm" in "Logic" "" From c88326577690ed48c2a21e46855d5d3d0cfea70a Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Thu, 16 Mar 2023 13:24:34 +0100 Subject: [PATCH 08/29] levels --- server/testgame/TestGame/LemmaDocs.lean | 2 ++ .../TestGame/Levels/Inequality/L01_LE.lean | 3 +- .../Levels/Lean/L04_InstanceArguments.lean | 4 +-- .../testgame/TestGame/Levels/SetTheory.lean | 2 +- .../TestGame/Levels/SetTheory/L01_Univ.lean | 35 +++++++++---------- .../TestGame/Levels/SetTheory/L02_Empty.lean | 13 +++---- .../TestGame/Levels/SetTheory/L03_Subset.lean | 15 ++++---- .../TestGame/Levels/Sum/T01_Induction.lean | 2 -- .../TestGame/Levels/Sum/T02_Induction.lean | 1 - 9 files changed, 38 insertions(+), 39 deletions(-) diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/testgame/TestGame/LemmaDocs.lean index d4af11a..ff18389 100644 --- a/server/testgame/TestGame/LemmaDocs.lean +++ b/server/testgame/TestGame/LemmaDocs.lean @@ -204,3 +204,5 @@ LemmaDoc congrFun as "congrFun" in "Function" LemmaDoc Iff.symm as "Iff.symm" in "Logic" "" + +DefinitionDoc subset as "⊆" "Test" diff --git a/server/testgame/TestGame/Levels/Inequality/L01_LE.lean b/server/testgame/TestGame/Levels/Inequality/L01_LE.lean index 81eec99..d03dcce 100644 --- a/server/testgame/TestGame/Levels/Inequality/L01_LE.lean +++ b/server/testgame/TestGame/Levels/Inequality/L01_LE.lean @@ -30,4 +30,5 @@ Statement OnlyTactic rfl -Conclusion "**Du**: Ha. ha… Na aber jetzt mal ehrlich, wie funktioniert das eigentlich?" +Conclusion "**Du**: Ha. ha… Na aber jetzt mal ehrlich, könnt ihr mir ein bisschen mehr +erzählen?" diff --git a/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean b/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean index 380a181..8339fbf 100644 --- a/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean +++ b/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean @@ -51,7 +51,7 @@ sein neustes Buch, das er leider nicht lesen kann. Nich tnur ist es der zweite B (der Erste hat offensichtlich was mit \"Urbildern\" zu tun), sondern ist es auch in einem Dialekt geschrieben, der anscheinend nur auf einem Nachbarsmond gesprochen wird. -Ihr beschliesst dem herzlichen Golem zu helfen und sowohl dem Mond einen Besuch abzustatten, -um den Dialekt zu lernen, wie auch auf dem zweiten Mond in der Bibliothek nach dem +Ihr beschliesst dem herzlichen Golem zu helfen und beiden Monden einen Besuch abzustatten, +sowohl um den Dialekt zu lernen, wie auch in der Bibliothek auf dem anderen Mond nach dem ersten Band zu suchen. " diff --git a/server/testgame/TestGame/Levels/SetTheory.lean b/server/testgame/TestGame/Levels/SetTheory.lean index 0f9a789..298c096 100644 --- a/server/testgame/TestGame/Levels/SetTheory.lean +++ b/server/testgame/TestGame/Levels/SetTheory.lean @@ -34,7 +34,7 @@ vermutlich noch viel besser mit alter Sprache und Schrift auskennt. **Du**: Hoffen wir, dass sie uns weiterhelfen können dieses Buch der Urbilder zu entschlüsseln. -Sofort begrüßt euch eine ältere Frau, die sich als *Mengitte*, die Beschützerin des Mondes, +Sofort begrüßt euch eine ältere Frau, die sich als *Mengea*, die Beschützerin des Mondes, vorstellt. " diff --git a/server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean b/server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean index e46618c..8e67b91 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean @@ -14,11 +14,11 @@ Title "Mengen" Introduction " -**Mengitte**: Ich würde leider den Inhalt jenes Buches eh nicht verstehen. Aber der beste Weg für +**Mengea**: Ich würde leider den Inhalt jenes Buches eh nicht verstehen. Aber der beste Weg für euch, dieses zu entschlüsseln ist, euch ausgiebig mit der Bevölkerung hier zu unterhalten. Lebt mit ihnen, redet mit ihnen und ihr werdet die Sprache automatisch lernen. -**Mengitte**: Seit aber vorgewarnt, die Leute hier denken ganz viel über Mengen nach, +**Mengea**: Seit aber vorgewarnt, die Leute hier denken ganz viel über Mengen nach, womit sie immer *homogene Mengen* meinen. Eine Menge natürlicher Zahlen `{1, 4, 6}` ist verständlich, aber sowas wie eine Menge `{(2 : ℕ), {3, 1}, \"e\", (1 : ℂ)}` gibt es hier einfach nicht. Punkt. @@ -26,35 +26,32 @@ einfach nicht. Punkt. **Robo**: Als Kontext: Wenn `A` ein beliebiger `Type` ist, dann ist `(U : Set A)` eine Menge mit Elementen aus `A` -**Mengitte**: Damit ich weiss, dass ihr euch grundsätzlich mit den Leuten austauschen könnt, +**Mengea**: Damit ich weiss, dass ihr euch grundsätzlich mit den Leuten austauschen könnt, erklärt mir doch folgendes: " open Set Statement mem_univ "" {A : Type} (x : A) : x ∈ (univ : Set A) := by - trivial - -Hint (A : Type) (x : A) : x ∈ (univ : Set A) => -"**Du**: Also `A` ist ein `Type`, `x` ist ein Element in `A`… + Hint "**Du**: Also `A` ist ein `Type`, `x` ist ein Element in `A`… -**Robo** … und `univ` ist die Menge aller Elemente in `A`. + **Robo** … und `univ` ist die Menge aller Elemente in `A`. -**Du** ist das nicht einfach `A` selber? + **Du** ist das nicht einfach `A` selber? -**Robo** Fast, aber das eine ist ein `Type`, das andere eine Menge, also vom Typ `Set A`. + **Robo** Fast, aber das eine ist ein `Type`, das andere eine Menge, also vom Typ `Set A`. -**Du**: Unlogisch. + **Du**: Unlogisch. -**Mengites**: Naja, Typen und Mengen sind halt zwei unterschiedliche Sachen und wenn ihr -über Mengen sprechen wollt, müssen alles Mengen sein. + **Mengites**: Naja, Typen und Mengen sind halt zwei unterschiedliche Sachen und wenn ihr + über Mengen sprechen wollt, müssen alles Mengen sein. -**Du**: Na gut. Und wieso `x ∈ univ` und nicht `x : univ` wie bei Typen? + **Du**: Na gut. Und wieso `x ∈ univ` und nicht `x : univ` wie bei Typen? -**Robo**: Jedes Element `(x : A)` hat entweder die Eigenschaft `x ∈ U` oder `x ∉ U` für eine -Menge `(U : Set A)`. (`\\in`, `\\nin`) + **Robo**: Jedes Element `(x : A)` hat entweder die Eigenschaft `x ∈ U` oder `x ∉ U` für eine + Menge `(U : Set A)`. (`\\in`, `\\nin`) -**Du**: Also das ist ja dann trivial. Hoffentlich sehen die das hier auch so… -" + **Du**: Also das ist ja dann `trivial`. Hoffentlich sehen die das hier auch so…" + trivial -Conclusion "**Mengitte**: Ja das stimmt schon. Dann wünsche ich euch viel Erfolg auf eurer Reise!" +Conclusion "**Mengea**: Ja das stimmt schon. Dann wünsche ich euch viel Erfolg auf eurer Reise!" diff --git a/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean b/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean index 193a6a6..a990e16 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean @@ -20,15 +20,16 @@ open Set Statement not_mem_empty "" {A : Type} (x : A) : x ∉ (∅ : Set A) := by + Hint "**Du**: Kein Element ist in der leeren Menge enthalten? Das ist ja alles + tautologisches Zeugs... + + **Robo**: Dann behaupte das doch." tauto NewLemma mem_univ -Hint (A : Type) (x : A) : x ∉ (∅ : Set A) => -"**Du**: Kein Element ist in der leeren Menge enthalten? Das ist ja alles tautologisches Zeugs... - -**Robo**: Dann behaupte das doch. (`\\empty`)" - Conclusion "Der Junge rennt weiter. -**Du**: So wird das ganze schon angenehmer." +**Du**: So wird das ganze schon angenehmer. + +**Robo**: Die Leere Menge schreibst du mit `\\empty` falls du die nochmals brauchst." diff --git a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean index a876537..5fd9ccb 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean @@ -13,6 +13,10 @@ Title "Teilmengen" Introduction " +Ihr bemerkt, dass mit dem Jungen noch zwei andere +Kinder zuhörten. Eines der beiden Mädchen hat ebenfalls eine Frage. + + Hat man zwei Mengen `(A B : Set ℕ)` kann man fragen, ob diese Teilmengen voneinander sind: `A ⊆ B` (`\\sub`/`\\ss`) ist die Notation für Teilmengen, die auch gleich sein können. @@ -28,18 +32,15 @@ namespace MySet open Set --- theorem mem_univ {A : Type _} (x : A) : x ∈ (univ : Set A) := by --- trivial - --- theorem not_mem_empty {A : Type _} (x : A) : x ∉ (∅ : Set A) := by --- tauto +Statement (A : Set ℕ) : A ⊆ univ := by + Hint "**Robo**: `A ⊆ B` ist als `∀ x, x ∈ A → x ∈ B` definiert. -Statement subset_empty_iff -"." (A : Set ℕ) : A ⊆ univ := by + **Du**: Also kann ich mit `intro` anfangen, wie ich das bei einem `∀`?" intro h hA trivial --apply mem_univ -- or `trivial`. NewTactic intro trivial apply +NewDefinition subset -- blocked: tauto simp end MySet diff --git a/server/testgame/TestGame/Levels/Sum/T01_Induction.lean b/server/testgame/TestGame/Levels/Sum/T01_Induction.lean index 1e2c033..9b095f7 100644 --- a/server/testgame/TestGame/Levels/Sum/T01_Induction.lean +++ b/server/testgame/TestGame/Levels/Sum/T01_Induction.lean @@ -36,5 +36,3 @@ example (n : ℕ) (h : 5 ≤ n) : n^2 < 2 ^ n | 0 | 1 | 2 | 3 | 4 => by sorry | n + 5 => by sorry - -NewTactic rw simp ring diff --git a/server/testgame/TestGame/Levels/Sum/T02_Induction.lean b/server/testgame/TestGame/Levels/Sum/T02_Induction.lean index aa25628..b424a4d 100644 --- a/server/testgame/TestGame/Levels/Sum/T02_Induction.lean +++ b/server/testgame/TestGame/Levels/Sum/T02_Induction.lean @@ -32,4 +32,3 @@ Statement -- ring -- rw [Nat.succ_eq_one_add] -- rw [] -NewTactic rw simp ring From 0cd416f303fccf460247dfaa3ce7552179892f27 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Fri, 17 Mar 2023 14:39:26 +0100 Subject: [PATCH 09/29] tactic documentation --- server/testgame/TestGame/TacticDocs.lean | 528 ++++++++++++++++------- 1 file changed, 376 insertions(+), 152 deletions(-) diff --git a/server/testgame/TestGame/TacticDocs.lean b/server/testgame/TestGame/TacticDocs.lean index 8bd7a6c..dd5d26b 100644 --- a/server/testgame/TestGame/TacticDocs.lean +++ b/server/testgame/TestGame/TacticDocs.lean @@ -1,300 +1,524 @@ import GameServer.Commands - import TestGame.Tactics -TacticDoc rfl +TacticDoc assumption " -## Beschreibung +`assumption` sucht nach einer Annahme, die genau dem Goal entspricht. -`rfl` beweist ein Goal der Form `X = X`. +## Beispiel -## Detail +`assumption` sucht durch die Annahmen und merkt dass `h` genau mit dem Goal übereinstimmt. + +``` +Objekte + a b c d : ℕ + h : a + b = c + g : a * b = 16 + t : c = 12 +Goal + a + b = c +``` +" + +TacticDoc apply +" +`apply my_lemma` Versucht das Goal mit der Aussage des Lemmas zu unifizieren +und erstellt ein neues Goal pro Annahme des Lemmas, die noch zu zeigen ist. -`rfl` beweist jedes Goal `A = B` wenn `A` und `B` genau das gleiche sind. -Wichtig ist nicht, ob diese im Infoview gleich aussehen, sondern ob sie in -Lean gleich definiert sind. +## Details +`apply` funktioniert gleichermassen für Lemmas wie für Implikationen +wie z.B. `(h : A → B)`. ## Beispiel -`rfl` kann folgenes Goal beweisen: + +Gegeben folgendes Lemma: ``` -Objects - a b c : ℕ -Prove: - (a + b) * c = (a + b) * c +lemma Nat.eq_zero_of_le_zero {n : ℕ} (h : n ≤ 0) : n = 0 := by sorry ``` -`rfl` kann auch folgendes beweisen: +Und folgendes Problem: + ``` -Objects + +Objekte n : ℕ -Prove: - 1 + 1 = 2 + ... +Goal + n = 0 ``` -denn Lean liest dies intern als `0.succ.succ = 0.succ.succ`. + +Hier ändert `apply Nat.eq_zero_of_le_zero` das Goal zu `n ≤ 0` durch Anwendung +des Lemmas. " -TacticDoc assumption +TacticDoc by_cases " -## Beschreibung +`by_cases h : P` macht eine Fallunterscheidung. Im ersten Goal wird eine Annahme +`(h : P)` hinzugefügt, im zweiten `(h : ¬P)`. -`assumption` sucht nach einer Annahme, die genau dem Goal entspricht. +## Details + +`P` kann eine beliegige Aussage sein, die als entweder wahr oder falsch angenommen wird. ## Beispiel -Wenn das Goal wie folgt aussieht: + ``` -Objects - a b c d : ℕ - h : a + b = c - g : a * b = 16 - t : c = 12 -Prove: - a + b = c +example (A : Prop) : A ∨ ¬ A := by + by_cases h : A + · left + assumption + · right + assumption ``` +" -dann findet `assumption` die Annahme `h`und schliesst den Beweis. +TacticDoc by_contra " +`by_contra h` startet einen Widerspruchsbeweis. + +## Details +Sei `P` das aktuelle Goal. `by_contra h` fügt eine neue Annahme `(h : ¬P)` hinzu +und setzt das Goal auf `False`. -TacticDoc rewrite +Oft will man `by_contra` nutzen wenn das Goal von der Form `¬ P` ist. + +## Hilfreiche Resultate + +* `contradiction` schliesst den Widerspruchsbeweis wenn sich (zwei) Annahmen +widersprechen. +* `contrapose` führt einen Beweis durch Kontraposition und ist entsprechend +in ähnlichen Situationen nutzbar wie `by_contra` " -## Beschreibung -Wie `rw` aber ruft `rfl` am Schluss nicht automatisch auf. +TacticDoc constructor " +`constructor` teilt ein Goal auf, wenn das Goal eine Struktur ist -TacticDoc induction +## Detail +Wenn das Goal eine Struktur ist, wie z.B. `A ∧ B` welches zwei Felder hat `⟨A, B⟩`, dann +erzeugt `constructor` ein Goal pro Feld der Struktur. + +## Hilfreiche Resultate + +* Das Gegenteil von `constructor` ist `⟨_, _⟩` (`\\<>`), der *anonyme Konstructor*. +Dieser enspricht ungefähr der Tupel-Notation in +\"eine Gruppe ist ein Tupel $(G, 0, +)$, sodass …\". + +## Beispiel + +``` +example {A B : Prop} (h : A) (g : B) : A ∧ B := by + constructor + · assumption + · assumption +``` " -## Beschreibung -Wie `rw` aber ruft `rfl` am Schluss nicht automatisch auf. +TacticDoc contradiction " +`contradiction` schliesst den Beweis wenn es einen Widerspruch in den Annahmen findet. +## Details +Ein Widerspruch in den Annahmen kann unter anderem folgendermassen aussehen: -TacticDoc linarith +* `(h : n ≠ n)` +* `(h : A)` und `(h' : ¬A)` +* `(h : False)` (i.e. ein Beweis von `False`) + +## Beispiel + +Folgenes Goal wird von `contradiction` bewiesen + +## Hilfreiche Resultate + +* Normalerweise wird `contradiction` gebraucht um einen Widerspruchsbeweis zu + schliessen, der mit `by_contra` eröffnet wurde. +* Ein Beweis von `False` representiert in Lean einen Widerspruch. + +``` +Objekte: + (n m : ℕ) + (h : n = m) + (g : n ≠ m) +Goal + 37 = 60 +``` +nach dem Motto \"ein Widerspruch beweist alles.\" " -## Beschreibung +TacticDoc contrapose +" +`contrapose` ändert ein Goal der Form `A → B` zu `¬B → ¬A` und führt damit +eine Beweis durch Kontraposition. + +## Hilfreiche Resultate + +* `revert h` kann nützlich sein um eine Annahme als Implikationsprämisse zu schreiben bevor man + `contrapose` verwendet. " TacticDoc fin_cases " -## Beschreibung +`fin_cases i` führt eine Fallunterscheidung wenn `i` ein endlicher Typ ist. +## Details +`fin_cases i` ist insbesondere nützlich für `(i : Fin n)`, zum Beispiel als Index in +endlich dimensionalen Vektorräumen. + +In diesem Fall bewirkt `fin_cases i` dass man Komponentenweise arbeitet. " TacticDoc funext " -## Beschreibung +`funext x` wird bei Gleichungen von Funktionen `f = g` gebraucht. Das Goal wird zu +`f x = g x`. + +## Details +Nach dem Motto `f = g ↔ ∀ x, f x = g x` sind zwei Funktionen dann identisch, wenn sie +angewendet auf jedes Element identisch sind. `funext x` benützt dieses Argument. +" +TacticDoc «have» " +`have h : P` führt ein Zwischenresultat ein. +## Details +Anschliessend muss man zuerst dieses Zwischenresultat beweisen bevor man mit dem Beweis +weitermachen und das Zwischenresultat verwenden kann. -TacticDoc rw +## Hilfreiche Resultate + +* `suffices h : P` funktioniert genau gleich, aussert das die beiden entstehenden Beweise + vertauscht sind. +* `let h : Prop := A ∧ B` ist verwandt mit `have`, mit Unterschied, dass man mit `let` + eine temporäre Definition einführt. " -## Beschreibung -Wenn man eine Annahme `(h : X = Y)` hat, kann man mit -`rw [h]` alle `X` im Goal durch `Y` ersetzen. +TacticDoc induction +" +`induction n` führt einen Induktionsbeweis über `n`. ## Detail -- `rw [←h]` wendet `h` rückwärts an und ersetzt alle `Y` durch `X`. -- `rw [h, g, ←f]`: Man kann auch mehrere `rw` zusammenfassen. -- `rw [h] at h₂` ersetzt alle `X` in `h₂` zu `Y` (anstatt im Goal). -`rw` funktioniert gleichermassen mit Annahmen `(h : X = Y)` also auch -mit Theoremen/Lemmas der Form `X = Y` +Diese Taktik erstellt zwei Goals: +* Induktionsanfang, wo `n = 0` ersetzt wird. +* Induktionsschritt, in dem man die Induktionshypothese `n_ih` zur Verfügung hat. + +Der volle Syntax mit Option zum umbenennen der Induktionshypothes und -variable ist + +``` +induction n with +| zero => + sorry +| succ m m_ih => + sorry +``` + +da dieser sich über mehrere Zeilen erstreckt wird er im Spiel nicht eingeführt. + +## Hifreiche Resultate + +* `Nat.succ_eq_add_one`: schreibt `n.succ = n + 1` um. +* `Nat.zero_eq`: schreibt `Nat.zero = 0` um. + +Beide sind DefEq, aber manche Taktiken können nicht damit umgehen + +* Siehe Definition `∑` für Hilfe mit Induktion über Summen. +* `rcases n` ist sehr ähnlich zu `induction n`. Der Unterschied ist, dass bei +`rcases` keine Induktionshypothese im Fall `n + 1` zur Verfügung steht. ## Beispiel -TODO +``` +example (n : ℕ) : 4 ∣ 5^n + 7 := by + induction n + sorry -- Fall `n = 0` + sorry -- Fall `n + 1` +``` " -TacticDoc simp_rw +TacticDoc intro " -## Beschreibung +`intro x` wird für Goals der Form `A → B` oder `∀ x, P x` verwendet. +Dadurch wird die Implikationsprämisse (oder das Objekt `x`) den Annahmen hinzugefügt. -TODO +## Hilfreiche Resultate + +* `revert h` macht das Gegenteil von `intro`. " -TacticDoc by_cases +TacticDoc left " -## Beschreibung +Wenn das Goal von der Form `A ∨ B` ist, enscheidet man mit `left` die linke Seite zu zeigen. -TODO +## Hilfreiche Resultate + +* `right` entscheidet sich für die linke Seite. " -TacticDoc apply +TacticDoc «let» " -## Beschreibung +`let x : ℕ := 5 ^ 2` führt eine neue temporäre Definition ein. -TODO +## Hilfreiche Resultate + +* `have x : ℕ := 5 ^ 2` führt ebenfalls eine neue natürliche Zahle `x` ein, aber + Lean vergisst sofort, wie die Zahl definiert war. D.h. `x = 25` wäre dann nicht + beweisbar. Mit `let x : ℕ := 5 ^ 2` ist `x = 25` durch `rfl` beweisbar. " -TacticDoc constructor +TacticDoc linarith " -## Beschreibung +`linarith` löst Systeme linearer (Un-)Gleichungen. -TODO +## Detail +`linarith` kann lineare Gleichungen und Ungleichungen beweisen indem +es das Gegenteil vom Goal annimmt und versucht einen Widerspruch in den +Annahmen zu erzeugen (Widerspruchsbeweis). Es braucht ein `≤` definiert um +zu funktionieren. + +## Beispiel + +Folgendes kann `linarith` beweisen. +``` +Objekte + x y : ℤ + h₁ : 5 * y ≤ 35 - 2 * x + h₂ : 2 * y ≤ x + 3 +Goal + y ≤ 5 +``` " -TacticDoc tauto +TacticDoc push_neg " -## Beschreibung +`push_neg` schreibt `¬∀ x, _` zu `∃ x, ¬ _` und `¬∃ x, _` zu `∀x, ¬ _` um. -TODO +## Details + +`psuh_neg` schiebt das `¬` soweit nach innen wie möglich. + +## Hilfreiche Resultate + +* Die beiden Lemmas heissen `not_forall` und `not_exists` und können mit `rw` einzeln angewendet + werden. " TacticDoc rcases " -## Beschreibung +`rcases h` teilt eine Annahme `h` in ihre Einzelteile auf. -TODO -" +## Details +Für Annahmen die Strukturen sind, wie z.B. `h : A ∧ B` (oder `∃x, P x`) kann man die +Einzelteile mit `rcases h with ⟨a, b⟩` (oder `rcases h with ⟨x, hx⟩`) benennen. -TacticDoc left -" -## Beschreibung +Für eine Annahme der Form `h : A ∨ B` kann man mit `rcases h with ha | hb` zwei Goals +erzeugen, einmal unter Annahme der linken Seite, einmal unter Annahme der Rechten. -TODO -" +## Hilfreiche Resultate -TacticDoc right +* Für `n : ℕ` hat `rcases n` einen ähnlichen Effekt wie `induction n` mit dem Unterschied, + dass im Fall `n + 1` keine Induktionshypothese zur Verfügung steht. +* In Lean gibt es auch die Taktik `cases`, die gleich funktioniert wie `rcases` aber + einen mehrzeiligen Syntax hat: + ``` + cases h with + | inl ha => + sorry + | inr hb => + sorry + ``` + Hier sind `inl`/`inr` die Namen der Fälle und `ha`/`hb` sind frei gewählte Namen für die + freien Variablen " -## Beschreibung -TODO +TacticDoc revert " +`revert h` fügt die Annahme `h` als Implikationsprämisse vorne ans Goal an. -TacticDoc simp -" -## Beschreibung +## Hilfreiche Resultate -TODO -" +* `revert` ist das Gegenteil von `intro`. +* `revert` kann insbesondere nützlich sein, um anschliessend `contrapose` zu verwenden. -TacticDoc trivial -" -## Beschreibung +## Beispiel -TODO -" +``` +Objekte + A P : Prop + h : P +Goal + A +``` -TacticDoc contradiction -" -## Beschreibung +hier ändert `revert h` den Status zu -TODO +``` +Objekte + A P : Prop +Goal + P → A +``` " -TacticDoc push_neg +TacticDoc rfl " -## Beschreibung +`rfl` beweist ein Goal der Form `X = X`. -TODO -" +## Detail +`rfl` beweist jedes Goal `A = B` wenn `A` und `B` per Definition das gleiche sind (DefEq). +Andere Taktiken rufen `rfl` oft am Ende versteckt +automatisch auf um zu versuchen, den Beweis zu schliessen. -TacticDoc contrapose + +## Beispiel +`rfl` kann folgende Goals beweisen: + +``` +Objekte + a b c : ℕ +Goal: + (a + b) * c = (a + b) * c +``` + +``` +Objekte + n : ℕ +Goal + 1 + 1 = 2 +``` +denn Lean liest dies intern als `0.succ.succ = 0.succ.succ`. " -## Beschreibung -TODO +TacticDoc right " +Wenn das Goal von der Form `A ∨ B` ist, enscheidet man mit `right` die rechte Seite zu zeigen. -TacticDoc revert +## Hilfreiche Resultate + +* `left` entscheidet sich für die linke Seite. " -## Beschreibung -TODO +TacticDoc ring " +Löst Gleichungen mit den Operationen `+, -, *, ^`. +## Details +Insbesondere funktioniert `ring` in Ringen/Semiringen wie z.B. `ℕ, ℤ, ℚ, …` +(i.e. Typen `R` mit Instanzen `Ring R` oder `Semiring R`). +Die Taktik ist besonders auf kommutative Ringe (`CommRing R`) ausgelegt. -TacticDoc by_contra -" -## Beschreibung +## Hilfreiche Resultate -TODO +* `ring` kann nicht wirklich mit Division (`/`) oder Inversen (`⁻¹`) umgehen. Dafür ist die + Taktik `field_simp` gedacht, und die typische Sequenz ist + ``` + field_simp + ring + ``` +* Wenn `ring` nicht abschliesst, sagt es man solle `ring_nf` verwenden. Normalerweise heisst + das aber, dass man was falsch gemacht hat und die Seiten der Gleichung noch nicht gleich sind. " -TacticDoc ring +TacticDoc rw " -## Beschreibung +Wenn man eine Annahme `(h : X = Y)` hat, kann man mit +`rw [h]` alle `X` im Goal durch `Y` ersetzen. -TODO +## Details + +* `rw [←h]` wendet `h` rückwärts an und ersetzt alle `Y` durch `X`. +* `rw [h, g, ←f]`: Man kann auch mehrere `rw` zusammenfassen. +* `rw [h] at h₂` ersetzt alle `X` in `h₂` zu `Y` (anstatt im Goal). + +`rw` funktioniert gleichermassen mit Annahmen `(h : X = Y)` also auch +mit Theoremen/Lemmas der Form `X = Y` " -TacticDoc unfold +TacticDoc simp " -## Beschreibung +`simp` versucht alle Vereinfachungslemmas anzuwenden, die in der `mathlib` mit `@[simp]` +gekennzeichnet sind. -TODO +## Details + +* `simp?` zeigt welche Lemmas verwendet wurden. +* `simp [my_lemma]` fügt zudem `my_lemma` temporär zur Menge der `simp`-Lemmas hinzu. +* ein `simp`, das nicht am Ende des Beweis steht sollte durch eine entsprechende + `simp only [...]` Aussage ersetzt werden, um den Beweis stabiler zu machen. " -TacticDoc use +TacticDoc simp_rw " -## Beschreibung +`simp_rw [h₁, h₂, h₃]` versucht wie `rw` jedes Lemma der Reihe nach zu Umschreiben zu verwenden, +verwendet aber jedes Lemma so oft es kann. -TODO +## Details + +Es bestehen aber drei grosse Unterschiede zu `rw`: + +* `simp_rw` wendet jedes Lemma so oft an wie es nur kann. +* `simp_rw` kann besser unter Quantifiern umschreiben als `rw`. +* `simp_rw` führt nach jedem Schritt ein `simp only []` aus und vereinfacht dadurch grundlegenste + Sachen. " TacticDoc «suffices» " -## Beschreibung +`suffices h : P` führt ein neues Zwischenresultat ein, aus dem das Goal direkt folgen soll. -TODO -" +## Details -TacticDoc «have» -" -## Beschreibung +Der einzige Unterschied zu `have h : P` ist, dass die beiden resultierenden Goals vertauscht sind. -TODO +Mathematisch braucht man diese in ein bisschen unterschiedlichen Fällen: + +* `suffices h : P` : \"Es genügt zu zeigen, dass …\". Als erstes folgt die Erklärung wieso + das genügt, danach muss man nur noch `P` beweisen. +* `have h : P` : Ein (kleines) Zwischenresultat. Als erstes folgt dann der Beweis dieses +Resultats, anschliessend setzt man den Beweis mit Hilfe des Zwischenresultats fort. " -TacticDoc «let» +TacticDoc tauto " ## Beschreibung TODO " -TacticDoc induction_on +TacticDoc trivial " -## Summary +`trivial` versucht durch Kombination von wenigen simplen Taktiken das Goal zu schliessen. -If `n : ℕ` is in our objects list, then `induction_on n` -attempts to prove the current goal by induction on `n`, with the inductive -assumption in the `succ` case being `ind_hyp`. +## Details +Die Taktiken, die verwendet werden sind: -### Example: -If your current goal is: -``` -Objects - n : ℕ -Prove: - 2 * n = n + n -``` +* `assumption` +* `rfl` +* `contradiction` +* und noch 3 andere, die hier nicht behandelt werden + (`decide`, `apply True.intro`, `apply And.intro`). +" -then +TacticDoc unfold +" +`unfold myDef` öffnet eine Definition im Goal. -`induction_on n` +## Details +Bis auf DefEq (definitinal equality) ändert `unfold` nichts, manche Taktiken +(z.B. `push_neg`, `rw`) brauchen aber manchmal die Hilfe. -will give us two goals: +`unfold myDef at h` kann auch Definitionen in Annahmen öffnen -``` -Prove: - 2 * 0 = 0 + 0 -``` +## Hilfreiche Resultate -and -``` -Objects - n : ℕ, -Assumptions - ind_hyp : 2 * n = n + n -Prove: - 2 * succ n = succ n + succ n -``` +* `change P` ist eine andere Taktik, die das aktuelle Goal in einen DefEq-Ausdruck umschreibt. + Diese Taktik braucht man auch manchmal um zu hacken, wenn Lean Mühe hat etwas zu verstehen. " -TacticDoc intro -"Useful to introduce stuff" +TacticDoc use +" +Wenn das Goal von der Form `∃x, P x` ist, kann man mit `use n` ein konkretes Element angeben +mit dem man das Goal beweisen möchte. +" From 5dd846f1686cf81d568f074224be444a448277a3 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Fri, 17 Mar 2023 14:39:32 +0100 Subject: [PATCH 10/29] levels --- server/testgame/TestGame/LemmaDocs.lean | 5 ++++- .../TestGame/Levels/Implication/L03_Apply.lean | 9 +-------- .../TestGame/Levels/SetTheory/L03_Subset.lean | 13 +++++++++---- .../Levels/SetTheory/L04_SubsetEmpty.lean | 17 ++++++++++++----- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/testgame/TestGame/LemmaDocs.lean index ff18389..f346c35 100644 --- a/server/testgame/TestGame/LemmaDocs.lean +++ b/server/testgame/TestGame/LemmaDocs.lean @@ -153,6 +153,9 @@ LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" "" +LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum" +"" + LemmaDoc add_comm as "add_comm" in "Nat" "" @@ -205,4 +208,4 @@ LemmaDoc congrFun as "congrFun" in "Function" LemmaDoc Iff.symm as "Iff.symm" in "Logic" "" -DefinitionDoc subset as "⊆" "Test" +DefinitionDoc Symbol.Subset as "⊆" "Test" diff --git a/server/testgame/TestGame/Levels/Implication/L03_Apply.lean b/server/testgame/TestGame/Levels/Implication/L03_Apply.lean index 5d917f4..6fa2b33 100644 --- a/server/testgame/TestGame/Levels/Implication/L03_Apply.lean +++ b/server/testgame/TestGame/Levels/Implication/L03_Apply.lean @@ -11,17 +11,10 @@ Introduction " Sein Kollege zieht eine Linie unter deinen Beweis, schreibt ein durchgestrichenes ~`revert`~ hin und gibt dir das Blatt wieder. -`revert` ist aber nur selten der richtige Weg. - -Im vorigen Beispiel würde man besser die Implikation $A \\Rightarrow B$ *anwenden*, also -sagen \"Es genügt $A$ zu zeigen, denn $A \\Rightarrow B$\" und danach $A$ beweisen. - -Wenn man eine Implikation `(g : A → B)` in den Annahmen hat, bei welcher die Konsequenz -(also $B$) mit dem Goal übereinstimmt, kann man `apply g` genau dies machen. " Statement (A B : Prop) (hA : A) (h : A → B) : B := by - Hint "**Robo**: Du hast natürlich recht, normalerweise ist es viel schöner mit + Hint "**Robo**: Da hat er natürlich recht, normalerweise ist es viel schöner mit `apply {h}` die Implikation anzuwenden." apply h Hint "**Du**: Und jetzt genügt es also `A` zu zeigen." diff --git a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean index 5fd9ccb..15acf84 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean @@ -2,6 +2,7 @@ import TestGame.Metadata import Mathlib.Init.Set import Mathlib.Tactic.Tauto +import Mathlib set_option tactic.hygienic false @@ -35,12 +36,16 @@ open Set Statement (A : Set ℕ) : A ⊆ univ := by Hint "**Robo**: `A ⊆ B` ist als `∀ x, x ∈ A → x ∈ B` definiert. - **Du**: Also kann ich mit `intro` anfangen, wie ich das bei einem `∀`?" + **Du**: Also kann ich mit `intro` anfangen, wie ich das bei einem `∀` funktioniert? + + **Robo**: Das ist korrekt." intro h hA + Hint (hidden := true) "**Robo**: Das dürfte eine Trivialität sein." trivial --apply mem_univ -- or `trivial`. -NewTactic intro trivial apply -NewDefinition subset --- blocked: tauto simp +DisabledTactic tauto simp +NewDefinition Symbol.Subset + +Conclusion "Damit drehen sich die beiden Mädchen um und folgen dem Jungen." end MySet diff --git a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean index d8a6990..63d3f3b 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean @@ -14,10 +14,14 @@ Title "Teilmengen" Introduction " +Etwas weiter kommt ihr an einem kleinen Gemüsestand vorbei. Da ihr nicht so +richtig einen Plan habt, fragt ihr den Verkäufer. + +**Verkäufer**: Hier ist was ganz wichtiges, was ihr noch oft brauchen werdet: Ein zentrales Lemma ist `Subset.antisymm_iff` welches folgendes sagt: ``` -A = B ↔ A ⊆ B ∧ B ⊆ A +lemma antisymm_iff {α : Type} {A B : Set α} : A = B ↔ A ⊆ B ∧ B ⊆ A ``` Fast immer wenn man Gleichheiten von Mengen zeigen muss, will man diese in zwei Ungleichungen @@ -26,7 +30,7 @@ aufteilen. namespace MySet -open Set +open Set Subset -- Copied some lemmas from `Matlib.Data.Set.Basic` in order to not import the entire file. theorem tmp {α : Type _} {s t : Set α} : s = t → s ⊆ t := @@ -39,10 +43,13 @@ theorem Subset.antisymm_iff {α : Type _} {a b : Set α} : a = b ↔ a ⊆ b ∧ theorem empty_subset {α : Type _} (s : Set α) : ∅ ⊆ s := fun. -Statement subset_empty_iff -"Die einzige Teilmenge der leeren Menge ist die leere Menge." - {A : Type _} (s : Set A) : +Statement subset_empty_iff {A : Type _} (s : Set A) : s ⊆ ∅ ↔ s = ∅ := by + Hint "**Du**: Ja, die einzige Teilmenge der leeren Menge ist die leere Menge. + Das ist doch eine Tautologie? + + **Robo**: Naja nicht ganz, " + constructor intro h rw [Subset.antisymm_iff] From c947ef20d7017246a2d817814452b2999e98ec62 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Mon, 20 Mar 2023 11:01:57 +0100 Subject: [PATCH 11/29] lemma docs --- server/testgame/TestGame/LemmaDocs.lean | 450 ++++++++++++++---- .../TestGame/Levels/Sum/L03_ArithSum.lean | 2 +- server/testgame/TestGame/TacticDocs.lean | 5 + 3 files changed, 352 insertions(+), 105 deletions(-) diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/testgame/TestGame/LemmaDocs.lean index f346c35..d3d8d7c 100644 --- a/server/testgame/TestGame/LemmaDocs.lean +++ b/server/testgame/TestGame/LemmaDocs.lean @@ -3,209 +3,451 @@ import GameServer.Commands -- Wird im Level "Implication 11" ohne Beweis angenommen. LemmaDoc not_not as "not_not" in "Logic" " -### Aussage +`not_not {A : Prop} : ¬¬A ↔ A` -`¬¬A ↔ A` - -### Annahmen - -`(A : Prop)` +* `simp`-Lemma: Ja +* Namespace: `Classical` +* Minimal Import: `Std.Logic` +* Mathlib Doc: [#not_not](https://leanprover-community.github.io/mathlib4_docs/Std/Logic.html#Classical.not_not) " -- Wird im Level "Implication 10" ohne Beweis angenommen. LemmaDoc not_or_of_imp as "not_or_of_imp" in "Logic" " -### Aussage - -`¬A ∨ B` - -### Annahmen +`not_or_of_imp {A B : Prop} : (A → B) → ¬A ∨ B` -`(A B : Prop)`\\ -`(h : A → B)` +* `simp`-Lemma: Nein +* Namespace: `-` +* Minimal Import: `Mathlib.Logic.Basic` +* Mathlib Doc: [#not_or_of_imp](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#not_or_of_imp) " -- Wird im Level "Implication 12" bewiesen. LemmaDoc imp_iff_not_or as "imp_iff_not_or" in "Logic" " -### Aussage +`imp_iff_not_or {A B : Prop} : (A → B) ↔ (¬A ∨ B)` -`(A → B) ↔ ¬A ∨ B` - -### Annahmen - -`(A B : Prop)` +* `simp`-Lemma: Nein +* Namespace: `-` +* Minimal Import: `Mathlib.Logic.Basic` +* Mathlib Doc: [#imp_iff_not_or](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#imp_iff_not_or) " - -LemmaDoc Nat.succ_pos as "Nat.succ_pos" in "Nat" +LemmaDoc Nat.succ_pos as "succ_pos" in "Nat" " -" - -LemmaDoc Nat.pos_iff_ne_zero as "Nat.pos_iff_ne_zero" in "Nat" -" -" - -LemmaDoc zero_add as "zero_add" in "Addition" -"This lemma says `∀ a : ℕ, 0 + a = a`." +`Nat.succ_pos (n : ℕ) : 0 < n.succ` -LemmaDoc add_zero as "add_zero" in "Addition" -"This lemma says `∀ a : ℕ, a + 0 = a`." - -LemmaDoc add_succ as "add_succ" in "Addition" -"This lemma says `∀ a b : ℕ, a + succ b = succ (a + b)`." +$n + 1$ ist strikt grösser als Null. -LemmaDoc not_forall as "not_forall" in "Logic" -"`∀ (A : Prop), ¬(∀ x, A) ↔ ∃x, (¬A)`." +## Eigenschaften -LemmaDoc not_exists as "not_exists" in "Logic" -"`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`." - -DefinitionDoc Even as "Even" -" -`even n` ist definiert als `∃ r, a = 2 * r`. -Die Definition kann man mit `unfold even at *` einsetzen. +* `simp` Lemma: Nein +* Namespace: `Nat` +* Minimal Import: `Mathlib.Init.Prelude` +* Mathlib Doc: [#Nat.succ_pos](https://leanprover-community.github.io/mathlib4_docs/Init/Prelude.html#Nat.succ_pos) " -DefinitionDoc Odd as "Odd" -" -`odd n` ist definiert als `∃ r, a = 2 * r + 1`. -Die Definition kann man mit `unfold odd at *` einsetzen. +LemmaDoc Nat.pos_iff_ne_zero as "pos_iff_ne_zero" in "Nat" " +`Nat.pos_iff_ne_zero {n : ℕ} : 0 < n ↔ n ≠ 0` -DefinitionDoc Injective as "Injective" +* `simp`-Lemma: Nein +* Namespace: `Nat` +* Minimal Import: `Std.Data.Nat.Lemmas` +* Mathlib Doc: [#Nat.pos_iff_ne_zero](https://leanprover-community.github.io/mathlib4_docs/Std/Data/Nat/Lemmas.html#Nat.pos_iff_ne_zero) " -`Injective f` ist definiert als -``` -∀ a b, f a = f b → a = b -``` -definiert. -" +-- TODO: Not minimal description +LemmaDoc zero_add as "zero_add" in "Addition" +"zero_add (a : ℕ) : 0 + a = a`. -DefinitionDoc Surjective as "Surjective" -" -`Surjective f` ist definiert als -``` -∀ a, (∃ b, f a = b) -``` +* `simp`-Lemma: Ja +* Namespace: `-` +* Import: `Mathlib.Nat.Basic` +* Mathlib Doc: [#zero_add](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Defs.html#zero_add) " -DefinitionDoc Bijective as "Bijective" -" -" +LemmaDoc add_zero as "add_zero" in "Addition" +"This lemma says `∀ a : ℕ, a + 0 = a`. -DefinitionDoc LeftInverse as "LeftInverse" -" -" +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc" -DefinitionDoc RightInverse as "RightInverse" -" +LemmaDoc add_succ as "add_succ" in "Addition" +"This lemma says `∀ a b : ℕ, a + succ b = succ (a + b)`. + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]()" + +LemmaDoc not_forall as "not_forall" in "Logic" " +`not_forall {α : Sort _} {P : α → Prop} : ¬(∀ x, → P x) ↔ ∃ x, ¬P x` -DefinitionDoc StrictMono as "StrictMono" +* `simp`-Lemma: Ja +* Namespace: `-` +* Minimal Import: `Mathlib.Logic.Basic` +* Mathlib Doc: [#not_forall](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#not_forall) " -`StrictMono f` ist definiert als -``` -∀ a b, a < b → f a < f b -``` +LemmaDoc not_exists as "not_exists" in "Logic" +"`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`. -" +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]()" LemmaDoc even_iff_not_odd as "even_iff_not_odd" in "Nat" -"`Even n ↔ ¬ (Odd n)`" +"`Even n ↔ ¬ (Odd n)` + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]()" LemmaDoc odd_iff_not_even as "odd_iff_not_even" in "Nat" -"`Odd n ↔ ¬ (Even n)`" +"`Odd n ↔ ¬ (Even n)` + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]()" LemmaDoc even_square as "even_square" in "Nat" -"`∀ (n : ℕ), Even n → Even (n ^ 2)`" +"`∀ (n : ℕ), Even n → Even (n ^ 2)` + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc mem_univ as "mem_univ" in "Set" -"x ∈ @univ α" +"x ∈ @univ α + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc not_mem_empty as "not_mem_empty" in "Set" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc empty_subset as "empty_subset" in "Set" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc add_comm as "add_comm" in "Nat" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc mul_add as "mul_add" in "Nat" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc add_mul as "add_mul" in "Nat" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc add_pow_two as "add_pow_two" in "Nat" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc not_le as "not_le" in "Logic" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc if_pos as "if_pos" in "Logic" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc if_neg as "if_neg" in "Logic" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc StrictMono.add as "StrictMono.add" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Exists.choose as "Exists.choose" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc congrArg as "congrArg" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc congrFun as "congrFun" in "Function" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" LemmaDoc Iff.symm as "Iff.symm" in "Logic" -"" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" + + + +/-! ## Definitions -/ + +DefinitionDoc Even as "Even" +" +`even n` ist definiert als `∃ r, a = 2 * r`. +Die Definition kann man mit `unfold even at *` einsetzen. +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]()" + +DefinitionDoc Odd as "Odd" +" +`odd n` ist definiert als `∃ r, a = 2 * r + 1`. +Die Definition kann man mit `unfold odd at *` einsetzen. +" + +DefinitionDoc Injective as "Injective" +" +`Injective f` ist definiert als + +``` +∀ a b, f a = f b → a = b +``` +definiert. +" + +DefinitionDoc Surjective as "Surjective" +" +`Surjective f` ist definiert als + +``` +∀ a, (∃ b, f a = b) +``` +" + +DefinitionDoc Bijective as "Bijective" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" + +DefinitionDoc LeftInverse as "LeftInverse" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" + +DefinitionDoc RightInverse as "RightInverse" +" + +* `simp`-Lemma: +* Namespace: `-` +* Minimal Import: `Mathlib.` +* Mathlib Doc: [#]() +" + +DefinitionDoc StrictMono as "StrictMono" +" +`StrictMono f` ist definiert als + +``` +∀ a b, a < b → f a < f b +``` + +" + DefinitionDoc Symbol.Subset as "⊆" "Test" diff --git a/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean b/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean index f515bb1..b378431 100644 --- a/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean +++ b/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean @@ -83,7 +83,7 @@ Statement arithmetic_sum ring NewTactic induction -NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul +NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul Nat.zero_eq Conclusion "Du schaust dich um und bewunderst das Tal in dem hunderte, wenn nicht tausende, Steintürme in allen Formen und Höhen stehen." diff --git a/server/testgame/TestGame/TacticDocs.lean b/server/testgame/TestGame/TacticDocs.lean index dd5d26b..63501b5 100644 --- a/server/testgame/TestGame/TacticDocs.lean +++ b/server/testgame/TestGame/TacticDocs.lean @@ -521,4 +521,9 @@ TacticDoc use " Wenn das Goal von der Form `∃x, P x` ist, kann man mit `use n` ein konkretes Element angeben mit dem man das Goal beweisen möchte. + +## Details + +`use n` versucht zudem anschliessend `rfl` aufzurufen, und kann das Goal damit manchmal direkt +schließen. " From ae58652fa9672e06f27a6325c63aada4ea229cbd Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Mon, 20 Mar 2023 12:15:48 +0100 Subject: [PATCH 12/29] lemma docs --- server/testgame/TestGame/LemmaDocs.lean | 210 ++++++++++++++---- .../Levels/Predicate/L09_PushNeg.lean | 2 +- .../TestGame/Levels/SetTheory/L02_Empty.lean | 2 +- .../Levels/SetTheory/L04_SubsetEmpty.lean | 5 +- .../TestGame/Levels/SetTheory/L05_Empty.lean | 2 - .../Levels/SetTheory/L06_Nonempty.lean | 2 - .../Levels/SetTheory/L07_UnionInter.lean | 2 - .../Levels/SetTheory/L08_UnionInter.lean | 2 - .../Levels/SetTheory/L09_Complement.lean | 2 - .../Levels/SetTheory/L11_SSubset.lean | 2 - .../TestGame/Levels/SetTheory/L12_Insert.lean | 2 - .../TestGame/Levels/SetTheory/L14_SetOf.lean | 2 - .../Levels/SetTheory/L15_Powerset.lean | 2 - .../Levels/SetTheory/L16_Disjoint.lean | 2 - .../TestGame/Levels/SetTheory/L17_SetOf.lean | 2 - .../TestGame/Levels/SetTheory/L18_SetOf.lean | 2 - .../Levels/SetTheory/L19_Subtype.lean | 2 - .../Levels/SetTheory/L20_UnionInter.lean | 2 - .../Levels/SetTheory/L21_Summary.lean | 2 - 19 files changed, 172 insertions(+), 77 deletions(-) diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/testgame/TestGame/LemmaDocs.lean index d3d8d7c..52e7a61 100644 --- a/server/testgame/TestGame/LemmaDocs.lean +++ b/server/testgame/TestGame/LemmaDocs.lean @@ -5,6 +5,8 @@ LemmaDoc not_not as "not_not" in "Logic" " `not_not {A : Prop} : ¬¬A ↔ A` +## Eigenschaften + * `simp`-Lemma: Ja * Namespace: `Classical` * Minimal Import: `Std.Logic` @@ -16,6 +18,8 @@ LemmaDoc not_or_of_imp as "not_or_of_imp" in "Logic" " `not_or_of_imp {A B : Prop} : (A → B) → ¬A ∨ B` +## Eigenschaften + * `simp`-Lemma: Nein * Namespace: `-` * Minimal Import: `Mathlib.Logic.Basic` @@ -27,6 +31,8 @@ LemmaDoc imp_iff_not_or as "imp_iff_not_or" in "Logic" " `imp_iff_not_or {A B : Prop} : (A → B) ↔ (¬A ∨ B)` +## Eigenschaften + * `simp`-Lemma: Nein * Namespace: `-` * Minimal Import: `Mathlib.Logic.Basic` @@ -51,6 +57,8 @@ LemmaDoc Nat.pos_iff_ne_zero as "pos_iff_ne_zero" in "Nat" " `Nat.pos_iff_ne_zero {n : ℕ} : 0 < n ↔ n ≠ 0` +## Eigenschaften + * `simp`-Lemma: Nein * Namespace: `Nat` * Minimal Import: `Std.Data.Nat.Lemmas` @@ -59,8 +67,10 @@ LemmaDoc Nat.pos_iff_ne_zero as "pos_iff_ne_zero" in "Nat" -- TODO: Not minimal description LemmaDoc zero_add as "zero_add" in "Addition" -"zero_add (a : ℕ) : 0 + a = a`. +" +`zero_add (a : ℕ) : 0 + a = a` +## Eigenschaften * `simp`-Lemma: Ja * Namespace: `-` @@ -69,7 +79,10 @@ LemmaDoc zero_add as "zero_add" in "Addition" " LemmaDoc add_zero as "add_zero" in "Addition" -"This lemma says `∀ a : ℕ, a + 0 = a`. +" +This lemma says `∀ a : ℕ, a + 0 = a`. + +## Eigenschaften * `simp`-Lemma: * Namespace: `-` @@ -79,6 +92,8 @@ LemmaDoc add_zero as "add_zero" in "Addition" LemmaDoc add_succ as "add_succ" in "Addition" "This lemma says `∀ a b : ℕ, a + succ b = succ (a + b)`. +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -88,6 +103,8 @@ LemmaDoc not_forall as "not_forall" in "Logic" " `not_forall {α : Sort _} {P : α → Prop} : ¬(∀ x, → P x) ↔ ∃ x, ¬P x` +## Eigenschaften + * `simp`-Lemma: Ja * Namespace: `-` * Minimal Import: `Mathlib.Logic.Basic` @@ -95,82 +112,139 @@ LemmaDoc not_forall as "not_forall" in "Logic" " LemmaDoc not_exists as "not_exists" in "Logic" -"`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`. +" +`not_exists {α : Sort _} {P : α → Prop} : (¬∃ x, P x) ↔ ∀ (x : α), ¬P x. -* `simp`-Lemma: +## Eigenschaften + +* `simp`-Lemma: Ja * Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]()" +* Minimal Import: `Std.Logic` +* Mathlib Doc: [#not_exists](https://leanprover-community.github.io/mathlib4_docs/Std/Logic.html#not_exists)" -LemmaDoc even_iff_not_odd as "even_iff_not_odd" in "Nat" -"`Even n ↔ ¬ (Odd n)` +LemmaDoc Nat.even_iff_not_odd as "even_iff_not_odd" in "Nat" +" +`even_iff_not_odd {n : ℕ} : Even n ↔ ¬Odd n` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]()" +## Eigenschaften -LemmaDoc odd_iff_not_even as "odd_iff_not_even" in "Nat" -"`Odd n ↔ ¬ (Even n)` +* `simp`-Lemma: Nein +* Namespace: `Nat` +* Minimal Import: `Mathlib.Data.Nat.Parity` +* Mathlib Doc: [#Nat.even_iff_not_odd](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Nat/Parity.html#Nat.even_iff_not_odd)" -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]()" +LemmaDoc Nat.odd_iff_not_even as "odd_iff_not_even" in "Nat" +" +`Nat.odd_iff_not_even {n : ℕ} : Odd n ↔ ¬Even n` + +## Eigenschaften + +* `simp`-Lemma: Ja +* Namespace: `Nat` +* Minimal Import: `Mathlib.Data.Nat.Parity` +* Mathlib Doc: [#Nat.odd_iff_not_even](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Nat/Parity.html#Nat.odd_iff_not_even)" LemmaDoc even_square as "even_square" in "Nat" -"`∀ (n : ℕ), Even n → Even (n ^ 2)` +" +`even_square : (n : ℕ), Even n → Even (n ^ 2)` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]() +## Eigenschaften + +* `simp`-Lemma: Nein +* *Nicht in Mathlib* " -LemmaDoc mem_univ as "mem_univ" in "Set" -"x ∈ @univ α +LemmaDoc Set.mem_univ as "mem_univ" in "Set" +" +`Set.mem_univ {α : Type _} (x : α) : x ∈ @univ α` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]() +Jedes Element ist in `univ`, der Menge aller Elemente eines Typs `α`. + +## Eigenschaften + +* `simp`-Lemma: Ja +* Namespace: `Set` +* Minimal Import: `Mathlib.Data.Set.Basic` +* Mathlib Doc: [#mem_univ](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.mem_univ) " LemmaDoc not_mem_empty as "not_mem_empty" in "Set" " +`Set.not_mem_empty {α : Type _} (x : α) : x ∉ ∅` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]() +Kein Element ist in der leeren Menge. + +## Eigenschaften + +* `simp`-Lemma: Nein +* Namespace: `Set` +* Minimal Import: `Mathlib.Data.Set.Basic` +* Mathlib Doc: [#not_mem_empty](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.not_mem_empty) " LemmaDoc empty_subset as "empty_subset" in "Set" " +`Set.empty_subset {α : Type u} (s : Set α) : ∅ ⊆ s` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]() +## Eigenschaften + +* `simp`-Lemma: Ja +* Namespace: `Set` +* Minimal Import: `Mathlib.Data.Set.Basic` +* Mathlib Doc: [#empty_subset](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.empty_subset) " -LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set" +LemmaDoc Subset.antisymm as "Subset.antisymm" in "Set" " +`Set.Subset.antisymm {α : Type u} {a : Set α} {b : Set α} (h₁ : a ⊆ b) (h₂ : b ⊆ a) : a = b` -* `simp`-Lemma: -* Namespace: `-` -* Minimal Import: `Mathlib.` -* Mathlib Doc: [#]() +Zwei Mengen sind identisch, wenn sowohl $A \\subseteq B$ wie auch $B \\subseteq A$. +## Details + +`apply Subset.antisymm` ist eine Möglichkeit Gleichungen von Mengen zu zeigen. +eine andere ist `ext i`, welches Elementweise funktiniert. +Siehe auch +[`#Subset.antisymm_iff`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.Subset.antisymm_iff) +für die Iff-Version. + +## Eigenschaften + +* `simp`-Lemma: Nein +* Namespace: `Set.Subset` +* Minimal Import: `Mathlib.Data.Set.Basic` +* Mathlib Doc: [#Subset.antisymm](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.Subset.antisymm) " +LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set" +" +`Set.Subset.antisymm_iff {α : Type u} {a : Set α} {b : Set α} : a = b ↔ a ⊆ b ∧ b ⊆ a` + +Zwei Mengen sind identisch, wenn sowohl $A \\subseteq B$ wie auch $B \\subseteq A$. +## Details + +`rw [Subset.antisymm_iff]` ist eine Möglichkeit Gleichungen von Mengen zu zeigen. +eine andere ist `ext i`, welches Elementweise funktiniert. +Siehe auch +[`#Subset.antisymm`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.Subset.antisymm) +für eine verwandte Version. + +## Eigenschaften + +* `simp`-Lemma: Nein +* Namespace: `Set.Subset` +* Minimal Import: `Mathlib.Data.Set.Basic` +* Mathlib Doc: [#Subset.antisymm_iff](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Set/Basic.html#Set.Subset.antisymm_iff) +" LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -181,6 +255,8 @@ LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat" LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -190,6 +266,8 @@ LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum" LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -199,6 +277,8 @@ LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -208,6 +288,8 @@ LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -217,6 +299,8 @@ LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum" LemmaDoc add_comm as "add_comm" in "Nat" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -226,6 +310,8 @@ LemmaDoc add_comm as "add_comm" in "Nat" LemmaDoc mul_add as "mul_add" in "Nat" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -235,6 +321,8 @@ LemmaDoc mul_add as "mul_add" in "Nat" LemmaDoc add_mul as "add_mul" in "Nat" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -244,6 +332,8 @@ LemmaDoc add_mul as "add_mul" in "Nat" LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -253,6 +343,8 @@ LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum" LemmaDoc add_pow_two as "add_pow_two" in "Nat" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -262,6 +354,8 @@ LemmaDoc add_pow_two as "add_pow_two" in "Nat" LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -271,6 +365,8 @@ LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum" LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -280,6 +376,8 @@ LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function" LemmaDoc not_le as "not_le" in "Logic" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -289,6 +387,8 @@ LemmaDoc not_le as "not_le" in "Logic" LemmaDoc if_pos as "if_pos" in "Logic" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -298,6 +398,8 @@ LemmaDoc if_pos as "if_pos" in "Logic" LemmaDoc if_neg as "if_neg" in "Logic" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -307,6 +409,8 @@ LemmaDoc if_neg as "if_neg" in "Logic" LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -316,6 +420,8 @@ LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function" LemmaDoc StrictMono.add as "StrictMono.add" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -325,6 +431,8 @@ LemmaDoc StrictMono.add as "StrictMono.add" in "Function" LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -334,6 +442,8 @@ LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function" LemmaDoc Exists.choose as "Exists.choose" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -343,6 +453,8 @@ LemmaDoc Exists.choose as "Exists.choose" in "Function" LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -351,6 +463,8 @@ LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function" LemmaDoc congrArg as "congrArg" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -359,6 +473,8 @@ LemmaDoc congrArg as "congrArg" in "Function" LemmaDoc congrFun as "congrFun" in "Function" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -368,6 +484,8 @@ LemmaDoc congrFun as "congrFun" in "Function" LemmaDoc Iff.symm as "Iff.symm" in "Logic" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -382,6 +500,8 @@ DefinitionDoc Even as "Even" " `even n` ist definiert als `∃ r, a = 2 * r`. Die Definition kann man mit `unfold even at *` einsetzen. +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -415,6 +535,8 @@ DefinitionDoc Surjective as "Surjective" DefinitionDoc Bijective as "Bijective" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -424,6 +546,8 @@ DefinitionDoc Bijective as "Bijective" DefinitionDoc LeftInverse as "LeftInverse" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` @@ -433,6 +557,8 @@ DefinitionDoc LeftInverse as "LeftInverse" DefinitionDoc RightInverse as "RightInverse" " +## Eigenschaften + * `simp`-Lemma: * Namespace: `-` * Minimal Import: `Mathlib.` diff --git a/server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean b/server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean index 9eeab66..7d5bf80 100644 --- a/server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean +++ b/server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean @@ -106,4 +106,4 @@ ist deine! " NewTactic push_neg -NewLemma even_iff_not_odd odd_iff_not_even not_exists not_forall +NewLemma Nat.even_iff_not_odd Nat.odd_iff_not_even not_exists not_forall diff --git a/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean b/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean index a990e16..57681d9 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean @@ -26,7 +26,7 @@ Statement not_mem_empty "" {A : Type} (x : A) : **Robo**: Dann behaupte das doch." tauto -NewLemma mem_univ +NewLemma Set.mem_univ Conclusion "Der Junge rennt weiter. diff --git a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean index 63d3f3b..04a74bf 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean @@ -52,8 +52,7 @@ Statement subset_empty_iff {A : Type _} (s : Set A) : constructor intro h - rw [Subset.antisymm_iff] - constructor + apply Subset.antisymm assumption simp only [empty_subset] intro a @@ -63,6 +62,6 @@ Statement subset_empty_iff {A : Type _} (s : Set A) : NewTactic constructor intro rw assumption rcases simp tauto trivial -NewLemma Subset.antisymm_iff empty_subset +NewLemma Subset.antisymm empty_subset end MySet diff --git a/server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean b/server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean index 15f6394..fc4e714 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean @@ -47,6 +47,4 @@ Statement eq_empty_iff_forall_not_mem NewTactic constructor intro rw assumption rcases simp tauto trivial -NewLemma Subset.antisymm_iff empty_subset - end MySet diff --git a/server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean b/server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean index bc69079..b3adf6e 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean @@ -31,5 +31,3 @@ Statement nonempty_iff_ne_empty rfl NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean b/server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean index 098ca27..cbb767b 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean @@ -27,5 +27,3 @@ Statement simp NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean b/server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean index 906bac4..8da2a5a 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean @@ -31,5 +31,3 @@ Statement rw [univ_union] NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean b/server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean index f454337..f9481bf 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean @@ -31,5 +31,3 @@ Statement exact h4 NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean b/server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean index 6dd11f4..fbcf31c 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean @@ -34,5 +34,3 @@ Statement exact hx NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean b/server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean index 40c786d..23f484f 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean @@ -33,5 +33,3 @@ Statement rfl NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean b/server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean index 50a1e18..f87e21b 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean @@ -33,5 +33,3 @@ Statement ring NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean b/server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean index 7162728..c2fbe30 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean @@ -38,5 +38,3 @@ Statement NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean b/server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean index df5d23e..606947f 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean @@ -37,5 +37,3 @@ Statement NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean b/server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean index 94d3ae8..975846f 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean @@ -35,5 +35,3 @@ Statement NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean b/server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean index 5d81257..d138956 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean @@ -29,5 +29,3 @@ Statement library_search NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean b/server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean index 93569fb..61abddd 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean @@ -24,5 +24,3 @@ Statement ring NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean b/server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean index 7a9d10e..c61c6ab 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean @@ -23,5 +23,3 @@ Statement "" : True := sorry NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset diff --git a/server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean b/server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean index 52d376c..1e45403 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean @@ -24,5 +24,3 @@ Statement ring NewTactic constructor intro rw assumption rcases simp tauto trivial - -NewLemma Subset.antisymm_iff empty_subset From 83ee409f472e59cac17e2ecea37d723edf9880e4 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Mon, 20 Mar 2023 17:53:39 +0100 Subject: [PATCH 13/29] levels --- .../TestGame/Levels/LinearAlgebra.lean | 1 - .../Levels/LinearAlgebra/M02_LinearIndep.lean | 41 +++++++++++-------- .../Levels/LinearAlgebra/M04_Basis.lean | 21 ++++++++-- .../Levels/LinearAlgebra/M05_Basis.lean | 19 --------- .../Levels/SetTheory/L04_SubsetEmpty.lean | 2 +- 5 files changed, 43 insertions(+), 41 deletions(-) delete mode 100644 server/testgame/TestGame/Levels/LinearAlgebra/M05_Basis.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra.lean b/server/testgame/TestGame/Levels/LinearAlgebra.lean index 816817f..676e2db 100644 --- a/server/testgame/TestGame/Levels/LinearAlgebra.lean +++ b/server/testgame/TestGame/Levels/LinearAlgebra.lean @@ -10,7 +10,6 @@ import TestGame.Levels.LinearAlgebra.L08_GeneratingSet import TestGame.Levels.LinearAlgebra.M01_LinearMap import TestGame.Levels.LinearAlgebra.M02_LinearIndep import TestGame.Levels.LinearAlgebra.M04_Basis -import TestGame.Levels.LinearAlgebra.M05_Basis import TestGame.Levels.LinearAlgebra.N01_Span import TestGame.Levels.LinearAlgebra.N02_Span diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean b/server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean index 0114b45..a6d0d4e 100644 --- a/server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean +++ b/server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean @@ -8,6 +8,7 @@ import Mathlib.Data.Fin.VecNotation -- import Mathlib.LinearAlgebra.Finsupp import Mathlib.Algebra.BigOperators.Basic -- default -- import Mathlib.LinearAlgebra.LinearIndependent +import Mathlib Game "TestGame" World "Basis" @@ -15,7 +16,9 @@ Level 2 Title "Lineare Unabhängigkeit" ---notation "ℝ²" => Fin 2 → ℝ +namespace Ex_LinIndep + +scoped notation "ℝ²" => Fin 2 → ℝ Introduction " @@ -23,18 +26,24 @@ Introduction Statement "Zeige, dass `![1, 0], ![1, 1]` linear unabhängig über `ℝ` sind." - : True := by -- linearIndependent ℝ ![(![1, 0] : ℝ²), ![1, 1]] := by - trivial - --- begin --- rw fintype.linear_independent_iff, --- intros c h, --- simp at h, --- intros i, --- fin_cases i, --- swap, --- { exact h.2 }, --- { have h' := h.1, --- rw [h.2, add_zero] at h', --- exact h'} --- end + : LinearIndependent ℝ ![(![1, 0] : ℝ²), ![1, 1]] := by + Hint "`rw [Fintype.linearIndependent_iff]`" + rw [Fintype.linearIndependent_iff] + Hint "`intros c h`" + intros c h + Hint "BUG: `simp at h` does not work :(" + simp at h -- doesn't work + sorry + + -- rw [Fintype.linearIndependent_iff] + -- intros c h + -- simp at h + -- intros i + -- fin_cases i + -- swap + -- { exact h.2 } + -- { have h' := h.1 + -- rw [h.2, add_zero] at h' + -- exact h'} + +end Ex_LinIndep diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean b/server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean index 66c3304..25b5553 100644 --- a/server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean +++ b/server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean @@ -1,6 +1,7 @@ import TestGame.Metadata import Mathlib.Algebra.Module.Submodule.Lattice +import Mathlib Game "TestGame" World "Basis" @@ -8,12 +9,24 @@ Level 4 Title "Basis" +namespace Ex_Basis + +scoped notation "ℝ²" => Fin 2 → ℝ + +open Submodule + Introduction " " -Statement -"" - : True := by -- Basis (Fin 2) ℝ ℝ² := by - trivial +lemma exercise1 : LinearIndependent ℝ ![(![1, 0] : ℝ²), ![1, 1]] := sorry + +lemma exercise2 : ⊤ ≤ span ℝ (Set.range ![(![1, 0] : Fin 2 → ℝ), ![1, 1]]) := sorry + +Statement : Basis (Fin 2) ℝ ℝ² := by + apply Basis.mk + apply exercise1 + apply exercise2 + +end Ex_Basis diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M05_Basis.lean b/server/testgame/TestGame/Levels/LinearAlgebra/M05_Basis.lean deleted file mode 100644 index ed5be65..0000000 --- a/server/testgame/TestGame/Levels/LinearAlgebra/M05_Basis.lean +++ /dev/null @@ -1,19 +0,0 @@ -import TestGame.Metadata - -import Mathlib.Algebra.Module.Submodule.Lattice - -Game "TestGame" -World "Basis" -Level 5 - -Title "Lineare Abbildung" - -Introduction -" - -" - -Statement -"" - : True := by - trivial diff --git a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean index 04a74bf..431dc1c 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean @@ -62,6 +62,6 @@ Statement subset_empty_iff {A : Type _} (s : Set A) : NewTactic constructor intro rw assumption rcases simp tauto trivial -NewLemma Subset.antisymm empty_subset +NewLemma Subset.antisymm Subset.antisymm_iff empty_subset end MySet From a4d1130487313f86abc9b51aa4f74fdd7f5289c4 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Tue, 21 Mar 2023 11:01:36 +0100 Subject: [PATCH 14/29] refine_struct --- .../TestGame/StructInstWithHoles.lean | 1698 +++++++++++++++++ .../TestGame/StructInstWithHolesTest.lean | 114 ++ 2 files changed, 1812 insertions(+) create mode 100644 server/testgame/TestGame/StructInstWithHoles.lean create mode 100644 server/testgame/TestGame/StructInstWithHolesTest.lean diff --git a/server/testgame/TestGame/StructInstWithHoles.lean b/server/testgame/TestGame/StructInstWithHoles.lean new file mode 100644 index 0000000..0921856 --- /dev/null +++ b/server/testgame/TestGame/StructInstWithHoles.lean @@ -0,0 +1,1698 @@ +/- Copied from `https://github.com/leanprover-community/mathlib4/tree/thorimur/refine_struct-via-StructInst` -/ + +/- +Copyright (c) 2020 Microsoft Corporation. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Leonardo de Moura +-/ +import Lean.Util.FindExpr +import Lean.Parser.Term +import Lean.Meta.Structure +import Lean.Elab.App +import Lean.Elab.Binders + +set_option autoImplicit true + +/-! + # Structure Instances With (Variadic) Holes + This file defines a term elaborator for structure instance syntax that includes "variadic holes", + i.e. holes of "variable length", which are represented via via the syntax `?..`, `?..!`, etc., + e.g. `{ x := 0, ?.. }`. + This serves to port the functionality of mathlib3's `refine_struct { .. }`, but via `refine` + (e.g. `refine { ?.. }`). + Lean currently already supports one form of variadic hole in structure instances, namely `..`, + which fills all unspecified fields with natural metavariables and which is frequently used in + pattern matching. + Variadic holes that begin with a question mark are meant to parallel named holes (e.g. `?x`). + Therefore, syntax like `{ x := 0, ?.. }` will fill all remaining fields with metavariables named + by the field in question (e.g. `y := ?y`). Identifiers can optionally be provided to prefix the + name; see below. + Tests are performed in `Tests/StructInstWithHoles.lean`. + At the end of this file, we implement `haveFieldProj` in analogy to `have_field` with some + modifications. (This might be moved or eliminated.) + ## Current specifics + The following is subject to change. + Several variants are supported to enable the choice between synthetic holes (`?`) and natural + ones, and to enable the choice between filling all unspecified fields with holes (`!`) and + synthesizing defaults where possible. + Currently only three combinations are allowed, since I can't see a use for unnamed/natural goals + with synthesized defaults. More descriptive syntax might be used for indicating whether to + synthesize defaults or not (e.g. `?.. noDefaults`) + synthesize defaults + ┌──true──┬─false──┐ + named goals │ `?..` │ `?..!` │ + ├────────┼────────┤ + unnamed goals │ × │ `..` │ + └────────┴────────┘ + Identifiers can be provided after the variadic hole syntax in the `?` case, e.g. `?..foo` and + `?..!foo`. These will be prefixed to the goal name. For example, a field `y`'s goal will be named + `foo.y` instead of `y`. + # Overview of existing code + This document began as `StructInst.lean`, then was modified as needed. The modifications are done + in such a way as to (hopefully) make it easy for them to be absorbed into `StructInst.lean`, if + that's where it ends up. The following details how the original `StructInst.lean` works (which is + largely preserved). + ## Short version + The way this works is that we start with syntax, parse it into a bare-bones `Struct`, use + `expandStruct` to expand that struct into another struct that has intermediate indicators + (`FieldVal`s) holding raw syntax or accounting for its absence. We then `elabStruct` that struct + into an `ElabStructResult` which has the potential result expression (an application of the + structure's single constructor to its values, which may be metavariables if they weren't found in + the syntax) plus info on the original struct. We then synthesize defaults using `propagate` to + assign any metavariables standing in for default values, and then return the expression. + ## Long version + We start with turning the syntax into a struct. First we extract the sources (everything before + the `with` and any variadic holes (`..` or similar)), then we feed this to `elabStructInstAux` + along with the raw syntax and expected type. Inside `elabStructInstAux` we make the syntax into a + Struct (`mkStructView`), then `expandStruct`. + There's a "pre-expression scaffolding/framework/spine" set up early on in the process in the form + of FieldVal's, which hold raw information: `.term stx` where `stx` is syntax, if a term was + provided; a `.missing` value if it was missing; or a `.nested s` value where `s` is a `Struct` if + a subobject relation obtains. The `FieldVal`s for a field might be modified as elaboration + proceeds: for example, some might become `.nested`, or some defaults might turn into terms. This + all happens during `expandStruct`. + The `Struct` holds everything, and is updated throughout the process. + One of its fields is `field`, which holds a list of `Field Struct`'s. (The appearance of `Struct` + within `Field Struct` is to allow the `Struct`s to nest other `Struct`s when we have subobjects.) + The fields of each element of the `field` field (got that?) are + * `ref : Syntax`, which holds the `Syntax` found for that field + * `lhs : FieldLHS`, which describes the name of the field in question + * `val : FieldVal`, which holds the pre-expression `FieldVal`—either `.term stx` where `stx` is + the syntax of the field's value, `.default` (now `.missing`) if no syntax was found, or `.nested + s` if the field represents a subobject `s` of the structure (e.g. `toFoo`, produced by `extends`) + * `expr? : Option Expr`, which holds the elaborated expression when it becomes available (or a + metavariable, if the syntax is missing), and which begins at this stage as `none`. + `elacStructInstAux` then calls `elabStruct` on the skeletal `Struct` (which has appropriate + `FieldVal`s, but `none` for each field's `expr?`), which turns the `Struct` into an + `ElabStructResult`. + `elabStruct` elaborates everything but defaults, constructing the structure instance as an + expression given by the application of the structure's constructor to the values it finds by + elaborating the `stx` in any `.term stx` `FieldVal` while ensuring the appropriate type. (It's + not quite true that no defaults are taken care of here: `autoparam`s are turned into `.term`s.) + If the `FieldVal` is `.nested s`, it calls `elabStruct` on `s`; if it finds a `.default` (now + renamed to `.missing`) `FieldVal`, it uses a fresh metavariable in place of an elaborated + expression. As it does this, it stores any elaborated expressions in the `expr?` field of its + fields and builds this constructor application expression, which is, in the resulting + `ElabStructResult` structure, confusingly also named "val". Occasionally the `FieldVals` for each + field are updated as well. Also returned in `ElabStructResult` is the updated Struct with all its + new fields, and `instMVars`, an array of metavariables for dealing with typeclass instance + synthesis. + During `elabStruct`, defaults were inserted as metavariables into the constructed expression and + into `expr?`, but they were also annotated with ``structInstDefault` to indicate that they + represented a missing default value, and needed to be synthesized during the default loop. + Indeed, the function `isMissingDefault?` checks that this metavariable is unassigned when + deciding whether to return true or false. We finish our elaboration of the structure instance + with the `propagate` loop, which iteratively synthesizes the defaults, as sometimes the default + values of fields reference other fields which may also have a default value (etc.). + # Modifications + Changes from `StructInst.lean` are no longer marked with `!!` in a comment (or with `!!/`, `!!\` + surrounding a new or altered block). These are however visible in past commits. + Existing comments are left unchanged, and new comments begin with "~~". + ## Syntax + We use the parser from `Term.lean`, but change `optional ".."` to our parseer for variadic holes, + `variadicHole` + ## Logic + The original implementation of `..`, which creates a natural metavariable for each goal (and does + not synthesize defaults) affects things early on, at the stage of `FieldVal`s. Instead of using a + `.default` `FieldVal`, it makes a hole via syntax by providing a `.term (mkHole ref)` `FieldVal` + for each missing field value. + We preserve this behavior only for the `isSynthetic := false, useDefaults := false` case. + Otherwise, we use the `.default` `FieldVal`—now renamed to `.missing` to reflect its changed + function—and intervene mostly within the `ImplicitFields` namespace (previously the + `DefaultFields` namespace), where defaults are synthesized. If the variadic hole syntax says not + to, we don't propagate the default-synthesizing loop and therefore don't synthesize any defaults. + Typically, when the default loop ends with some fields still annotated as missing, an error is + thrown (`fields missing: ...`). However, if there's a variadic hole, we simply return from the + loop without error; next (whether the loop has run or not) we assign those remaining annotated + fields to *new* metavariables, which, in the `isSynthetic := true` case, are well-named and hold + all of the metadata we want them to. These are ripe to be used in a `refine` statement. + The only exception to this flow is how we handle `autoparam`s: autoparams are handled in + `elabStruct`, so that's where we intervene as well. + ## Style + New code is often written in a "lookahead" fashion, to make it as easy as possible to move this + to core, in case it would better belong there. Therefore some cases that don't occur in this + elaboration are nonetheless accounted for—for example, the case where variadic hole syntax is + absent (where the value of struct.source.implicit is none), and the case where `isSynthetic := + false, useDefaults := false`, which is already accounted for by existing `..` syntax. We use a + different token (`...`) only to show that this works. + This modification of `StructInst.lean` also attempts to be "minimally invasive" by intervening in + as few places as possible and leaving the existing flow of computation intact. + ## Locations of changes + The changes to existing definitions are localized to the following: + ### Necessary parsing and syntax processing changes + * The `structInst` term parser was modified to allow variadic hole syntax. + * `expandStructInstFieldAbbrev` + * update `$[..%$ell]?` syntax match to accommodate variadic holes + * type of `implicit` in `Source` structure: `Option Syntax` ⇒ `Option VariadicHoleConfig` + * originally this held the syntax `..` if present; now it holds information derived from the + variadic hole syntax (if present) as opposed to the raw syntax + * `getStructSource` + * inserted `getVariadicHoleConfig?` in front of the raw `implicitSource` syntax to process it + into a `VariadicHoleConfig` + * `formatStruct` + * instead of using a literal `".."` whenever `implicit.isSome`, use the syntax we encountered + (stored as one of the fields of `VariadicHoleConfig`) + ### Logic + **Simple renamings** + * The `.default` `FieldVal`, which was used to indicate that fields would be synthesized by the + default loop, is renamed to `.missing` for clarity. Likewise `Struct.allDefault` is renamed to + `Struct.allMissing` (since it simply checks these `FieldVal`s), and `formatField` formats + `.missing` fields via `""` instead of via `""`. + * We rename the `DefaultFields` namespace to `ImplicitFields`, since this is now where we + intervene to handle holes as well. + **Setup changes** + * `addMissingFields`, which is responsible for attaching `.missing` to unspecified fields, + previously attached a `.term (mkHole stx)` to any missing field whenever `..` was present. Here, + we only do so in the `isSynthetic := false, useDefaults := false` case, attaching `.missing` in + all other cases (both when we exepct them to be synthesized as defaults and not). + * `elabStruct` – this function uses `FieldVal`s to 1) generate `expr?`s for each field when + possible and 2) apply the structure's constructor to the arguments it finds to build the instance + expression. It stops short of synthesizing defaults, inserting a metavariable in both places when + it encounters a `.missing` field. However, autoparams for `.missing` values are handled here. We + therefore modify that section of the code so that + * if the variadic hole says to use holes instead of defaults, we don't try the autoparam + * if it says to use defaults, we try the autoparam in such a way that if it fails we use a hole + instead + * we also need to introduce a new optional `Bool` argument to the internal `cont` function + that, when modified from its default, takes a different branch. Otherwise `cont` is + untouched, and the original behavior is used when this argument is not specified. + * if there's no variadic hole, use the original behavior + **Default loop changes** + * `propagateLoop` – this is a pass of the loop used for synthesizing defaults, and is responsible + for throwing an error when too few fields are specified. If there is a variadic hole, it does not + throw that error and simply returns. + * `propagate` – this sets things up for the loop and executes it. + * We check the variadic hole config and don't run `propagateLoop` if it says not to. (We start + with a `do` to accommodate this.) + * At the end, if there is a variadic hole, we run `assignRemainingDefaultsToFieldHoles` (a new + function which does what you expect) + ## New Code + The new functionality is in the `ImplicitFields` section to attach metadata to the goals + produced. Currently, we attach the metadata as a `KVMap` to the type of the goal, but this may + change. We use this metadata to resolve name conflicts, appending an appropriate index if any + existing metavariable is from a structure that shares a field name. This is meant to improve + clarity: for example, if `Foo` and `Bar` both have fields `x` and `y`, + `refine ({ y := 0, ?.. : Foo}, { x := 1, ?.. : Bar})` will produce goals `x` and `y_1` to show + that these are not from the same structure. (This may change if we decide to prefix each goal + name with the name of the structure.) + # Questions + * Should `trySynthStructInstance?` be run even when `useDefaults` is `false`? + * what about `bi == .instImplicit`? Should default synthesis be avoided in that case too? + * Dhould metadata be on the type, or somewhere else? + * Is the best way to get a unique id for a syntax instance via getPos? Do we need to do so anyway? + * Should utility-like functions be refactored into other files? + * Can the docstrings of the original structure instance and `refine` be modified from "within + mathlib" somehow? + * Do I need to add to "authors" at the top or worry about the copyright? + * Check for unreachable code after design decisions have been made. +-/ +namespace Lean.Elab.Term.StructInstWithHoles + +open Meta +open TSyntax.Compat + +/-- + A synthetic variadic hole. When used in structure instance syntax, it fills the unspecified + fields with metavariables named by the field. It synthesizes defaults when possible. + It can be followed by an identifier to specify a prefix for the names of the holes. + -/ +def vH?dd := leading_parser "?.." >> Parser.optional Parser.ident +/-- + A synthetic variadic hole that does not synthesize any defaults. When used in structure instance + syntax, it fills the unspecified fields with metavariables named by the field. It synthesizes + defaults when possible. It can be followed by an identifier to specify a prefix for the names of + the holes. + -/ +def vH?dd! := leading_parser "?..!" >> Parser.optional Parser.ident +/-~~! Removed for now. +/-- A natural variadic hole that does not synthesize defaults. -/ +def vHdd! := leading_parser "..!" +/-- A natural variadic hole that synthesizes defaults when possible. -/ +def vHdd := leading_parser "..." +-/ +/-- A variadic hole that fills multiple spots with holes. -/ +def variadicHole := leading_parser (vH?dd <|> vH?dd! /-~~! <|> vHdd! <|> vHdd-/) + +open Lean.Parser Lean.Parser.Term in +/-- +Structure instance. `{ x := e, ... }` assigns `e` to field `x`, which may be +inherited. If `e` is itself a variable called `x`, it can be elided: +`fun x => { x , y := 1 }`. +A *structure update* of an existing value can be given via `with`: +`{ point with x := 1 }`. +The structure type can be specified if not inferable: +`{ x := 1, y := 2 : Point }`. +`..` can be used in pattern-matching to fill all unspecified fields with `_`: +`match s with | { x := 1, .. } => ...` +`?..` fills all unspecified fields with automatically-named goals: +if a `Foo` has fields `x`, `y`, `z`, `{ x := 1, ?.. } : Foo` creates `?y`, `?z`. +-/ +@[term_parser] def structInstWithHoles := leading_parser "{" >> ppHardSpace >> Lean.Parser.optional +(atomic (sepBy1 termParser ", " >> " with ")) + >> sepByIndent (structInstFieldAbbrev <|> structInstField) ", " (allowTrailingSep := true) + >> variadicHole -- Only apply this elaboration to syntax that has one of these holes + >> Lean.Parser.optional (" : " >> termParser) >> " }" + +/-- + Syntactically move any type specification outside of the structure instance syntax: + `{ x := 0 : Foo }` becomes `{ x := 0 } : Foo`. +-/ +@[macro structInstWithHoles] def expandStructInstWithHolesExpectedType : Macro := fun stx => + let expectedArg := stx[4] + if expectedArg.isNone then + Macro.throwUnsupported + else + let expected := expectedArg[1] + let stxNew := stx.setArg 4 mkNullNode + `(($stxNew : $expected)) + +/-- Expand field abbreviations. Example: `{ x, y := 0 }` expands to `{ x := x, y := 0 }` -/ +@[macro structInstWithHoles] def expandStructInstWithHolesFieldAbbrev : Macro + | `({ $[$srcs,* with]? $fields,* $ell:variadicHole $[: $ty]? }) => + if fields.getElems.raw.any (·.getKind == ``Lean.Parser.Term.structInstFieldAbbrev) then do + let fieldsNew ← fields.getElems.mapM fun + | `(Parser.Term.structInstFieldAbbrev| $id:ident) => + `(Parser.Term.structInstField| $id:ident := $id:ident) + | field => return field + `({ $[$srcs,* with]? $fieldsNew,* $ell $[: $ty]? }) + else + Macro.throwUnsupported + | _ => Macro.throwUnsupported + +/-- + If `stx` is of the form `{ s₁, ..., sₙ with ... }` and `sᵢ` is not a local variable, expand into + `let src := sᵢ; { ..., src, ... with ... }`. + Note that this one is not a `Macro` because we need to access the local context. +-/ +private def expandNonAtomicExplicitSources (stx : Syntax) : TermElabM (Option Syntax) := do + let sourcesOpt := stx[1] + if sourcesOpt.isNone then + return none + else + let sources := sourcesOpt[0] + if sources.isMissing then + throwAbortTerm + let sources := sources.getSepArgs + if (← sources.allM fun source => return (← isLocalIdent? source).isSome) then + return none + if sources.any (·.isMissing) then + throwAbortTerm + return some (← go sources.toList #[]) +where + go (sources : List Syntax) (sourcesNew : Array Syntax) : TermElabM Syntax := do + match sources with + | [] => + let sources := Syntax.mkSep sourcesNew (mkAtomFrom stx ", ") + return stx.setArg 1 (stx[1].setArg 0 sources) + | source :: sources => + if (← isLocalIdent? source).isSome then + go sources (sourcesNew.push source) + else + withFreshMacroScope do + let sourceNew ← `(src) + let r ← go sources (sourcesNew.push sourceNew) + `(let src := $source; $r) + +/-- Information for any explicit sources encountered (i.e. some `sᵢ` in `s₁, ..., sₙ with`) -/ +structure ExplicitSourceInfo where + /-- The syntax of some `sᵢ` in `s₁, ..., sₙ with` -/ + stx : Syntax + /-- The name of some structure `sᵢ` in `s₁, ..., sₙ with` -/ + structName : Name + deriving Inhabited + +/-- + Information deduced from variadic hole syntax, as well as the raw + syntax itself and any identifiers that were found. +-/ +structure VariadicHoleConfig where + /-- The raw variadic hole syntax encountered (`?..`, `..`, etc.)-/ + stx : TSyntax ``variadicHole + /-- An optional name `x` found in `?..x` or `?..!x`, to be used as a prefix. -/ + name : Option Name := none + /-- Whether the holes should be synthetic and automatically named. -/ + isSynthetic : Bool + /-- Whether defaults should attempt to be synthesized before filling fields with holes. -/ + useDefaults : Bool + deriving Inhabited, Repr + +/-- + Information on other sources of field values via structure update syntax or variadic holes. + Collects of explicit source info (preceding `with` in structure updates) and implicit source + info (for specification of holes, e.g. `..` or `?..`). +-/ +structure Source where + /-- info for all `sᵢ` in `s₁, ..., sₙ with` -/ + explicit : Array ExplicitSourceInfo + /-- info for any variadic hole syntax encountered (`?..`, `..`, etc.) -/ + implicit : Option VariadicHoleConfig + deriving Inhabited + +/-- Check if neither an explicit nor an implicit source has been specified. -/ +def Source.isNone : Source → Bool + | { explicit := #[], implicit := none } => true + | _ => false + +/-- Process variadic hole syntax into a VariadicHoleConfig. -/ +def getVariadicHoleConfig? : TSyntax ``variadicHole → Option VariadicHoleConfig +| stx => match stx with + | `(variadicHole|?..$[$x:ident]?) => some + {stx, isSynthetic := true, useDefaults := true, name := x.map Syntax.getId} + | `(variadicHole|?..!$[$x:ident]?) => some + {stx, isSynthetic := true, useDefaults := false, name := x.map Syntax.getId} + | _ => none + +/-- + Put an array of source syntax into a form which matches + `optional (atomic (sepBy1 termParser ", " >> " with ")`, e.g. `s₁, s₂, s₃ with`. + Should only be called when `sources` is a nonempty `Array`. + -/ +private def mkSourcesWithSyntax (sources : Array Syntax) : Syntax := + let ref := sources[0]! + let stx := Syntax.mkSep sources (mkAtomFrom ref ", ") + mkNullNode #[stx, mkAtomFrom ref "with "] + +/-- + Extract and process both explicit (`s₁, ..., sₙ with`) and implicit (`..`, `?..`, etc.) source + syntax from structure syntax. +-/ +private def getStructSource (structStx : Syntax) : TermElabM Source := + withRef structStx do + let explicitSource := structStx[1] + let implicitSource := structStx[3] + let explicit ← if explicitSource.isNone then + pure #[] + else + explicitSource[0].getSepArgs.mapM fun stx => do + let some src ← isLocalIdent? stx | unreachable! + addTermInfo' stx src + let srcType ← whnf (← inferType src) + tryPostponeIfMVar srcType + let structName ← getStructureName srcType + return { stx, structName } + let implicit := + if implicitSource[0].isNone + then none + else getVariadicHoleConfig? implicitSource + return { explicit, implicit } + +/-- + We say a `{ ... }` notation is a `modifyOp` if it contains only one + ``` + def structInstArrayRef := leading_parser "[" >> termParser >>"]" + ``` +-/ +private def isModifyOp? (stx : Syntax) : TermElabM (Option Syntax) := do + let s? ← stx[2].getSepArgs.foldlM (init := none) fun s? arg => do + /- arg is of the form `structInstFieldAbbrev <|> structInstField` -/ + if arg.getKind == ``Lean.Parser.Term.structInstField then + /- Remark: the syntax for `structInstField` is + ``` + def structInstLVal := leading_parser (ident <|> numLit <|> structInstArrayRef) >> many + (group ("." >> (ident <|> numLit)) <|> structInstArrayRef) + def structInstField := leading_parser structInstLVal >> " := " >> termParser + ``` + -/ + let lval := arg[0] + let k := lval[0].getKind + if k == ``Lean.Parser.Term.structInstArrayRef then + match s? with + | none => return some arg + | some s => + if s.getKind == ``Lean.Parser.Term.structInstArrayRef then + throwErrorAt arg "invalid \{...} notation, at most one `[..]` at a given level" + else + throwErrorAt arg "invalid \{...} notation, can't mix field and `[..]` at a given level" + else + match s? with + | none => return some arg + | some s => + if s.getKind == ``Lean.Parser.Term.structInstArrayRef then + throwErrorAt arg "invalid \{...} notation, can't mix field and `[..]` at a given level" + else + return s? + else + return s? + match s? with + | none => return none + | some s => if s[0][0].getKind == ``Lean.Parser.Term.structInstArrayRef then return s? else + return none + +/-- Elaborate `modifyOp`s given a single explicit source. -/ +private def elabModifyOp (stx modifyOp : Syntax) (sources : Array ExplicitSourceInfo) +(expectedType? : Option Expr) : TermElabM Expr := do + if sources.size > 1 then + throwError "invalid \{...} notation, multiple sources and array update is not supported." + let cont (val : Syntax) : TermElabM Expr := do + let lval := modifyOp[0][0] + let idx := lval[1] + let self := sources[0]!.stx + let stxNew ← `($(self).modifyOp (idx := $idx) (fun s => $val)) + trace[Elab.struct.modifyOp] "{stx}\n===>\n{stxNew}" + withMacroExpansion stx stxNew <| elabTerm stxNew expectedType? + let rest := modifyOp[0][1] + if rest.isNone then + cont modifyOp[2] + else + let s ← `(s) + let valFirst := rest[0] + let valFirst := if valFirst.getKind == ``Lean.Parser.Term.structInstArrayRef then valFirst + else valFirst[1] + let restArgs := rest.getArgs + let valRest := mkNullNode restArgs[1:restArgs.size] + let valField := modifyOp.setArg 0 <| mkNode ``Parser.Term.structInstLVal #[valFirst, valRest] + let valSource := mkSourcesWithSyntax #[s] + let val := stx.setArg 1 valSource + let val := val.setArg 2 <| mkNullNode #[valField] + trace[Elab.struct.modifyOp] "{stx}\nval: {val}" + cont val + +/-- + Get structure name. + This method tries to postpone execution if the expected type is not available. + If the expected type is available and it is a structure, then we use it. + Otherwise, we use the type of the first source. +-/ +private def getStructName (expectedType? : Option Expr) (sourceView : Source) : TermElabM Name := do + tryPostponeIfNoneOrMVar expectedType? + let useSource : Unit → TermElabM Name := fun _ => do + unless sourceView.explicit.isEmpty do + return sourceView.explicit[0]!.structName + match expectedType? with + | some expectedType => throwUnexpectedExpectedType expectedType + | none => throwUnknownExpectedType + match expectedType? with + | none => useSource () + | some expectedType => + let expectedType ← whnf expectedType + match expectedType.getAppFn with + | Expr.const constName _ => + unless isStructure (← getEnv) constName do + throwError "invalid \{...} notation, structure type expected{indentExpr expectedType}" + return constName + | _ => useSource () +where + throwUnknownExpectedType := + throwError "invalid \{...} notation, expected type is not known" + throwUnexpectedExpectedType type (kind := "expected") := do + let type ← instantiateMVars type + if type.getAppFn.isMVar then + throwUnknownExpectedType + else + throwError "invalid \{...} notation, {kind} type is not of the form (C ...){indentExpr type}" + +/-- Information on the left hand side of a binding encountered in structure syntax. -/ +inductive FieldLHS where + /-- A representation of the name of a field as encountered in binding syntax (e.g. `x` in + `x := ...`). -/ + | fieldName (ref : Syntax) (name : Name) + /-- A representation of the index of a field as encountered in binding syntax (e.g. `3` in + `3 := ...`). -/ + | fieldIndex (ref : Syntax) (idx : Nat) + /-- A representation of a modifyOp as encountered in binding syntax. -/ + | modifyOp (ref : Syntax) (index : Syntax) + deriving Inhabited + +instance : ToFormat FieldLHS := ⟨fun lhs => + match lhs with + | .fieldName _ n => format n + | .fieldIndex _ i => format i + | .modifyOp _ i => "[" ++ i.prettyPrint ++ "]"⟩ + +/-- + A limited, pre-expression description of the values of fields. Only terms given by raw syntax, + nested values (for subobjects), and missing values are can be specified. + The polymorphism via its `Type` argument is only used for nested `FieldVal`s, which need to + know what type their argument should be. In practice, we only ever take this argument to be + `Struct`. + -/ +inductive FieldVal (σ : Type) where + /-- Term syntax encountered on the RHS of a binding, e.g. `1+1` in `x := 1+1`. -/ + | term (stx : Syntax) : FieldVal σ + /-- A nested `FieldVal`, which in practice is used to hold subobjects as `Struct`s. -/ + | nested (s : σ) : FieldVal σ + /-- An indication that this field was missing, i.e. not specified explicitly in the syntax. -/ + | missing : FieldVal σ + deriving Inhabited + +/-- + A representation of a field in a structure. This contains the original syntax of the field + (`ref`), a representation of the LHS of the `:=` binding (`lhs`), the pre-expression `FieldVal` + (`val`), and the actual expression that we take to be the value of the field (`expr?`). + `expr?` begins as `none`, and is modified over the course of this code as we figure out whether + we need to elaborate some syntax encountered (e.g. if `.term stx` is in `val`) or if the field + value is `.missing` (in which case we make a metavariable). +-/ +structure Field (σ : Type) where + /-- The syntax of the binding used to specify this field. -/ + ref : Syntax + /-- Information on the LHS of the binding used to specify this field. -/ + lhs : List FieldLHS + /-- The basic content of the field value, prior to elaboration. -/ + val : FieldVal σ + /-- The elaborated value of the field in question as it becomes available, which starts + out as `none` and is updated during `elabStruct` with either elaborated terms or + metavariables which may get assigned to synthesized defaults. -/ + expr? : Option Expr := none + deriving Inhabited + +/-- Check if the LHS of the binding specifying a field is a single `FieldLHS`. -/ +def Field.isSimple {σ} : Field σ → Bool + | { lhs := [_], .. } => true + | _ => false + +/-- + The organized content of the structure instance. + The field `params` is used for `.missing` value propagation. It is initially empty, and + then set at `elabStruct`. -/ +inductive Struct where + | mk (ref : Syntax) (structName : Name) (params : Array (Name × Expr)) + (fields : List (Field Struct)) (source : Source) + deriving Inhabited + +/-- Abbreviation for `List (Field Struct)`: A list of representations of the structure's fields. -/ +abbrev Fields := List (Field Struct) + +/-- The original syntax of the structure instance. -/ +def Struct.ref : Struct → Syntax + | ⟨ref, _, _, _, _⟩ => ref + +/-- The name of the structure. -/ +def Struct.structName : Struct → Name + | ⟨_, structName, _, _, _⟩ => structName + +/-- Parameters used during the initial processing of `.missing` fields. Initially `none`, and set + at `elabStruct`. -/ +def Struct.params : Struct → Array (Name × Expr) + | ⟨_, _, params, _, _⟩ => params + +/-- The list of `fields` in the structure instance as `Field Struct`s. Updated over the course of + the elaboration to include computed values. -/ +def Struct.fields : Struct → Fields + | ⟨_, _, _, fields, _⟩ => fields + +/-- Information on other sources of values for the structure. Namely, any structures preceding + `with` in structure update syntax and any variadic holes (`..`, `?..`) following the field + bindings. -/ +def Struct.source : Struct → Source + | ⟨_, _, _, _, s⟩ => s + +/-- `true` iff all fields of the given structure are marked as `.missing`. -/ +partial def Struct.allMissing (s : Struct) : Bool := + s.fields.all fun { val := val, .. } => match val with + | .term _ => false + | .missing => true + | .nested s => allMissing s + +/-- Pretty-prints a field (`Field Struct`). Uses the field LHS's and its `val : FieldVal Struct`. -/ +def formatField (formatStruct : Struct → Format) (field : Field Struct) : Format := + Format.joinSep field.lhs " . " ++ " := " ++ + match field.val with + | .term v => v.prettyPrint + | .nested s => formatStruct s + | .missing => "" + +/-- Pretty-prints a `Struct`. -/ +partial def formatStruct : Struct → Format + | ⟨_, _, _, fields, source⟩ => + let fieldsFmt := Format.joinSep (fields.map (formatField formatStruct)) ", " + let implicitFmt := match source.implicit with + | some v => format v.stx + | none => "" + if source.explicit.isEmpty then + "{" ++ fieldsFmt ++ implicitFmt ++ "}" + else + "{" ++ format (source.explicit.map (·.stx)) ++ " with " ++ fieldsFmt ++ implicitFmt ++ "}" + +instance : ToFormat Struct := ⟨formatStruct⟩ +instance : ToString Struct := ⟨toString ∘ format⟩ + +instance : ToFormat (Field Struct) := ⟨formatField formatStruct⟩ +instance : ToString (Field Struct) := ⟨toString ∘ format⟩ + +/-- +Turns a `FieldLHS` into syntax. The first argument specifies whether this is the first in a list of +`FieldLHS`'s or not. +Recall that `structInstField` elements have the form +``` + def structInstField := leading_parser structInstLVal >> " := " >> termParser + def structInstLVal := leading_parser (ident <|> numLit <|> structInstArrayRef) + >> many (("." >> (ident <|> numLit)) <|> structInstArrayRef) + def structInstArrayRef := leading_parser "[" >> termParser >>"]" +``` +Remark: this code relies on the fact that `expandStruct` only transforms `fieldLHS.fieldName` +-/ +def FieldLHS.toSyntax (first : Bool) : FieldLHS → Syntax + | .modifyOp stx _ => stx + | .fieldName stx name => if first then mkIdentFrom stx name + else mkGroupNode #[mkAtomFrom stx ".", mkIdentFrom stx name] + | .fieldIndex stx _ => if first then stx else mkGroupNode #[mkAtomFrom stx ".", stx] + +/-- Extracts the `stx` from a `.term stx : FieldVal Struct`. Panics when called on any other + constructor of `FieldVal Struct`. -/ +def FieldVal.toSyntax : FieldVal Struct → Syntax + | .term stx => stx + | _ => unreachable! + +/-- Turns a field (as a `Field Struct`) into syntax if has a `val` of the form `.term stx`; panics + otherwise. Panics if the `lhs` is an empty list. -/ +def Field.toSyntax : Field Struct → Syntax + | field => + let stx := field.ref + let stx := stx.setArg 2 field.val.toSyntax + match field.lhs with + | first::rest => stx.setArg 0 <| mkNullNode + #[first.toSyntax true, mkNullNode <| rest.toArray.map (FieldLHS.toSyntax false) ] + | _ => unreachable! + +/-- Processes syntax into a `FieldLHS`. -/ +private def toFieldLHS (stx : Syntax) : MacroM FieldLHS := + if stx.getKind == ``Lean.Parser.Term.structInstArrayRef then + return FieldLHS.modifyOp stx stx[1] + else + -- Note that the representation of the first field is different. + let stx := if stx.getKind == groupKind then stx[1] else stx + if stx.isIdent then + return FieldLHS.fieldName stx stx.getId.eraseMacroScopes + else match stx.isFieldIdx? with + | some idx => return FieldLHS.fieldIndex stx idx + | none => Macro.throwError "unexpected structure syntax" + +/-- Processes structure instance syntax into a `Struct` given the `structName` and its `source`s. -/ +private def mkStructView (stx : Syntax) (structName : Name) (source : Source) : MacroM Struct := do + /- Recall that `stx` is of the form + ``` + leading_parser "{" >> optional (atomic (sepBy1 termParser ", " >> " with ")) + >> sepByIndent (structInstFieldAbbrev <|> structInstField) ... + >> variadicHole + >> optional (" : " >> termParser) + >> " }" + ``` + This method assumes that `structInstFieldAbbrev` had already been expanded. + -/ + let fields ← stx[2].getSepArgs.toList.mapM fun fieldStx => do + let val := fieldStx[2] + let first ← toFieldLHS fieldStx[0][0] + let rest ← fieldStx[0][1].getArgs.toList.mapM toFieldLHS + return { ref := fieldStx, lhs := first :: rest, val := FieldVal.term val : Field Struct } + return ⟨stx, structName, #[], fields, source⟩ + +/-- (Monadic) Modifies a `Struct`'s fields with a monadic function. -/ +def Struct.modifyFieldsM {m : Type → Type} [Monad m] (s : Struct) (f : Fields → m Fields) : +m Struct := + match s with + | ⟨ref, structName, params, fields, source⟩ => + return ⟨ref, structName, params, (← f fields), source⟩ + +/-- Modify a `Struct`'s `Fields` with a function. -/ +def Struct.modifyFields (s : Struct) (f : Fields → Fields) : Struct := + Id.run <| s.modifyFieldsM f + +/-- Overwrite a `Struct`'s fields. -/ +def Struct.setFields (s : Struct) (fields : Fields) : Struct := + s.modifyFields fun _ => fields + +/-- Overwrite a `Struct`'s params. -/ +def Struct.setParams (s : Struct) (ps : Array (Name × Expr)) : Struct := + match s with + | ⟨ref, structName, _, fields, source⟩ => ⟨ref, structName, ps, fields, source⟩ + +/-- Breaks down non-anonymous names in the lhs of fields into lists of their components. -/ +private def expandCompositeFields (s : Struct) : Struct := + s.modifyFields fun fields => fields.map fun field => match field with + | { lhs := .fieldName _ (.str Name.anonymous ..) :: _, .. } => field + | { lhs := .fieldName ref n@(.str ..) :: rest, .. } => + let newEntries := n.components.map <| FieldLHS.fieldName ref + { field with lhs := newEntries ++ rest } + | _ => field + +/-- Replaces field lhs's that are specified by index with the name of the field (as registered in + the structure). -/ +private def expandNumLitFields (s : Struct) : TermElabM Struct := + s.modifyFieldsM fun fields => do + let env ← getEnv + let fieldNames := getStructureFields env s.structName + fields.mapM fun field => match field with + | { lhs := .fieldIndex ref idx :: rest, .. } => + if idx == 0 then throwErrorAt ref "invalid field index, index must be greater than 0" + else if idx > fieldNames.size + then throwErrorAt ref "invalid field index, structure has only #{fieldNames.size} fields" + else return { field with lhs := .fieldName ref fieldNames[idx - 1]! :: rest } + | _ => return field + +/-- For example, consider the following structures: + ``` + structure A where + x : Nat + structure B extends A where + y : Nat + structure C extends B where + z : Bool + ``` + This method expands parent structure fields using the path to the parent structure. + For example, + ``` + { x := 0, y := 0, z := true : C } + ``` + is expanded into + ``` + { toB.toA.x := 0, toB.y := 0, z := true : C } + ``` +-/ +private def expandParentFields (s : Struct) : TermElabM Struct := do + let env ← getEnv + s.modifyFieldsM fun fields => fields.mapM fun field => do match field with + | { lhs := .fieldName ref fieldName :: _, .. } => + addCompletionInfo <| CompletionInfo.fieldId ref fieldName (← getLCtx) s.structName + match findField? env s.structName fieldName with + | none => throwErrorAt ref "'{fieldName}' is not a field of structure '{s.structName}'" + | some baseStructName => + if baseStructName == s.structName then pure field + else match getPathToBaseStructure? env baseStructName s.structName with + | some path => + let path := path.map fun funName => match funName with + | .str _ s => .fieldName ref (Name.mkSimple s) + | _ => unreachable! + return { field with lhs := path ++ field.lhs } + | _ => throwErrorAt ref "failed to access field '{fieldName}' in parent structure" + | _ => return field + +/-- Abbreviation for `HashMap Name Fields`: A hash map from field names to lists of representations + of fields. -/ +private abbrev FieldMap := HashMap Name Fields + +/-- Creates a hash map from field names to lists of representations of fields. The length of the + list can be greater than one if the field is not simple. Panics if the lhs of a field is empty. + -/ +private def mkFieldMap (fields : Fields) : TermElabM FieldMap := + fields.foldlM (init := {}) fun fieldMap field => + match field.lhs with + | .fieldName _ fieldName :: _ => + match fieldMap.find? fieldName with + | some (prevField::restFields) => + if field.isSimple || prevField.isSimple then + throwErrorAt field.ref "field '{fieldName}' has already been specified" + else + return fieldMap.insert fieldName (field::prevField::restFields) + | _ => return fieldMap.insert fieldName [field] + | _ => unreachable! + +/-- Unwraps a `Field Struct` from a list of length one, and otherwise returns `none`. -/ +private def isSimpleField? : Fields → Option (Field Struct) + | [field] => if field.isSimple then some field else none + | _ => none + +/-- Finds the index of the field name in its third argument in the list of field names in its + second. The first argument, the name of the structure, is used only for descriptive error + messages. -/ +private def getFieldIdx (structName : Name) (fieldNames : Array Name) (fieldName : Name) : +TermElabM Nat := do + match fieldNames.findIdx? fun n => n == fieldName with + | some idx => return idx + | none => throwError "field '{fieldName}' is not a valid field of '{structName}'" + +/-- Constructs the syntax for a field projection. Only does so if the given field name is in fact a + field of the given structure name; returns `none` otherwise. -/ +def mkProjStx? (s : Syntax) (structName : Name) (fieldName : Name) : TermElabM (Option Syntax) := do + if (findField? (← getEnv) structName fieldName).isNone then + return none + return some <| mkNode ``Parser.Term.proj #[s, mkAtomFrom s ".", mkIdentFrom s fieldName] + +/-- Gets a field from a list of fields by name. If not found, returns `none`. -/ +def findField? (fields : Fields) (fieldName : Name) : Option (Field Struct) := + fields.find? fun field => + match field.lhs with + | [.fieldName _ n] => n == fieldName + | _ => false + +mutual + + /-- Group fields that belong to a subobject as a `Struct` under that subobject field via a + `.nested s` `FieldVal`. For example, a `Struct` representing + `{ toFoo.x := 1, toFoo.y := 2, z := 3 }` will become one representing + `{ toFoo := { x := 1, y := 2 }, z := 3 }`. + -/ + private partial def groupFields (s : Struct) : TermElabM Struct := do + let env ← getEnv + withRef s.ref do + s.modifyFieldsM fun fields => do + let fieldMap ← mkFieldMap fields + fieldMap.toList.mapM fun ⟨fieldName, fields⟩ => do + match isSimpleField? fields with + | some field => pure field + | none => + let substructFields := fields.map fun field => { field with lhs := field.lhs.tail! } + let field := fields.head! + match Lean.isSubobjectField? env s.structName fieldName with + | some substructName => + let substruct := Struct.mk s.ref substructName #[] substructFields s.source + let substruct ← expandStruct substruct + pure { field with lhs := [field.lhs.head!], val := FieldVal.nested substruct } + | none => + let updateSource (structStx : Syntax) : TermElabM Syntax := do + let sourcesNew ← s.source.explicit.filterMapM + fun source => mkProjStx? source.stx source.structName fieldName + let explicitSourceStx := if sourcesNew.isEmpty then mkNullNode + else mkSourcesWithSyntax sourcesNew + let implicitSourceStx := s.source.implicit.map (·.stx) |>.getD mkNullNode + return (structStx.setArg 1 explicitSourceStx).setArg 3 implicitSourceStx + let valStx := s.ref -- construct substructure syntax using s.ref as template + let valStx := valStx.setArg 4 mkNullNode -- erase optional expected type + let args := substructFields.toArray.map (·.toSyntax) + let valStx := valStx.setArg 2 (mkNullNode <| mkSepArray args (mkAtom ",")) + let valStx ← updateSource valStx + return { field with lhs := [field.lhs.head!], val := FieldVal.term valStx } + + /-- + Add `val : FieldVal`s to fields as specified by the sources. + If a value is found in the explicit sources (prior to `with`), add it as a `.term` or a + `.nested` `FieldVal`, as appropriate. If not, check for `..`, and make a hole via syntax as a + `.term`. Otherwise, mark the field as as `.missing`. + -/ + private partial def addMissingFields (s : Struct) : TermElabM Struct := do + let env ← getEnv + let fieldNames := getStructureFields env s.structName + let ref := s.ref.mkSynthetic + withRef ref do + let fields ← fieldNames.foldlM (init := []) fun fields fieldName => do + match findField? s.fields fieldName with + | some field => return field::fields + | none => + let addField (val : FieldVal Struct) : TermElabM Fields := do + return { ref, lhs := [FieldLHS.fieldName ref fieldName], val := val } :: fields + match Lean.isSubobjectField? env s.structName fieldName with + | some substructName => + -- If one of the sources has the subobject field, use it + if let some val ← s.source.explicit.findSomeM? + fun source => mkProjStx? source.stx source.structName fieldName + then + addField (FieldVal.term val) + else + let substruct := Struct.mk ref substructName #[] [] s.source + let substruct ← expandStruct substruct + addField (FieldVal.nested substruct) + | none => + if let some val ← s.source.explicit.findSomeM? + fun source => mkProjStx? source.stx source.structName fieldName + then + addField (FieldVal.term val) + else + -- Use hole syntax as a term in the natural, no-defaults (`..`) case; + -- otherwise mark it as a missing field. + match s.source.implicit with + | some { isSynthetic := false, useDefaults := false, .. } => + addField (FieldVal.term (mkHole ref)) + | _ => addField FieldVal.missing + return s.setFields fields.reverse + + /-- Put the `Struct` into canonical form by expanding different ways of specifying fields + (composite, by index, subobject); group fields by subobject; and incorporate values (or + holes) sources. -/ + private partial def expandStruct (s : Struct) : TermElabM Struct := do + let s := expandCompositeFields s + let s ← expandNumLitFields s + let s ← expandParentFields s + let s ← groupFields s + addMissingFields s + +end + +/-- Information about the constructor. -/ +structure CtorHeaderResult where + /-- The constructor function itself as an `Expr`. -/ + ctorFn : Expr + /-- The type of the constructor as an `Expr`. -/ + ctorFnType : Expr + /-- Metavariables for instances. -/ + instMVars : Array MVarId + /-- Named parameters encountered in bindings of the type and the expressions used for them. -/ + params : Array (Name × Expr) + +/-- Helper function that processes the constructor and its type until its first parameter reaches 0. +-/ +private def mkCtorHeaderAux : +Nat → Expr → Expr → Array MVarId → Array (Name × Expr) → TermElabM CtorHeaderResult + | 0, type, ctorFn, instMVars, params => + return { ctorFn , ctorFnType := type, instMVars, params } + | n+1, type, ctorFn, instMVars, params => do + match (← whnfForall type) with + | .forallE paramName d b c => + match c with + | .instImplicit => + let a ← mkFreshExprMVar d .synthetic + mkCtorHeaderAux n (b.instantiate1 a) (mkApp ctorFn a) (instMVars.push a.mvarId!) + (params.push (paramName, a)) + | _ => + let a ← mkFreshExprMVar d + mkCtorHeaderAux n (b.instantiate1 a) (mkApp ctorFn a) instMVars (params.push (paramName, a)) + | _ => throwError "unexpected constructor type" + +/-- Burrows into the body of a `.forallE` expression `n` times if possible, and returns the result. + If an expression not of the form `.forallE` is encountered along the way, return `none`. -/ +private partial def getForallBody : Nat → Expr → Option Expr + | i+1, .forallE _ _ b _ => getForallBody i b + | _+1, _ => none + | 0, type => type + +/-- When the expected type is known, attempt to get the type of the constructor by stripping `n` + `.forallE`'s off of the expression and then assigning metavariables by `isDefEq`'ing with + the expected type. -/ +private def propagateExpectedType (type : Expr) (numFields : Nat) (expectedType? : Option Expr) : +TermElabM Unit := do + match expectedType? with + | none => return () + | some expectedType => + match getForallBody numFields type with + | none => pure () + | some typeBody => + unless typeBody.hasLooseBVars do + discard <| isDefEq expectedType typeBody + +/-- Process information about a given `ConstructorVal`. -/ +private def mkCtorHeader (ctorVal : ConstructorVal) (expectedType? : Option Expr) : +TermElabM CtorHeaderResult := do + let us ← mkFreshLevelMVars ctorVal.levelParams.length + let val := Lean.mkConst ctorVal.name us + let type ← instantiateTypeLevelParams (ConstantInfo.ctorInfo ctorVal) us + let r ← mkCtorHeaderAux ctorVal.numParams type val #[] #[] + propagateExpectedType r.ctorFnType ctorVal.numFields expectedType? + synthesizeAppInstMVars r.instMVars r.ctorFn + return r + +/-- Annotate an expression to indicate that it must be synthesized as a default value. + In practice, the expression is a metavariable. -/ +def markDefaultMissing (e : Expr) : Expr := + mkAnnotation `structInstDefault e + +/-- Check if an expression has been annotated in a way that indicates it should be synthesized + during the default loop. -/ +def defaultMissing? (e : Expr) : Option Expr := + annotation? `structInstDefault e + +/-- Provide a descriptive error message if the structure instance elaboration fails. -/ +def throwFailedToElabField {α} (fieldName : Name) (structName : Name) (msgData : MessageData) : +TermElabM α := + throwError "failed to elaborate field '{fieldName}' of '{structName}, {msgData}" + +/-- Attempt to synthesize an -/ +def trySynthStructInstance? (s : Struct) (expectedType : Expr) : TermElabM (Option Expr) := do + if !s.allMissing then + return none + else + try synthInstance? expectedType catch _ => return none + +-- By Mario Carneiro +/-- Use an expression in syntax. Example: ``(foo $(← toSyntax e))`. + This works by creating syntax for a metavariable, then elaborating that syntax and assigning + the metavariable to the expression in question. + -/ +def toSyntax (e : Expr) (type? : Option Expr := none) : TermElabM Syntax := withFreshMacroScope do + let stx ← `(?a) + let mvar ← elabTerm stx type? + mvar.mvarId!.assign e + pure stx + +/-- + The result of running `elabStruct` on a `Struct`, containing: + * `struct : Struct`, now with updated `expr?` values in its fields, representing the values for + those fields. + * `val : Expr`, the constructor applied to the field values (`expr?`s). This is the actual + expression that the structure instance elaborates to. (Note that this is distinct from the + `val` of each field, which is a `FieldVal`.) + * `instMVars : Array MVarId`, used forkeeping track of instances. + -/ +structure ElabStructResult where + /-- The structure's constructor applied to the field values (`expr?`s). This is the actual + expression that the structure instance elaborates to. -/ + val : Expr + /-- The `struct` that was fed to `elabStruct`, but now with updated `expr?` values for all of its + fields containing their values as expressions. -/ + struct : Struct + /-- Used for keeping track of instances. -/ + instMVars : Array MVarId + +/-- + Elaborates a `Struct` into an `ElabStructResult`. + This computes expressions for all fields of a structure (in `expr?`) on the basis of `FieldVal`s + while simultaneously building the elaboration of the structure instance itself, in the form of + its constructor applied to the expressions for each of its fields in turn. + `.term stx` `FieldVals` are elaborated while ensuring the type (as given by the constructor's + type), `.nested s` `FieldVals` are recursed into. `.missing` `FieldVals` are replaced with + metavariables and annotated to indicate that they will get assigned during the default synthesis + loop. Note that in this case the same metavariable is used both in the `expr?` field and the + final constructed expression (`val`), so that assigning it gives access to the value in both + places. The one exception is if an `autoParam` is encountered in the type, in which case the + tactic is elaborated. +-/ +private partial def elabStruct (s : Struct) (expectedType? : Option Expr) : +TermElabM ElabStructResult := withRef s.ref do + let env ← getEnv + let vhc? := s.source.implicit + let ctorVal := getStructureCtor env s.structName + if isPrivateNameFromImportedModule env ctorVal.name then + throwError "invalid \{...} notation, constructor for `{s.structName}` is marked as private" + -- We store the parameters at the resulting `Struct`. + -- We use this information during default value propagation. + let { ctorFn, ctorFnType, params, .. } ← mkCtorHeader ctorVal expectedType? + let (e, _, fields, instMVars) ← s.fields.foldlM + (init := (ctorFn, ctorFnType, [], #[])) + fun (e, type, fields, instMVars) field => do + match field.lhs with + | [.fieldName ref fieldName] => + let type ← whnfForall type + trace[Elab.struct] "elabStruct {field}, {type}" + match type with + | .forallE _ d b bi => + let cont (val : Expr) (field : Field Struct) (instMVars := instMVars) + (updateField := true) : TermElabM (Expr × Expr × Fields × Array MVarId) := do + pushInfoTree <| InfoTree.node (children := {}) <| Info.ofFieldInfo { + projName := s.structName.append fieldName, + fieldName, + lctx := (← getLCtx), + val, + stx := ref } + let e := mkApp e val + let type := b.instantiate1 val + let field := if updateField then { field with expr? := some val } else field + return (e, type, field::fields, instMVars) + match field.val with + | .term stx => + cont (← elabTermEnsuringType stx d.consumeTypeAnnotations) field + | .nested s => + let inst? := if vhc?.all (·.useDefaults) then + (← trySynthStructInstance? s d) else none + match inst? with + | some val => + cont val { field with val := FieldVal.term (mkHole field.ref) } + | none => + let { val, struct := sNew, instMVars := instMVarsNew } ← elabStruct s (some d) + let val ← ensureHasType d val + cont val { field with val := FieldVal.nested sNew } (instMVars ++ instMVarsNew) + | .missing => + match d.getAutoParamTactic? with + | some (.const tacticDecl ..) => + let d := (d.getArg! 0).consumeTypeAnnotations + if vhc?.all (·.useDefaults) then + match evalSyntaxConstant env (← getOptions) tacticDecl with + | .error err => throwError err + | .ok tacticSyntax => + if vhc?.isSome then + let val := (← mkFreshExprMVar (some d) .synthetic) + let stx ← `(by first | $tacticSyntax | exact $(← toSyntax val)) + cont (← elabTermEnsuringType stx d) + {field with expr? := some (markDefaultMissing val)} + (updateField := false) + else + let stx ← `(by $tacticSyntax) + cont (← elabTermEnsuringType stx d) field + else + let val ← withRef field.ref <| mkFreshExprMVar (some d) + cont (markDefaultMissing val) field + | _ => + if bi == .instImplicit then + let val ← withRef field.ref <| mkFreshExprMVar d .synthetic + trace[Elab.struct] ".instImplicit ({val})" + cont val field (instMVars.push val.mvarId!) + else + let val ← withRef field.ref <| mkFreshExprMVar (some d) + cont (markDefaultMissing val) field + | _ => withRef field.ref (throwFailedToElabField + fieldName s.structName m!"unexpected constructor type{indentExpr type}") + | _ => throwErrorAt field.ref "unexpected unexpanded structure field" + return { val := e, struct := s.setFields fields.reverse |>.setParams params, instMVars } + +namespace ImplicitFields + +/-- Updated as we search for default values. We must search for default values overriden in derived + structures. -/ +structure Context where + /-- `Struct`s in the context which might supply default values. -/ + structs : Array Struct := #[] + /-- The names of structures in the context which might supply default values. -/ + allStructNames : Array Name := #[] + /-- + Consider the following example: + ``` + structure A where + x : Nat := 1 + structure B extends A where + y : Nat := x + 1 + x := y + 1 + structure C extends B where + z : Nat := 2*y + x := z + 3 + ``` + And we are trying to elaborate a structure instance for `C`. + There are default values for `x` at `A`, `B`, and `C`. + We say the default value at `C` has distance 0, the one at `B` distance 1, and the one at `A` + distance 2. + The field `maxDistance` specifies the maximum distance considered in a round of Default field + computation. + Remark: since `C` does not set a default value of `y`, the default value at `B` is at distance 0. + The fixpoint for setting default values works in the following way. + - Keep computing default values using `maxDistance == 0`. + - We increase `maxDistance` whenever we failed to compute a new default value in a round. + - If `maxDistance > 0`, then we interrupt a round as soon as we compute some default value. + We use depth-first search. + - We sign an error if no progress is made when `maxDistance` == structure hierarchy depth (2 in + the example above). + -/ + maxDistance : Nat := 0 + +/-- Stores an indicator of whether progress has been made during a round in the default loop. -/ +structure State where + /-- Indicates whether progress has been made during a round in the default loop. -/ + progress : Bool := false + +/-- Collects the names of all nested structures in a `Struct` (at any depth), including the name of + the structure itself. -/ +partial def collectStructNames (struct : Struct) (names : Array Name) : Array Name := + let names := names.push struct.structName + struct.fields.foldl (init := names) fun names field => + match field.val with + | .nested struct => collectStructNames struct names + | _ => names + +/-- Gets the maximum depth at which any structure is nested within the given structure, i.e. the + height of its subobject poset. -/ +partial def getHierarchyDepth (struct : Struct) : Nat := + struct.fields.foldl (init := 0) fun max field => + match field.val with + | .nested struct => Nat.max max (getHierarchyDepth struct + 1) + | _ => max + +/-- (Monadic) Checks if the value of a field (`expr?`) is an unassigned metavariable that is + annotated to indicate that it should be synthesized during the default loop. -/ +def isDefaultMissing? [Monad m] [MonadMCtx m] (field : Field Struct) : m Bool := do + if let some expr := field.expr? then + if let some (.mvar mvarId) := defaultMissing? expr then + unless (← mvarId.isAssigned) do + return true + return false + +/-- (Monadic) Gets the first encountered field in a `Struct` whose value (`expr?`) is an unassigned + metavariable that is annotated to indicate that it should be synthesized during the default + loop. -/ +partial def findDefaultMissing? [Monad m] [MonadMCtx m] (struct : Struct) : +m (Option (Field Struct)) := + struct.fields.findSomeM? fun field => do + match field.val with + | .nested struct => findDefaultMissing? struct + | _ => return if (← isDefaultMissing? field) then field else none + +/-- (Monadic) Gets an array containing all fields in the `Struct` whose value (`expr?`) is an + unassigned metavariable that is annotated to indicate that it should be synthesized during the + default loop. -/ +partial def allDefaultMissing [Monad m] [MonadMCtx m] (struct : Struct) : +m (Array (Field Struct)) := + go struct *> get |>.run' #[] +where + /-- Loop through all fields in the `Struct`, recursing if a `.nested` one is found, and storing + the field in a mutable array if it `isDefaultMissing?` -/ + go (struct : Struct) : StateT (Array (Field Struct)) m Unit := + for field in struct.fields do + if let .nested struct := field.val then + go struct + else if (← isDefaultMissing? field) then + modify (·.push field) + +/-- Gets the name of a field, assuming that its `lhs` is of the form `[.fieldName _ fieldName]`. + Panics otherwise. -/ +def getFieldName (field : Field Struct) : Name := + match field.lhs with + | [.fieldName _ fieldName] => fieldName + | _ => unreachable! + +/-- Abbreviation for `ReaderT Context (StateRefT State TermElabM)`: A monad transformation of + `TermElabM` that lets us access the `Context` (relevant for checking if default values are + overridden) and keeping track of whether progress has been made during a round of the default + loop (`State`). -/ +abbrev M := ReaderT Context (StateRefT State TermElabM) + +/-- Checks if the round has completed by checking that progress has been made and that the + `maxDistance > 0`. -/ +def isRoundDone : M Bool := do + return (← get).progress && (← read).maxDistance > 0 + +/-- Gets the value (`expr?`) of a field in a `Struct` given the name of the field. -/ +def getFieldValue? (struct : Struct) (fieldName : Name) : Option Expr := + struct.fields.findSome? fun field => + if getFieldName field == fieldName then + field.expr? + else + none + +section NamedGoalsWithMetadata +/-- A convenient representation of the metadata attached to named goals produced by `?..` syntax. -/ +structure FieldHoleMData where + /-- The index of the named goal used for name conflict resolution when dealing with multiple + occcurrences of `?..`. Each conflicting use of `?..` should generate field holes with + different indices. An index of `0` indicates that no name conflicts were found with any + existing goals. -/ + index : Nat + /-- The syntax of the structure instance that contained the `?..` syntax. -/ + structRef : Syntax + /-- The name of the structure that contained the `?..` syntax. -/ + structName : Name + /-- The name of the field this goal represents. -/ + fieldName : Name + /-- The name to be prefixed to the name of this goal. `Name.anonymous` indicates that no name is + to be prefixed. -/ + prefixName : Name + +/-- Creates the metadata for a field's named goal given the field, the `Struct`, and the + conflict-resolution index. -/ +def mkFieldHoleMData (index : Nat) (field : Field Struct) (struct : Struct) : FieldHoleMData := + { + index, + structRef := struct.ref + structName := struct.structName + fieldName := getFieldName field + prefixName := match struct.source.implicit with + | some {name := some prefixName, ..} => prefixName + | _ => Name.anonymous + } + +open KVMap in +/-- Gets the field hole metadata from a metavariable if present. -/ +def getFieldHoleMDataFromMVar? (decl : MetavarDecl) : Option FieldHoleMData := + match decl.type with + | .mdata md _ => + if getBool md `fieldHole then + some + { + index := getNat md `index + structRef := getSyntax md `structRef + structName := getName md `structName + fieldName := getName md `fieldName + prefixName := getName md `prefixName + } + else none + | _ => none + +/-- Checks if a metavariable decl is a named field hole created by `?..` syntax. -/ +def isFieldHole (decl : MetavarDecl) : Bool := + match decl.type with + | .mdata md _ => KVMap.getBool md `fieldHole + | _ => false + +section KVMap +/-- Merges two `KVMap`s, overwriting the values of any shared keys with those in the second `KVMap` + -/ +def mergeKVMap : KVMap → KVMap → KVMap := + fun m₀ m₁ => Id.run do + let mut m := m₀ + for (name, data) in m₁ do + m := KVMap.insert m name data + return m + +/-- Turns a list of key-value pairs (e.g. ``[(`a, ofBool true), (`b, ofNat 2), ...]``) into a + `KVMap`. -/ +def toKVMap : List (Name × DataValue) → KVMap +| l => l.foldl (fun m (n, d) => KVMap.insert m n d) {} + +end KVMap + +open DataValue in +/-- Turns a representation of field hole metadata into actual metadata (a `KVMap`). -/ +def mkFieldHoleMDataKVMap (f : FieldHoleMData) : KVMap := + toKVMap [ + (`fieldHole , ofBool true ), + (`index , ofNat f.index ), + (`structRef , ofSyntax f.structRef ), + (`structName , ofName f.structName), + (`fieldName , ofName f.fieldName ), + (`prefixName , ofName f.prefixName) + ] + +/-- + Create a metavariable with `metadata` attached to its `type`. + If there's any existing metadata on `type`, `metadata` is preferentially merged into it. + -/ +def mkFreshExprMVarWithMData (type : Expr) (metadata : KVMap) (kind : MetavarKind := default) +(userName := Name.anonymous) : MetaM Expr := + let annotatedType := + match type with + | .mdata m e => + let merge := mergeKVMap m metadata + Expr.mdata merge e + | _ => + Expr.mdata metadata type + mkFreshExprMVar annotatedType (kind := kind) (userName := userName) + +/-- Make a fresh expression metavariable for a field, named accordingly, and with metadata + attached. -/ +def mkFreshFieldNamedMVar (type : Expr) (index : Nat) (prefixName : Option Name) +(field : Field Struct) (struct : Struct) : MetaM Expr := + let fieldHoleMData := mkFieldHoleMDataKVMap <| mkFieldHoleMData index field struct + let name := + match prefixName with + | some x => x ++ (getFieldName field) + | none => getFieldName field + let name := if index == 0 then name else name.appendIndexAfter index + mkFreshExprMVarWithMData type fieldHoleMData (kind := .syntheticOpaque) (userName := name) + +/-- Given the names of two structures, check if they have any field names in common. -/ +def fieldsOverlap (env : Environment) (structName₀ : Name) (structName₁ : Name) : Bool := + let fields₀ := getStructureFieldsFlattened env structName₀ false + let fields₁ := getStructureFieldsFlattened env structName₁ false + fields₀.any (fun field => fields₁.contains field) + +-- Monadic to enable tracing. +/-- If the provided metavariable decl is a named field hole created by `?..` syntax, check if it + conflicts with the current structure and prefix name. If so, return its index. Otherwise, + return `none`. -/ +def getConflictingIndex? (env : Environment) (s : Struct) (prefixName : Name) (decl : MetavarDecl) +: TermElabM (Option Nat) := do + let fieldHoleMData? := getFieldHoleMDataFromMVar? decl + match fieldHoleMData? with + | some fieldHoleMData => + let cond2 := prefixName == fieldHoleMData.prefixName + let cond3 := fieldsOverlap env s.structName (fieldHoleMData.structName) + trace[Elab.struct] + "goal name conflict for {fieldHoleMData.structName}: {cond2} && {cond3}" + if cond2 && cond3 + then return some fieldHoleMData.index + else return none + | none => return none + +/-- Get the next non-conflicting index among all metavariable conflicts. + A metavariable conflicts iff all of the following are true: + * it is a named field hole created by `?..` syntax + * it is not from the same occurrence of `?..` + * it has the same prefix name (possibly `Name.anonymous` if it does not have a prefix) + * it belongs to a structure that has field names in common with the current structure + Note that this gets the index one greater than the maximum conflicting index, not the next + "available" index. We take a "wide berth" approach to avoid situations where it might appear + like two goals are from the same occurrence of `?..` despite this not being the case. -/ +def nextIndexGivenCollisions (env : Environment) (mctx : MetavarContext) (s : Struct) +: TermElabM Nat := do + let prefixName := match s.source.implicit with + | some { name := some prefixName, .. } => prefixName + | _ => Name.anonymous + let conflictingIndex : (Option Nat) ← mctx.decls.foldl + (fun i? _ decl => do + let i'? ← getConflictingIndex? env s prefixName decl + return (Option.merge max (← i?) i'?)) (pure none) + match conflictingIndex with + | some i => return i+1 + | none => return 0 + +/-- Assign all fields which did not get synthesized during the default loop (but which were marked + as such) to appropriately-named field holes with metadata in the case of `?..` syntax (and to + natural holes when the `?` is absent). -/ +def assignRemainingDefaultsToFieldHoles (struct : Struct) : TermElabM Unit := + withRef struct.ref do + match struct.source.implicit with + | some vhc => + let index ← nextIndexGivenCollisions (← getEnv) (← getMCtx) struct + for field in (← allDefaultMissing struct) do + match field.expr? with + | some expr => + match defaultMissing? expr with + | some (.mvar mvarId) => + let type := (← getMVarDecl mvarId).type + if vhc.isSynthetic then + mvarId.assign (← withRef field.ref <| + mkFreshFieldNamedMVar type index vhc.name field struct) + else + let newHole ← withRef field.ref <| mkFreshExprMVar type (kind := .natural) + mvarId.assign newHole + registerMVarErrorHoleInfo newHole.mvarId! struct.ref + | _ => unreachable! + | none => unreachable! + | none => return () + +end NamedGoalsWithMetadata +/-- A helper function that applies lambdas whose parameters are field names to the corresponding + field values until it finds a non-lambda, using propagated parameters instead of field names if + necessary along the way. Returns `none` if it finds a lambda that's not of this form. -/ +partial def mkDefaultValueAux? (struct : Struct) : Expr → TermElabM (Option Expr) + | .lam n d b c => withRef struct.ref do + if c.isExplicit then + let fieldName := n + match getFieldValue? struct fieldName with + | none => return none + | some val => + let valType ← inferType val + if (← isDefEq valType d) then + mkDefaultValueAux? struct (b.instantiate1 val) + else + return none + else + if let some (_, param) := struct.params.find? fun (paramName, _) => paramName == n then + -- Recall that we did not use to have support for parameter propagation here. + if (← isDefEq (← inferType param) d) then + mkDefaultValueAux? struct (b.instantiate1 param) + else + return none + else + let arg ← mkFreshExprMVar d + mkDefaultValueAux? struct (b.instantiate1 arg) + | e => + if e.isAppOfArity ``id 2 then + return some e.appArg! + else + return some e + +/-- If possible, make a default value by applying lambdas in the given constant to the appropriate + field values or propagated parameter values. -/ +def mkDefaultValue? (struct : Struct) (cinfo : ConstantInfo) : TermElabM (Option Expr) := + withRef struct.ref do + let us ← mkFreshLevelMVarsFor cinfo + mkDefaultValueAux? struct (← instantiateValueLevelParams cinfo us) + +/-- Reduce default value. It performs beta reduction and projections of the given structures. -/ +partial def reduce (structNames : Array Name) (e : Expr) : MetaM Expr := do + match e with + | .lam .. => lambdaLetTelescope e fun xs b => do mkLambdaFVars xs (← reduce structNames b) + | .forallE .. => forallTelescope e fun xs b => do mkForallFVars xs (← reduce structNames b) + | .letE .. => lambdaLetTelescope e fun xs b => do mkLetFVars xs (← reduce structNames b) + | .proj _ i b => + match (← Meta.project? b i) with + | some r => reduce structNames r + | none => return e.updateProj! (← reduce structNames b) + | .app f .. => + match (← reduceProjOf? e structNames.contains) with + | some r => reduce structNames r + | none => + let f := f.getAppFn + let f' ← reduce structNames f + if f'.isLambda then + let revArgs := e.getAppRevArgs + reduce structNames (f'.betaRev revArgs) + else + let args ← e.getAppArgs.mapM (reduce structNames) + return mkAppN f' args + | .mdata _ b => + let b ← reduce structNames b + if (defaultMissing? e).isSome && !b.isMVar then + return b + else + return e.updateMData! b + | .mvar mvarId => + match (← getExprMVarAssignment? mvarId) with + | some val => if val.isMVar then pure val else reduce structNames val + | none => return e + | e => return e + +/-- + Attempt to synthesize the default value for a field, looping through nested structures if + necessary. If a default value is found, assign it to the metavariable that we created for the + field's value back in `elabStruct`, and return `true`. Otherwise return `false`. +-/ +partial def tryToSynthesizeDefault (structs : Array Struct) (allStructNames : Array Name) +(maxDistance : Nat) (fieldName : Name) (mvarId : MVarId) : TermElabM Bool := + let rec loop (i : Nat) (dist : Nat) := do + if dist > maxDistance then + return false + else if h : i < structs.size then + let struct := structs.get ⟨i, h⟩ + match getDefaultFnForField? (← getEnv) struct.structName fieldName with + | some defFn => + let cinfo ← getConstInfo defFn + let mctx ← getMCtx + match (← mkDefaultValue? struct cinfo) with + | none => setMCtx mctx; loop (i+1) (dist+1) + | some val => + let val ← reduce allStructNames val + match val.find? fun e => (defaultMissing? e).isSome with + | some _ => setMCtx mctx; loop (i+1) (dist+1) + | none => + let mvarDecl ← getMVarDecl mvarId + let val ← ensureHasType mvarDecl.type val + mvarId.assign val + return true + | _ => loop (i+1) dist + else + return false + loop 0 0 + +/-- The main loop of `tryToSynthesizeDefault`, which keeps track of which struct out of an array of + all nested structs is being considered, as well as the distance to make sure it doesn't exceed + the `maxDistance` (see the documentation for `Context.maxDistance`). -/ +add_decl_doc tryToSynthesizeDefault.loop + +/-- + A step within the default synthesis loop. We proceed only if the round is not done. We loop + through all fields in the structure, attempting to synthesize a default via + `tryToSynthesizeDefault` when possible. If we succeed, we set `progress := true` in the `State`. + Note: by now, all `expr?`s should be `some expr` from `elabStruct`, even if that `expr` is a + metavariable; as such, we panic if one of them is `none`. +-/ +partial def step (struct : Struct) : M Unit := + unless (← isRoundDone) do + withReader (fun ctx => { ctx with structs := ctx.structs.push struct }) do + for field in struct.fields do + match field.val with + | .nested struct => step struct + | _ => match field.expr? with + | none => unreachable! + | some expr => + match defaultMissing? expr with + | some (.mvar mvarId) => + unless (← mvarId.isAssigned) do + let ctx ← read + if (← withRef field.ref (tryToSynthesizeDefault + ctx.structs ctx.allStructNames ctx.maxDistance (getFieldName field) mvarId)) + then + modify fun _ => { progress := true } + | _ => pure () + +/-- + The workhorse of the default synthesis loop. + If there are no fields left that need to be synthesized during the default loop, we return from + the loop. + Otherwise, when we find a field that ought to be synthesized during the default loop, we take a + `step`. If we've made `progress`, we call `propagateLoop` again and reset the depth to `0`. If we + haven't, we call `propagateLoop` again with a higher depth. + If the depth ever exceeds the hierarchy depth, we know that we've searched all nested structures, + but no default values were to be found. In this case, we either throw an error with the missing + fields, or, if a variadic hole is present (e.g. `?..`), simply return from the loop (at which + point the remaining holes will be assigned by `assignRemainingDefaultsToFieldHoles` ). +-/ +partial def propagateLoop (hierarchyDepth : Nat) (d : Nat) (struct : Struct) : M Unit := do + match (← findDefaultMissing? struct) with + | none => return () -- Done + | some field => + trace[Elab.struct] "propagate [{d}] [field := {field}]: {struct}" + if d > hierarchyDepth then + let missingFields := (← allDefaultMissing struct).map getFieldName + if struct.source.implicit.isSome then + return () + else + let missingFieldsWithoutDefault := + let env := (← getEnv) + let structs := (← read).allStructNames + missingFields.filter fun fieldName => structs.all fun struct => + (getDefaultFnForField? env struct fieldName).isNone + let fieldsToReport := + if missingFieldsWithoutDefault.isEmpty then missingFields else missingFieldsWithoutDefault + throwErrorAt field.ref + "fields missing: {fieldsToReport.toList.map (s!"'{·}'") |> ", ".intercalate}" + else withReader (fun ctx => { ctx with maxDistance := d }) do + modify fun _ => { progress := false } + step struct + if (← get).progress then + propagateLoop hierarchyDepth 0 struct + else + propagateLoop hierarchyDepth (d+1) struct + +/-- + The default synthesis loop. + We call our workhorse function `propagateLoop` with appropriate initial values, which implements + the loop itself (unless there is a variadic hole that specifies defaults are not to be used). + Then, if there is a variadic hole, we assign the remaining metavariables that couldn't be + synthesized into default values to (named) field holes. +-/ +def propagate (struct : Struct) : TermElabM Unit := do + let hierarchyDepth := getHierarchyDepth struct + let structNames := collectStructNames struct #[] + let vhc? := struct.source.implicit + if vhc?.all (·.useDefaults) then + propagateLoop hierarchyDepth 0 struct { allStructNames := structNames } |>.run' {} + if vhc?.isSome then + assignRemainingDefaultsToFieldHoles struct + +end ImplicitFields + +/-- + The main content of the elaboration, during which we normalize the `Struct`'s form, call + `elabStruct` to compute field values and construct the elaborated expression, run the default + synthesis loop (and provide named field holes if warranted), and synthesize instances. -/ +private def elabStructInstAux (stx : Syntax) (expectedType? : Option Expr) (source : Source) +: TermElabM Expr := do + let structName ← getStructName expectedType? source + let struct ← liftMacroM <| mkStructView stx structName source + let struct ← expandStruct struct + trace[Elab.struct] "{struct}" + /- We try to synthesize pending problems with `withSynthesize` combinator before trying to use + default values. + This is important in examples such as + ``` + structure MyStruct where + {α : Type u} + {β : Type v} + a : α + b : β + #check { a := 10, b := true : MyStruct } + ``` + were the `α` will remain "unknown" until the default instance for `OfNat` is used to ensure + that `10` is a `Nat`. + TODO: investigate whether this design decision may have unintended side effects or produce + confusing behavior. + -/ + let { val := r, struct, instMVars } ← withSynthesize (mayPostpone := true) <| + elabStruct struct expectedType? + trace[Elab.struct] "before propagate {r}" + ImplicitFields.propagate struct + synthesizeAppInstMVars instMVars r + return r + +/-- The term elaborator for structure instance syntax that includes variadic holes (`?..`). -/ +@[term_elab structInstWithHoles] def elabStructInstWithHoles : TermElab := fun stx expectedType? => +do + match (← expandNonAtomicExplicitSources stx) with + | some stxNew => withMacroExpansion stx stxNew <| elabTerm stxNew expectedType? + | none => + let sourceView ← getStructSource stx + if let some modifyOp ← isModifyOp? stx then + if sourceView.explicit.isEmpty then + throwError + "invalid \{...} notation, explicit source is required when using '[] := '" + elabModifyOp stx modifyOp sourceView.explicit expectedType? + else + elabStructInstAux stx expectedType? sourceView + +section haveFieldProj + +/-- `as foo` names the field projection `foo`. -/ +declare_syntax_cat asname +/-- `as foo` names the field projection `foo`. -/ +syntax "as" ident : asname + +-- couldn't write elab "haveFieldProj" f:(ident)? x:("as" n:ident)? : tactic +/-- + Once a goal has been created for a structure's field via `?..` syntax, `haveFieldProj` can be + used equivalently to `have .proj := `. + `haveFieldProj f as a` gets the field projection for the field `f` and names it `a`; + `f` and `as a` can both be individually omitted. +-/ +elab "haveFieldProj" f:(ident)? x:(asname)? : tactic => do + let fieldHoleMData? := ImplicitFields.getFieldHoleMDataFromMVar? (← Tactic.getMainDecl) + match fieldHoleMData? with + | some fieldHoleMData => + let fieldName := match f with | some f' => f'.getId | none => fieldHoleMData.fieldName + let structName := fieldHoleMData.structName -- so the error fits on one line + let some projname := + (getProjFnForField? (← getEnv) fieldHoleMData.structName fieldName) | throwError + "couldn't find projection function for field {fieldName} of structure {structName}" + let name := match x with + | some stx => match stx with + | `(asname|as $n:ident) => n + | _ => mkIdent (fieldName ++ `proj) + | none => mkIdent (fieldName ++ `proj) + Tactic.evalTactic (←`(tactic|have $name := $(mkIdent projname))) + | none => throwError "no field metadata found on the main goal" + +end haveFieldProj diff --git a/server/testgame/TestGame/StructInstWithHolesTest.lean b/server/testgame/TestGame/StructInstWithHolesTest.lean new file mode 100644 index 0000000..b8e07bf --- /dev/null +++ b/server/testgame/TestGame/StructInstWithHolesTest.lean @@ -0,0 +1,114 @@ +import TestGame.StructInstWithHoles +import Mathlib + + +example : Module ℚ ℝ := by + refine { smul := fun a r => ↑a * r ?..! } + sorry + sorry + sorry + sorry + sorry + sorry + +structure Foo where + x : Nat := 0 + y : Nat + +structure Bar extends Foo where + z : Nat := x + +example := by refine { ?.. : Foo }; case y => exact 0 +example := by refine { ?.. : Bar }; case y => exact 0 +example := by refine { ?..a : Bar }; case a.y => exact 0 +example := by refine { ?..! : Bar }; case x | y | z => exact 0; +example := by refine { ?..!a : Bar }; case a.x | a.y | a.z => exact 0; +-- example := by refine' { ... : Bar }; exact 0 +example := by refine' { .. : Bar }; exact 0; exact 0; exact 0 +-- example := by refine' { ..! : Bar }; exact 0; exact 0; exact 0 + +structure rflFoo where + x : Nat + y : Nat + xy : x = y := by rfl + +example := by refine { ?.. : rflFoo }; (case x | y => exact 0); case xy => rfl +example := by refine { ?..! : rflFoo }; (case x | y => exact 0); case xy => rfl + +structure autoFoo where + x : Nat := 0 + y : Nat := 0 + xy : x = y := by rfl + +example := { ?.. : autoFoo } +example := by refine { ?..! : autoFoo }; (case x | y => exact 0); case xy => rfl + +def f : Foo → Nat := fun _ => 0 +def ff : Foo → Foo → Unit := fun _ _ => () +def ffb : Foo → Bar → Unit := fun _ _ => () +def ffa : Foo → autoFoo → Unit := fun _ _ => () + +example := by refine { x := f { ?.. }, ?.. : Foo }; case y | y_1 => exact 0 +example := by refine { x := f { ?..x }, ?.. : Foo }; case x.y | y => exact 0 +example := by refine { x := f { ?.. }, ?..x : Foo }; case y | x.y => exact 0 +example := by refine { x := f { ?..x }, ?..x : Foo }; case x.y | x.y_1 => exact 0 + +example := by refine ff { ?.. } { ?.. }; case y | y_1 => exact 0 +example := by refine ff { ?..! } { ?.. }; case x | y | y_1 => exact 0 +example := by refine ffb { ?..! } { ?..! }; case x | y | x_1 | y_1 | z_1 => exact 0 +example := by refine ffa { ?..! } { ?..! }; (case x | y | x_1 | y_1 => exact 0); rfl + +structure Foo' where + x : Nat + +structure dFoo' where + x : Nat := 0 + +def ff' : Foo → Foo' → Unit := fun _ _ => () +def fdf' : Foo → dFoo' → Unit := fun _ _ => () + +example := by refine ff' { ?.. } { ?.. }; case y | x_1 => exact 0 +example := by refine fdf' { ?.. } { ?.. }; case y => exact 0 + +structure Fooα (α : Type) where + x : α + +example := by refine { ?.. : Fooα Nat}; case x => exact 0 + +structure Fooαi where + {α : Type} + x : α + +example := by refine { ?.. : Fooαi }; (case α => exact Nat); case x => exact 0 + +/- haveFieldProj tests (subject to be moved)-/ +section haveFieldProj + +structure Foo'' where + x : Bool + y : Nat + +def foo'': Foo'' := { x := true, y := 0 } + +example := by + refine { ?.. : Foo''}; + haveFieldProj; + case x => exact x.proj foo''; + case y => exact 0 +example := by + refine { ?.. : Foo''}; + haveFieldProj as a; + case x => exact a foo''; + case y => exact 0 +example := by + refine { ?.. : Foo''}; + haveFieldProj y; + case x => exact 0 == y.proj foo''; + case y => exact 0 +example := by + refine { ?.. : Foo''}; + haveFieldProj y as a; + case x => exact 0 == a foo''; + case y => exact 0 + +end haveFieldProj From 0fc992e3302592252181310bff15d97cb11d48ae Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Wed, 22 Mar 2023 15:48:45 +0100 Subject: [PATCH 15/29] put conclusion text inside info-box for now --- client/src/components/Level.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/components/Level.tsx b/client/src/components/Level.tsx index 442037d..fa3fa54 100644 --- a/client/src/components/Level.tsx +++ b/client/src/components/Level.tsx @@ -205,7 +205,9 @@ function PlayableLevel({worldId, levelId}) { {completed &&
- {level?.data?.conclusion} + + {level?.data?.conclusion} + {levelId >= gameInfo.data?.worldSize[worldId] ? : : : - : + }
} @@ -230,7 +231,8 @@ function PlayableLevel({worldId, levelId}) { export default Level function Introduction({worldId}) { - const gameInfo = useGetGameInfoQuery() + const gameId = React.useContext(GameIdContext) + const gameInfo = useGetGameInfoQuery({game: gameId}) return <>
@@ -245,8 +247,8 @@ function Introduction({worldId}) {
{0 == gameInfo.data?.worldSize[worldId] ? - : - : + }
@@ -255,11 +257,12 @@ function Introduction({worldId}) { } function LevelAppBar({isLoading, levelId, worldId, levelTitle}) { - const gameInfo = useGetGameInfoQuery() + const gameId = React.useContext(GameIdContext) + const gameInfo = useGetGameInfoQuery({game: gameId}) return
- + {gameInfo.data?.worlds.nodes[worldId].title && `World: ${gameInfo.data?.worlds.nodes[worldId].title}`} @@ -269,10 +272,10 @@ function LevelAppBar({isLoading, levelId, worldId, levelTitle}) { {levelTitle}
@@ -282,6 +285,7 @@ function LevelAppBar({isLoading, levelId, worldId, levelTitle}) { function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCode, initialSelections, onDidChangeContent, onDidChangeSelection) { const connection = React.useContext(ConnectionContext) + const gameId = React.useContext(GameIdContext) const [editor, setEditor] = useState(null) const [infoProvider, setInfoProvider] = useState(null) @@ -308,7 +312,7 @@ function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCo theme: 'vs-code-theme-converted' }) - const infoProvider = new InfoProvider(connection.getLeanClient()) + const infoProvider = new InfoProvider(connection.getLeanClient(gameId)) const editorApi = infoProvider.getApi() @@ -358,7 +362,7 @@ function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCo return () => { infoProvider.dispose(); editor.dispose() } }, []) - const {leanClient, leanClientStarted} = useLeanClient() + const {leanClient, leanClientStarted} = useLeanClient(gameId) // Create model when level changes useEffect(() => { @@ -391,7 +395,8 @@ function useLevelEditor(worldId: string, levelId: number, codeviewRef, initialCo /** Open all files in this world on the server so that they will load faster when accessed */ function useLoadWorldFiles(worldId) { - const gameInfo = useGetGameInfoQuery() + const gameId = React.useContext(GameIdContext) + const gameInfo = useGetGameInfoQuery({game: gameId}) const store = useStore() useEffect(() => { diff --git a/client/src/components/Welcome.tsx b/client/src/components/Welcome.tsx index 1c97932..c5fce54 100644 --- a/client/src/components/Welcome.tsx +++ b/client/src/components/Welcome.tsx @@ -14,13 +14,15 @@ import { useGetGameInfoQuery } from '../state/api'; import { Link } from 'react-router-dom'; import Markdown from './Markdown'; import { selectCompleted } from '../state/progress'; +import { GameIdContext } from '../App'; function LevelIcon({ worldId, levelId, position }) { + const gameId = React.useContext(GameIdContext) const completed = useSelector(selectCompleted(worldId,levelId)) // TODO: relative positioning? return ( - + ) @@ -29,7 +31,8 @@ function LevelIcon({ worldId, levelId, position }) { function Welcome() { const navigate = useNavigate(); - const gameInfo = useGetGameInfoQuery() + const gameId = React.useContext(GameIdContext) + const gameInfo = useGetGameInfoQuery({game: gameId}) const { nodes, bounds }: any = gameInfo.data ? computeWorldLayout(gameInfo.data?.worlds) : {nodes: []} @@ -55,7 +58,7 @@ function Welcome() { let position: cytoscape.Position = nodes[id].position svgElements.push( - + {nodes[id].data.title ? nodes[id].data.title : id} diff --git a/client/src/connection.ts b/client/src/connection.ts index f25b4ca..2d630ac 100644 --- a/client/src/connection.ts +++ b/client/src/connection.ts @@ -6,12 +6,17 @@ import { useState } from 'react'; export class Connection { - private leanClient = null - - getLeanClient(): LeanClient { - if (this.leanClient === null) { - const socketUrl = ((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + '/websocket/' + private game: string = undefined // We only keep a connection to a single game at a time + private leanClient: LeanClient = null + getLeanClient(game): LeanClient { + if (this.game !== game) { + if (this.leanClient) { + this.leanClient.stop() // Stop previous Lean client + } + this.game = game + // Start a new Lean client for the new `gameId`. + const socketUrl = ((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + '/websocket/' + game const uri = monaco.Uri.parse('file:///') this.leanClient = new LeanClient(socketUrl, undefined, uri, () => {}) } @@ -22,9 +27,9 @@ export class Connection { /** If not already started, starts the Lean client. resolves the returned promise as soon as a * Lean client is running. */ - startLeanClient = () => { + startLeanClient = (game) => { return new Promise((resolve) => { - const leanClient = this.getLeanClient() + const leanClient = this.getLeanClient(game) if (leanClient.isRunning()) { resolve(leanClient) } else { @@ -47,8 +52,8 @@ export const connection = new Connection() export const ConnectionContext = React.createContext(null); -export const useLeanClient = () => { - const leanClient = connection.getLeanClient() +export const useLeanClient = (gameId) => { + const leanClient = connection.getLeanClient(gameId) const [leanClientStarted, setLeanClientStarted] = useState(leanClient.isStarted()) React.useEffect(() => { diff --git a/client/src/index.tsx b/client/src/index.tsx index d13b276..eedeb12 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -13,21 +13,26 @@ import ErrorPage from './ErrorPage'; import Welcome from './components/Welcome'; import Level from './components/Level'; import { monacoSetup } from 'lean4web/client/src/monacoSetup'; +import { redirect } from 'react-router-dom'; monacoSetup() const router = createHashRouter([ { path: "/", + loader: () => redirect("/game/testgame") + }, + { + path: "/game/:gameId", element: , errorElement: , children: [ { - path: "/", + path: "/game/:gameId", element: , }, { - path: "/world/:worldId/level/:levelId", + path: "/game/:gameId/world/:worldId/level/:levelId", element: , }, ], diff --git a/client/src/state/api.ts b/client/src/state/api.ts index 581823c..6d93733 100644 --- a/client/src/state/api.ts +++ b/client/src/state/api.ts @@ -38,13 +38,13 @@ interface Doc { const customBaseQuery = async ( - args : {method: string, params?: any}, + args : {game: string, method: string, params?: any}, { signal, dispatch, getState, extra }, extraOptions ) => { try { const connection : Connection = extra.connection - let leanClient = await connection.startLeanClient() + let leanClient = await connection.startLeanClient(args.game) console.log(`Sending request ${args.method}`) let res = await leanClient.sendRequest(args.method, args.params) console.log('Received response', res) @@ -59,14 +59,14 @@ export const apiSlice = createApi({ reducerPath: 'gameApi', baseQuery: customBaseQuery, endpoints: (builder) => ({ - getGameInfo: builder.query({ - query: () => {return {method: 'info', params: {}}}, + getGameInfo: builder.query({ + query: ({game}) => {return {game, method: 'info', params: {}}}, }), - loadLevel: builder.query({ - query: ({world, level}) => {return {method: "loadLevel", params: {world, level}}}, + loadLevel: builder.query({ + query: ({game, world, level}) => {return {game, method: "loadLevel", params: {world, level}}}, }), - loadDoc: builder.query({ - query: ({name, type}) => {return {method: "loadDoc", params: {name, type}}}, + loadDoc: builder.query({ + query: ({game, name, type}) => {return {game, method: "loadDoc", params: {name, type}}}, }), }), }) diff --git a/server/index.mjs b/server/index.mjs index a07dab6..4e80f8a 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -6,6 +6,18 @@ import * as url from 'url'; import * as rpc from 'vscode-ws-jsonrpc'; import * as jsonrpcserver from 'vscode-ws-jsonrpc/server'; +const games = { + testgame: { + name: "TestGame", + module: "TestGame", + queueLength: 5 + }, + nng: { + name: "NNG", + module: "NNG", + queueLength: 5 + } +} const __filename = url.fileURLToPath(import.meta.url); const __dirname = url.fileURLToPath(new URL('.', import.meta.url)); @@ -23,23 +35,18 @@ const wss = new WebSocketServer({ server }) const environment = process.env.NODE_ENV const isDevelopment = environment === 'development' -let cmd, cmdArgs, cwd; -if (isDevelopment) { - cmd = "./gameserver"; - cmdArgs = ["--server"]; - cwd = "./leanserver/build/bin/" -} else{ - cmd = "docker"; - cmdArgs = ["run", "--runtime=runsc", "--network=none", "--rm", "-i", "testgame:latest"]; - cwd = "." -} - -/** We keep a queue of started Lean Server processes to be ready when a user arrives */ -const queue = [] +/** We keep queues of started Lean Server processes to be ready when a user arrives */ +const queue = {} const queueLength = 5 -function startServerProcess() { - const serverProcess = cp.spawn(cmd, cmdArgs, { cwd }) +function startServerProcess(gameId) { + const serverProcess = isDevelopment + ? cp.spawn("./gameserver", + ["--server", gameId, games[gameId].module, games[gameId].name], + { cwd: "./leanserver/build/bin/" }) + : cp.spawn("docker", + ["run", "--runtime=runsc", "--network=none", "--rm", "-i", `${gameId}:latest`], + { cwd: "." }) serverProcess.on('error', error => console.error(`Launching Lean Server failed: ${error}`) ); @@ -52,22 +59,32 @@ function startServerProcess() { } /** start Lean Server processes to refill the queue */ -function fillQueue() { - while (queue.length < queueLength) { - const serverProcess = startServerProcess() - queue.push(serverProcess) +function fillQueue(gameId) { + while (queue[gameId].length < games[gameId].queueLength) { + const serverProcess = startServerProcess(gameId) + queue[gameId].push(serverProcess) } } -fillQueue() +for (let gameId in games) { + queue[gameId] = [] + fillQueue(gameId) +} + +const urlRegEx = new RegExp("^/websocket/(.*)$") + +wss.addListener("connection", function(ws, req) { + const reRes = urlRegEx.exec(req.url) + if (!reRes) { console.error(`Connection refused because of invalid URL: ${req.url}`); return; } + const gameId = reRes[1] + if (!games[gameId]) { console.error(`Unknown game: ${gameId}`); return; } -wss.addListener("connection", function(ws) { let ps; if (isDevelopment) { // Don't use queue in development - ps = startServerProcess() + ps = startServerProcess(gameId) } else { - ps = queue.shift() // Pick the first Lean process; it's likely to be ready immediately - fillQueue() + ps = queue[gameId].shift() // Pick the first Lean process; it's likely to be ready immediately + fillQueue(gameId) } const socket = { diff --git a/server/leanserver/GameServer/FileWorker.lean b/server/leanserver/GameServer/FileWorker.lean index 3326fa8..9075307 100644 --- a/server/leanserver/GameServer/FileWorker.lean +++ b/server/leanserver/GameServer/FileWorker.lean @@ -113,7 +113,7 @@ where addErrorMessage (info : SourceInfo) (s : MessageData) := open Elab Meta Expr in def compileProof (inputCtx : Parser.InputContext) (snap : Snapshot) (hasWidgets : Bool) - (couldBeEndSnap : Bool) (levelParams : Game.DidOpenLevelParams) : IO Snapshot := do + (couldBeEndSnap : Bool) (levelParams : Game.DidOpenLevelParams) (initParams : Lsp.InitializeParams): IO Snapshot := do -- Recognize end snap if inputCtx.input.atEnd snap.mpState.pos ∧ couldBeEndSnap then let endSnap : Snapshot := { @@ -142,7 +142,7 @@ def compileProof (inputCtx : Parser.InputContext) (snap : Snapshot) (hasWidgets let (output, _) ← IO.FS.withIsolatedStreams (isolateStderr := server.stderrAsMessages.get snap.cmdState.scopes.head!.opts) <| liftM (m := BaseIO) do Elab.Command.catchExceptions (getResetInfoTrees *> do - let some level ← GameServer.getLevelByFileName? inputCtx.fileName + let some level ← GameServer.getLevelByFileName? initParams inputCtx.fileName | throwError "Level not found: {inputCtx.fileName}" let scope := level.scope @@ -244,7 +244,8 @@ where hOut.writeLspNotification { method := "$/game/completed", param } /-- Elaborates the next command after `parentSnap` and emits diagnostics into `hOut`. -/ - private def nextSnap (ctx : WorkerContext) (m : DocumentMeta) (cancelTk : CancelToken) (levelParams : Game.DidOpenLevelParams) + private def nextSnap (ctx : WorkerContext) (m : DocumentMeta) (cancelTk : CancelToken) + (levelParams : Game.DidOpenLevelParams) (initParams : Lsp.InitializeParams) : AsyncElabM (Option Snapshot) := do cancelTk.check let s ← get @@ -261,7 +262,8 @@ where -- Make sure that there is at least one snap after the head snap, so that -- we can see the current goal even on an empty document let couldBeEndSnap := s.snaps.size > 1 - let snap ← compileProof m.mkInputContext lastSnap ctx.clientHasWidgets couldBeEndSnap levelParams + let snap ← compileProof m.mkInputContext lastSnap ctx.clientHasWidgets couldBeEndSnap + levelParams initParams set { s with snaps := s.snaps.push snap } -- TODO(MH): check for interrupt with increased precision cancelTk.check @@ -299,7 +301,7 @@ where publishIleanInfoUpdate m ctx.hOut snaps return AsyncList.ofList snaps.toList ++ AsyncList.delayed (← EIO.asTask (ε := ElabTaskError) (prio := .dedicated) do IO.sleep startAfterMs - AsyncList.unfoldAsync (nextSnap ctx m cancelTk levelParams) { snaps }) + AsyncList.unfoldAsync (nextSnap ctx m cancelTk levelParams ctx.initParams) { snaps }) end Elab @@ -362,8 +364,9 @@ section Initialization fileMap := default def compileHeader (m : DocumentMeta) (hOut : FS.Stream) (opts : Options) (hasWidgets : Bool) - (levelModule : Name) : IO (Syntax × Task (Except Error (Snapshot × SearchPath))) := do - let gameDir := "../../../testgame" + (levelModule : Name) (initParams : InitializeParams): IO (Syntax × Task (Except Error (Snapshot × SearchPath))) := do + let some gameDir := GameServer.gameDirFromInitParams initParams + | throwServerError s!"Invalid rootUri: {initParams.rootUri?}" -- Determine search paths of the game project by running `lake env printenv LEAN_PATH`. let out ← IO.Process.output @@ -426,7 +429,8 @@ section Initialization def initializeWorker (meta : DocumentMeta) (i o e : FS.Stream) (initParams : InitializeParams) (opts : Options) (levelParams : Game.DidOpenLevelParams) : IO (WorkerContext × WorkerState) := do let clientHasWidgets := initParams.initializationOptions?.bind (·.hasWidgets?) |>.getD false - let (headerStx, headerTask) ← compileHeader meta o opts (hasWidgets := clientHasWidgets) levelParams.levelModule + let (headerStx, headerTask) ← compileHeader meta o opts (hasWidgets := clientHasWidgets) + levelParams.levelModule initParams let cancelTk ← CancelToken.new let ctx := { hIn := i @@ -506,6 +510,7 @@ section MainLoop set st match msg with | Message.request id method (some params) => + if method == "Game.getInteractiveGoals" then throwServerError "HELLO" handleRequest id method (toJson params) mainLoop levelParams | Message.notification "exit" none => diff --git a/server/leanserver/GameServer/Game.lean b/server/leanserver/GameServer/Game.lean index 95942e3..4e3681b 100644 --- a/server/leanserver/GameServer/Game.lean +++ b/server/leanserver/GameServer/Game.lean @@ -83,9 +83,9 @@ def handleDidOpenLevel (params : Json) : GameServerM Unit := do let fw ← findFileWorker! m.uri -- let s ← get let c ← read - let some lvl ← GameServer.getLevelByFileName? ((System.Uri.fileUriToPath? m.uri).getD m.uri |>.toString) + let some lvl ← GameServer.getLevelByFileName? c.initParams ((System.Uri.fileUriToPath? m.uri).getD m.uri |>.toString) | do - c.hLog.putStr s!"Level not found: {m.uri}" + c.hLog.putStr s!"Level not found: {m.uri} {c.initParams.rootUri?}" c.hLog.flush -- Send an extra notification to the file worker to inform it about the level data fw.stdin.writeLspNotification { diff --git a/server/leanserver/GameServer/RpcHandlers.lean b/server/leanserver/GameServer/RpcHandlers.lean index 32f3931..78304a5 100644 --- a/server/leanserver/GameServer/RpcHandlers.lean +++ b/server/leanserver/GameServer/RpcHandlers.lean @@ -13,15 +13,26 @@ open Meta namespace GameServer -def levelIdFromFileName? (fileName : String) : Option LevelId := Id.run do +def splitRootUri (initParams : Lsp.InitializeParams) (i : Nat): Option String := Id.run do + let some rootUri := initParams.rootUri? + | return none + let rootUriParts := rootUri.splitOn "/" + if rootUriParts.length == 3 then + return rootUriParts[i]? + return none + +def levelIdFromFileName? (initParams : Lsp.InitializeParams) (fileName : String) : Option LevelId := Id.run do let fileParts := fileName.splitOn "/" if fileParts.length == 3 then - if let some level := fileParts[2]!.toNat? then - return some {game := `TestGame, world := fileParts[1]!, level := level} + if let (some level, some game) := (fileParts[2]!.toNat?, splitRootUri initParams 2) then + return some {game, world := fileParts[1]!, level := level} return none -def getLevelByFileName? [Monad m] [MonadEnv m] (fileName : String) : m (Option GameLevel) := do - let some levelId := levelIdFromFileName? fileName +def gameDirFromInitParams (initParams : Lsp.InitializeParams) : Option String := + (splitRootUri initParams 0).map (s!"../../../{·}") + +def getLevelByFileName? [Monad m] [MonadEnv m] (initParams : Lsp.InitializeParams) (fileName : String) : m (Option GameLevel) := do + let some levelId := levelIdFromFileName? initParams fileName | return none return ← getLevel? levelId @@ -114,9 +125,9 @@ def evalHintMessage : Expr → MetaM (Array Expr → MessageData) := fun _ => pu open Meta in /-- Find all hints whose trigger matches the current goal -/ -def findHints (goal : MVarId) (doc : FileWorker.EditableDocument) : MetaM (Array GameHint) := do +def findHints (goal : MVarId) (doc : FileWorker.EditableDocument) (initParams : Lsp.InitializeParams) : MetaM (Array GameHint) := do goal.withContext do - let some level ← getLevelByFileName? doc.meta.mkInputContext.fileName + let some level ← getLevelByFileName? initParams doc.meta.mkInputContext.fileName | throwError "Level not found: {doc.meta.mkInputContext.fileName}" let hints ← level.hints.filterMapM fun hint => do openAbstractCtxResult hint.goal fun hintFVars hintGoal => do @@ -137,6 +148,7 @@ def findHints (goal : MVarId) (doc : FileWorker.EditableDocument) : MetaM (Array open RequestM in def getInteractiveGoals (p : Lsp.PlainGoalParams) : RequestM (RequestTask (Option InteractiveGoals)) := do let doc ← readDoc + let rc ← readThe RequestContext let text := doc.meta.text let hoverPos := text.lspPosToUtf8Pos p.position -- TODO: I couldn't find a good condition to find the correct snap. So we are looking @@ -152,7 +164,7 @@ def getInteractiveGoals (p : Lsp.PlainGoalParams) : RequestM (RequestTask (Optio return List.toArray <| if useAfter then ti.goalsAfter else ti.goalsBefore let goals ← ci.runMetaM {} do goals.mapM fun goal => do - let hints ← findHints goal doc + let hints ← findHints goal doc rc.initParams return ← goalToInteractive goal hints -- compute the goal diff -- let goals ← ciAfter.runMetaM {} (do diff --git a/server/leanserver/GameServer/Watchdog.lean b/server/leanserver/GameServer/Watchdog.lean index 039a730..8b6cfca 100644 --- a/server/leanserver/GameServer/Watchdog.lean +++ b/server/leanserver/GameServer/Watchdog.lean @@ -1,6 +1,7 @@ /- This file is mostly copied from `Lean/Server/Watchdog.lean`. -/ import Lean import GameServer.Game +import Lean.Server.Watchdog namespace MyServer.Watchdog open Lean @@ -76,9 +77,7 @@ def initAndRunWatchdogAux : GameServerM Unit := do catch _ => pure (Message.notification "exit" none) | throwServerError "Got `shutdown` request, expected an `exit` notification" -def createEnv : IO Environment := do - let gameDir := "../../../testgame" - +def createEnv (gameDir : String) (module : String) : IO Environment := do -- Determine search paths of the game project by running `lake env printenv LEAN_PATH`. let out ← IO.Process.output { cwd := gameDir, cmd := "lake", args := #["env","printenv","LEAN_PATH"] } @@ -93,11 +92,17 @@ def createEnv : IO Environment := do -- Set the search path Lean.searchPathRef.set paths - let gameName := `TestGame - let env ← importModules [{ module := `Init : Import }, { module := gameName : Import }] {} 0 + let env ← importModules [{ module := `Init : Import }, { module := module : Import }] {} 0 return env def initAndRunWatchdog (args : List String) (i o e : FS.Stream) : IO Unit := do + if args.length < 4 then + throwServerError s!"Expected 3 command line arguments in addition to `--server`: + game directory, the name of the main module, and the name of the game" + let gameId := args[1]! + let gameDir := s!"../../../{gameId}" + let module := args[2]! + let gameName := args[3]! let workerPath := "./gameserver" -- TODO: Do the following commands slow us down? let srcSearchPath ← initSrcSearchPath (← getBuildDir) @@ -106,8 +111,11 @@ def initAndRunWatchdog (args : List String) (i o e : FS.Stream) : IO Unit := do let i ← maybeTee "wdIn.txt" false i let o ← maybeTee "wdOut.txt" true o let e ← maybeTee "wdErr.txt" true e - let state := {env := ← createEnv, game := `TestGame} + let state := {env := ← createEnv gameDir module, game := gameName} let initRequest ← i.readLspRequestAs "initialize" InitializeParams + -- We misuse the `rootUri` field to store gameId, module, and gameName + let rootUri? := s!"{gameId}/{module}/{gameName}" + let initRequest := {initRequest with param := {initRequest.param with rootUri?}} o.writeLspResponse { id := initRequest.id result := { diff --git a/server/leanserver/Main.lean b/server/leanserver/Main.lean index 993172c..39964b7 100644 --- a/server/leanserver/Main.lean +++ b/server/leanserver/Main.lean @@ -8,7 +8,7 @@ unsafe def main : List String → IO UInt32 := fun args => do Lean.enableInitializersExecution if args[0]? == some "--server" then - MyServer.Watchdog.watchdogMain [] + MyServer.Watchdog.watchdogMain args else if args[0]? == some "--worker" then MyServer.FileWorker.workerMain {} else diff --git a/server/server.Dockerfile b/server/server.Dockerfile index e056a94..a054176 100644 --- a/server/server.Dockerfile +++ b/server/server.Dockerfile @@ -12,4 +12,4 @@ RUN rm -f ./build/bin/gameserver RUN lake build WORKDIR /leanserver/build/bin/ -CMD ["./gameserver", "--server"] +CMD ["./gameserver", "--server", "testgame", "TestGame", "TestGame"] From 7992cffa265bef90332cb3d9c3a51d81515c7819 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Thu, 23 Mar 2023 15:23:12 +0100 Subject: [PATCH 19/29] add minimal NNG dummy --- server/nng/.gitignore | 1 + server/nng/NNG.lean | 9 +++++++++ server/nng/lake-manifest.json | 3 +++ server/nng/lakefile.lean | 11 +++++++++++ server/nng/lean-toolchain | 1 + 5 files changed, 25 insertions(+) create mode 100644 server/nng/.gitignore create mode 100644 server/nng/NNG.lean create mode 100644 server/nng/lake-manifest.json create mode 100644 server/nng/lakefile.lean create mode 100644 server/nng/lean-toolchain diff --git a/server/nng/.gitignore b/server/nng/.gitignore new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/server/nng/.gitignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/server/nng/NNG.lean b/server/nng/NNG.lean new file mode 100644 index 0000000..88032ba --- /dev/null +++ b/server/nng/NNG.lean @@ -0,0 +1,9 @@ +import GameServer.Commands + +Game "NNG" +World "HelloWorld" +Level 1 + +Statement : 1 + 1 = 2 := rfl + +MakeGame \ No newline at end of file diff --git a/server/nng/lake-manifest.json b/server/nng/lake-manifest.json new file mode 100644 index 0000000..fee354b --- /dev/null +++ b/server/nng/lake-manifest.json @@ -0,0 +1,3 @@ +{"version": 4, + "packagesDir": "lake-packages", + "packages": [{"path": {"name": "GameServer", "dir": "./../leanserver"}}]} diff --git a/server/nng/lakefile.lean b/server/nng/lakefile.lean new file mode 100644 index 0000000..9ff2130 --- /dev/null +++ b/server/nng/lakefile.lean @@ -0,0 +1,11 @@ +import Lake +open Lake DSL + +require GameServer from ".."/"leanserver" + +package NNG + +@[default_target] +lean_lib NNG { + moreLeanArgs := #["-DautoImplicit=false"] +} diff --git a/server/nng/lean-toolchain b/server/nng/lean-toolchain new file mode 100644 index 0000000..7f0fd43 --- /dev/null +++ b/server/nng/lean-toolchain @@ -0,0 +1 @@ +leanprover/lean4:nightly-2023-03-09 From dac15d84b5500c5005f0a4fe40039c4e001b89b0 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Thu, 23 Mar 2023 15:54:47 +0100 Subject: [PATCH 20/29] add build mechanism for nng --- UPDATE_LEAN.sh | 4 ++++ package.json | 2 +- server/build.sh | 12 +++++++++++- server/index.mjs | 3 ++- server/server.Dockerfile | 4 ++-- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/UPDATE_LEAN.sh b/UPDATE_LEAN.sh index 3ea0fe4..899dbbc 100755 --- a/UPDATE_LEAN.sh +++ b/UPDATE_LEAN.sh @@ -10,6 +10,10 @@ lake update cp lake-packages/mathlib/lean-toolchain lean-toolchain cp lake-packages/mathlib/lean-toolchain ../leanserver/lean-toolchain +cp lake-packages/mathlib/lean-toolchain ../nng/lean-toolchain cd ../leanserver lake update + +cd ../nng +lake update diff --git a/package.json b/package.json index a230586..ebe5cdc 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "scripts": { "start": "concurrently -n server,client -c blue,green \"npm run start_server\" \"npm run start_client\"", - "start_server": "cd server && (cd leanserver && lake build) && (cd testgame && lake exe cache get && lake build) && NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", + "start_server": "cd server && (cd leanserver && lake build) && (cd testgame && lake exe cache get && lake build) && (cd nng && lake build) && NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", "start_client": "NODE_ENV=development webpack-dev-server --hot", "build": "npm run build_server && npm run build_client", "build_server": "server/build.sh", diff --git a/server/build.sh b/server/build.sh index bc3f11a..3b85690 100755 --- a/server/build.sh +++ b/server/build.sh @@ -6,6 +6,16 @@ cd $(dirname $0) # Build elan image if not already present docker build --pull --rm -f elan.Dockerfile -t elan:latest . +# Build testgame (cd testgame && lake exe cache get && lake build) docker rmi testgame:latest || true -docker build --rm -f server.Dockerfile -t testgame:latest . +docker build \ + --build-arg GAME_DIR=testgame \ + --rm -f server.Dockerfile -t testgame:latest . + +# Build NNG +(cd nng && lake build) +docker rmi nng:latest || true +docker build \ + --build-arg GAME_DIR=nng \ + --rm -f server.Dockerfile -t nng:latest . diff --git a/server/index.mjs b/server/index.mjs index 4e80f8a..756987c 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -45,7 +45,8 @@ function startServerProcess(gameId) { ["--server", gameId, games[gameId].module, games[gameId].name], { cwd: "./leanserver/build/bin/" }) : cp.spawn("docker", - ["run", "--runtime=runsc", "--network=none", "--rm", "-i", `${gameId}:latest`], + ["run", "--runtime=runsc", "--network=none", "--rm", "-i", `${gameId}:latest`, + "./gameserver", "--server", gameId, games[gameId].module, games[gameId].name], { cwd: "." }) serverProcess.on('error', error => console.error(`Launching Lean Server failed: ${error}`) diff --git a/server/server.Dockerfile b/server/server.Dockerfile index a054176..304b16b 100644 --- a/server/server.Dockerfile +++ b/server/server.Dockerfile @@ -1,10 +1,11 @@ +ARG GAME_DIR FROM elan:latest WORKDIR / # Copy lean files COPY leanserver ./leanserver -COPY testgame ./testgame +COPY $GAME_DIR ./$GAME_DIR # TODO: make `testgame` a build argument WORKDIR /leanserver @@ -12,4 +13,3 @@ RUN rm -f ./build/bin/gameserver RUN lake build WORKDIR /leanserver/build/bin/ -CMD ["./gameserver", "--server", "testgame", "TestGame", "TestGame"] From cbc9576f98372645ecdd371805aa146a1e443a6c Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Thu, 23 Mar 2023 16:21:57 +0100 Subject: [PATCH 21/29] add support for multiple games in redux state --- client/src/components/Level.tsx | 14 +++---- client/src/components/Welcome.tsx | 2 +- client/src/components/infoview/main.tsx | 6 ++- client/src/state/localStorage.ts | 2 +- client/src/state/progress.ts | 50 +++++++++++++------------ 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/client/src/components/Level.tsx b/client/src/components/Level.tsx index 9e44489..513a8ed 100644 --- a/client/src/components/Level.tsx +++ b/client/src/components/Level.tsx @@ -76,8 +76,9 @@ function PlayableLevel({worldId, levelId}) { const codeviewRef = useRef(null) const introductionPanelRef = useRef(null) - const initialCode = useAppSelector(selectCode(worldId, levelId)) - const initialSelections = useAppSelector(selectSelections(worldId, levelId)) + const gameId = React.useContext(GameIdContext) + const initialCode = useAppSelector(selectCode(gameId, worldId, levelId)) + const initialSelections = useAppSelector(selectSelections(gameId, worldId, levelId)) const [commandLineMode, setCommandLineMode] = useState(true) const [commandLineInput, setCommandLineInput] = useState("") @@ -126,14 +127,13 @@ function PlayableLevel({worldId, levelId}) { }]); } - const gameId = React.useContext(GameIdContext) const gameInfo = useGetGameInfoQuery({game: gameId}) const level = useLoadLevelQuery({game: gameId, world: worldId, level: levelId}) const dispatch = useAppDispatch() const onDidChangeContent = (code) => { - dispatch(codeEdited({world: worldId, level: levelId, code})) + dispatch(codeEdited({game: gameId, world: worldId, level: levelId, code})) setCanUndo(code.trim() !== "") } @@ -142,10 +142,10 @@ function PlayableLevel({worldId, levelId}) { const selections = monacoSelections.map( ({selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn}) => {return {selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn}}) - dispatch(changedSelection({world: worldId, level: levelId, selections})) + dispatch(changedSelection({game: gameId, world: worldId, level: levelId, selections})) } - const completed = useAppSelector(selectCompleted(worldId, levelId)) + const completed = useAppSelector(selectCompleted(gameId, worldId, levelId)) const {editor, infoProvider, editorConnection} = useLevelEditor(worldId, levelId, codeviewRef, initialCode, initialSelections, onDidChangeContent, onDidChangeSelection) @@ -408,7 +408,7 @@ function useLoadWorldFiles(worldId) { if (model) { models.push(model) } else { - const code = selectCode(worldId, levelId)(store.getState()) + const code = selectCode(gameId, worldId, levelId)(store.getState()) models.push(monaco.editor.createModel(code, 'lean4', uri)) } } diff --git a/client/src/components/Welcome.tsx b/client/src/components/Welcome.tsx index c5fce54..5fb36f3 100644 --- a/client/src/components/Welcome.tsx +++ b/client/src/components/Welcome.tsx @@ -19,7 +19,7 @@ import { GameIdContext } from '../App'; function LevelIcon({ worldId, levelId, position }) { const gameId = React.useContext(GameIdContext) - const completed = useSelector(selectCompleted(worldId,levelId)) + const completed = useSelector(selectCompleted(gameId, worldId,levelId)) // TODO: relative positioning? return ( diff --git a/client/src/components/infoview/main.tsx b/client/src/components/infoview/main.tsx index 369bdf7..39075bd 100644 --- a/client/src/components/infoview/main.tsx +++ b/client/src/components/infoview/main.tsx @@ -19,10 +19,12 @@ import { WithRpcSessions } from '../../../../node_modules/lean4-infoview/src/inf import { ServerVersion } from '../../../../node_modules/lean4-infoview/src/infoview/serverVersion'; import { useAppDispatch, useAppSelector } from '../../hooks'; import { levelCompleted, selectCompleted } from '../../state/progress'; +import { GameIdContext } from '../../App'; export function Main(props: {world: string, level: number}) { const ec = React.useContext(EditorContext); + const gameId = React.useContext(GameIdContext) const dispatch = useAppDispatch() @@ -33,13 +35,13 @@ export function Main(props: {world: string, level: number}) { if (ec.events.changedCursorLocation.current && ec.events.changedCursorLocation.current.uri === params.uri) { - dispatch(levelCompleted({world: props.world, level: props.level})) + dispatch(levelCompleted({game: gameId, world: props.world, level: props.level})) } }, [] ); - const completed = useAppSelector(selectCompleted(props.world, props.level)) + const completed = useAppSelector(selectCompleted(gameId, props.world, props.level)) /* Set up updates to the global infoview state on editor events. */ const config = useEventResult(ec.events.changedInfoviewConfig) ?? defaultInfoviewConfig; diff --git a/client/src/state/localStorage.ts b/client/src/state/localStorage.ts index a290d75..729d84d 100644 --- a/client/src/state/localStorage.ts +++ b/client/src/state/localStorage.ts @@ -1,4 +1,4 @@ -const KEY = "progress"; +const KEY = "game_progress"; export function loadState() { try { const serializedState = localStorage.getItem(KEY); diff --git a/client/src/state/progress.ts b/client/src/state/progress.ts index 6005d4f..3d0a29c 100644 --- a/client/src/state/progress.ts +++ b/client/src/state/progress.ts @@ -3,7 +3,7 @@ import type { PayloadAction } from '@reduxjs/toolkit' import { loadState } from "./localStorage"; interface ProgressState { - level: {[world: string]: {[level: number]: LevelProgressState}} + level: {[game: string]: {[world: string]: {[level: number]: LevelProgressState}}} } interface Selection { selectionStartLineNumber: number, @@ -20,12 +20,15 @@ interface LevelProgressState { const initialProgressState = loadState() ?? { level: {} } as ProgressState const initalLevelProgressState = {code: "", completed: false} as LevelProgressState -function addLevelProgress(state, action: PayloadAction<{world: string, level: number}>) { - if (!state.level[action.payload.world]) { - state.level[action.payload.world] = {} +function addLevelProgress(state, action: PayloadAction<{game: string, world: string, level: number}>) { + if (!state.level[action.payload.game]) { + state.level[action.payload.game] = {} } - if (!state.level[action.payload.world][action.payload.level]) { - state.level[action.payload.world][action.payload.level] = {...initalLevelProgressState} + if (!state.level[action.payload.game][action.payload.world]) { + state.level[action.payload.game][action.payload.world] = {} + } + if (!state.level[action.payload.game][action.payload.world][action.payload.level]) { + state.level[action.payload.game][action.payload.world][action.payload.level] = {...initalLevelProgressState} } } @@ -33,45 +36,46 @@ export const progressSlice = createSlice({ name: 'progress', initialState: initialProgressState, reducers: { - codeEdited(state, action: PayloadAction<{world: string, level: number, code: string}>) { + codeEdited(state, action: PayloadAction<{game: string, world: string, level: number, code: string}>) { addLevelProgress(state, action) - state.level[action.payload.world][action.payload.level].code = action.payload.code - state.level[action.payload.world][action.payload.level].completed = false + state.level[action.payload.game][action.payload.world][action.payload.level].code = action.payload.code + state.level[action.payload.game][action.payload.world][action.payload.level].completed = false }, - changedSelection(state, action: PayloadAction<{world: string, level: number, selections: Selection[]}>) { + changedSelection(state, action: PayloadAction<{game: string, world: string, level: number, selections: Selection[]}>) { addLevelProgress(state, action) - state.level[action.payload.world][action.payload.level].selections = action.payload.selections + state.level[action.payload.game][action.payload.world][action.payload.level].selections = action.payload.selections }, - levelCompleted(state, action: PayloadAction<{world: string, level: number}>) { + levelCompleted(state, action: PayloadAction<{game: string, world: string, level: number}>) { addLevelProgress(state, action) - state.level[action.payload.world][action.payload.level].completed = true + state.level[action.payload.game][action.payload.world][action.payload.level].completed = true }, } }) -export function selectLevel(world: string, level: number) { +export function selectLevel(game: string, world: string, level: number) { return (state) =>{ - if (!state.progress.level[world]) { return initalLevelProgressState } - if (!state.progress.level[world][level]) { return initalLevelProgressState } - return state.progress.level[world][level] + if (!state.progress.level[game]) { return initalLevelProgressState } + if (!state.progress.level[game][world]) { return initalLevelProgressState } + if (!state.progress.level[game][world][level]) { return initalLevelProgressState } + return state.progress.level[game][world][level] } } -export function selectCode(world: string, level: number) { +export function selectCode(game: string, world: string, level: number) { return (state) => { - return selectLevel(world, level)(state).code + return selectLevel(game, world, level)(state).code } } -export function selectSelections(world: string, level: number) { +export function selectSelections(game: string, world: string, level: number) { return (state) => { - return selectLevel(world, level)(state).selections + return selectLevel(game, world, level)(state).selections } } -export function selectCompleted(world: string, level: number) { +export function selectCompleted(game: string, world: string, level: number) { return (state) => { - return selectLevel(world, level)(state).completed + return selectLevel(game, world, level)(state).completed } } From 6cb53965c2e7f522d0ebe1941eedfc19f5ba7749 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Thu, 23 Mar 2023 17:00:36 +0100 Subject: [PATCH 22/29] levels --- .../TestGame/Levels/SetTheory/L03_Subset.lean | 1 - .../Levels/SetTheory/L04_SubsetEmpty.lean | 9 +++++---- server/testgame/TestGame/MyNat.lean | 19 ------------------- 3 files changed, 5 insertions(+), 24 deletions(-) delete mode 100644 server/testgame/TestGame/MyNat.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean index 4a04171..17f9af6 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean @@ -2,7 +2,6 @@ import TestGame.Metadata import Mathlib.Init.Set import Mathlib.Tactic.Tauto -import Mathlib set_option tactic.hygienic false diff --git a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean index 431dc1c..4ef1bd8 100644 --- a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean +++ b/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean @@ -3,6 +3,7 @@ import TestGame.Levels.SetTheory.L03_Subset import Mathlib.Init.Set import Mathlib.Tactic.Tauto +import Mathlib set_option tactic.hygienic false @@ -48,10 +49,11 @@ Statement subset_empty_iff {A : Type _} (s : Set A) : Hint "**Du**: Ja, die einzige Teilmenge der leeren Menge ist die leere Menge. Das ist doch eine Tautologie? - **Robo**: Naja nicht ganz, " - + **Robo**: Ja schon, aber zuerst einmal explizit." + Hint (hidden := true) "**Robo**: Fang doch einmal mit `constructor` an." constructor intro h + Hint "**Robo**: " apply Subset.antisymm assumption simp only [empty_subset] @@ -60,8 +62,7 @@ Statement subset_empty_iff {A : Type _} (s : Set A) : rcases a with ⟨h₁, h₂⟩ assumption -NewTactic constructor intro rw assumption rcases simp tauto trivial - +DisabledTactic tauto NewLemma Subset.antisymm Subset.antisymm_iff empty_subset end MySet diff --git a/server/testgame/TestGame/MyNat.lean b/server/testgame/TestGame/MyNat.lean deleted file mode 100644 index 3cecede..0000000 --- a/server/testgame/TestGame/MyNat.lean +++ /dev/null @@ -1,19 +0,0 @@ -axiom MyNat : Type - ---notation "ℕ" => MyNat - ---axiom zero : ℕ - -axiom succ : ℕ → ℕ - -@[instance] axiom MyOfNat (n : Nat) : OfNat ℕ n - -@[instance] axiom myAddition : HAdd ℕ ℕ ℕ - -@[instance] axiom myMultiplication : HMul ℕ ℕ ℕ - -axiom add_zero : ∀ a : ℕ, a + 0 = a - -axiom add_succ : ∀ a b : ℕ, a + succ b = succ (a + b) - -@[elab_as_elim] axiom myInduction {P : ℕ → Prop} (n : ℕ) (h₀ : P 0) (h : ∀ n, P n → P (succ n)) : P n From 5c73d3bddb196bd27509927a7666a1c78d992375 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Thu, 23 Mar 2023 17:10:13 +0100 Subject: [PATCH 23/29] rename testgame to adam --- server/{testgame => adam}/.gitignore | 0 server/{testgame => adam}/.vscode/settings.json | 0 server/{testgame/TestGame.lean => adam/Adam.lean} | 0 .../TestGame => adam/Adam}/HelperTools.lean | 0 .../{testgame/TestGame => adam/Adam}/LemmaDocs.lean | 0 .../Adam}/Levels/Contradiction.lean | 0 .../Adam}/Levels/Contradiction/L01_Have.lean | 0 .../Adam}/Levels/Contradiction/L02_Suffices.lean | 0 .../Adam}/Levels/Contradiction/L03_ByContra.lean | 0 .../Adam}/Levels/Contradiction/L04_ByContra.lean | 0 .../Adam}/Levels/Contradiction/L05_Contrapose.lean | 0 .../Adam}/Levels/Contradiction/L06_Summary.lean | 0 .../TestGame => adam/Adam}/Levels/Function.lean | 0 .../Adam}/Levels/Function/L01_Function.lean | 0 .../Adam}/Levels/Function/L02_Let.lean | 0 .../Adam}/Levels/Function/L03_Piecewise.lean | 0 .../Adam}/Levels/Function/L04_Injective.lean | 0 .../Adam}/Levels/Function/L05_Injective.lean | 0 .../Adam}/Levels/Function/L06_Injective.lean | 0 .../Adam}/Levels/Function/L07_Surjective.lean | 0 .../Adam}/Levels/Function/L08_Bijective.lean | 0 .../Adam}/Levels/Function/L09_Inverse.lean | 0 .../Adam}/Levels/Function/L11_Inverse.lean | 0 .../TestGame => adam/Adam}/Levels/Implication.lean | 0 .../Adam}/Levels/Implication/L01_Intro.lean | 0 .../Adam}/Levels/Implication/L02_Revert.lean | 0 .../Adam}/Levels/Implication/L03_Apply.lean | 0 .../Adam}/Levels/Implication/L04_Apply.lean | 0 .../Adam}/Levels/Implication/L05_Apply.lean | 0 .../Adam}/Levels/Implication/L06_Iff.lean | 0 .../Adam}/Levels/Implication/L07_Rw.lean | 0 .../Adam}/Levels/Implication/L08_Iff.lean | 0 .../Adam}/Levels/Implication/L09_Iff.lean | 0 .../Adam}/Levels/Implication/L10_Apply.lean | 0 .../Adam}/Levels/Implication/L11_ByCases.lean | 0 .../Adam}/Levels/Implication/L12_Rw.lean | 0 .../Adam}/Levels/Implication/L13_Summary.lean | 0 .../TestGame => adam/Adam}/Levels/Induction.lean | 0 .../Adam}/Levels/Induction/L01_Induction.lean | 0 .../TestGame => adam/Adam}/Levels/Inequality.lean | 0 .../Adam}/Levels/Inequality/L01_LE.lean | 0 .../Adam}/Levels/Inequality/L02_Pos.lean | 0 .../Adam}/Levels/Inequality/L03_Linarith.lean | 0 .../Adam}/Levels/Inequality/L04_Linarith.lean | 0 .../Adam}/Levels/Inequality/T_Induction.lean | 0 .../TestGame => adam/Adam}/Levels/Lean.lean | 0 .../Adam}/Levels/Lean/L01_Type.lean | 0 .../Adam}/Levels/Lean/L02_Universe.lean | 0 .../Adam}/Levels/Lean/L03_ImplicitArguments.lean | 0 .../Adam}/Levels/Lean/L04_InstanceArguments.lean | 0 .../Adam}/Levels/LeftOvers/L09_Or.lean | 0 .../Adam}/Levels/LeftOvers/L33_Prime.lean | 0 .../Adam}/Levels/LeftOvers/L34_ExistsUnique.lean | 0 .../Adam}/Levels/LeftOvers/Lxx_Prime.lean | 0 .../Adam}/Levels/LeftOvers/Lxx_Tauto.lean | 0 .../Adam}/Levels/LeftOvers/Lxx_Tfae.lean | 0 .../Adam}/Levels/LeftOvers/Playground.lean | 0 .../Adam}/Levels/LeftOvers/xx_Functions.lean | 0 .../Adam}/Levels/LinearAlgebra.lean | 0 .../Adam}/Levels/LinearAlgebra/L01_Module.lean | 0 .../Levels/LinearAlgebra/L02_VectorNotation.lean | 0 .../Levels/LinearAlgebra/L03_VectorNotation.lean | 0 .../Adam}/Levels/LinearAlgebra/L04_Submodule.lean | 0 .../Adam}/Levels/LinearAlgebra/L05_Submodule.lean | 0 .../Adam}/Levels/LinearAlgebra/L06_Span.lean | 0 .../Adam}/Levels/LinearAlgebra/L07_Span.lean | 0 .../Levels/LinearAlgebra/L08_GeneratingSet.lean | 0 .../Adam}/Levels/LinearAlgebra/M01_LinearMap.lean | 0 .../Adam}/Levels/LinearAlgebra/M02_LinearIndep.lean | 0 .../Adam}/Levels/LinearAlgebra/M04_Basis.lean | 0 .../Adam}/Levels/LinearAlgebra/N01_Span.lean | 0 .../Adam}/Levels/LinearAlgebra/N02_Span.lean | 0 .../Adam}/Levels/LinearAlgebra/N03_Idempotent.lean | 0 .../Adam}/Levels/LinearAlgebra/N04_Idempotent.lean | 0 .../Adam}/Levels/LinearAlgebra/N05_Sum.lean | 0 .../Adam}/Levels/LinearAlgebra/N06_Sum.lean | 0 .../Adam}/Levels/LinearAlgebra/N07_Prod.lean | 0 .../Adam}/Levels/LinearAlgebra/N08_Prod.lean | 0 .../Adam}/Levels/LinearAlgebra/N09_Prod.lean | 0 .../TestGame => adam/Adam}/Levels/Notes.txt | 0 .../TestGame => adam/Adam}/Levels/Numbers.lean | 0 .../Adam}/Levels/Numbers/L01_PNat.lean | 0 .../Adam}/Levels/Numbers/L02_PNat.lean | 0 .../TestGame => adam/Adam}/Levels/Predicate.lean | 0 .../Adam}/Levels/Predicate/L01_Ring.lean | 0 .../Adam}/Levels/Predicate/L02_Rewrite.lean | 0 .../Adam}/Levels/Predicate/L03_Rewrite.lean | 0 .../Adam}/Levels/Predicate/L04_Ring.lean | 0 .../Adam}/Levels/Predicate/L05_Rfl.lean | 0 .../Adam}/Levels/Predicate/L06_Exists.lean | 0 .../Adam}/Levels/Predicate/L07_Exists.lean | 0 .../Adam}/Levels/Predicate/L08_Forall.lean | 0 .../Adam}/Levels/Predicate/L09_PushNeg.lean | 0 .../TestGame => adam/Adam}/Levels/Prime.lean | 0 .../Adam}/Levels/Prime/L01_Dvd.lean | 0 .../Adam}/Levels/Prime/L02_Prime.lean | 0 .../Adam}/Levels/Prime/L03_Prime.lean | 0 .../Adam}/Levels/Prime/L06_ExistsUnique.lean | 0 .../TestGame => adam/Adam}/Levels/Proposition.lean | 0 .../Adam}/Levels/Proposition/L00_Tauto.lean | 0 .../Adam}/Levels/Proposition/L01_Rfl.lean | 0 .../Adam}/Levels/Proposition/L02_Assumption.lean | 0 .../Adam}/Levels/Proposition/L03_Assumption.lean | 0 .../Adam}/Levels/Proposition/L04_True.lean | 0 .../Adam}/Levels/Proposition/L05_Not.lean | 0 .../Adam}/Levels/Proposition/L06_False.lean | 0 .../Adam}/Levels/Proposition/L07_ContraNotEq.lean | 0 .../Adam}/Levels/Proposition/L08_Contra.lean | 0 .../Adam}/Levels/Proposition/L09_And.lean | 0 .../Adam}/Levels/Proposition/L10_And.lean | 0 .../Adam}/Levels/Proposition/L11_Or.lean | 0 .../Adam}/Levels/Proposition/L12_Or.lean | 0 .../Adam}/Levels/Proposition/L13_Summary.lean | 0 .../TestGame => adam/Adam}/Levels/SetFunction.lean | 0 .../Adam}/Levels/SetFunction/L01_Image.lean | 0 .../Adam}/Levels/SetFunction/L02_Preimage.lean | 0 .../Adam}/Levels/SetFunction/L03_Range.lean | 0 .../Adam}/Levels/SetFunction/L04_ImageUnion.lean | 0 .../TestGame => adam/Adam}/Levels/SetTheory.lean | 0 .../Adam}/Levels/SetTheory/L01_Univ.lean | 0 .../Adam}/Levels/SetTheory/L02_Empty.lean | 0 .../Adam}/Levels/SetTheory/L03_Subset.lean | 0 .../Adam}/Levels/SetTheory/L04_SubsetEmpty.lean | 0 .../Adam}/Levels/SetTheory/L05_Empty.lean | 0 .../Adam}/Levels/SetTheory/L06_Nonempty.lean | 0 .../Adam}/Levels/SetTheory/L07_UnionInter.lean | 0 .../Adam}/Levels/SetTheory/L08_UnionInter.lean | 0 .../Adam}/Levels/SetTheory/L09_Complement.lean | 0 .../Adam}/Levels/SetTheory/L10_Morgan.lean | 0 .../Adam}/Levels/SetTheory/L11_SSubset.lean | 0 .../Adam}/Levels/SetTheory/L12_Insert.lean | 0 .../Adam}/Levels/SetTheory/L13_Insert.lean | 0 .../Adam}/Levels/SetTheory/L14_SetOf.lean | 0 .../Adam}/Levels/SetTheory/L15_Powerset.lean | 0 .../Adam}/Levels/SetTheory/L16_Disjoint.lean | 0 .../Adam}/Levels/SetTheory/L17_SetOf.lean | 0 .../Adam}/Levels/SetTheory/L18_SetOf.lean | 0 .../Adam}/Levels/SetTheory/L19_Subtype.lean | 0 .../Adam}/Levels/SetTheory/L20_UnionInter.lean | 0 .../Adam}/Levels/SetTheory/L21_Summary.lean | 0 .../Adam}/Levels/SetTheory/PowersetPlayground.lean | 0 .../Adam}/Levels/SetTheory/T01_Set.lean | 0 .../Adam}/Levels/SetTheory/T04_xx.lean | 0 .../Adam}/Levels/StatementTest.lean | 0 .../TestGame => adam/Adam}/Levels/Sum.lean | 0 .../TestGame => adam/Adam}/Levels/Sum/L01_Simp.lean | 0 .../TestGame => adam/Adam}/Levels/Sum/L02_Sum.lean | 0 .../Adam}/Levels/Sum/L03_ArithSum.lean | 0 .../Adam}/Levels/Sum/L04_SumOdd.lean | 0 .../Adam}/Levels/Sum/L05_SumComm.lean | 0 .../Adam}/Levels/Sum/L06_Summary.lean | 0 .../Adam}/Levels/Sum/T01_Induction.lean | 0 .../Adam}/Levels/Sum/T02_Induction.lean | 0 .../Adam}/Levels/Sum/T03__Bernoulli.lean | 0 .../{testgame/TestGame => adam/Adam}/Metadata.lean | 0 .../TestGame => adam/Adam}/Options/ArithSum.lean | 0 .../TestGame => adam/Adam}/Playground.lean | 0 .../TestGame => adam/Adam}/StructInstWithHoles.lean | 0 .../Adam}/StructInstWithHolesTest.lean | 0 .../TestGame => adam/Adam}/TacticDocs.lean | 0 .../{testgame/TestGame => adam/Adam}/Tactics.lean | 0 .../TestGame => adam/Adam}/ToBePorted.lean | 0 server/{testgame => adam}/gameserver | Bin server/{testgame => adam}/lake-manifest.json | 0 server/{testgame => adam}/lakefile.lean | 0 server/{testgame => adam}/lean-toolchain | 0 166 files changed, 0 insertions(+), 0 deletions(-) rename server/{testgame => adam}/.gitignore (100%) rename server/{testgame => adam}/.vscode/settings.json (100%) rename server/{testgame/TestGame.lean => adam/Adam.lean} (100%) rename server/{testgame/TestGame => adam/Adam}/HelperTools.lean (100%) rename server/{testgame/TestGame => adam/Adam}/LemmaDocs.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L01_Have.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L02_Suffices.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L03_ByContra.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L04_ByContra.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L05_Contrapose.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Contradiction/L06_Summary.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L01_Function.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L02_Let.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L03_Piecewise.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L04_Injective.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L05_Injective.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L06_Injective.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L07_Surjective.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L08_Bijective.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L09_Inverse.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Function/L11_Inverse.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L01_Intro.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L02_Revert.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L03_Apply.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L04_Apply.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L05_Apply.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L06_Iff.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L07_Rw.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L08_Iff.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L09_Iff.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L10_Apply.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L11_ByCases.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L12_Rw.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Implication/L13_Summary.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Induction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Induction/L01_Induction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality/L01_LE.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality/L02_Pos.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality/L03_Linarith.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality/L04_Linarith.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Inequality/T_Induction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Lean.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Lean/L01_Type.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Lean/L02_Universe.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Lean/L03_ImplicitArguments.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Lean/L04_InstanceArguments.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/L09_Or.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/L33_Prime.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/L34_ExistsUnique.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/Lxx_Prime.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/Lxx_Tauto.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/Lxx_Tfae.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/Playground.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LeftOvers/xx_Functions.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L01_Module.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L02_VectorNotation.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L03_VectorNotation.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L04_Submodule.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L05_Submodule.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L06_Span.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L07_Span.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/L08_GeneratingSet.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/M01_LinearMap.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/M02_LinearIndep.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/M04_Basis.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N01_Span.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N02_Span.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N03_Idempotent.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N04_Idempotent.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N05_Sum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N06_Sum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N07_Prod.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N08_Prod.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/LinearAlgebra/N09_Prod.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Notes.txt (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Numbers.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Numbers/L01_PNat.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Numbers/L02_PNat.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L01_Ring.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L02_Rewrite.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L03_Rewrite.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L04_Ring.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L05_Rfl.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L06_Exists.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L07_Exists.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L08_Forall.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Predicate/L09_PushNeg.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Prime.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Prime/L01_Dvd.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Prime/L02_Prime.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Prime/L03_Prime.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Prime/L06_ExistsUnique.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L00_Tauto.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L01_Rfl.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L02_Assumption.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L03_Assumption.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L04_True.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L05_Not.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L06_False.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L07_ContraNotEq.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L08_Contra.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L09_And.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L10_And.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L11_Or.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L12_Or.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Proposition/L13_Summary.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetFunction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetFunction/L01_Image.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetFunction/L02_Preimage.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetFunction/L03_Range.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetFunction/L04_ImageUnion.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L01_Univ.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L02_Empty.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L03_Subset.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L04_SubsetEmpty.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L05_Empty.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L06_Nonempty.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L07_UnionInter.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L08_UnionInter.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L09_Complement.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L10_Morgan.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L11_SSubset.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L12_Insert.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L13_Insert.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L14_SetOf.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L15_Powerset.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L16_Disjoint.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L17_SetOf.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L18_SetOf.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L19_Subtype.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L20_UnionInter.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/L21_Summary.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/PowersetPlayground.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/T01_Set.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/SetTheory/T04_xx.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/StatementTest.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L01_Simp.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L02_Sum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L03_ArithSum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L04_SumOdd.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L05_SumComm.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/L06_Summary.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/T01_Induction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/T02_Induction.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Levels/Sum/T03__Bernoulli.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Metadata.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Options/ArithSum.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Playground.lean (100%) rename server/{testgame/TestGame => adam/Adam}/StructInstWithHoles.lean (100%) rename server/{testgame/TestGame => adam/Adam}/StructInstWithHolesTest.lean (100%) rename server/{testgame/TestGame => adam/Adam}/TacticDocs.lean (100%) rename server/{testgame/TestGame => adam/Adam}/Tactics.lean (100%) rename server/{testgame/TestGame => adam/Adam}/ToBePorted.lean (100%) rename server/{testgame => adam}/gameserver (100%) rename server/{testgame => adam}/lake-manifest.json (100%) rename server/{testgame => adam}/lakefile.lean (100%) rename server/{testgame => adam}/lean-toolchain (100%) diff --git a/server/testgame/.gitignore b/server/adam/.gitignore similarity index 100% rename from server/testgame/.gitignore rename to server/adam/.gitignore diff --git a/server/testgame/.vscode/settings.json b/server/adam/.vscode/settings.json similarity index 100% rename from server/testgame/.vscode/settings.json rename to server/adam/.vscode/settings.json diff --git a/server/testgame/TestGame.lean b/server/adam/Adam.lean similarity index 100% rename from server/testgame/TestGame.lean rename to server/adam/Adam.lean diff --git a/server/testgame/TestGame/HelperTools.lean b/server/adam/Adam/HelperTools.lean similarity index 100% rename from server/testgame/TestGame/HelperTools.lean rename to server/adam/Adam/HelperTools.lean diff --git a/server/testgame/TestGame/LemmaDocs.lean b/server/adam/Adam/LemmaDocs.lean similarity index 100% rename from server/testgame/TestGame/LemmaDocs.lean rename to server/adam/Adam/LemmaDocs.lean diff --git a/server/testgame/TestGame/Levels/Contradiction.lean b/server/adam/Adam/Levels/Contradiction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction.lean rename to server/adam/Adam/Levels/Contradiction.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L01_Have.lean b/server/adam/Adam/Levels/Contradiction/L01_Have.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L01_Have.lean rename to server/adam/Adam/Levels/Contradiction/L01_Have.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L02_Suffices.lean b/server/adam/Adam/Levels/Contradiction/L02_Suffices.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L02_Suffices.lean rename to server/adam/Adam/Levels/Contradiction/L02_Suffices.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L03_ByContra.lean b/server/adam/Adam/Levels/Contradiction/L03_ByContra.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L03_ByContra.lean rename to server/adam/Adam/Levels/Contradiction/L03_ByContra.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L04_ByContra.lean b/server/adam/Adam/Levels/Contradiction/L04_ByContra.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L04_ByContra.lean rename to server/adam/Adam/Levels/Contradiction/L04_ByContra.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L05_Contrapose.lean b/server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L05_Contrapose.lean rename to server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean diff --git a/server/testgame/TestGame/Levels/Contradiction/L06_Summary.lean b/server/adam/Adam/Levels/Contradiction/L06_Summary.lean similarity index 100% rename from server/testgame/TestGame/Levels/Contradiction/L06_Summary.lean rename to server/adam/Adam/Levels/Contradiction/L06_Summary.lean diff --git a/server/testgame/TestGame/Levels/Function.lean b/server/adam/Adam/Levels/Function.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function.lean rename to server/adam/Adam/Levels/Function.lean diff --git a/server/testgame/TestGame/Levels/Function/L01_Function.lean b/server/adam/Adam/Levels/Function/L01_Function.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L01_Function.lean rename to server/adam/Adam/Levels/Function/L01_Function.lean diff --git a/server/testgame/TestGame/Levels/Function/L02_Let.lean b/server/adam/Adam/Levels/Function/L02_Let.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L02_Let.lean rename to server/adam/Adam/Levels/Function/L02_Let.lean diff --git a/server/testgame/TestGame/Levels/Function/L03_Piecewise.lean b/server/adam/Adam/Levels/Function/L03_Piecewise.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L03_Piecewise.lean rename to server/adam/Adam/Levels/Function/L03_Piecewise.lean diff --git a/server/testgame/TestGame/Levels/Function/L04_Injective.lean b/server/adam/Adam/Levels/Function/L04_Injective.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L04_Injective.lean rename to server/adam/Adam/Levels/Function/L04_Injective.lean diff --git a/server/testgame/TestGame/Levels/Function/L05_Injective.lean b/server/adam/Adam/Levels/Function/L05_Injective.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L05_Injective.lean rename to server/adam/Adam/Levels/Function/L05_Injective.lean diff --git a/server/testgame/TestGame/Levels/Function/L06_Injective.lean b/server/adam/Adam/Levels/Function/L06_Injective.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L06_Injective.lean rename to server/adam/Adam/Levels/Function/L06_Injective.lean diff --git a/server/testgame/TestGame/Levels/Function/L07_Surjective.lean b/server/adam/Adam/Levels/Function/L07_Surjective.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L07_Surjective.lean rename to server/adam/Adam/Levels/Function/L07_Surjective.lean diff --git a/server/testgame/TestGame/Levels/Function/L08_Bijective.lean b/server/adam/Adam/Levels/Function/L08_Bijective.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L08_Bijective.lean rename to server/adam/Adam/Levels/Function/L08_Bijective.lean diff --git a/server/testgame/TestGame/Levels/Function/L09_Inverse.lean b/server/adam/Adam/Levels/Function/L09_Inverse.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L09_Inverse.lean rename to server/adam/Adam/Levels/Function/L09_Inverse.lean diff --git a/server/testgame/TestGame/Levels/Function/L11_Inverse.lean b/server/adam/Adam/Levels/Function/L11_Inverse.lean similarity index 100% rename from server/testgame/TestGame/Levels/Function/L11_Inverse.lean rename to server/adam/Adam/Levels/Function/L11_Inverse.lean diff --git a/server/testgame/TestGame/Levels/Implication.lean b/server/adam/Adam/Levels/Implication.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication.lean rename to server/adam/Adam/Levels/Implication.lean diff --git a/server/testgame/TestGame/Levels/Implication/L01_Intro.lean b/server/adam/Adam/Levels/Implication/L01_Intro.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L01_Intro.lean rename to server/adam/Adam/Levels/Implication/L01_Intro.lean diff --git a/server/testgame/TestGame/Levels/Implication/L02_Revert.lean b/server/adam/Adam/Levels/Implication/L02_Revert.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L02_Revert.lean rename to server/adam/Adam/Levels/Implication/L02_Revert.lean diff --git a/server/testgame/TestGame/Levels/Implication/L03_Apply.lean b/server/adam/Adam/Levels/Implication/L03_Apply.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L03_Apply.lean rename to server/adam/Adam/Levels/Implication/L03_Apply.lean diff --git a/server/testgame/TestGame/Levels/Implication/L04_Apply.lean b/server/adam/Adam/Levels/Implication/L04_Apply.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L04_Apply.lean rename to server/adam/Adam/Levels/Implication/L04_Apply.lean diff --git a/server/testgame/TestGame/Levels/Implication/L05_Apply.lean b/server/adam/Adam/Levels/Implication/L05_Apply.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L05_Apply.lean rename to server/adam/Adam/Levels/Implication/L05_Apply.lean diff --git a/server/testgame/TestGame/Levels/Implication/L06_Iff.lean b/server/adam/Adam/Levels/Implication/L06_Iff.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L06_Iff.lean rename to server/adam/Adam/Levels/Implication/L06_Iff.lean diff --git a/server/testgame/TestGame/Levels/Implication/L07_Rw.lean b/server/adam/Adam/Levels/Implication/L07_Rw.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L07_Rw.lean rename to server/adam/Adam/Levels/Implication/L07_Rw.lean diff --git a/server/testgame/TestGame/Levels/Implication/L08_Iff.lean b/server/adam/Adam/Levels/Implication/L08_Iff.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L08_Iff.lean rename to server/adam/Adam/Levels/Implication/L08_Iff.lean diff --git a/server/testgame/TestGame/Levels/Implication/L09_Iff.lean b/server/adam/Adam/Levels/Implication/L09_Iff.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L09_Iff.lean rename to server/adam/Adam/Levels/Implication/L09_Iff.lean diff --git a/server/testgame/TestGame/Levels/Implication/L10_Apply.lean b/server/adam/Adam/Levels/Implication/L10_Apply.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L10_Apply.lean rename to server/adam/Adam/Levels/Implication/L10_Apply.lean diff --git a/server/testgame/TestGame/Levels/Implication/L11_ByCases.lean b/server/adam/Adam/Levels/Implication/L11_ByCases.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L11_ByCases.lean rename to server/adam/Adam/Levels/Implication/L11_ByCases.lean diff --git a/server/testgame/TestGame/Levels/Implication/L12_Rw.lean b/server/adam/Adam/Levels/Implication/L12_Rw.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L12_Rw.lean rename to server/adam/Adam/Levels/Implication/L12_Rw.lean diff --git a/server/testgame/TestGame/Levels/Implication/L13_Summary.lean b/server/adam/Adam/Levels/Implication/L13_Summary.lean similarity index 100% rename from server/testgame/TestGame/Levels/Implication/L13_Summary.lean rename to server/adam/Adam/Levels/Implication/L13_Summary.lean diff --git a/server/testgame/TestGame/Levels/Induction.lean b/server/adam/Adam/Levels/Induction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Induction.lean rename to server/adam/Adam/Levels/Induction.lean diff --git a/server/testgame/TestGame/Levels/Induction/L01_Induction.lean b/server/adam/Adam/Levels/Induction/L01_Induction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Induction/L01_Induction.lean rename to server/adam/Adam/Levels/Induction/L01_Induction.lean diff --git a/server/testgame/TestGame/Levels/Inequality.lean b/server/adam/Adam/Levels/Inequality.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality.lean rename to server/adam/Adam/Levels/Inequality.lean diff --git a/server/testgame/TestGame/Levels/Inequality/L01_LE.lean b/server/adam/Adam/Levels/Inequality/L01_LE.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality/L01_LE.lean rename to server/adam/Adam/Levels/Inequality/L01_LE.lean diff --git a/server/testgame/TestGame/Levels/Inequality/L02_Pos.lean b/server/adam/Adam/Levels/Inequality/L02_Pos.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality/L02_Pos.lean rename to server/adam/Adam/Levels/Inequality/L02_Pos.lean diff --git a/server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean b/server/adam/Adam/Levels/Inequality/L03_Linarith.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality/L03_Linarith.lean rename to server/adam/Adam/Levels/Inequality/L03_Linarith.lean diff --git a/server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean b/server/adam/Adam/Levels/Inequality/L04_Linarith.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality/L04_Linarith.lean rename to server/adam/Adam/Levels/Inequality/L04_Linarith.lean diff --git a/server/testgame/TestGame/Levels/Inequality/T_Induction.lean b/server/adam/Adam/Levels/Inequality/T_Induction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Inequality/T_Induction.lean rename to server/adam/Adam/Levels/Inequality/T_Induction.lean diff --git a/server/testgame/TestGame/Levels/Lean.lean b/server/adam/Adam/Levels/Lean.lean similarity index 100% rename from server/testgame/TestGame/Levels/Lean.lean rename to server/adam/Adam/Levels/Lean.lean diff --git a/server/testgame/TestGame/Levels/Lean/L01_Type.lean b/server/adam/Adam/Levels/Lean/L01_Type.lean similarity index 100% rename from server/testgame/TestGame/Levels/Lean/L01_Type.lean rename to server/adam/Adam/Levels/Lean/L01_Type.lean diff --git a/server/testgame/TestGame/Levels/Lean/L02_Universe.lean b/server/adam/Adam/Levels/Lean/L02_Universe.lean similarity index 100% rename from server/testgame/TestGame/Levels/Lean/L02_Universe.lean rename to server/adam/Adam/Levels/Lean/L02_Universe.lean diff --git a/server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean b/server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean similarity index 100% rename from server/testgame/TestGame/Levels/Lean/L03_ImplicitArguments.lean rename to server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean diff --git a/server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean b/server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean similarity index 100% rename from server/testgame/TestGame/Levels/Lean/L04_InstanceArguments.lean rename to server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/L09_Or.lean b/server/adam/Adam/Levels/LeftOvers/L09_Or.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/L09_Or.lean rename to server/adam/Adam/Levels/LeftOvers/L09_Or.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/L33_Prime.lean b/server/adam/Adam/Levels/LeftOvers/L33_Prime.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/L33_Prime.lean rename to server/adam/Adam/Levels/LeftOvers/L33_Prime.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/L34_ExistsUnique.lean b/server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/L34_ExistsUnique.lean rename to server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/Lxx_Prime.lean b/server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/Lxx_Prime.lean rename to server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/Lxx_Tauto.lean b/server/adam/Adam/Levels/LeftOvers/Lxx_Tauto.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/Lxx_Tauto.lean rename to server/adam/Adam/Levels/LeftOvers/Lxx_Tauto.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/Lxx_Tfae.lean b/server/adam/Adam/Levels/LeftOvers/Lxx_Tfae.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/Lxx_Tfae.lean rename to server/adam/Adam/Levels/LeftOvers/Lxx_Tfae.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/Playground.lean b/server/adam/Adam/Levels/LeftOvers/Playground.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/Playground.lean rename to server/adam/Adam/Levels/LeftOvers/Playground.lean diff --git a/server/testgame/TestGame/Levels/LeftOvers/xx_Functions.lean b/server/adam/Adam/Levels/LeftOvers/xx_Functions.lean similarity index 100% rename from server/testgame/TestGame/Levels/LeftOvers/xx_Functions.lean rename to server/adam/Adam/Levels/LeftOvers/xx_Functions.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra.lean b/server/adam/Adam/Levels/LinearAlgebra.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra.lean rename to server/adam/Adam/Levels/LinearAlgebra.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L01_Module.lean b/server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L01_Module.lean rename to server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L02_VectorNotation.lean b/server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L02_VectorNotation.lean rename to server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L03_VectorNotation.lean b/server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L03_VectorNotation.lean rename to server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L04_Submodule.lean b/server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L04_Submodule.lean rename to server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L05_Submodule.lean b/server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L05_Submodule.lean rename to server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L06_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L06_Span.lean rename to server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L07_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L07_Span.lean rename to server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/L08_GeneratingSet.lean b/server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/L08_GeneratingSet.lean rename to server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M01_LinearMap.lean b/server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/M01_LinearMap.lean rename to server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean b/server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/M02_LinearIndep.lean rename to server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean b/server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/M04_Basis.lean rename to server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N01_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N01_Span.lean rename to server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N02_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N02_Span.lean rename to server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N03_Idempotent.lean b/server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N03_Idempotent.lean rename to server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N04_Idempotent.lean b/server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N04_Idempotent.lean rename to server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N05_Sum.lean b/server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N05_Sum.lean rename to server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N06_Sum.lean b/server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N06_Sum.lean rename to server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N07_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N07_Prod.lean rename to server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N08_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N08_Prod.lean rename to server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean diff --git a/server/testgame/TestGame/Levels/LinearAlgebra/N09_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean similarity index 100% rename from server/testgame/TestGame/Levels/LinearAlgebra/N09_Prod.lean rename to server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean diff --git a/server/testgame/TestGame/Levels/Notes.txt b/server/adam/Adam/Levels/Notes.txt similarity index 100% rename from server/testgame/TestGame/Levels/Notes.txt rename to server/adam/Adam/Levels/Notes.txt diff --git a/server/testgame/TestGame/Levels/Numbers.lean b/server/adam/Adam/Levels/Numbers.lean similarity index 100% rename from server/testgame/TestGame/Levels/Numbers.lean rename to server/adam/Adam/Levels/Numbers.lean diff --git a/server/testgame/TestGame/Levels/Numbers/L01_PNat.lean b/server/adam/Adam/Levels/Numbers/L01_PNat.lean similarity index 100% rename from server/testgame/TestGame/Levels/Numbers/L01_PNat.lean rename to server/adam/Adam/Levels/Numbers/L01_PNat.lean diff --git a/server/testgame/TestGame/Levels/Numbers/L02_PNat.lean b/server/adam/Adam/Levels/Numbers/L02_PNat.lean similarity index 100% rename from server/testgame/TestGame/Levels/Numbers/L02_PNat.lean rename to server/adam/Adam/Levels/Numbers/L02_PNat.lean diff --git a/server/testgame/TestGame/Levels/Predicate.lean b/server/adam/Adam/Levels/Predicate.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate.lean rename to server/adam/Adam/Levels/Predicate.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L01_Ring.lean b/server/adam/Adam/Levels/Predicate/L01_Ring.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L01_Ring.lean rename to server/adam/Adam/Levels/Predicate/L01_Ring.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L02_Rewrite.lean b/server/adam/Adam/Levels/Predicate/L02_Rewrite.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L02_Rewrite.lean rename to server/adam/Adam/Levels/Predicate/L02_Rewrite.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L03_Rewrite.lean b/server/adam/Adam/Levels/Predicate/L03_Rewrite.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L03_Rewrite.lean rename to server/adam/Adam/Levels/Predicate/L03_Rewrite.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L04_Ring.lean b/server/adam/Adam/Levels/Predicate/L04_Ring.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L04_Ring.lean rename to server/adam/Adam/Levels/Predicate/L04_Ring.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L05_Rfl.lean b/server/adam/Adam/Levels/Predicate/L05_Rfl.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L05_Rfl.lean rename to server/adam/Adam/Levels/Predicate/L05_Rfl.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L06_Exists.lean b/server/adam/Adam/Levels/Predicate/L06_Exists.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L06_Exists.lean rename to server/adam/Adam/Levels/Predicate/L06_Exists.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L07_Exists.lean b/server/adam/Adam/Levels/Predicate/L07_Exists.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L07_Exists.lean rename to server/adam/Adam/Levels/Predicate/L07_Exists.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L08_Forall.lean b/server/adam/Adam/Levels/Predicate/L08_Forall.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L08_Forall.lean rename to server/adam/Adam/Levels/Predicate/L08_Forall.lean diff --git a/server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean b/server/adam/Adam/Levels/Predicate/L09_PushNeg.lean similarity index 100% rename from server/testgame/TestGame/Levels/Predicate/L09_PushNeg.lean rename to server/adam/Adam/Levels/Predicate/L09_PushNeg.lean diff --git a/server/testgame/TestGame/Levels/Prime.lean b/server/adam/Adam/Levels/Prime.lean similarity index 100% rename from server/testgame/TestGame/Levels/Prime.lean rename to server/adam/Adam/Levels/Prime.lean diff --git a/server/testgame/TestGame/Levels/Prime/L01_Dvd.lean b/server/adam/Adam/Levels/Prime/L01_Dvd.lean similarity index 100% rename from server/testgame/TestGame/Levels/Prime/L01_Dvd.lean rename to server/adam/Adam/Levels/Prime/L01_Dvd.lean diff --git a/server/testgame/TestGame/Levels/Prime/L02_Prime.lean b/server/adam/Adam/Levels/Prime/L02_Prime.lean similarity index 100% rename from server/testgame/TestGame/Levels/Prime/L02_Prime.lean rename to server/adam/Adam/Levels/Prime/L02_Prime.lean diff --git a/server/testgame/TestGame/Levels/Prime/L03_Prime.lean b/server/adam/Adam/Levels/Prime/L03_Prime.lean similarity index 100% rename from server/testgame/TestGame/Levels/Prime/L03_Prime.lean rename to server/adam/Adam/Levels/Prime/L03_Prime.lean diff --git a/server/testgame/TestGame/Levels/Prime/L06_ExistsUnique.lean b/server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean similarity index 100% rename from server/testgame/TestGame/Levels/Prime/L06_ExistsUnique.lean rename to server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean diff --git a/server/testgame/TestGame/Levels/Proposition.lean b/server/adam/Adam/Levels/Proposition.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition.lean rename to server/adam/Adam/Levels/Proposition.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L00_Tauto.lean b/server/adam/Adam/Levels/Proposition/L00_Tauto.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L00_Tauto.lean rename to server/adam/Adam/Levels/Proposition/L00_Tauto.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L01_Rfl.lean b/server/adam/Adam/Levels/Proposition/L01_Rfl.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L01_Rfl.lean rename to server/adam/Adam/Levels/Proposition/L01_Rfl.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L02_Assumption.lean b/server/adam/Adam/Levels/Proposition/L02_Assumption.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L02_Assumption.lean rename to server/adam/Adam/Levels/Proposition/L02_Assumption.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean b/server/adam/Adam/Levels/Proposition/L03_Assumption.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L03_Assumption.lean rename to server/adam/Adam/Levels/Proposition/L03_Assumption.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L04_True.lean b/server/adam/Adam/Levels/Proposition/L04_True.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L04_True.lean rename to server/adam/Adam/Levels/Proposition/L04_True.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L05_Not.lean b/server/adam/Adam/Levels/Proposition/L05_Not.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L05_Not.lean rename to server/adam/Adam/Levels/Proposition/L05_Not.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L06_False.lean b/server/adam/Adam/Levels/Proposition/L06_False.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L06_False.lean rename to server/adam/Adam/Levels/Proposition/L06_False.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L07_ContraNotEq.lean b/server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L07_ContraNotEq.lean rename to server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L08_Contra.lean b/server/adam/Adam/Levels/Proposition/L08_Contra.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L08_Contra.lean rename to server/adam/Adam/Levels/Proposition/L08_Contra.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L09_And.lean b/server/adam/Adam/Levels/Proposition/L09_And.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L09_And.lean rename to server/adam/Adam/Levels/Proposition/L09_And.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L10_And.lean b/server/adam/Adam/Levels/Proposition/L10_And.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L10_And.lean rename to server/adam/Adam/Levels/Proposition/L10_And.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L11_Or.lean b/server/adam/Adam/Levels/Proposition/L11_Or.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L11_Or.lean rename to server/adam/Adam/Levels/Proposition/L11_Or.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L12_Or.lean b/server/adam/Adam/Levels/Proposition/L12_Or.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L12_Or.lean rename to server/adam/Adam/Levels/Proposition/L12_Or.lean diff --git a/server/testgame/TestGame/Levels/Proposition/L13_Summary.lean b/server/adam/Adam/Levels/Proposition/L13_Summary.lean similarity index 100% rename from server/testgame/TestGame/Levels/Proposition/L13_Summary.lean rename to server/adam/Adam/Levels/Proposition/L13_Summary.lean diff --git a/server/testgame/TestGame/Levels/SetFunction.lean b/server/adam/Adam/Levels/SetFunction.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetFunction.lean rename to server/adam/Adam/Levels/SetFunction.lean diff --git a/server/testgame/TestGame/Levels/SetFunction/L01_Image.lean b/server/adam/Adam/Levels/SetFunction/L01_Image.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetFunction/L01_Image.lean rename to server/adam/Adam/Levels/SetFunction/L01_Image.lean diff --git a/server/testgame/TestGame/Levels/SetFunction/L02_Preimage.lean b/server/adam/Adam/Levels/SetFunction/L02_Preimage.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetFunction/L02_Preimage.lean rename to server/adam/Adam/Levels/SetFunction/L02_Preimage.lean diff --git a/server/testgame/TestGame/Levels/SetFunction/L03_Range.lean b/server/adam/Adam/Levels/SetFunction/L03_Range.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetFunction/L03_Range.lean rename to server/adam/Adam/Levels/SetFunction/L03_Range.lean diff --git a/server/testgame/TestGame/Levels/SetFunction/L04_ImageUnion.lean b/server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetFunction/L04_ImageUnion.lean rename to server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean diff --git a/server/testgame/TestGame/Levels/SetTheory.lean b/server/adam/Adam/Levels/SetTheory.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory.lean rename to server/adam/Adam/Levels/SetTheory.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean b/server/adam/Adam/Levels/SetTheory/L01_Univ.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L01_Univ.lean rename to server/adam/Adam/Levels/SetTheory/L01_Univ.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean b/server/adam/Adam/Levels/SetTheory/L02_Empty.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L02_Empty.lean rename to server/adam/Adam/Levels/SetTheory/L02_Empty.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean b/server/adam/Adam/Levels/SetTheory/L03_Subset.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L03_Subset.lean rename to server/adam/Adam/Levels/SetTheory/L03_Subset.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean b/server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L04_SubsetEmpty.lean rename to server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean b/server/adam/Adam/Levels/SetTheory/L05_Empty.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L05_Empty.lean rename to server/adam/Adam/Levels/SetTheory/L05_Empty.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean b/server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L06_Nonempty.lean rename to server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L07_UnionInter.lean rename to server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L08_UnionInter.lean rename to server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean b/server/adam/Adam/Levels/SetTheory/L09_Complement.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L09_Complement.lean rename to server/adam/Adam/Levels/SetTheory/L09_Complement.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L10_Morgan.lean b/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L10_Morgan.lean rename to server/adam/Adam/Levels/SetTheory/L10_Morgan.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean b/server/adam/Adam/Levels/SetTheory/L11_SSubset.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L11_SSubset.lean rename to server/adam/Adam/Levels/SetTheory/L11_SSubset.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean b/server/adam/Adam/Levels/SetTheory/L12_Insert.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L12_Insert.lean rename to server/adam/Adam/Levels/SetTheory/L12_Insert.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L13_Insert.lean b/server/adam/Adam/Levels/SetTheory/L13_Insert.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L13_Insert.lean rename to server/adam/Adam/Levels/SetTheory/L13_Insert.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L14_SetOf.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L14_SetOf.lean rename to server/adam/Adam/Levels/SetTheory/L14_SetOf.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean b/server/adam/Adam/Levels/SetTheory/L15_Powerset.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L15_Powerset.lean rename to server/adam/Adam/Levels/SetTheory/L15_Powerset.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean b/server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L16_Disjoint.lean rename to server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L17_SetOf.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L17_SetOf.lean rename to server/adam/Adam/Levels/SetTheory/L17_SetOf.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L18_SetOf.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L18_SetOf.lean rename to server/adam/Adam/Levels/SetTheory/L18_SetOf.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean b/server/adam/Adam/Levels/SetTheory/L19_Subtype.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L19_Subtype.lean rename to server/adam/Adam/Levels/SetTheory/L19_Subtype.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L20_UnionInter.lean rename to server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean b/server/adam/Adam/Levels/SetTheory/L21_Summary.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/L21_Summary.lean rename to server/adam/Adam/Levels/SetTheory/L21_Summary.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/PowersetPlayground.lean b/server/adam/Adam/Levels/SetTheory/PowersetPlayground.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/PowersetPlayground.lean rename to server/adam/Adam/Levels/SetTheory/PowersetPlayground.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/T01_Set.lean b/server/adam/Adam/Levels/SetTheory/T01_Set.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/T01_Set.lean rename to server/adam/Adam/Levels/SetTheory/T01_Set.lean diff --git a/server/testgame/TestGame/Levels/SetTheory/T04_xx.lean b/server/adam/Adam/Levels/SetTheory/T04_xx.lean similarity index 100% rename from server/testgame/TestGame/Levels/SetTheory/T04_xx.lean rename to server/adam/Adam/Levels/SetTheory/T04_xx.lean diff --git a/server/testgame/TestGame/Levels/StatementTest.lean b/server/adam/Adam/Levels/StatementTest.lean similarity index 100% rename from server/testgame/TestGame/Levels/StatementTest.lean rename to server/adam/Adam/Levels/StatementTest.lean diff --git a/server/testgame/TestGame/Levels/Sum.lean b/server/adam/Adam/Levels/Sum.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum.lean rename to server/adam/Adam/Levels/Sum.lean diff --git a/server/testgame/TestGame/Levels/Sum/L01_Simp.lean b/server/adam/Adam/Levels/Sum/L01_Simp.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L01_Simp.lean rename to server/adam/Adam/Levels/Sum/L01_Simp.lean diff --git a/server/testgame/TestGame/Levels/Sum/L02_Sum.lean b/server/adam/Adam/Levels/Sum/L02_Sum.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L02_Sum.lean rename to server/adam/Adam/Levels/Sum/L02_Sum.lean diff --git a/server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean b/server/adam/Adam/Levels/Sum/L03_ArithSum.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L03_ArithSum.lean rename to server/adam/Adam/Levels/Sum/L03_ArithSum.lean diff --git a/server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean b/server/adam/Adam/Levels/Sum/L04_SumOdd.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L04_SumOdd.lean rename to server/adam/Adam/Levels/Sum/L04_SumOdd.lean diff --git a/server/testgame/TestGame/Levels/Sum/L05_SumComm.lean b/server/adam/Adam/Levels/Sum/L05_SumComm.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L05_SumComm.lean rename to server/adam/Adam/Levels/Sum/L05_SumComm.lean diff --git a/server/testgame/TestGame/Levels/Sum/L06_Summary.lean b/server/adam/Adam/Levels/Sum/L06_Summary.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/L06_Summary.lean rename to server/adam/Adam/Levels/Sum/L06_Summary.lean diff --git a/server/testgame/TestGame/Levels/Sum/T01_Induction.lean b/server/adam/Adam/Levels/Sum/T01_Induction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/T01_Induction.lean rename to server/adam/Adam/Levels/Sum/T01_Induction.lean diff --git a/server/testgame/TestGame/Levels/Sum/T02_Induction.lean b/server/adam/Adam/Levels/Sum/T02_Induction.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/T02_Induction.lean rename to server/adam/Adam/Levels/Sum/T02_Induction.lean diff --git a/server/testgame/TestGame/Levels/Sum/T03__Bernoulli.lean b/server/adam/Adam/Levels/Sum/T03__Bernoulli.lean similarity index 100% rename from server/testgame/TestGame/Levels/Sum/T03__Bernoulli.lean rename to server/adam/Adam/Levels/Sum/T03__Bernoulli.lean diff --git a/server/testgame/TestGame/Metadata.lean b/server/adam/Adam/Metadata.lean similarity index 100% rename from server/testgame/TestGame/Metadata.lean rename to server/adam/Adam/Metadata.lean diff --git a/server/testgame/TestGame/Options/ArithSum.lean b/server/adam/Adam/Options/ArithSum.lean similarity index 100% rename from server/testgame/TestGame/Options/ArithSum.lean rename to server/adam/Adam/Options/ArithSum.lean diff --git a/server/testgame/TestGame/Playground.lean b/server/adam/Adam/Playground.lean similarity index 100% rename from server/testgame/TestGame/Playground.lean rename to server/adam/Adam/Playground.lean diff --git a/server/testgame/TestGame/StructInstWithHoles.lean b/server/adam/Adam/StructInstWithHoles.lean similarity index 100% rename from server/testgame/TestGame/StructInstWithHoles.lean rename to server/adam/Adam/StructInstWithHoles.lean diff --git a/server/testgame/TestGame/StructInstWithHolesTest.lean b/server/adam/Adam/StructInstWithHolesTest.lean similarity index 100% rename from server/testgame/TestGame/StructInstWithHolesTest.lean rename to server/adam/Adam/StructInstWithHolesTest.lean diff --git a/server/testgame/TestGame/TacticDocs.lean b/server/adam/Adam/TacticDocs.lean similarity index 100% rename from server/testgame/TestGame/TacticDocs.lean rename to server/adam/Adam/TacticDocs.lean diff --git a/server/testgame/TestGame/Tactics.lean b/server/adam/Adam/Tactics.lean similarity index 100% rename from server/testgame/TestGame/Tactics.lean rename to server/adam/Adam/Tactics.lean diff --git a/server/testgame/TestGame/ToBePorted.lean b/server/adam/Adam/ToBePorted.lean similarity index 100% rename from server/testgame/TestGame/ToBePorted.lean rename to server/adam/Adam/ToBePorted.lean diff --git a/server/testgame/gameserver b/server/adam/gameserver similarity index 100% rename from server/testgame/gameserver rename to server/adam/gameserver diff --git a/server/testgame/lake-manifest.json b/server/adam/lake-manifest.json similarity index 100% rename from server/testgame/lake-manifest.json rename to server/adam/lake-manifest.json diff --git a/server/testgame/lakefile.lean b/server/adam/lakefile.lean similarity index 100% rename from server/testgame/lakefile.lean rename to server/adam/lakefile.lean diff --git a/server/testgame/lean-toolchain b/server/adam/lean-toolchain similarity index 100% rename from server/testgame/lean-toolchain rename to server/adam/lean-toolchain From bbe38ddc7c2b22ec61ce47b59865579fe914cd23 Mon Sep 17 00:00:00 2001 From: Alexander Bentkamp Date: Thu, 23 Mar 2023 17:10:44 +0100 Subject: [PATCH 24/29] rename testgame to adam, part 2 --- UPDATE_LEAN.sh | 2 +- client/src/index.tsx | 2 +- package.json | 2 +- server/adam/Adam.lean | 32 ++++++------- server/adam/Adam/Levels/Contradiction.lean | 14 +++--- .../Adam/Levels/Contradiction/L01_Have.lean | 6 +-- .../Levels/Contradiction/L02_Suffices.lean | 6 +-- .../Levels/Contradiction/L03_ByContra.lean | 6 +-- .../Levels/Contradiction/L04_ByContra.lean | 6 +-- .../Levels/Contradiction/L05_Contrapose.lean | 6 +-- .../Levels/Contradiction/L06_Summary.lean | 6 +-- server/adam/Adam/Levels/Function.lean | 22 ++++----- .../Adam/Levels/Function/L01_Function.lean | 4 +- server/adam/Adam/Levels/Function/L02_Let.lean | 4 +- .../Adam/Levels/Function/L03_Piecewise.lean | 4 +- .../Adam/Levels/Function/L04_Injective.lean | 4 +- .../Adam/Levels/Function/L05_Injective.lean | 4 +- .../Adam/Levels/Function/L06_Injective.lean | 4 +- .../Adam/Levels/Function/L07_Surjective.lean | 4 +- .../Adam/Levels/Function/L08_Bijective.lean | 4 +- .../Adam/Levels/Function/L09_Inverse.lean | 4 +- .../Adam/Levels/Function/L11_Inverse.lean | 4 +- server/adam/Adam/Levels/Implication.lean | 28 +++++------ .../Adam/Levels/Implication/L01_Intro.lean | 4 +- .../Adam/Levels/Implication/L02_Revert.lean | 4 +- .../Adam/Levels/Implication/L03_Apply.lean | 4 +- .../Adam/Levels/Implication/L04_Apply.lean | 4 +- .../Adam/Levels/Implication/L05_Apply.lean | 4 +- .../adam/Adam/Levels/Implication/L06_Iff.lean | 4 +- .../adam/Adam/Levels/Implication/L07_Rw.lean | 4 +- .../adam/Adam/Levels/Implication/L08_Iff.lean | 4 +- .../adam/Adam/Levels/Implication/L09_Iff.lean | 4 +- .../Adam/Levels/Implication/L10_Apply.lean | 4 +- .../Adam/Levels/Implication/L11_ByCases.lean | 4 +- .../adam/Adam/Levels/Implication/L12_Rw.lean | 4 +- .../Adam/Levels/Implication/L13_Summary.lean | 4 +- server/adam/Adam/Levels/Induction.lean | 4 +- .../Adam/Levels/Induction/L01_Induction.lean | 4 +- server/adam/Adam/Levels/Inequality.lean | 10 ++-- .../adam/Adam/Levels/Inequality/L01_LE.lean | 4 +- .../adam/Adam/Levels/Inequality/L02_Pos.lean | 4 +- .../Adam/Levels/Inequality/L03_Linarith.lean | 4 +- .../Adam/Levels/Inequality/L04_Linarith.lean | 4 +- .../Adam/Levels/Inequality/T_Induction.lean | 4 +- server/adam/Adam/Levels/Lean.lean | 10 ++-- server/adam/Adam/Levels/Lean/L01_Type.lean | 4 +- .../adam/Adam/Levels/Lean/L02_Universe.lean | 4 +- .../Levels/Lean/L03_ImplicitArguments.lean | 6 +-- .../Levels/Lean/L04_InstanceArguments.lean | 6 +-- server/adam/Adam/Levels/LeftOvers/L09_Or.lean | 4 +- .../adam/Adam/Levels/LeftOvers/L33_Prime.lean | 4 +- .../Levels/LeftOvers/L34_ExistsUnique.lean | 4 +- .../adam/Adam/Levels/LeftOvers/Lxx_Prime.lean | 4 +- .../Adam/Levels/LeftOvers/Playground.lean | 2 +- .../Adam/Levels/LeftOvers/xx_Functions.lean | 4 +- server/adam/Adam/Levels/LinearAlgebra.lean | 46 +++++++++---------- .../Adam/Levels/LinearAlgebra/L01_Module.lean | 6 +-- .../LinearAlgebra/L02_VectorNotation.lean | 4 +- .../LinearAlgebra/L03_VectorNotation.lean | 4 +- .../Levels/LinearAlgebra/L04_Submodule.lean | 4 +- .../Levels/LinearAlgebra/L05_Submodule.lean | 4 +- .../Adam/Levels/LinearAlgebra/L06_Span.lean | 4 +- .../Adam/Levels/LinearAlgebra/L07_Span.lean | 4 +- .../LinearAlgebra/L08_GeneratingSet.lean | 4 +- .../Levels/LinearAlgebra/M01_LinearMap.lean | 4 +- .../Levels/LinearAlgebra/M02_LinearIndep.lean | 4 +- .../Adam/Levels/LinearAlgebra/M04_Basis.lean | 4 +- .../Adam/Levels/LinearAlgebra/N01_Span.lean | 4 +- .../Adam/Levels/LinearAlgebra/N02_Span.lean | 4 +- .../Levels/LinearAlgebra/N03_Idempotent.lean | 4 +- .../Levels/LinearAlgebra/N04_Idempotent.lean | 4 +- .../Adam/Levels/LinearAlgebra/N05_Sum.lean | 4 +- .../Adam/Levels/LinearAlgebra/N06_Sum.lean | 4 +- .../Adam/Levels/LinearAlgebra/N07_Prod.lean | 4 +- .../Adam/Levels/LinearAlgebra/N08_Prod.lean | 4 +- .../Adam/Levels/LinearAlgebra/N09_Prod.lean | 4 +- server/adam/Adam/Levels/Numbers.lean | 4 +- server/adam/Adam/Levels/Numbers/L01_PNat.lean | 4 +- server/adam/Adam/Levels/Numbers/L02_PNat.lean | 4 +- server/adam/Adam/Levels/Predicate.lean | 20 ++++---- .../adam/Adam/Levels/Predicate/L01_Ring.lean | 4 +- .../Adam/Levels/Predicate/L02_Rewrite.lean | 4 +- .../Adam/Levels/Predicate/L03_Rewrite.lean | 4 +- .../adam/Adam/Levels/Predicate/L04_Ring.lean | 4 +- .../adam/Adam/Levels/Predicate/L05_Rfl.lean | 4 +- .../Adam/Levels/Predicate/L06_Exists.lean | 4 +- .../Adam/Levels/Predicate/L07_Exists.lean | 4 +- .../Adam/Levels/Predicate/L08_Forall.lean | 4 +- .../Adam/Levels/Predicate/L09_PushNeg.lean | 6 +-- server/adam/Adam/Levels/Prime.lean | 10 ++-- server/adam/Adam/Levels/Prime/L01_Dvd.lean | 4 +- server/adam/Adam/Levels/Prime/L02_Prime.lean | 6 +-- server/adam/Adam/Levels/Prime/L03_Prime.lean | 6 +-- .../Adam/Levels/Prime/L06_ExistsUnique.lean | 6 +-- server/adam/Adam/Levels/Proposition.lean | 30 ++++++------ .../Adam/Levels/Proposition/L00_Tauto.lean | 4 +- .../adam/Adam/Levels/Proposition/L01_Rfl.lean | 4 +- .../Levels/Proposition/L02_Assumption.lean | 4 +- .../Levels/Proposition/L03_Assumption.lean | 4 +- .../Adam/Levels/Proposition/L04_True.lean | 4 +- .../adam/Adam/Levels/Proposition/L05_Not.lean | 4 +- .../Adam/Levels/Proposition/L06_False.lean | 4 +- .../Levels/Proposition/L07_ContraNotEq.lean | 6 +-- .../Adam/Levels/Proposition/L08_Contra.lean | 6 +-- .../adam/Adam/Levels/Proposition/L09_And.lean | 4 +- .../adam/Adam/Levels/Proposition/L10_And.lean | 4 +- .../adam/Adam/Levels/Proposition/L11_Or.lean | 4 +- .../adam/Adam/Levels/Proposition/L12_Or.lean | 4 +- .../Adam/Levels/Proposition/L13_Summary.lean | 4 +- server/adam/Adam/Levels/SetFunction.lean | 10 ++-- .../Adam/Levels/SetFunction/L01_Image.lean | 4 +- .../Adam/Levels/SetFunction/L02_Preimage.lean | 4 +- .../Adam/Levels/SetFunction/L03_Range.lean | 4 +- .../Levels/SetFunction/L04_ImageUnion.lean | 4 +- server/adam/Adam/Levels/SetTheory.lean | 46 +++++++++---------- .../adam/Adam/Levels/SetTheory/L01_Univ.lean | 4 +- .../adam/Adam/Levels/SetTheory/L02_Empty.lean | 4 +- .../Adam/Levels/SetTheory/L03_Subset.lean | 4 +- .../Levels/SetTheory/L04_SubsetEmpty.lean | 6 +-- .../adam/Adam/Levels/SetTheory/L05_Empty.lean | 6 +-- .../Adam/Levels/SetTheory/L06_Nonempty.lean | 6 +-- .../Adam/Levels/SetTheory/L07_UnionInter.lean | 4 +- .../Adam/Levels/SetTheory/L08_UnionInter.lean | 4 +- .../Adam/Levels/SetTheory/L09_Complement.lean | 4 +- .../Adam/Levels/SetTheory/L10_Morgan.lean | 4 +- .../Adam/Levels/SetTheory/L11_SSubset.lean | 4 +- .../Adam/Levels/SetTheory/L12_Insert.lean | 4 +- .../Adam/Levels/SetTheory/L13_Insert.lean | 4 +- .../adam/Adam/Levels/SetTheory/L14_SetOf.lean | 4 +- .../Adam/Levels/SetTheory/L15_Powerset.lean | 6 +-- .../Adam/Levels/SetTheory/L16_Disjoint.lean | 4 +- .../adam/Adam/Levels/SetTheory/L17_SetOf.lean | 4 +- .../adam/Adam/Levels/SetTheory/L18_SetOf.lean | 4 +- .../Adam/Levels/SetTheory/L19_Subtype.lean | 4 +- .../Adam/Levels/SetTheory/L20_UnionInter.lean | 4 +- .../Adam/Levels/SetTheory/L21_Summary.lean | 4 +- .../adam/Adam/Levels/SetTheory/T01_Set.lean | 4 +- server/adam/Adam/Levels/SetTheory/T04_xx.lean | 4 +- server/adam/Adam/Levels/StatementTest.lean | 4 +- server/adam/Adam/Levels/Sum.lean | 14 +++--- server/adam/Adam/Levels/Sum/L01_Simp.lean | 6 +-- server/adam/Adam/Levels/Sum/L02_Sum.lean | 6 +-- server/adam/Adam/Levels/Sum/L03_ArithSum.lean | 6 +-- server/adam/Adam/Levels/Sum/L04_SumOdd.lean | 6 +-- server/adam/Adam/Levels/Sum/L05_SumComm.lean | 8 ++-- server/adam/Adam/Levels/Sum/L06_Summary.lean | 10 ++-- .../adam/Adam/Levels/Sum/T01_Induction.lean | 6 +-- .../adam/Adam/Levels/Sum/T02_Induction.lean | 6 +-- .../adam/Adam/Levels/Sum/T03__Bernoulli.lean | 8 ++-- server/adam/Adam/Metadata.lean | 4 +- server/adam/Adam/StructInstWithHolesTest.lean | 2 +- server/adam/Adam/TacticDocs.lean | 2 +- server/adam/Adam/Tactics.lean | 2 +- server/adam/lakefile.lean | 4 +- server/build.sh | 10 ++-- server/index.mjs | 6 +-- server/server.Dockerfile | 2 +- 157 files changed, 462 insertions(+), 462 deletions(-) diff --git a/UPDATE_LEAN.sh b/UPDATE_LEAN.sh index 899dbbc..34f979f 100755 --- a/UPDATE_LEAN.sh +++ b/UPDATE_LEAN.sh @@ -5,7 +5,7 @@ cd $(dirname $0) cd server -cd testgame +cd adam lake update cp lake-packages/mathlib/lean-toolchain lean-toolchain diff --git a/client/src/index.tsx b/client/src/index.tsx index eedeb12..20f2ac0 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -20,7 +20,7 @@ monacoSetup() const router = createHashRouter([ { path: "/", - loader: () => redirect("/game/testgame") + loader: () => redirect("/game/adam") }, { path: "/game/:gameId", diff --git a/package.json b/package.json index ebe5cdc..fc3bf0a 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "scripts": { "start": "concurrently -n server,client -c blue,green \"npm run start_server\" \"npm run start_client\"", - "start_server": "cd server && (cd leanserver && lake build) && (cd testgame && lake exe cache get && lake build) && (cd nng && lake build) && NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", + "start_server": "cd server && (cd leanserver && lake build) && (cd adam && lake exe cache get && lake build) && (cd nng && lake build) && NODE_ENV=development nodemon -e mjs --exec \"node ./index.mjs\"", "start_client": "NODE_ENV=development webpack-dev-server --hot", "build": "npm run build_server && npm run build_client", "build_server": "server/build.sh", diff --git a/server/adam/Adam.lean b/server/adam/Adam.lean index ea0d890..2f5351d 100644 --- a/server/adam/Adam.lean +++ b/server/adam/Adam.lean @@ -1,25 +1,25 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.Levels.Proposition -import TestGame.Levels.Implication -import TestGame.Levels.Predicate -import TestGame.Levels.Contradiction --- import TestGame.Levels.Prime -import TestGame.Levels.Sum --- import TestGame.Levels.Induction +import Adam.Levels.Proposition +import Adam.Levels.Implication +import Adam.Levels.Predicate +import Adam.Levels.Contradiction +-- import Adam.Levels.Prime +import Adam.Levels.Sum +-- import Adam.Levels.Induction -import TestGame.Levels.Numbers -import TestGame.Levels.Inequality +import Adam.Levels.Numbers +import Adam.Levels.Inequality -import TestGame.Levels.Lean -import TestGame.Levels.SetTheory -import TestGame.Levels.Function -import TestGame.Levels.SetFunction -import TestGame.Levels.LinearAlgebra +import Adam.Levels.Lean +import Adam.Levels.SetTheory +import Adam.Levels.Function +import Adam.Levels.SetFunction +import Adam.Levels.LinearAlgebra -Game "TestGame" +Game "Adam" Title "Lean 4 game" Introduction " diff --git a/server/adam/Adam/Levels/Contradiction.lean b/server/adam/Adam/Levels/Contradiction.lean index 5805bb1..a7cdde7 100644 --- a/server/adam/Adam/Levels/Contradiction.lean +++ b/server/adam/Adam/Levels/Contradiction.lean @@ -1,11 +1,11 @@ -import TestGame.Levels.Contradiction.L01_Have -import TestGame.Levels.Contradiction.L02_Suffices -import TestGame.Levels.Contradiction.L03_ByContra -import TestGame.Levels.Contradiction.L04_ByContra -import TestGame.Levels.Contradiction.L05_Contrapose -import TestGame.Levels.Contradiction.L06_Summary +import Adam.Levels.Contradiction.L01_Have +import Adam.Levels.Contradiction.L02_Suffices +import Adam.Levels.Contradiction.L03_ByContra +import Adam.Levels.Contradiction.L04_ByContra +import Adam.Levels.Contradiction.L05_Contrapose +import Adam.Levels.Contradiction.L06_Summary -Game "TestGame" +Game "Adam" World "Contradiction" Title "Widerspruch" diff --git a/server/adam/Adam/Levels/Contradiction/L01_Have.lean b/server/adam/Adam/Levels/Contradiction/L01_Have.lean index e80a472..01d4aa3 100644 --- a/server/adam/Adam/Levels/Contradiction/L01_Have.lean +++ b/server/adam/Adam/Levels/Contradiction/L01_Have.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 1 diff --git a/server/adam/Adam/Levels/Contradiction/L02_Suffices.lean b/server/adam/Adam/Levels/Contradiction/L02_Suffices.lean index 5480fe4..ac8f762 100644 --- a/server/adam/Adam/Levels/Contradiction/L02_Suffices.lean +++ b/server/adam/Adam/Levels/Contradiction/L02_Suffices.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 2 diff --git a/server/adam/Adam/Levels/Contradiction/L03_ByContra.lean b/server/adam/Adam/Levels/Contradiction/L03_ByContra.lean index c9e4013..4a178bf 100644 --- a/server/adam/Adam/Levels/Contradiction/L03_ByContra.lean +++ b/server/adam/Adam/Levels/Contradiction/L03_ByContra.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib.Tactic.Contrapose @@ -6,9 +6,9 @@ import Mathlib.Tactic.Use import Mathlib.Tactic.Ring import Mathlib -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 3 diff --git a/server/adam/Adam/Levels/Contradiction/L04_ByContra.lean b/server/adam/Adam/Levels/Contradiction/L04_ByContra.lean index 769a4cc..f9530cc 100644 --- a/server/adam/Adam/Levels/Contradiction/L04_ByContra.lean +++ b/server/adam/Adam/Levels/Contradiction/L04_ByContra.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib.Tactic.Contrapose @@ -6,9 +6,9 @@ import Mathlib.Tactic.Use import Mathlib.Tactic.Ring import Mathlib -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 4 diff --git a/server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean b/server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean index 6377dec..e2df673 100644 --- a/server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean +++ b/server/adam/Adam/Levels/Contradiction/L05_Contrapose.lean @@ -1,12 +1,12 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 5 diff --git a/server/adam/Adam/Levels/Contradiction/L06_Summary.lean b/server/adam/Adam/Levels/Contradiction/L06_Summary.lean index 64693b0..1e32524 100644 --- a/server/adam/Adam/Levels/Contradiction/L06_Summary.lean +++ b/server/adam/Adam/Levels/Contradiction/L06_Summary.lean @@ -1,12 +1,12 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Contradiction" Level 6 diff --git a/server/adam/Adam/Levels/Function.lean b/server/adam/Adam/Levels/Function.lean index 0d2770d..91a8bbe 100644 --- a/server/adam/Adam/Levels/Function.lean +++ b/server/adam/Adam/Levels/Function.lean @@ -1,15 +1,15 @@ -import TestGame.Levels.Function.L01_Function -import TestGame.Levels.Function.L02_Let -import TestGame.Levels.Function.L03_Piecewise -import TestGame.Levels.Function.L04_Injective -import TestGame.Levels.Function.L05_Injective -import TestGame.Levels.Function.L06_Injective -import TestGame.Levels.Function.L07_Surjective -import TestGame.Levels.Function.L08_Bijective -import TestGame.Levels.Function.L09_Inverse -import TestGame.Levels.Function.L11_Inverse +import Adam.Levels.Function.L01_Function +import Adam.Levels.Function.L02_Let +import Adam.Levels.Function.L03_Piecewise +import Adam.Levels.Function.L04_Injective +import Adam.Levels.Function.L05_Injective +import Adam.Levels.Function.L06_Injective +import Adam.Levels.Function.L07_Surjective +import Adam.Levels.Function.L08_Bijective +import Adam.Levels.Function.L09_Inverse +import Adam.Levels.Function.L11_Inverse -Game "TestGame" +Game "Adam" World "Function" Title "Abbildungen" diff --git a/server/adam/Adam/Levels/Function/L01_Function.lean b/server/adam/Adam/Levels/Function/L01_Function.lean index 1bce9e1..52607f9 100644 --- a/server/adam/Adam/Levels/Function/L01_Function.lean +++ b/server/adam/Adam/Levels/Function/L01_Function.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 1 diff --git a/server/adam/Adam/Levels/Function/L02_Let.lean b/server/adam/Adam/Levels/Function/L02_Let.lean index b996425..80c95c6 100644 --- a/server/adam/Adam/Levels/Function/L02_Let.lean +++ b/server/adam/Adam/Levels/Function/L02_Let.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 2 diff --git a/server/adam/Adam/Levels/Function/L03_Piecewise.lean b/server/adam/Adam/Levels/Function/L03_Piecewise.lean index 8c1615b..591a081 100644 --- a/server/adam/Adam/Levels/Function/L03_Piecewise.lean +++ b/server/adam/Adam/Levels/Function/L03_Piecewise.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 3 diff --git a/server/adam/Adam/Levels/Function/L04_Injective.lean b/server/adam/Adam/Levels/Function/L04_Injective.lean index 0946ab4..b21a7fc 100644 --- a/server/adam/Adam/Levels/Function/L04_Injective.lean +++ b/server/adam/Adam/Levels/Function/L04_Injective.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 4 diff --git a/server/adam/Adam/Levels/Function/L05_Injective.lean b/server/adam/Adam/Levels/Function/L05_Injective.lean index 48f0172..17bf39f 100644 --- a/server/adam/Adam/Levels/Function/L05_Injective.lean +++ b/server/adam/Adam/Levels/Function/L05_Injective.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Function" Level 5 diff --git a/server/adam/Adam/Levels/Function/L06_Injective.lean b/server/adam/Adam/Levels/Function/L06_Injective.lean index 4e61007..2335749 100644 --- a/server/adam/Adam/Levels/Function/L06_Injective.lean +++ b/server/adam/Adam/Levels/Function/L06_Injective.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 6 diff --git a/server/adam/Adam/Levels/Function/L07_Surjective.lean b/server/adam/Adam/Levels/Function/L07_Surjective.lean index 27906d8..7f493b3 100644 --- a/server/adam/Adam/Levels/Function/L07_Surjective.lean +++ b/server/adam/Adam/Levels/Function/L07_Surjective.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 7 diff --git a/server/adam/Adam/Levels/Function/L08_Bijective.lean b/server/adam/Adam/Levels/Function/L08_Bijective.lean index c7a2889..98aec98 100644 --- a/server/adam/Adam/Levels/Function/L08_Bijective.lean +++ b/server/adam/Adam/Levels/Function/L08_Bijective.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 8 diff --git a/server/adam/Adam/Levels/Function/L09_Inverse.lean b/server/adam/Adam/Levels/Function/L09_Inverse.lean index 548d01e..120ccbd 100644 --- a/server/adam/Adam/Levels/Function/L09_Inverse.lean +++ b/server/adam/Adam/Levels/Function/L09_Inverse.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 9 diff --git a/server/adam/Adam/Levels/Function/L11_Inverse.lean b/server/adam/Adam/Levels/Function/L11_Inverse.lean index 14ac036..f6b0c68 100644 --- a/server/adam/Adam/Levels/Function/L11_Inverse.lean +++ b/server/adam/Adam/Levels/Function/L11_Inverse.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Function" Level 10 diff --git a/server/adam/Adam/Levels/Implication.lean b/server/adam/Adam/Levels/Implication.lean index 23e5361..6b77705 100644 --- a/server/adam/Adam/Levels/Implication.lean +++ b/server/adam/Adam/Levels/Implication.lean @@ -1,18 +1,18 @@ -import TestGame.Levels.Implication.L01_Intro -import TestGame.Levels.Implication.L02_Revert -import TestGame.Levels.Implication.L03_Apply -import TestGame.Levels.Implication.L04_Apply -import TestGame.Levels.Implication.L05_Apply -import TestGame.Levels.Implication.L06_Iff -import TestGame.Levels.Implication.L07_Rw -import TestGame.Levels.Implication.L08_Iff -import TestGame.Levels.Implication.L09_Iff -import TestGame.Levels.Implication.L10_Apply -import TestGame.Levels.Implication.L11_ByCases -import TestGame.Levels.Implication.L12_Rw -import TestGame.Levels.Implication.L13_Summary +import Adam.Levels.Implication.L01_Intro +import Adam.Levels.Implication.L02_Revert +import Adam.Levels.Implication.L03_Apply +import Adam.Levels.Implication.L04_Apply +import Adam.Levels.Implication.L05_Apply +import Adam.Levels.Implication.L06_Iff +import Adam.Levels.Implication.L07_Rw +import Adam.Levels.Implication.L08_Iff +import Adam.Levels.Implication.L09_Iff +import Adam.Levels.Implication.L10_Apply +import Adam.Levels.Implication.L11_ByCases +import Adam.Levels.Implication.L12_Rw +import Adam.Levels.Implication.L13_Summary -Game "TestGame" +Game "Adam" World "Implication" Title "Aussagenlogik 2" diff --git a/server/adam/Adam/Levels/Implication/L01_Intro.lean b/server/adam/Adam/Levels/Implication/L01_Intro.lean index 36b9d6d..97fef55 100644 --- a/server/adam/Adam/Levels/Implication/L01_Intro.lean +++ b/server/adam/Adam/Levels/Implication/L01_Intro.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Tauto set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 1 diff --git a/server/adam/Adam/Levels/Implication/L02_Revert.lean b/server/adam/Adam/Levels/Implication/L02_Revert.lean index f05a5c9..5345c60 100644 --- a/server/adam/Adam/Levels/Implication/L02_Revert.lean +++ b/server/adam/Adam/Levels/Implication/L02_Revert.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 2 diff --git a/server/adam/Adam/Levels/Implication/L03_Apply.lean b/server/adam/Adam/Levels/Implication/L03_Apply.lean index 6fa2b33..30eb21f 100644 --- a/server/adam/Adam/Levels/Implication/L03_Apply.lean +++ b/server/adam/Adam/Levels/Implication/L03_Apply.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Implication" Level 3 diff --git a/server/adam/Adam/Levels/Implication/L04_Apply.lean b/server/adam/Adam/Levels/Implication/L04_Apply.lean index 1d4a7a9..bef022c 100644 --- a/server/adam/Adam/Levels/Implication/L04_Apply.lean +++ b/server/adam/Adam/Levels/Implication/L04_Apply.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 4 diff --git a/server/adam/Adam/Levels/Implication/L05_Apply.lean b/server/adam/Adam/Levels/Implication/L05_Apply.lean index 90fa447..ef92b93 100644 --- a/server/adam/Adam/Levels/Implication/L05_Apply.lean +++ b/server/adam/Adam/Levels/Implication/L05_Apply.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Implication" Level 5 diff --git a/server/adam/Adam/Levels/Implication/L06_Iff.lean b/server/adam/Adam/Levels/Implication/L06_Iff.lean index 84a4130..3941d32 100644 --- a/server/adam/Adam/Levels/Implication/L06_Iff.lean +++ b/server/adam/Adam/Levels/Implication/L06_Iff.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Implication" Level 6 diff --git a/server/adam/Adam/Levels/Implication/L07_Rw.lean b/server/adam/Adam/Levels/Implication/L07_Rw.lean index d984d80..dc1fa5d 100644 --- a/server/adam/Adam/Levels/Implication/L07_Rw.lean +++ b/server/adam/Adam/Levels/Implication/L07_Rw.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Init.Data.ToString -- #check List UInt8 set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 7 diff --git a/server/adam/Adam/Levels/Implication/L08_Iff.lean b/server/adam/Adam/Levels/Implication/L08_Iff.lean index 8801210..0cd443d 100644 --- a/server/adam/Adam/Levels/Implication/L08_Iff.lean +++ b/server/adam/Adam/Levels/Implication/L08_Iff.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 8 diff --git a/server/adam/Adam/Levels/Implication/L09_Iff.lean b/server/adam/Adam/Levels/Implication/L09_Iff.lean index daede52..60835df 100644 --- a/server/adam/Adam/Levels/Implication/L09_Iff.lean +++ b/server/adam/Adam/Levels/Implication/L09_Iff.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Cases -Game "TestGame" +Game "Adam" World "Implication" Level 9 diff --git a/server/adam/Adam/Levels/Implication/L10_Apply.lean b/server/adam/Adam/Levels/Implication/L10_Apply.lean index 8905f6f..5e47099 100644 --- a/server/adam/Adam/Levels/Implication/L10_Apply.lean +++ b/server/adam/Adam/Levels/Implication/L10_Apply.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Cases import Mathlib -Game "TestGame" +Game "Adam" World "Implication" Level 10 diff --git a/server/adam/Adam/Levels/Implication/L11_ByCases.lean b/server/adam/Adam/Levels/Implication/L11_ByCases.lean index 7493335..d5048b4 100644 --- a/server/adam/Adam/Levels/Implication/L11_ByCases.lean +++ b/server/adam/Adam/Levels/Implication/L11_ByCases.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Cases import Mathlib -Game "TestGame" +Game "Adam" World "Implication" Level 11 diff --git a/server/adam/Adam/Levels/Implication/L12_Rw.lean b/server/adam/Adam/Levels/Implication/L12_Rw.lean index ed9683a..5685c3a 100644 --- a/server/adam/Adam/Levels/Implication/L12_Rw.lean +++ b/server/adam/Adam/Levels/Implication/L12_Rw.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Cases import Mathlib.Logic.Basic -Game "TestGame" +Game "Adam" World "Implication" Level 12 diff --git a/server/adam/Adam/Levels/Implication/L13_Summary.lean b/server/adam/Adam/Levels/Implication/L13_Summary.lean index 6de3e35..0e86aad 100644 --- a/server/adam/Adam/Levels/Implication/L13_Summary.lean +++ b/server/adam/Adam/Levels/Implication/L13_Summary.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 13 diff --git a/server/adam/Adam/Levels/Induction.lean b/server/adam/Adam/Levels/Induction.lean index c79daa1..5e77bb6 100644 --- a/server/adam/Adam/Levels/Induction.lean +++ b/server/adam/Adam/Levels/Induction.lean @@ -1,5 +1,5 @@ -import TestGame.Levels.Induction.L01_Induction +import Adam.Levels.Induction.L01_Induction -Game "TestGame" +Game "Adam" World "Induction" Title "Übungen Induktions" diff --git a/server/adam/Adam/Levels/Induction/L01_Induction.lean b/server/adam/Adam/Levels/Induction/L01_Induction.lean index f2804b9..66a8473 100644 --- a/server/adam/Adam/Levels/Induction/L01_Induction.lean +++ b/server/adam/Adam/Levels/Induction/L01_Induction.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Induction" Level 1 diff --git a/server/adam/Adam/Levels/Inequality.lean b/server/adam/Adam/Levels/Inequality.lean index b1684b6..d136814 100644 --- a/server/adam/Adam/Levels/Inequality.lean +++ b/server/adam/Adam/Levels/Inequality.lean @@ -1,9 +1,9 @@ -import TestGame.Levels.Inequality.L01_LE -import TestGame.Levels.Inequality.L02_Pos -import TestGame.Levels.Inequality.L03_Linarith -import TestGame.Levels.Inequality.L04_Linarith +import Adam.Levels.Inequality.L01_LE +import Adam.Levels.Inequality.L02_Pos +import Adam.Levels.Inequality.L03_Linarith +import Adam.Levels.Inequality.L04_Linarith -Game "TestGame" +Game "Adam" World "Inequality" Title "Ungleichung" diff --git a/server/adam/Adam/Levels/Inequality/L01_LE.lean b/server/adam/Adam/Levels/Inequality/L01_LE.lean index d03dcce..eaebe8b 100644 --- a/server/adam/Adam/Levels/Inequality/L01_LE.lean +++ b/server/adam/Adam/Levels/Inequality/L01_LE.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Inequality" Level 1 diff --git a/server/adam/Adam/Levels/Inequality/L02_Pos.lean b/server/adam/Adam/Levels/Inequality/L02_Pos.lean index 8dbb898..e328984 100644 --- a/server/adam/Adam/Levels/Inequality/L02_Pos.lean +++ b/server/adam/Adam/Levels/Inequality/L02_Pos.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.LibrarySearch set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Inequality" Level 2 diff --git a/server/adam/Adam/Levels/Inequality/L03_Linarith.lean b/server/adam/Adam/Levels/Inequality/L03_Linarith.lean index 83c551c..bec5fdb 100644 --- a/server/adam/Adam/Levels/Inequality/L03_Linarith.lean +++ b/server/adam/Adam/Levels/Inequality/L03_Linarith.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Linarith -Game "TestGame" +Game "Adam" World "Inequality" Level 3 diff --git a/server/adam/Adam/Levels/Inequality/L04_Linarith.lean b/server/adam/Adam/Levels/Inequality/L04_Linarith.lean index b688b02..0cb1618 100644 --- a/server/adam/Adam/Levels/Inequality/L04_Linarith.lean +++ b/server/adam/Adam/Levels/Inequality/L04_Linarith.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Linarith -Game "TestGame" +Game "Adam" World "Inequality" Level 4 diff --git a/server/adam/Adam/Levels/Inequality/T_Induction.lean b/server/adam/Adam/Levels/Inequality/T_Induction.lean index a393275..0d0830b 100644 --- a/server/adam/Adam/Levels/Inequality/T_Induction.lean +++ b/server/adam/Adam/Levels/Inequality/T_Induction.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Inequality" Level 1 diff --git a/server/adam/Adam/Levels/Lean.lean b/server/adam/Adam/Levels/Lean.lean index 849ce7c..ff5f672 100644 --- a/server/adam/Adam/Levels/Lean.lean +++ b/server/adam/Adam/Levels/Lean.lean @@ -1,9 +1,9 @@ -import TestGame.Levels.Lean.L01_Type -import TestGame.Levels.Lean.L02_Universe -import TestGame.Levels.Lean.L03_ImplicitArguments -import TestGame.Levels.Lean.L04_InstanceArguments +import Adam.Levels.Lean.L01_Type +import Adam.Levels.Lean.L02_Universe +import Adam.Levels.Lean.L03_ImplicitArguments +import Adam.Levels.Lean.L04_InstanceArguments -Game "TestGame" +Game "Adam" World "Lean" Title "Lean" diff --git a/server/adam/Adam/Levels/Lean/L01_Type.lean b/server/adam/Adam/Levels/Lean/L01_Type.lean index 079051d..eb4a62d 100644 --- a/server/adam/Adam/Levels/Lean/L01_Type.lean +++ b/server/adam/Adam/Levels/Lean/L01_Type.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Lean" Level 1 diff --git a/server/adam/Adam/Levels/Lean/L02_Universe.lean b/server/adam/Adam/Levels/Lean/L02_Universe.lean index 9566a99..c20c171 100644 --- a/server/adam/Adam/Levels/Lean/L02_Universe.lean +++ b/server/adam/Adam/Levels/Lean/L02_Universe.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Lean" Level 2 diff --git a/server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean b/server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean index 3b1c398..19a8411 100644 --- a/server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean +++ b/server/adam/Adam/Levels/Lean/L03_ImplicitArguments.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -import TestGame.ToBePorted +import Adam.ToBePorted set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Lean" Level 3 diff --git a/server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean b/server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean index 10da5bc..dbb5425 100644 --- a/server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean +++ b/server/adam/Adam/Levels/Lean/L04_InstanceArguments.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -import TestGame.ToBePorted +import Adam.ToBePorted set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Lean" Level 4 diff --git a/server/adam/Adam/Levels/LeftOvers/L09_Or.lean b/server/adam/Adam/Levels/LeftOvers/L09_Or.lean index 24297d5..b572c8a 100644 --- a/server/adam/Adam/Levels/LeftOvers/L09_Or.lean +++ b/server/adam/Adam/Levels/LeftOvers/L09_Or.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Implication" Level 9 diff --git a/server/adam/Adam/Levels/LeftOvers/L33_Prime.lean b/server/adam/Adam/Levels/LeftOvers/L33_Prime.lean index 1b8393f..419f94a 100644 --- a/server/adam/Adam/Levels/LeftOvers/L33_Prime.lean +++ b/server/adam/Adam/Levels/LeftOvers/L33_Prime.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "Nat2" Level 3 diff --git a/server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean b/server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean index 9abc351..49188d0 100644 --- a/server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean +++ b/server/adam/Adam/Levels/LeftOvers/L34_ExistsUnique.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "Nat2" Level 5 diff --git a/server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean b/server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean index be43277..f1847f8 100644 --- a/server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean +++ b/server/adam/Adam/Levels/LeftOvers/Lxx_Prime.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use @@ -21,7 +21,7 @@ lemma even_square (n : ℕ) : even n → even (n ^ 2) := by def prime (n : ℕ) : Prop := (2 ≤ n) ∧ ∀ a b, n = a * b → a = 1 ∨ b = 1 -Game "TestGame" +Game "Adam" World "Nat" Level 4 diff --git a/server/adam/Adam/Levels/LeftOvers/Playground.lean b/server/adam/Adam/Levels/LeftOvers/Playground.lean index 7622e0b..b1f5e6a 100644 --- a/server/adam/Adam/Levels/LeftOvers/Playground.lean +++ b/server/adam/Adam/Levels/LeftOvers/Playground.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -- -- INCORPORATED diff --git a/server/adam/Adam/Levels/LeftOvers/xx_Functions.lean b/server/adam/Adam/Levels/LeftOvers/xx_Functions.lean index 061d9a7..87d457f 100644 --- a/server/adam/Adam/Levels/LeftOvers/xx_Functions.lean +++ b/server/adam/Adam/Levels/LeftOvers/xx_Functions.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "Function" Level 1 diff --git a/server/adam/Adam/Levels/LinearAlgebra.lean b/server/adam/Adam/Levels/LinearAlgebra.lean index 6054c79..0bb386d 100644 --- a/server/adam/Adam/Levels/LinearAlgebra.lean +++ b/server/adam/Adam/Levels/LinearAlgebra.lean @@ -1,27 +1,27 @@ -import TestGame.Levels.LinearAlgebra.L01_Module -import TestGame.Levels.LinearAlgebra.L02_VectorNotation -import TestGame.Levels.LinearAlgebra.L03_VectorNotation -import TestGame.Levels.LinearAlgebra.L04_Submodule -import TestGame.Levels.LinearAlgebra.L05_Submodule -import TestGame.Levels.LinearAlgebra.L06_Span -import TestGame.Levels.LinearAlgebra.L07_Span -import TestGame.Levels.LinearAlgebra.L08_GeneratingSet +import Adam.Levels.LinearAlgebra.L01_Module +import Adam.Levels.LinearAlgebra.L02_VectorNotation +import Adam.Levels.LinearAlgebra.L03_VectorNotation +import Adam.Levels.LinearAlgebra.L04_Submodule +import Adam.Levels.LinearAlgebra.L05_Submodule +import Adam.Levels.LinearAlgebra.L06_Span +import Adam.Levels.LinearAlgebra.L07_Span +import Adam.Levels.LinearAlgebra.L08_GeneratingSet -import TestGame.Levels.LinearAlgebra.M01_LinearMap -import TestGame.Levels.LinearAlgebra.M02_LinearIndep -import TestGame.Levels.LinearAlgebra.M04_Basis +import Adam.Levels.LinearAlgebra.M01_LinearMap +import Adam.Levels.LinearAlgebra.M02_LinearIndep +import Adam.Levels.LinearAlgebra.M04_Basis -import TestGame.Levels.LinearAlgebra.N01_Span -import TestGame.Levels.LinearAlgebra.N02_Span -import TestGame.Levels.LinearAlgebra.N03_Idempotent -import TestGame.Levels.LinearAlgebra.N04_Idempotent -import TestGame.Levels.LinearAlgebra.N05_Sum -import TestGame.Levels.LinearAlgebra.N06_Sum -import TestGame.Levels.LinearAlgebra.N07_Prod -import TestGame.Levels.LinearAlgebra.N08_Prod -import TestGame.Levels.LinearAlgebra.N09_Prod +import Adam.Levels.LinearAlgebra.N01_Span +import Adam.Levels.LinearAlgebra.N02_Span +import Adam.Levels.LinearAlgebra.N03_Idempotent +import Adam.Levels.LinearAlgebra.N04_Idempotent +import Adam.Levels.LinearAlgebra.N05_Sum +import Adam.Levels.LinearAlgebra.N06_Sum +import Adam.Levels.LinearAlgebra.N07_Prod +import Adam.Levels.LinearAlgebra.N08_Prod +import Adam.Levels.LinearAlgebra.N09_Prod -Game "TestGame" +Game "Adam" World "Module" Title "Vektorraum" @@ -32,10 +32,10 @@ einer Einführungsvorlesung antrifft: Man definiert ein \"Modul\" (Plural: Modul über einem Ring. Ein Modul über einem *Körper* wird dann auch \"Vektorraum\" genannt. " -Game "TestGame" +Game "Adam" World "Basis" Title "Lineare Abbildungen" -Game "TestGame" +Game "Adam" World "Module2" Title "Mehr Vektorräume" diff --git a/server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean b/server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean index e0c0082..d1866ec 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L01_Module.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Real.Basic -- definiert `ℝ` import Mathlib.Algebra.Module.Basic -- definiert `module` import Mathlib.Tactic.LibrarySearch -import TestGame.StructInstWithHoles +import Adam.StructInstWithHoles set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Module" Level 1 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean b/server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean index ad71161..c0b6be3 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L02_VectorNotation.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Real.Basic -- definiert `ℝ` import Mathlib.Algebra.Module.Pi -- definiert `Module ℚ (fin 2 → ℚ)` @@ -7,7 +7,7 @@ import Mathlib.Tactic.FinCases set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Module" Level 2 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean b/server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean index 839bd94..b49b982 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L03_VectorNotation.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Real.Basic -- definiert `ℝ` import Mathlib.Algebra.Module.Pi -- definiert `Module ℚ (fin 2 → ℚ)` import Mathlib.Data.Fin.VecNotation import Mathlib.Tactic.FinCases -Game "TestGame" +Game "Adam" World "Module" Level 3 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean b/server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean index 42667d3..964e47a 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L04_Submodule.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice -Game "TestGame" +Game "Adam" World "Module" Level 4 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean b/server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean index 860a2aa..6709165 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L05_Submodule.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice -Game "TestGame" +Game "Adam" World "Module" Level 5 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean index ae9b8ab..8d309d0 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L06_Span.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -8,7 +8,7 @@ import Mathlib.Tactic.FinCases import Mathlib.Algebra.BigOperators.Finsupp -- default? import Mathlib.LinearAlgebra.Span -Game "TestGame" +Game "Adam" World "Module" Level 6 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean index f047823..a50946b 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L07_Span.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -10,7 +10,7 @@ import Mathlib.LinearAlgebra.Span import Mathlib.Tactic.LibrarySearch import Mathlib -Game "TestGame" +Game "Adam" World "Module" Level 7 diff --git a/server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean b/server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean index 32bc7bd..9d20601 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/L08_GeneratingSet.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -8,7 +8,7 @@ import Mathlib.Tactic.FinCases import Mathlib.Algebra.BigOperators.Finsupp -- default? import Mathlib.LinearAlgebra.Span -Game "TestGame" +Game "Adam" World "Module" Level 8 diff --git a/server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean b/server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean index bf6d590..258e0d4 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/M01_LinearMap.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Real.Basic -- definiert `ℝ` import Mathlib.Algebra.Module.LinearMap -- definiert `→ₗ` import Mathlib.Tactic.FinCases import Mathlib.Data.Fin.VecNotation -Game "TestGame" +Game "Adam" World "Basis" Level 1 diff --git a/server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean b/server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean index a6d0d4e..359fe45 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/M02_LinearIndep.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -10,7 +10,7 @@ import Mathlib.Algebra.BigOperators.Basic -- default -- import Mathlib.LinearAlgebra.LinearIndependent import Mathlib -Game "TestGame" +Game "Adam" World "Basis" Level 2 diff --git a/server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean b/server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean index 25b5553..c8145e1 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/M04_Basis.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib -Game "TestGame" +Game "Adam" World "Basis" Level 4 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean index b8d587a..c9d4aaf 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N01_Span.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -8,7 +8,7 @@ import Mathlib.Tactic.FinCases import Mathlib.Algebra.BigOperators.Finsupp -- default? import Mathlib.LinearAlgebra.Span -Game "TestGame" +Game "Adam" World "Module2" Level 1 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean b/server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean index 8d2e82c..decc953 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N02_Span.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic -- definiert `ℝ` @@ -11,7 +11,7 @@ import Mathlib open Submodule -Game "TestGame" +Game "Adam" World "Module2" Level 2 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean b/server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean index 02cf3b4..ceb7558 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N03_Idempotent.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic import Mathlib.LinearAlgebra.Basic -Game "TestGame" +Game "Adam" World "Module2" Level 3 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean b/server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean index 26a956d..fecaebb 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N04_Idempotent.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic import Mathlib.LinearAlgebra.Basic -Game "TestGame" +Game "Adam" World "Module2" Level 4 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean b/server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean index 0490708..18ad88c 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N05_Sum.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.LinearAlgebra.Span open Submodule -Game "TestGame" +Game "Adam" World "Module2" Level 5 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean b/server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean index a4655c3..d571449 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N06_Sum.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.LinearAlgebra.Span open Submodule -Game "TestGame" +Game "Adam" World "Module2" Level 6 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean index 606d3c5..ff1f973 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N07_Prod.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic import Mathlib.LinearAlgebra.Span -Game "TestGame" +Game "Adam" World "Module2" Level 7 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean index 853c9dd..3dcc9a0 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N08_Prod.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic @@ -6,7 +6,7 @@ import Mathlib.LinearAlgebra.Span universe u -Game "TestGame" +Game "Adam" World "Module2" Level 8 diff --git a/server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean b/server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean index 0764a87..5b08aa3 100644 --- a/server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean +++ b/server/adam/Adam/Levels/LinearAlgebra/N09_Prod.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.Module.Submodule.Lattice import Mathlib.Data.Real.Basic import Mathlib.LinearAlgebra.Span -Game "TestGame" +Game "Adam" World "Module2" Level 9 diff --git a/server/adam/Adam/Levels/Numbers.lean b/server/adam/Adam/Levels/Numbers.lean index 622c5a4..6a6f2fa 100644 --- a/server/adam/Adam/Levels/Numbers.lean +++ b/server/adam/Adam/Levels/Numbers.lean @@ -1,2 +1,2 @@ -import TestGame.Levels.Numbers.L01_PNat -import TestGame.Levels.Numbers.L02_PNat +import Adam.Levels.Numbers.L01_PNat +import Adam.Levels.Numbers.L02_PNat diff --git a/server/adam/Adam/Levels/Numbers/L01_PNat.lean b/server/adam/Adam/Levels/Numbers/L01_PNat.lean index fa1a217..d45f07a 100644 --- a/server/adam/Adam/Levels/Numbers/L01_PNat.lean +++ b/server/adam/Adam/Levels/Numbers/L01_PNat.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Numbers" Level 1 diff --git a/server/adam/Adam/Levels/Numbers/L02_PNat.lean b/server/adam/Adam/Levels/Numbers/L02_PNat.lean index bca2e8f..b073a3c 100644 --- a/server/adam/Adam/Levels/Numbers/L02_PNat.lean +++ b/server/adam/Adam/Levels/Numbers/L02_PNat.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Numbers" Level 2 diff --git a/server/adam/Adam/Levels/Predicate.lean b/server/adam/Adam/Levels/Predicate.lean index d5c4135..de8b91a 100644 --- a/server/adam/Adam/Levels/Predicate.lean +++ b/server/adam/Adam/Levels/Predicate.lean @@ -1,14 +1,14 @@ -import TestGame.Levels.Predicate.L01_Ring -import TestGame.Levels.Predicate.L02_Rewrite -import TestGame.Levels.Predicate.L03_Rewrite -import TestGame.Levels.Predicate.L04_Ring -import TestGame.Levels.Predicate.L05_Rfl -import TestGame.Levels.Predicate.L06_Exists -import TestGame.Levels.Predicate.L07_Exists -import TestGame.Levels.Predicate.L08_Forall -import TestGame.Levels.Predicate.L09_PushNeg +import Adam.Levels.Predicate.L01_Ring +import Adam.Levels.Predicate.L02_Rewrite +import Adam.Levels.Predicate.L03_Rewrite +import Adam.Levels.Predicate.L04_Ring +import Adam.Levels.Predicate.L05_Rfl +import Adam.Levels.Predicate.L06_Exists +import Adam.Levels.Predicate.L07_Exists +import Adam.Levels.Predicate.L08_Forall +import Adam.Levels.Predicate.L09_PushNeg -Game "TestGame" +Game "Adam" World "Predicate" Title "Prädikate" diff --git a/server/adam/Adam/Levels/Predicate/L01_Ring.lean b/server/adam/Adam/Levels/Predicate/L01_Ring.lean index ca8b143..fe84bac 100644 --- a/server/adam/Adam/Levels/Predicate/L01_Ring.lean +++ b/server/adam/Adam/Levels/Predicate/L01_Ring.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring --set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Predicate" Level 1 diff --git a/server/adam/Adam/Levels/Predicate/L02_Rewrite.lean b/server/adam/Adam/Levels/Predicate/L02_Rewrite.lean index a45d6cf..0585180 100644 --- a/server/adam/Adam/Levels/Predicate/L02_Rewrite.lean +++ b/server/adam/Adam/Levels/Predicate/L02_Rewrite.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Predicate" Level 2 diff --git a/server/adam/Adam/Levels/Predicate/L03_Rewrite.lean b/server/adam/Adam/Levels/Predicate/L03_Rewrite.lean index be4df47..b841059 100644 --- a/server/adam/Adam/Levels/Predicate/L03_Rewrite.lean +++ b/server/adam/Adam/Levels/Predicate/L03_Rewrite.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "Predicate" Level 3 diff --git a/server/adam/Adam/Levels/Predicate/L04_Ring.lean b/server/adam/Adam/Levels/Predicate/L04_Ring.lean index 60291dc..8dd287f 100644 --- a/server/adam/Adam/Levels/Predicate/L04_Ring.lean +++ b/server/adam/Adam/Levels/Predicate/L04_Ring.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "Predicate" Level 4 diff --git a/server/adam/Adam/Levels/Predicate/L05_Rfl.lean b/server/adam/Adam/Levels/Predicate/L05_Rfl.lean index e621f96..39b0ee3 100644 --- a/server/adam/Adam/Levels/Predicate/L05_Rfl.lean +++ b/server/adam/Adam/Levels/Predicate/L05_Rfl.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Predicate" Level 5 diff --git a/server/adam/Adam/Levels/Predicate/L06_Exists.lean b/server/adam/Adam/Levels/Predicate/L06_Exists.lean index 79fd82b..f9d91be 100644 --- a/server/adam/Adam/Levels/Predicate/L06_Exists.lean +++ b/server/adam/Adam/Levels/Predicate/L06_Exists.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use @@ -8,7 +8,7 @@ import Mathlib.Algebra.Parity set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Predicate" Level 6 diff --git a/server/adam/Adam/Levels/Predicate/L07_Exists.lean b/server/adam/Adam/Levels/Predicate/L07_Exists.lean index 26bb955..353b39e 100644 --- a/server/adam/Adam/Levels/Predicate/L07_Exists.lean +++ b/server/adam/Adam/Levels/Predicate/L07_Exists.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use @@ -8,7 +8,7 @@ import Mathlib.Algebra.Parity set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Predicate" Level 7 diff --git a/server/adam/Adam/Levels/Predicate/L08_Forall.lean b/server/adam/Adam/Levels/Predicate/L08_Forall.lean index ff581b2..0e019e4 100644 --- a/server/adam/Adam/Levels/Predicate/L08_Forall.lean +++ b/server/adam/Adam/Levels/Predicate/L08_Forall.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use @@ -7,7 +7,7 @@ import Mathlib.Tactic.Ring import Mathlib.Algebra.Parity import Mathlib -Game "TestGame" +Game "Adam" World "Predicate" Level 8 diff --git a/server/adam/Adam/Levels/Predicate/L09_PushNeg.lean b/server/adam/Adam/Levels/Predicate/L09_PushNeg.lean index 7d5bf80..0c5bc91 100644 --- a/server/adam/Adam/Levels/Predicate/L09_PushNeg.lean +++ b/server/adam/Adam/Levels/Predicate/L09_PushNeg.lean @@ -1,12 +1,12 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.PushNeg import Mathlib import Mathlib.Algebra.Parity -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Predicate" Level 9 diff --git a/server/adam/Adam/Levels/Prime.lean b/server/adam/Adam/Levels/Prime.lean index 51c241c..6f1e466 100644 --- a/server/adam/Adam/Levels/Prime.lean +++ b/server/adam/Adam/Levels/Prime.lean @@ -1,9 +1,9 @@ -import TestGame.Levels.Prime.L01_Dvd --- import TestGame.Levels.Prime.L04_Prime --- import TestGame.Levels.Prime.L05_Prime --- import TestGame.Levels.Prime.L06_ExistsUnique +import Adam.Levels.Prime.L01_Dvd +-- import Adam.Levels.Prime.L04_Prime +-- import Adam.Levels.Prime.L05_Prime +-- import Adam.Levels.Prime.L06_ExistsUnique -Game "TestGame" +Game "Adam" World "Prime" Title "Teilbarkeit" diff --git a/server/adam/Adam/Levels/Prime/L01_Dvd.lean b/server/adam/Adam/Levels/Prime/L01_Dvd.lean index 89f93c8..5e826eb 100644 --- a/server/adam/Adam/Levels/Prime/L01_Dvd.lean +++ b/server/adam/Adam/Levels/Prime/L01_Dvd.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Ring import Mathlib -Game "TestGame" +Game "Adam" World "Prime" Level 1 diff --git a/server/adam/Adam/Levels/Prime/L02_Prime.lean b/server/adam/Adam/Levels/Prime/L02_Prime.lean index 0cc19a3..58231bf 100644 --- a/server/adam/Adam/Levels/Prime/L02_Prime.lean +++ b/server/adam/Adam/Levels/Prime/L02_Prime.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Nat.Prime import Std.Tactic.RCases @@ -9,9 +9,9 @@ import Mathlib.Tactic.Ring -- import Data.Nat.Prime -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Prime" Level 2 diff --git a/server/adam/Adam/Levels/Prime/L03_Prime.lean b/server/adam/Adam/Levels/Prime/L03_Prime.lean index 741bb71..a437d02 100644 --- a/server/adam/Adam/Levels/Prime/L03_Prime.lean +++ b/server/adam/Adam/Levels/Prime/L03_Prime.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Nat.Prime import Std.Tactic.RCases @@ -7,9 +7,9 @@ import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Prime" Level 3 diff --git a/server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean b/server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean index bd8a3dc..3094ea7 100644 --- a/server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean +++ b/server/adam/Adam/Levels/Prime/L06_ExistsUnique.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Nat.Prime import Std.Tactic.RCases @@ -7,9 +7,9 @@ import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Prime" Level 4 diff --git a/server/adam/Adam/Levels/Proposition.lean b/server/adam/Adam/Levels/Proposition.lean index bf6ec84..640929b 100644 --- a/server/adam/Adam/Levels/Proposition.lean +++ b/server/adam/Adam/Levels/Proposition.lean @@ -1,19 +1,19 @@ -import TestGame.Levels.Proposition.L00_Tauto -import TestGame.Levels.Proposition.L01_Rfl -import TestGame.Levels.Proposition.L02_Assumption -import TestGame.Levels.Proposition.L03_Assumption -import TestGame.Levels.Proposition.L04_True -import TestGame.Levels.Proposition.L05_Not -import TestGame.Levels.Proposition.L06_False -import TestGame.Levels.Proposition.L07_ContraNotEq -import TestGame.Levels.Proposition.L08_Contra -import TestGame.Levels.Proposition.L09_And -import TestGame.Levels.Proposition.L10_And -import TestGame.Levels.Proposition.L11_Or -import TestGame.Levels.Proposition.L12_Or -import TestGame.Levels.Proposition.L13_Summary +import Adam.Levels.Proposition.L00_Tauto +import Adam.Levels.Proposition.L01_Rfl +import Adam.Levels.Proposition.L02_Assumption +import Adam.Levels.Proposition.L03_Assumption +import Adam.Levels.Proposition.L04_True +import Adam.Levels.Proposition.L05_Not +import Adam.Levels.Proposition.L06_False +import Adam.Levels.Proposition.L07_ContraNotEq +import Adam.Levels.Proposition.L08_Contra +import Adam.Levels.Proposition.L09_And +import Adam.Levels.Proposition.L10_And +import Adam.Levels.Proposition.L11_Or +import Adam.Levels.Proposition.L12_Or +import Adam.Levels.Proposition.L13_Summary -Game "TestGame" +Game "Adam" World "Proposition" Title "Aussagenlogik 1" diff --git a/server/adam/Adam/Levels/Proposition/L00_Tauto.lean b/server/adam/Adam/Levels/Proposition/L00_Tauto.lean index 99204e4..4a7d298 100644 --- a/server/adam/Adam/Levels/Proposition/L00_Tauto.lean +++ b/server/adam/Adam/Levels/Proposition/L00_Tauto.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Tactic.Tauto -Game "TestGame" +Game "Adam" World "Proposition" Level 1 diff --git a/server/adam/Adam/Levels/Proposition/L01_Rfl.lean b/server/adam/Adam/Levels/Proposition/L01_Rfl.lean index 3c56590..984e7f9 100644 --- a/server/adam/Adam/Levels/Proposition/L01_Rfl.lean +++ b/server/adam/Adam/Levels/Proposition/L01_Rfl.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Proposition" Level 2 diff --git a/server/adam/Adam/Levels/Proposition/L02_Assumption.lean b/server/adam/Adam/Levels/Proposition/L02_Assumption.lean index e75e141..e3101cb 100644 --- a/server/adam/Adam/Levels/Proposition/L02_Assumption.lean +++ b/server/adam/Adam/Levels/Proposition/L02_Assumption.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Proposition" Level 3 diff --git a/server/adam/Adam/Levels/Proposition/L03_Assumption.lean b/server/adam/Adam/Levels/Proposition/L03_Assumption.lean index 64cdbb7..f341cbc 100644 --- a/server/adam/Adam/Levels/Proposition/L03_Assumption.lean +++ b/server/adam/Adam/Levels/Proposition/L03_Assumption.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Nat.Basic -- TODO -Game "TestGame" +Game "Adam" World "Proposition" Level 4 diff --git a/server/adam/Adam/Levels/Proposition/L04_True.lean b/server/adam/Adam/Levels/Proposition/L04_True.lean index 0549e7c..2be1ea1 100644 --- a/server/adam/Adam/Levels/Proposition/L04_True.lean +++ b/server/adam/Adam/Levels/Proposition/L04_True.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Proposition" Level 5 diff --git a/server/adam/Adam/Levels/Proposition/L05_Not.lean b/server/adam/Adam/Levels/Proposition/L05_Not.lean index dc1d413..486072f 100644 --- a/server/adam/Adam/Levels/Proposition/L05_Not.lean +++ b/server/adam/Adam/Levels/Proposition/L05_Not.lean @@ -1,6 +1,6 @@ -import TestGame.Metadata +import Adam.Metadata -Game "TestGame" +Game "Adam" World "Proposition" Level 6 diff --git a/server/adam/Adam/Levels/Proposition/L06_False.lean b/server/adam/Adam/Levels/Proposition/L06_False.lean index f60ad4f..16de21d 100644 --- a/server/adam/Adam/Levels/Proposition/L06_False.lean +++ b/server/adam/Adam/Levels/Proposition/L06_False.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight -Game "TestGame" +Game "Adam" World "Proposition" Level 7 diff --git a/server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean b/server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean index 88900b5..3f46d12 100644 --- a/server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean +++ b/server/adam/Adam/Levels/Proposition/L07_ContraNotEq.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Proposition" Level 8 diff --git a/server/adam/Adam/Levels/Proposition/L08_Contra.lean b/server/adam/Adam/Levels/Proposition/L08_Contra.lean index 6f9a195..86d5e0a 100644 --- a/server/adam/Adam/Levels/Proposition/L08_Contra.lean +++ b/server/adam/Adam/Levels/Proposition/L08_Contra.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Proposition" Level 9 diff --git a/server/adam/Adam/Levels/Proposition/L09_And.lean b/server/adam/Adam/Levels/Proposition/L09_And.lean index 5411259..3ba43a8 100644 --- a/server/adam/Adam/Levels/Proposition/L09_And.lean +++ b/server/adam/Adam/Levels/Proposition/L09_And.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Proposition" Level 10 diff --git a/server/adam/Adam/Levels/Proposition/L10_And.lean b/server/adam/Adam/Levels/Proposition/L10_And.lean index 44aad21..3204f4a 100644 --- a/server/adam/Adam/Levels/Proposition/L10_And.lean +++ b/server/adam/Adam/Levels/Proposition/L10_And.lean @@ -1,9 +1,9 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Proposition" Level 11 diff --git a/server/adam/Adam/Levels/Proposition/L11_Or.lean b/server/adam/Adam/Levels/Proposition/L11_Or.lean index 0c5878b..b3642a9 100644 --- a/server/adam/Adam/Levels/Proposition/L11_Or.lean +++ b/server/adam/Adam/Levels/Proposition/L11_Or.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight --set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Proposition" Level 12 diff --git a/server/adam/Adam/Levels/Proposition/L12_Or.lean b/server/adam/Adam/Levels/Proposition/L12_Or.lean index 90aa1b1..8c6959c 100644 --- a/server/adam/Adam/Levels/Proposition/L12_Or.lean +++ b/server/adam/Adam/Levels/Proposition/L12_Or.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight @@ -7,7 +7,7 @@ set_option tactic.hygienic false --set_option autoImplicit false -Game "TestGame" +Game "Adam" World "Proposition" Level 13 diff --git a/server/adam/Adam/Levels/Proposition/L13_Summary.lean b/server/adam/Adam/Levels/Proposition/L13_Summary.lean index 6db6c77..8d4c151 100644 --- a/server/adam/Adam/Levels/Proposition/L13_Summary.lean +++ b/server/adam/Adam/Levels/Proposition/L13_Summary.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Proposition" Level 14 diff --git a/server/adam/Adam/Levels/SetFunction.lean b/server/adam/Adam/Levels/SetFunction.lean index bf9cfbc..a6f2b4b 100644 --- a/server/adam/Adam/Levels/SetFunction.lean +++ b/server/adam/Adam/Levels/SetFunction.lean @@ -1,8 +1,8 @@ -import TestGame.Levels.SetFunction.L01_Image -import TestGame.Levels.SetFunction.L02_Preimage -import TestGame.Levels.SetFunction.L03_Range -import TestGame.Levels.SetFunction.L04_ImageUnion +import Adam.Levels.SetFunction.L01_Image +import Adam.Levels.SetFunction.L02_Preimage +import Adam.Levels.SetFunction.L03_Range +import Adam.Levels.SetFunction.L04_ImageUnion -Game "TestGame" +Game "Adam" World "SetFunction" Title "Abbildungen 2" diff --git a/server/adam/Adam/Levels/SetFunction/L01_Image.lean b/server/adam/Adam/Levels/SetFunction/L01_Image.lean index 1bfede9..9d0dbd6 100644 --- a/server/adam/Adam/Levels/SetFunction/L01_Image.lean +++ b/server/adam/Adam/Levels/SetFunction/L01_Image.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "SetFunction" Level 1 diff --git a/server/adam/Adam/Levels/SetFunction/L02_Preimage.lean b/server/adam/Adam/Levels/SetFunction/L02_Preimage.lean index b94e605..4f37c77 100644 --- a/server/adam/Adam/Levels/SetFunction/L02_Preimage.lean +++ b/server/adam/Adam/Levels/SetFunction/L02_Preimage.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "SetFunction" Level 2 diff --git a/server/adam/Adam/Levels/SetFunction/L03_Range.lean b/server/adam/Adam/Levels/SetFunction/L03_Range.lean index 21d2ccc..4809e8f 100644 --- a/server/adam/Adam/Levels/SetFunction/L03_Range.lean +++ b/server/adam/Adam/Levels/SetFunction/L03_Range.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "SetFunction" Level 3 diff --git a/server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean b/server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean index 7bfcfca..ccf1c7a 100644 --- a/server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean +++ b/server/adam/Adam/Levels/SetFunction/L04_ImageUnion.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "SetFunction" Level 4 diff --git a/server/adam/Adam/Levels/SetTheory.lean b/server/adam/Adam/Levels/SetTheory.lean index 298c096..59ca233 100644 --- a/server/adam/Adam/Levels/SetTheory.lean +++ b/server/adam/Adam/Levels/SetTheory.lean @@ -1,25 +1,25 @@ -import TestGame.Levels.SetTheory.L01_Univ -import TestGame.Levels.SetTheory.L02_Empty -import TestGame.Levels.SetTheory.L03_Subset -import TestGame.Levels.SetTheory.L04_SubsetEmpty -import TestGame.Levels.SetTheory.L05_Empty -import TestGame.Levels.SetTheory.L06_Nonempty -import TestGame.Levels.SetTheory.L07_UnionInter -import TestGame.Levels.SetTheory.L08_UnionInter -import TestGame.Levels.SetTheory.L09_Complement -import TestGame.Levels.SetTheory.L10_Morgan -import TestGame.Levels.SetTheory.L11_SSubset -import TestGame.Levels.SetTheory.L12_Insert -import TestGame.Levels.SetTheory.L13_Insert -import TestGame.Levels.SetTheory.L14_SetOf -import TestGame.Levels.SetTheory.L15_Powerset -import TestGame.Levels.SetTheory.L16_Disjoint -import TestGame.Levels.SetTheory.L17_SetOf -import TestGame.Levels.SetTheory.L18_SetOf -import TestGame.Levels.SetTheory.L19_Subtype - - -Game "TestGame" +import Adam.Levels.SetTheory.L01_Univ +import Adam.Levels.SetTheory.L02_Empty +import Adam.Levels.SetTheory.L03_Subset +import Adam.Levels.SetTheory.L04_SubsetEmpty +import Adam.Levels.SetTheory.L05_Empty +import Adam.Levels.SetTheory.L06_Nonempty +import Adam.Levels.SetTheory.L07_UnionInter +import Adam.Levels.SetTheory.L08_UnionInter +import Adam.Levels.SetTheory.L09_Complement +import Adam.Levels.SetTheory.L10_Morgan +import Adam.Levels.SetTheory.L11_SSubset +import Adam.Levels.SetTheory.L12_Insert +import Adam.Levels.SetTheory.L13_Insert +import Adam.Levels.SetTheory.L14_SetOf +import Adam.Levels.SetTheory.L15_Powerset +import Adam.Levels.SetTheory.L16_Disjoint +import Adam.Levels.SetTheory.L17_SetOf +import Adam.Levels.SetTheory.L18_SetOf +import Adam.Levels.SetTheory.L19_Subtype + + +Game "Adam" World "SetTheory" Title "Mengenlehre" @@ -38,6 +38,6 @@ Sofort begrüßt euch eine ältere Frau, die sich als *Mengea*, die Beschützeri vorstellt. " -Game "TestGame" +Game "Adam" World "SetTheory2" Title "Mehr Mengenlehre" diff --git a/server/adam/Adam/Levels/SetTheory/L01_Univ.lean b/server/adam/Adam/Levels/SetTheory/L01_Univ.lean index 8e67b91..f192095 100644 --- a/server/adam/Adam/Levels/SetTheory/L01_Univ.lean +++ b/server/adam/Adam/Levels/SetTheory/L01_Univ.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Init.Set import Mathlib.Tactic.Tauto @@ -6,7 +6,7 @@ import Mathlib.Tactic.Tauto set_option tactic.hygienic false set_option autoImplicit false -Game "TestGame" +Game "Adam" World "SetTheory" Level 1 diff --git a/server/adam/Adam/Levels/SetTheory/L02_Empty.lean b/server/adam/Adam/Levels/SetTheory/L02_Empty.lean index 57681d9..1840659 100644 --- a/server/adam/Adam/Levels/SetTheory/L02_Empty.lean +++ b/server/adam/Adam/Levels/SetTheory/L02_Empty.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Init.Set import Mathlib.Tactic.Tauto set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 2 diff --git a/server/adam/Adam/Levels/SetTheory/L03_Subset.lean b/server/adam/Adam/Levels/SetTheory/L03_Subset.lean index 17f9af6..f87406a 100644 --- a/server/adam/Adam/Levels/SetTheory/L03_Subset.lean +++ b/server/adam/Adam/Levels/SetTheory/L03_Subset.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Init.Set import Mathlib.Tactic.Tauto set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 3 diff --git a/server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean b/server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean index 4ef1bd8..9889ea6 100644 --- a/server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean +++ b/server/adam/Adam/Levels/SetTheory/L04_SubsetEmpty.lean @@ -1,5 +1,5 @@ -import TestGame.Metadata -import TestGame.Levels.SetTheory.L03_Subset +import Adam.Metadata +import Adam.Levels.SetTheory.L03_Subset import Mathlib.Init.Set import Mathlib.Tactic.Tauto @@ -7,7 +7,7 @@ import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 4 diff --git a/server/adam/Adam/Levels/SetTheory/L05_Empty.lean b/server/adam/Adam/Levels/SetTheory/L05_Empty.lean index fc4e714..f284019 100644 --- a/server/adam/Adam/Levels/SetTheory/L05_Empty.lean +++ b/server/adam/Adam/Levels/SetTheory/L05_Empty.lean @@ -1,5 +1,5 @@ -import TestGame.Metadata -import TestGame.Levels.SetTheory.L04_SubsetEmpty +import Adam.Metadata +import Adam.Levels.SetTheory.L04_SubsetEmpty --import Mathlib.Data.Set.Basic import Mathlib.Init.Set @@ -8,7 +8,7 @@ import Mathlib.Tactic.PushNeg set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 5 diff --git a/server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean b/server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean index b3adf6e..a55b084 100644 --- a/server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean +++ b/server/adam/Adam/Levels/SetTheory/L06_Nonempty.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata -import TestGame.Levels.SetTheory.L05_Empty +import Adam.Metadata +import Adam.Levels.SetTheory.L05_Empty import Mathlib.Data.Set.Basic set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 6 diff --git a/server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean index cbb767b..31f8c1d 100644 --- a/server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean +++ b/server/adam/Adam/Levels/SetTheory/L07_UnionInter.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 7 diff --git a/server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean index 8da2a5a..072434b 100644 --- a/server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean +++ b/server/adam/Adam/Levels/SetTheory/L08_UnionInter.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 8 diff --git a/server/adam/Adam/Levels/SetTheory/L09_Complement.lean b/server/adam/Adam/Levels/SetTheory/L09_Complement.lean index f9481bf..0635df4 100644 --- a/server/adam/Adam/Levels/SetTheory/L09_Complement.lean +++ b/server/adam/Adam/Levels/SetTheory/L09_Complement.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic -Game "TestGame" +Game "Adam" World "SetTheory" Level 9 diff --git a/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean b/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean index 76b6900..db12481 100644 --- a/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean +++ b/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic -Game "TestGame" +Game "Adam" World "SetTheory" Level 10 diff --git a/server/adam/Adam/Levels/SetTheory/L11_SSubset.lean b/server/adam/Adam/Levels/SetTheory/L11_SSubset.lean index fbcf31c..e587290 100644 --- a/server/adam/Adam/Levels/SetTheory/L11_SSubset.lean +++ b/server/adam/Adam/Levels/SetTheory/L11_SSubset.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic -Game "TestGame" +Game "Adam" World "SetTheory" Level 11 diff --git a/server/adam/Adam/Levels/SetTheory/L12_Insert.lean b/server/adam/Adam/Levels/SetTheory/L12_Insert.lean index 23f484f..6996503 100644 --- a/server/adam/Adam/Levels/SetTheory/L12_Insert.lean +++ b/server/adam/Adam/Levels/SetTheory/L12_Insert.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic -Game "TestGame" +Game "Adam" World "SetTheory" Level 12 diff --git a/server/adam/Adam/Levels/SetTheory/L13_Insert.lean b/server/adam/Adam/Levels/SetTheory/L13_Insert.lean index cb32a1a..30ab7d8 100644 --- a/server/adam/Adam/Levels/SetTheory/L13_Insert.lean +++ b/server/adam/Adam/Levels/SetTheory/L13_Insert.lean @@ -1,8 +1,8 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic -Game "TestGame" +Game "Adam" World "SetTheory" Level 13 diff --git a/server/adam/Adam/Levels/SetTheory/L14_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L14_SetOf.lean index f87e21b..e0fcc3c 100644 --- a/server/adam/Adam/Levels/SetTheory/L14_SetOf.lean +++ b/server/adam/Adam/Levels/SetTheory/L14_SetOf.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "SetTheory2" Level 1 diff --git a/server/adam/Adam/Levels/SetTheory/L15_Powerset.lean b/server/adam/Adam/Levels/SetTheory/L15_Powerset.lean index c2fbe30..9c8acc9 100644 --- a/server/adam/Adam/Levels/SetTheory/L15_Powerset.lean +++ b/server/adam/Adam/Levels/SetTheory/L15_Powerset.lean @@ -1,12 +1,12 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "SetTheory2" Level 2 diff --git a/server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean b/server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean index 606947f..5cf6745 100644 --- a/server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean +++ b/server/adam/Adam/Levels/SetTheory/L16_Disjoint.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib import Mathlib.Algebra.Parity import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "SetTheory2" Level 3 diff --git a/server/adam/Adam/Levels/SetTheory/L17_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L17_SetOf.lean index 975846f..80b1bb2 100644 --- a/server/adam/Adam/Levels/SetTheory/L17_SetOf.lean +++ b/server/adam/Adam/Levels/SetTheory/L17_SetOf.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib -Game "TestGame" +Game "Adam" World "SetTheory2" Level 4 diff --git a/server/adam/Adam/Levels/SetTheory/L18_SetOf.lean b/server/adam/Adam/Levels/SetTheory/L18_SetOf.lean index d138956..211ec53 100644 --- a/server/adam/Adam/Levels/SetTheory/L18_SetOf.lean +++ b/server/adam/Adam/Levels/SetTheory/L18_SetOf.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib -Game "TestGame" +Game "Adam" World "SetTheory2" Level 5 diff --git a/server/adam/Adam/Levels/SetTheory/L19_Subtype.lean b/server/adam/Adam/Levels/SetTheory/L19_Subtype.lean index 61abddd..20d82c2 100644 --- a/server/adam/Adam/Levels/SetTheory/L19_Subtype.lean +++ b/server/adam/Adam/Levels/SetTheory/L19_Subtype.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "SetTheory2" Level 6 diff --git a/server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean b/server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean index c61c6ab..132da70 100644 --- a/server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean +++ b/server/adam/Adam/Levels/SetTheory/L20_UnionInter.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib -Game "TestGame" +Game "Adam" World "SetTheory2" Level 7 diff --git a/server/adam/Adam/Levels/SetTheory/L21_Summary.lean b/server/adam/Adam/Levels/SetTheory/L21_Summary.lean index 1e45403..83e645c 100644 --- a/server/adam/Adam/Levels/SetTheory/L21_Summary.lean +++ b/server/adam/Adam/Levels/SetTheory/L21_Summary.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Data.Set.Basic import Mathlib.Algebra.Parity import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "SetTheory" Level 21 diff --git a/server/adam/Adam/Levels/SetTheory/T01_Set.lean b/server/adam/Adam/Levels/SetTheory/T01_Set.lean index f8ac55d..21e9d0b 100644 --- a/server/adam/Adam/Levels/SetTheory/T01_Set.lean +++ b/server/adam/Adam/Levels/SetTheory/T01_Set.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Order.SymmDiff import Mathlib.Logic.Function.Iterate @@ -14,7 +14,7 @@ import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 1 diff --git a/server/adam/Adam/Levels/SetTheory/T04_xx.lean b/server/adam/Adam/Levels/SetTheory/T04_xx.lean index bb8523c..7d0f0ad 100644 --- a/server/adam/Adam/Levels/SetTheory/T04_xx.lean +++ b/server/adam/Adam/Levels/SetTheory/T04_xx.lean @@ -1,4 +1,4 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib import Duper.Tactic @@ -8,7 +8,7 @@ import Mathlib.Order.Disjoint set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "SetTheory" Level 4 diff --git a/server/adam/Adam/Levels/StatementTest.lean b/server/adam/Adam/Levels/StatementTest.lean index 2d00bb9..db6bc7f 100644 --- a/server/adam/Adam/Levels/StatementTest.lean +++ b/server/adam/Adam/Levels/StatementTest.lean @@ -1,7 +1,7 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib -Game "TestGame" +Game "Adam" World "TestWorld" Level 1 diff --git a/server/adam/Adam/Levels/Sum.lean b/server/adam/Adam/Levels/Sum.lean index 74c3fd7..5f5172b 100644 --- a/server/adam/Adam/Levels/Sum.lean +++ b/server/adam/Adam/Levels/Sum.lean @@ -1,11 +1,11 @@ -import TestGame.Levels.Sum.L01_Simp -import TestGame.Levels.Sum.L02_Sum -import TestGame.Levels.Sum.L03_ArithSum -import TestGame.Levels.Sum.L04_SumOdd -import TestGame.Levels.Sum.L05_SumComm -import TestGame.Levels.Sum.L06_Summary +import Adam.Levels.Sum.L01_Simp +import Adam.Levels.Sum.L02_Sum +import Adam.Levels.Sum.L03_ArithSum +import Adam.Levels.Sum.L04_SumOdd +import Adam.Levels.Sum.L05_SumComm +import Adam.Levels.Sum.L06_Summary -Game "TestGame" +Game "Adam" World "Sum" Title "Endliche Summe" diff --git a/server/adam/Adam/Levels/Sum/L01_Simp.lean b/server/adam/Adam/Levels/Sum/L01_Simp.lean index ec2c5c4..a735024 100644 --- a/server/adam/Adam/Levels/Sum/L01_Simp.lean +++ b/server/adam/Adam/Levels/Sum/L01_Simp.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Sum" Level 1 diff --git a/server/adam/Adam/Levels/Sum/L02_Sum.lean b/server/adam/Adam/Levels/Sum/L02_Sum.lean index 039c2b7..65a3ad0 100644 --- a/server/adam/Adam/Levels/Sum/L02_Sum.lean +++ b/server/adam/Adam/Levels/Sum/L02_Sum.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Sum" Level 2 diff --git a/server/adam/Adam/Levels/Sum/L03_ArithSum.lean b/server/adam/Adam/Levels/Sum/L03_ArithSum.lean index 526b720..c87d95e 100644 --- a/server/adam/Adam/Levels/Sum/L03_ArithSum.lean +++ b/server/adam/Adam/Levels/Sum/L03_ArithSum.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata import Mathlib.Algebra.BigOperators.Fin import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Sum" Level 3 diff --git a/server/adam/Adam/Levels/Sum/L04_SumOdd.lean b/server/adam/Adam/Levels/Sum/L04_SumOdd.lean index da9b27a..d84dd40 100644 --- a/server/adam/Adam/Levels/Sum/L04_SumOdd.lean +++ b/server/adam/Adam/Levels/Sum/L04_SumOdd.lean @@ -1,10 +1,10 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin import Mathlib.Tactic.Ring -Game "TestGame" +Game "Adam" World "Sum" Level 4 diff --git a/server/adam/Adam/Levels/Sum/L05_SumComm.lean b/server/adam/Adam/Levels/Sum/L05_SumComm.lean index b6f8d62..dd5cc37 100644 --- a/server/adam/Adam/Levels/Sum/L05_SumComm.lean +++ b/server/adam/Adam/Levels/Sum/L05_SumComm.lean @@ -1,16 +1,16 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin import Mathlib.Tactic.Ring -import TestGame.Options.ArithSum +import Adam.Options.ArithSum set_option tactic.hygienic false open BigOperators -Game "TestGame" +Game "Adam" World "Sum" Level 5 diff --git a/server/adam/Adam/Levels/Sum/L06_Summary.lean b/server/adam/Adam/Levels/Sum/L06_Summary.lean index 6aea6a2..45f2a13 100644 --- a/server/adam/Adam/Levels/Sum/L06_Summary.lean +++ b/server/adam/Adam/Levels/Sum/L06_Summary.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin import Mathlib.Tactic.Ring -import TestGame.ToBePorted -import TestGame.Options.ArithSum +import Adam.ToBePorted +import Adam.Options.ArithSum -Game "TestGame" +Game "Adam" World "Sum" Level 6 diff --git a/server/adam/Adam/Levels/Sum/T01_Induction.lean b/server/adam/Adam/Levels/Sum/T01_Induction.lean index b65d4c5..24062ab 100644 --- a/server/adam/Adam/Levels/Sum/T01_Induction.lean +++ b/server/adam/Adam/Levels/Sum/T01_Induction.lean @@ -1,13 +1,13 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin set_option tactic.hygienic false open Nat -Game "TestGame" +Game "Adam" World "Sum" Level 2 diff --git a/server/adam/Adam/Levels/Sum/T02_Induction.lean b/server/adam/Adam/Levels/Sum/T02_Induction.lean index 42df47d..09f6400 100644 --- a/server/adam/Adam/Levels/Sum/T02_Induction.lean +++ b/server/adam/Adam/Levels/Sum/T02_Induction.lean @@ -1,11 +1,11 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin set_option tactic.hygienic false -Game "TestGame" +Game "Adam" World "Sum" Level 2 diff --git a/server/adam/Adam/Levels/Sum/T03__Bernoulli.lean b/server/adam/Adam/Levels/Sum/T03__Bernoulli.lean index 85c2807..0c73287 100644 --- a/server/adam/Adam/Levels/Sum/T03__Bernoulli.lean +++ b/server/adam/Adam/Levels/Sum/T03__Bernoulli.lean @@ -1,12 +1,12 @@ -import TestGame.Metadata +import Adam.Metadata -import TestGame.ToBePorted +import Adam.ToBePorted import Mathlib.Algebra.BigOperators.Fin import Mathlib.Tactic.Ring -import TestGame.ToBePorted +import Adam.ToBePorted -Game "TestGame" +Game "Adam" World "Sum" Level 5 diff --git a/server/adam/Adam/Metadata.lean b/server/adam/Adam/Metadata.lean index a9fd86a..e0f2b52 100644 --- a/server/adam/Adam/Metadata.lean +++ b/server/adam/Adam/Metadata.lean @@ -1,4 +1,4 @@ import GameServer.Commands -import TestGame.TacticDocs -import TestGame.LemmaDocs +import Adam.TacticDocs +import Adam.LemmaDocs import Mathlib.Init.Data.Nat.Basic -- Imports the notation ℕ. diff --git a/server/adam/Adam/StructInstWithHolesTest.lean b/server/adam/Adam/StructInstWithHolesTest.lean index fe0436c..12fdc8d 100644 --- a/server/adam/Adam/StructInstWithHolesTest.lean +++ b/server/adam/Adam/StructInstWithHolesTest.lean @@ -1,4 +1,4 @@ -import TestGame.StructInstWithHoles +import Adam.StructInstWithHoles import Mathlib diff --git a/server/adam/Adam/TacticDocs.lean b/server/adam/Adam/TacticDocs.lean index 49d56b8..6a3b96d 100644 --- a/server/adam/Adam/TacticDocs.lean +++ b/server/adam/Adam/TacticDocs.lean @@ -1,5 +1,5 @@ import GameServer.Commands -import TestGame.Tactics +import Adam.Tactics TacticDoc assumption " diff --git a/server/adam/Adam/Tactics.lean b/server/adam/Adam/Tactics.lean index 5e95bfc..d5dfd4b 100644 --- a/server/adam/Adam/Tactics.lean +++ b/server/adam/Adam/Tactics.lean @@ -1,5 +1,5 @@ import Lean --- import TestGame.MyNat +-- import Adam.MyNat open Lean Elab Tactic diff --git a/server/adam/lakefile.lean b/server/adam/lakefile.lean index 9ea11dc..d33792a 100644 --- a/server/adam/lakefile.lean +++ b/server/adam/lakefile.lean @@ -6,9 +6,9 @@ require GameServer from ".."/"leanserver" require mathlib from git "https://github.com/leanprover-community/mathlib4.git"@"master" -package TestGame +package Adam @[default_target] -lean_lib TestGame { +lean_lib Adam { moreLeanArgs := #["-DautoImplicit=false"] } diff --git a/server/build.sh b/server/build.sh index 3b85690..21941ea 100755 --- a/server/build.sh +++ b/server/build.sh @@ -6,12 +6,12 @@ cd $(dirname $0) # Build elan image if not already present docker build --pull --rm -f elan.Dockerfile -t elan:latest . -# Build testgame -(cd testgame && lake exe cache get && lake build) -docker rmi testgame:latest || true +# Build adam +(cd adam && lake exe cache get && lake build) +docker rmi adam:latest || true docker build \ - --build-arg GAME_DIR=testgame \ - --rm -f server.Dockerfile -t testgame:latest . + --build-arg GAME_DIR=adam \ + --rm -f server.Dockerfile -t adam:latest . # Build NNG (cd nng && lake build) diff --git a/server/index.mjs b/server/index.mjs index 756987c..cdb6db9 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -7,9 +7,9 @@ import * as rpc from 'vscode-ws-jsonrpc'; import * as jsonrpcserver from 'vscode-ws-jsonrpc/server'; const games = { - testgame: { - name: "TestGame", - module: "TestGame", + adam: { + name: "Adam", + module: "Adam", queueLength: 5 }, nng: { diff --git a/server/server.Dockerfile b/server/server.Dockerfile index 304b16b..7cf6aee 100644 --- a/server/server.Dockerfile +++ b/server/server.Dockerfile @@ -6,7 +6,7 @@ WORKDIR / # Copy lean files COPY leanserver ./leanserver COPY $GAME_DIR ./$GAME_DIR -# TODO: make `testgame` a build argument +# TODO: make `adam` a build argument WORKDIR /leanserver RUN rm -f ./build/bin/gameserver From e7842bce82b8e1a0d75e3348d1bfa13dac337a3b Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Sun, 26 Mar 2023 14:27:04 +0200 Subject: [PATCH 25/29] fix level links --- client/src/components/Welcome.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/Welcome.tsx b/client/src/components/Welcome.tsx index 5fb36f3..2ee5de7 100644 --- a/client/src/components/Welcome.tsx +++ b/client/src/components/Welcome.tsx @@ -22,7 +22,7 @@ function LevelIcon({ worldId, levelId, position }) { const completed = useSelector(selectCompleted(gameId, worldId,levelId)) // TODO: relative positioning? return ( - + ) From 6cd71c93feef73bbc4c9004a6ea5336c37896bc4 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Sun, 26 Mar 2023 14:28:58 +0200 Subject: [PATCH 26/29] fix doc string --- server/leanserver/GameServer/Commands.lean | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/leanserver/GameServer/Commands.lean b/server/leanserver/GameServer/Commands.lean index 9b4c716..65f9cf5 100644 --- a/server/leanserver/GameServer/Commands.lean +++ b/server/leanserver/GameServer/Commands.lean @@ -383,7 +383,7 @@ elab "OnlyDefinition" args:ident* : command => do /-- Documentation entry of a lemma. Example: ``` -LemmaDoc Nat.succ_pos as "succ_pos" in Nat "says `0 < n.succ`, etc." +LemmaDoc Nat.succ_pos as "succ_pos" in "Nat" "says `0 < n.succ`, etc." ``` * The first identifier is used in the commands `[New/Only/Disabled]Lemma`. From 6e8911e5dab07ebe1ab0c02aca8c6f08b5b14b07 Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Sun, 26 Mar 2023 14:29:13 +0200 Subject: [PATCH 27/29] add NNG --- server/nng/NNG.lean | 32 ++++- server/nng/NNG/Doc/Definitions.lean | 6 + server/nng/NNG/Doc/Lemmas.lean | 31 +++++ server/nng/NNG/Doc/Tactics.lean | 57 ++++++++ server/nng/NNG/Levels/Addition.lean | 42 ++++++ server/nng/NNG/Levels/Addition/Level_1.lean | 93 +++++++++++++ server/nng/NNG/Levels/Addition/Level_2.lean | 70 ++++++++++ server/nng/NNG/Levels/Addition/Level_3.lean | 66 +++++++++ server/nng/NNG/Levels/Addition/Level_4.lean | 60 ++++++++ server/nng/NNG/Levels/Addition/Level_5.lean | 54 ++++++++ server/nng/NNG/Levels/Addition/Level_6.lean | 47 +++++++ server/nng/NNG/Levels/AdvAddition.lean | 22 +++ .../nng/NNG/Levels/AdvAddition/Level_1.lean | 30 ++++ .../nng/NNG/Levels/AdvAddition/Level_10.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_11.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_12.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_13.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_2.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_3.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_4.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_5.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_6.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_7.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_8.lean | 24 ++++ .../nng/NNG/Levels/AdvAddition/Level_9.lean | 24 ++++ server/nng/NNG/Levels/AdvMultiplication.lean | 13 ++ .../NNG/Levels/AdvMultiplication/Level_1.lean | 24 ++++ .../NNG/Levels/AdvMultiplication/Level_2.lean | 24 ++++ .../NNG/Levels/AdvMultiplication/Level_3.lean | 24 ++++ .../NNG/Levels/AdvMultiplication/Level_4.lean | 24 ++++ server/nng/NNG/Levels/AdvProposition.lean | 19 +++ .../NNG/Levels/AdvProposition/Level_1.lean | 28 ++++ .../NNG/Levels/AdvProposition/Level_10.lean | 36 +++++ .../NNG/Levels/AdvProposition/Level_2.lean | 33 +++++ .../NNG/Levels/AdvProposition/Level_3.lean | 31 +++++ .../NNG/Levels/AdvProposition/Level_4.lean | 31 +++++ .../NNG/Levels/AdvProposition/Level_5.lean | 34 +++++ .../NNG/Levels/AdvProposition/Level_6.lean | 31 +++++ .../NNG/Levels/AdvProposition/Level_7.lean | 31 +++++ .../NNG/Levels/AdvProposition/Level_8.lean | 49 +++++++ .../NNG/Levels/AdvProposition/Level_9.lean | 36 +++++ server/nng/NNG/Levels/Function.lean | 18 +++ server/nng/NNG/Levels/Function/Level_1.lean | 27 ++++ server/nng/NNG/Levels/Function/Level_2.lean | 28 ++++ server/nng/NNG/Levels/Function/Level_3.lean | 31 +++++ server/nng/NNG/Levels/Function/Level_4.lean | 37 +++++ server/nng/NNG/Levels/Function/Level_5.lean | 27 ++++ server/nng/NNG/Levels/Function/Level_6.lean | 30 ++++ server/nng/NNG/Levels/Function/Level_7.lean | 29 ++++ server/nng/NNG/Levels/Function/Level_8.lean | 27 ++++ server/nng/NNG/Levels/Function/Level_9.lean | 36 +++++ server/nng/NNG/Levels/Inequality.lean | 25 ++++ server/nng/NNG/Levels/Inequality/Level_1.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_10.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_11.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_12.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_13.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_14.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_15.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_16.lean | 24 ++++ .../nng/NNG/Levels/Inequality/Level_17.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_2.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_3.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_4.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_5.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_6.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_7.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_8.lean | 24 ++++ server/nng/NNG/Levels/Inequality/Level_9.lean | 24 ++++ server/nng/NNG/Levels/Multiplication.lean | 18 +++ .../NNG/Levels/Multiplication/Level_1.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_2.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_3.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_4.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_5.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_6.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_7.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_8.lean | 24 ++++ .../NNG/Levels/Multiplication/Level_9.lean | 24 ++++ server/nng/NNG/Levels/Power.lean | 16 +++ server/nng/NNG/Levels/Power/Level_1.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_2.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_3.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_4.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_5.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_6.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_7.lean | 24 ++++ server/nng/NNG/Levels/Power/Level_8.lean | 24 ++++ server/nng/NNG/Levels/Proposition.lean | 18 +++ .../nng/NNG/Levels/Proposition/Level_1.lean | 24 ++++ .../nng/NNG/Levels/Proposition/Level_2.lean | 25 ++++ .../nng/NNG/Levels/Proposition/Level_3.lean | 30 ++++ .../nng/NNG/Levels/Proposition/Level_4.lean | 30 ++++ .../nng/NNG/Levels/Proposition/Level_5.lean | 27 ++++ .../nng/NNG/Levels/Proposition/Level_6.lean | 30 ++++ .../nng/NNG/Levels/Proposition/Level_7.lean | 28 ++++ .../nng/NNG/Levels/Proposition/Level_8.lean | 35 +++++ .../nng/NNG/Levels/Proposition/Level_9.lean | 29 ++++ server/nng/NNG/Levels/Tutorial.lean | 12 ++ server/nng/NNG/Levels/Tutorial/Level_1.lean | 42 ++++++ server/nng/NNG/Levels/Tutorial/Level_2.lean | 46 ++++++ server/nng/NNG/Levels/Tutorial/Level_3.lean | 71 ++++++++++ server/nng/NNG/Levels/Tutorial/Level_4.lean | 68 +++++++++ server/nng/NNG/Metadata.lean | 5 + server/nng/NNG/Modifications/Tactics.lean | 131 ++++++++++++++++++ server/nng/NNG/MyNat/Addition.lean | 23 +++ server/nng/NNG/MyNat/Definition.lean | 37 +++++ server/nng/NNG/MyNat/Inequality.lean | 28 ++++ server/nng/NNG/MyNat/Multiplication.lean | 17 +++ server/nng/NNG/MyNat/Power.lean | 21 +++ server/nng/NNG/MyNat/Theorems/Addition.lean | 45 ++++++ .../nng/NNG/MyNat/Theorems/Proposition.lean | 1 + server/nng/lake-manifest.json | 27 +++- server/nng/lakefile.lean | 3 + 114 files changed, 3380 insertions(+), 4 deletions(-) create mode 100644 server/nng/NNG/Doc/Definitions.lean create mode 100644 server/nng/NNG/Doc/Lemmas.lean create mode 100644 server/nng/NNG/Doc/Tactics.lean create mode 100644 server/nng/NNG/Levels/Addition.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_1.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_2.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_3.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_4.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_5.lean create mode 100644 server/nng/NNG/Levels/Addition/Level_6.lean create mode 100644 server/nng/NNG/Levels/AdvAddition.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_1.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_10.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_11.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_12.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_13.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_2.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_3.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_4.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_5.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_6.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_7.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_8.lean create mode 100644 server/nng/NNG/Levels/AdvAddition/Level_9.lean create mode 100644 server/nng/NNG/Levels/AdvMultiplication.lean create mode 100644 server/nng/NNG/Levels/AdvMultiplication/Level_1.lean create mode 100644 server/nng/NNG/Levels/AdvMultiplication/Level_2.lean create mode 100644 server/nng/NNG/Levels/AdvMultiplication/Level_3.lean create mode 100644 server/nng/NNG/Levels/AdvMultiplication/Level_4.lean create mode 100644 server/nng/NNG/Levels/AdvProposition.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_1.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_10.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_2.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_3.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_4.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_5.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_6.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_7.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_8.lean create mode 100644 server/nng/NNG/Levels/AdvProposition/Level_9.lean create mode 100644 server/nng/NNG/Levels/Function.lean create mode 100644 server/nng/NNG/Levels/Function/Level_1.lean create mode 100644 server/nng/NNG/Levels/Function/Level_2.lean create mode 100644 server/nng/NNG/Levels/Function/Level_3.lean create mode 100644 server/nng/NNG/Levels/Function/Level_4.lean create mode 100644 server/nng/NNG/Levels/Function/Level_5.lean create mode 100644 server/nng/NNG/Levels/Function/Level_6.lean create mode 100644 server/nng/NNG/Levels/Function/Level_7.lean create mode 100644 server/nng/NNG/Levels/Function/Level_8.lean create mode 100644 server/nng/NNG/Levels/Function/Level_9.lean create mode 100644 server/nng/NNG/Levels/Inequality.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_1.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_10.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_11.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_12.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_13.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_14.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_15.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_16.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_17.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_2.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_3.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_4.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_5.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_6.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_7.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_8.lean create mode 100644 server/nng/NNG/Levels/Inequality/Level_9.lean create mode 100644 server/nng/NNG/Levels/Multiplication.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_1.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_2.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_3.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_4.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_5.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_6.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_7.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_8.lean create mode 100644 server/nng/NNG/Levels/Multiplication/Level_9.lean create mode 100644 server/nng/NNG/Levels/Power.lean create mode 100644 server/nng/NNG/Levels/Power/Level_1.lean create mode 100644 server/nng/NNG/Levels/Power/Level_2.lean create mode 100644 server/nng/NNG/Levels/Power/Level_3.lean create mode 100644 server/nng/NNG/Levels/Power/Level_4.lean create mode 100644 server/nng/NNG/Levels/Power/Level_5.lean create mode 100644 server/nng/NNG/Levels/Power/Level_6.lean create mode 100644 server/nng/NNG/Levels/Power/Level_7.lean create mode 100644 server/nng/NNG/Levels/Power/Level_8.lean create mode 100644 server/nng/NNG/Levels/Proposition.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_1.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_2.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_3.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_4.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_5.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_6.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_7.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_8.lean create mode 100644 server/nng/NNG/Levels/Proposition/Level_9.lean create mode 100644 server/nng/NNG/Levels/Tutorial.lean create mode 100644 server/nng/NNG/Levels/Tutorial/Level_1.lean create mode 100644 server/nng/NNG/Levels/Tutorial/Level_2.lean create mode 100644 server/nng/NNG/Levels/Tutorial/Level_3.lean create mode 100644 server/nng/NNG/Levels/Tutorial/Level_4.lean create mode 100644 server/nng/NNG/Metadata.lean create mode 100644 server/nng/NNG/Modifications/Tactics.lean create mode 100644 server/nng/NNG/MyNat/Addition.lean create mode 100644 server/nng/NNG/MyNat/Definition.lean create mode 100644 server/nng/NNG/MyNat/Inequality.lean create mode 100644 server/nng/NNG/MyNat/Multiplication.lean create mode 100644 server/nng/NNG/MyNat/Power.lean create mode 100644 server/nng/NNG/MyNat/Theorems/Addition.lean create mode 100644 server/nng/NNG/MyNat/Theorems/Proposition.lean diff --git a/server/nng/NNG.lean b/server/nng/NNG.lean index 88032ba..b315174 100644 --- a/server/nng/NNG.lean +++ b/server/nng/NNG.lean @@ -1,9 +1,35 @@ 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 + Game "NNG" -World "HelloWorld" -Level 1 +Title "Natural Number Game" +Introduction +" +[intro text missing] + +## Credits +* Content and Lean3-version: Kevin Buzzard, Mohammad Pedramfar +* Game Engine: Alexander Bentkamp, Jon Eugster, Patrick Massot +* Port to Lean 4: Chris Lovett + +## Resources +* [Original Lean3 version](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) +* [Chris' translation to lean4](https://lovettsoftware.com/NaturalNumbers/TutorialWorld/Level1.lean.html) +" -Statement : 1 + 1 = 2 := rfl +Path Tutorial → Addition → Function → Proposition → AdvProposition → AdvAddition +Path AdvAddition → AdvMultiplication → Inequality +Path Addition → Multiplication → AdvMultiplication +Path Multiplication → Power MakeGame \ No newline at end of file diff --git a/server/nng/NNG/Doc/Definitions.lean b/server/nng/NNG/Doc/Definitions.lean new file mode 100644 index 0000000..ec56a79 --- /dev/null +++ b/server/nng/NNG/Doc/Definitions.lean @@ -0,0 +1,6 @@ +import GameServer.Commands + +DefinitionDoc MyNat as "ℕ" +" +The Natural Numbers. +" \ No newline at end of file diff --git a/server/nng/NNG/Doc/Lemmas.lean b/server/nng/NNG/Doc/Lemmas.lean new file mode 100644 index 0000000..f7c4b03 --- /dev/null +++ b/server/nng/NNG/Doc/Lemmas.lean @@ -0,0 +1,31 @@ +import GameServer.Commands + +LemmaDoc MyNat.add_zero as "add_zero" in "Nat" +"" + +LemmaDoc MyNat.add_succ as "add_succ" in "Nat" +"" + +LemmaDoc MyNat.zero_add as "zero_add" in "Nat" +"" + +LemmaDoc MyNat.add_assoc as "add_assoc" in "Nat" +"" + +LemmaDoc MyNat.succ_add as "succ_add" in "Nat" +"" + +LemmaDoc MyNat.add_comm as "add_comm" in "Nat" +"" + +LemmaDoc MyNat.one_eq_succ_zero as "one_eq_succ_zero" in "Nat" +"" + +LemmaDoc not_iff_imp_false as "not_iff_imp_false" in "Prop" +"" + +LemmaDoc MyNat.succ_inj as "succ_inj" in "Nat" +"" + +LemmaDoc MyNat.zero_ne_succ as "zero_ne_succ" in "Nat" +"" diff --git a/server/nng/NNG/Doc/Tactics.lean b/server/nng/NNG/Doc/Tactics.lean new file mode 100644 index 0000000..e0b50a3 --- /dev/null +++ b/server/nng/NNG/Doc/Tactics.lean @@ -0,0 +1,57 @@ +import GameServer.Commands + +TacticDoc rfl +" +" + +TacticDoc rewrite +" +" + +TacticDoc rw +" +" + +TacticDoc induction +" +" + +TacticDoc exact +" +" + +TacticDoc apply +" +" + +TacticDoc intro +" +" + +TacticDoc «have» +" +" + +TacticDoc constructor +" +" + +TacticDoc rcases +" +" + +TacticDoc left +" +" + +TacticDoc right +" +" + +TacticDoc contradiction +" +" + +TacticDoc exfalso +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Addition.lean b/server/nng/NNG/Levels/Addition.lean new file mode 100644 index 0000000..84d3722 --- /dev/null +++ b/server/nng/NNG/Levels/Addition.lean @@ -0,0 +1,42 @@ +import NNG.Levels.Addition.Level_1 +import NNG.Levels.Addition.Level_2 +import NNG.Levels.Addition.Level_3 +import NNG.Levels.Addition.Level_4 +import NNG.Levels.Addition.Level_5 +import NNG.Levels.Addition.Level_6 + + +Game "NNG" +World "Addition" +Title "Addition World" + +Introduction +" +Welcome to Addition World. If you've done all four levels in tutorial world +and know about `rewrite` and `rfl`, then you're in the right place. Here's +a reminder of the things you're now equipped with which we'll need in this world. + +## Data: + + * a type called `ℕ` or `MyNat`. + * a term `0 : ℕ`, interpreted as the number zero. + * a function `succ : ℕ → ℕ`, with `succ n` interpreted as \"the number after `n`\". + * Usual numerical notation `0,1,2` etc. (although `2` onwards will be of no use to us until much later ;-) ). + * Addition (with notation `a + b`). + +## Theorems: + + * `add_zero (a : ℕ) : a + 0 = a`. Use with `rewrite [add_zero]`. + * `add_succ (a b : ℕ) : a + succ(b) = succ(a + b)`. Use with `rewrite [add_succ]`. + * The principle of mathematical induction. Use with `induction` (which we learn about in this chapter). + + +## Tactics: + + * `rfl` : proves goals of the form `X = X`. + * `rewrite [h]` : if `h` is a proof of `A = B`, changes all `A`'s in the goal to `B`'s. + * `induction n with d hd` : we're going to learn this right now. + + +You will also find all this information in your Inventory to read the documentation. +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Addition/Level_1.lean b/server/nng/NNG/Levels/Addition/Level_1.lean new file mode 100644 index 0000000..e6e849c --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_1.lean @@ -0,0 +1,93 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Addition" +Level 1 +Title "the induction tactic." + +open MyNat + +set_option tactic.hygienic false + +Introduction +" +OK so let's see induction in action. We're going to prove + +``` +zero_add (n : ℕ) : 0 + n = n +``` + +Wait… what is going on here? Didn't we already prove that adding zero to $n$ gave us $n$? + +No we didn't! We proved $n + 0 = n$, and that proof was called `add_zero`. We're now +trying to establish `zero_add`, the proof that $0 + n = n$. + +But aren't these two theorems the same? + +No they're not! It is *true* that `x + y = y + x`, but we haven't *proved* it yet, +and in fact we will need both `add_zero` and `zero_add` in order +to prove this. In fact `x + y = y + x` is the boss level for addition world, +and `induction` is the only other tactic you'll need to beat it. + +Now `add_zero` is one of Peano's axioms, so we don't need to prove it, we already have it. +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 zero_add +"For all natural numbers $n$, we have $0 + n = n$." + (n : ℕ) : 0 + n = n := by + Hint "You can start a proof by induction over `n` by typing: + `induction n with d hd`. + + If you use the `with` part, you can name your variable and induction hypothesis, otherwise + they get default names." + induction n with n hn + · Hint "Now you have two goals. Once you proved the first, you will jump to the second one. + This first goal is the base case $n = 0$. + + Recall that you can use all lemmas that are visible in your inventory." + Hint (hidden := true) "try using `add_zero`." + rw [add_zero] + rfl + · Hint "Now you jumped to the second goal. Here you have the induction hypothesis + `{hn} : 0 + {n} = {n}` and you need to prove the statement for `succ {n}`." + Hint (hidden := true) "look at `add_succ`." + rw [add_succ] + Hint (hidden := true) "At this point you see the term `0 + {n}`, so you can use the + induction hypothesis with `rw [{hn}]`." + rw [hn] + rfl + +NewTactic induction + +Conclusion +" +## Now venture off on your own. + +Those three tactics: + +* `induction n with d hd` +* `rw [h]` +* `rfl` + +will get you quite a long way through this game. Using only these tactics +you can beat Addition World level 4 (the boss level of Addition World), +all of Multiplication World including the boss level `a * b = b * a`, +and even all of Power World including the fiendish final boss. This route will +give you a good grounding in these three basic tactics; after that, if you +are still interested, there are other worlds to master, where you can learn +more tactics. + +But we're getting ahead of ourselves, you still have to beat the rest of Addition World. +We're going to stop explaining stuff carefully now. If you get stuck or want +to know more about Lean (e.g. how to do much harder maths in Lean), +ask in `#new members` at +[the Lean chat](https://leanprover.zulipchat.com) +(login required, real name preferred). Kevin or Mohammad or one of the other +people there might be able to help. + +Good luck! Click on \"Next\" to solve some levels on your own. +" diff --git a/server/nng/NNG/Levels/Addition/Level_2.lean b/server/nng/NNG/Levels/Addition/Level_2.lean new file mode 100644 index 0000000..b49723a --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_2.lean @@ -0,0 +1,70 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Addition" +Level 2 +Title "add_assoc (associativity of addition)" + +open MyNat + +theorem MyNat.zero_add (n : ℕ) : 0 + n = n := by + induction n with n hn + · rw [add_zero] + rfl + · rw [add_succ] + rw [hn] + rfl + +Introduction +" +It's well-known that $(1 + 2) + 3 = 1 + (2 + 3)$; if we have three numbers +to add up, it doesn't matter which of the additions we do first. This fact +is called *associativity of addition* by mathematicians, and it is *not* +obvious. For example, subtraction really is not associative: $(6 - 2) - 1$ +is really not equal to $6 - (2 - 1)$. We are going to have to prove +that addition, as defined the way we've defined it, is associative. + +See if you can prove associativity of addition. +" + +Statement add_assoc +"On the set of natural numbers, addition is associative. +In other words, for all natural numbers $a, b$ and $c$, we have +$ (a + b) + c = a + (b + c). $" + (a b c : ℕ) : (a + b) + c = a + (b + c) := by + Hint "Because addition was defined by recursion on the right-most variable, + use induction on the right-most variable (try other variables at your peril!). + + Note that when Lean writes `a + b + c`, it means `(a + b) + c`. If it wants to talk + about `a + (b + c)` it will put the brackets in explictly." + Branch + induction a + Hint "Good luck with that…" + rw [zero_add, zero_add] + rfl + Branch + induction b + Hint "Good luck with that…" + induction c with c hc + Hint (hidden := true) "look at the lemma `add_zero`." + rw [add_zero] + Hint "`rw [add_zero]` only rewrites one term of the form `… + 0`, so you might to + use it multiple times." + rw [add_zero] + rfl + Hint (hidden := true) "`add_succ` might help here." + rw [add_succ] + rw [add_succ] + rw [add_succ] + Hint (hidden := true) "Now you can use the induction hypothesis." + rw [hc] + rfl + + +Conclusion +" + +" + +NewLemma MyNat.zero_add \ No newline at end of file diff --git a/server/nng/NNG/Levels/Addition/Level_3.lean b/server/nng/NNG/Levels/Addition/Level_3.lean new file mode 100644 index 0000000..95a846d --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_3.lean @@ -0,0 +1,66 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.Levels.Addition.Level_2 + +Game "NNG" +World "Addition" +Level 3 +Title "succ_add" + +open MyNat + +theorem MyNat.add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by + induction c with c hc + · rw [add_zero] + rw [add_zero] + rfl + · rw [add_succ] + rw [add_succ] + rw [add_succ] + rw [hc] + rfl + + +Introduction +" +Oh no! On the way to `add_comm`, a wild `succ_add` appears. `succ_add` +is the proof that `succ(a) + b = succ(a + b)` for `a` and `b` in your +natural number type. We need to prove this now, because we will need +to use this result in our proof that `a + b = b + a` in the next level. + +NB: think about why computer scientists called this result `succ_add` . +There is a logic to all the names. + +Note that if you want to be more precise about exactly where you want +to rewrite something like `add_succ` (the proof you already have), +you can do things like `rw [add_succ (succ a)]` or +`rw [add_succ (succ a) d]`, telling Lean explicitly what to use for +the input variables for the function `add_succ`. Indeed, `add_succ` +is a function: it takes as input two variables `a` and `b` and outputs a proof +that `a + succ(b) = succ(a + b)`. The tactic `rw [add_succ]` just says to Lean \"guess +what the variables are\". +" + +Statement succ_add +"For all natural numbers $a, b$, we have +$ \\operatorname{succ}(a) + b = \\operatorname{succ}(a + b)$." + (a b : ℕ) : succ a + b = succ (a + b) := by + Hint (hidden := true) "You might again want to start by induction + on the right-most variable." + Branch + induction a + Hint "Induction on `a` will not work." + induction b with d hd + · rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [add_succ] + rfl + +NewLemma MyNat.add_assoc + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Addition/Level_4.lean b/server/nng/NNG/Levels/Addition/Level_4.lean new file mode 100644 index 0000000..d32acd2 --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_4.lean @@ -0,0 +1,60 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.Levels.Addition.Level_3 + +Game "NNG" +World "Addition" +Level 4 +Title "`add_comm` (boss level)" + +open MyNat + +theorem MyNat.succ_add (a b : ℕ) : succ a + b = succ (a + b) := by + induction b with d hd + · rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [add_succ] + rfl + +Introduction +" +[boss battle music] + +Look in your inventory to see the proofs you have available. +These should be enough. +" + +Statement add_comm +"On the set of natural numbers, addition is commutative. +In other words, for all natural numbers $a$ and $b$, we have +$a + b = b + a$." + (a b : ℕ) : a + b = b + a := by + Branch + induction a with d hd + · rw [zero_add] + rw [add_zero] + rfl + · rw [succ_add] + rw [hd] + rw [add_succ] + rfl + induction b with d hd + · rw [zero_add] + rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [succ_add] + rfl + +NewLemma MyNat.succ_add + +Conclusion +" +If you got this far -- nice! You're nearly ready to make a choice: +Multiplication World or Function World. But there are just a couple +more useful lemmas in Addition World which you should prove first. +Press on to level 5. +" diff --git a/server/nng/NNG/Levels/Addition/Level_5.lean b/server/nng/NNG/Levels/Addition/Level_5.lean new file mode 100644 index 0000000..62dd561 --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_5.lean @@ -0,0 +1,54 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.Levels.Addition.Level_4 + +Game "NNG" +World "Addition" +Level 5 +Title "succ_eq_add_one" + +open MyNat + +theorem MyNat.add_comm (a b : ℕ) : a + b = b + a := by + induction b with d hd + · rw [zero_add] + rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [succ_add] + rfl + +theorem MyNat.one_eq_succ_zero : (1 : ℕ) = succ 0 := by + rfl + +NewLemma MyNat.add_comm MyNat.one_eq_succ_zero + +Introduction +" +I've just added `one_eq_succ_zero` (a proof of $1 = \\operatorname{succ}(0)$) +to your list of theorems; this is true +by definition of $1$, but we didn't need it until now. + +Levels 5 and 6 are the two last levels in Addition World. +Level 5 involves the number $1$. When you see a $1$ in your goal, +you can write `rw [one_eq_succ_zero]` to get back +to something which only mentions `0`. This is a good move because $0$ is easier for us to +manipulate than $1$ right now, because we have +some theorems about $0$ (`zero_add`, `add_zero`), but, other than `1 = succ 0`, +no theorems at all which mention $1$. Let's prove one now. +" + +Statement succ_eq_add_one +"For any natural number $n$, we have +$ \\operatorname{succ}(n) = n+1$ ." + (n : ℕ) : succ n = n + 1 := by + rw [one_eq_succ_zero] + rw [add_succ] + rw [add_zero] + rfl + +Conclusion +" +Well done! On to the last level! +" diff --git a/server/nng/NNG/Levels/Addition/Level_6.lean b/server/nng/NNG/Levels/Addition/Level_6.lean new file mode 100644 index 0000000..362d261 --- /dev/null +++ b/server/nng/NNG/Levels/Addition/Level_6.lean @@ -0,0 +1,47 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.Levels.Addition.Level_5 + +Game "NNG" +World "Addition" +Level 6 +Title "add_right_comm" + +open MyNat + +Introduction +" +Lean sometimes writes `a + b + c`. What does it mean? The convention is +that if there are no brackets displayed in an addition formula, the brackets +are around the left most `+` (Lean's addition is \"left associative\"). +So the goal in this level is `(a + b) + c = (a + c) + b`. This isn't +quite `add_assoc` or `add_comm`, it's something you'll have to prove +by putting these two theorems together. + +If you hadn't picked up on this already, `rw [add_assoc]` will +change `(x + y) + z` to `x + (y + z)`, but to change it back +you will need `rw [← add_assoc]`. Get the left arrow by typing `\\l` +then the space bar (note that this is L for left, not a number 1). +Similarly, if `h : a = b` then `rw [h]` will change `a`'s to `b`'s +and `rw [← h]` will change `b`'s to `a`'s. + +Also, you can be (and will need to be, in this level) more precise +about where to rewrite theorems. `rw add_comm,` will just find the +first `? + ?` it sees and swap it around. You can target more specific +additions like this: `rw add_comm a` will swap around +additions of the form `a + ?`, and `rw add_comm a b,` will only +swap additions of the form `a + b`. +" + +Statement add_right_comm +"For all natural numbers $a, b$ and $c$, we have +$a + b + c = a + c + b$." + (a b c : ℕ) : a + b + c = a + c + b := by + rw [add_assoc] + rw [add_comm b c] + rw [←add_assoc] + rfl + +Conclusion +" +" diff --git a/server/nng/NNG/Levels/AdvAddition.lean b/server/nng/NNG/Levels/AdvAddition.lean new file mode 100644 index 0000000..cc2e95d --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition.lean @@ -0,0 +1,22 @@ +import NNG.Levels.AdvAddition.Level_1 +import NNG.Levels.AdvAddition.Level_2 +import NNG.Levels.AdvAddition.Level_3 +import NNG.Levels.AdvAddition.Level_4 +import NNG.Levels.AdvAddition.Level_5 +import NNG.Levels.AdvAddition.Level_6 +import NNG.Levels.AdvAddition.Level_7 +import NNG.Levels.AdvAddition.Level_8 +import NNG.Levels.AdvAddition.Level_9 +import NNG.Levels.AdvAddition.Level_10 +import NNG.Levels.AdvAddition.Level_11 +import NNG.Levels.AdvAddition.Level_12 +import NNG.Levels.AdvAddition.Level_13 + + +Game "NNG" +World "AdvAddition" +Title "Advanced Addition World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/AdvAddition/Level_1.lean b/server/nng/NNG/Levels/AdvAddition/Level_1.lean new file mode 100644 index 0000000..ded4dae --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_1.lean @@ -0,0 +1,30 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +theorem MyNat.succ_inj {a b : ℕ} : succ a = succ b → a = b := by simp only [succ.injEq, imp_self] + +theorem MyNat.zero_ne_succ (a : ℕ) : zero ≠ succ a := by simp only [ne_eq, not_false_iff] + +Statement succ_inj' +"" + {a b : ℕ} (hs : succ a = succ b) : a = b := by + exact succ_inj hs + +NewLemma MyNat.succ_inj MyNat.zero_ne_succ + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_10.lean b/server/nng/NNG/Levels/AdvAddition/Level_10.lean new file mode 100644 index 0000000..f9f01c7 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_10.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 10 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_11.lean b/server/nng/NNG/Levels/AdvAddition/Level_11.lean new file mode 100644 index 0000000..b4d244e --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_11.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 11 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_12.lean b/server/nng/NNG/Levels/AdvAddition/Level_12.lean new file mode 100644 index 0000000..ddc0e06 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_12.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 12 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_13.lean b/server/nng/NNG/Levels/AdvAddition/Level_13.lean new file mode 100644 index 0000000..13250ec --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_13.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 13 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_2.lean b/server/nng/NNG/Levels/AdvAddition/Level_2.lean new file mode 100644 index 0000000..1d22594 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_2.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_3.lean b/server/nng/NNG/Levels/AdvAddition/Level_3.lean new file mode 100644 index 0000000..09185a8 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_3.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_4.lean b/server/nng/NNG/Levels/AdvAddition/Level_4.lean new file mode 100644 index 0000000..6973471 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_4.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_5.lean b/server/nng/NNG/Levels/AdvAddition/Level_5.lean new file mode 100644 index 0000000..c3b8b6f --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_5.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_6.lean b/server/nng/NNG/Levels/AdvAddition/Level_6.lean new file mode 100644 index 0000000..72623d1 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_6.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_7.lean b/server/nng/NNG/Levels/AdvAddition/Level_7.lean new file mode 100644 index 0000000..1ef04a2 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_7.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_8.lean b/server/nng/NNG/Levels/AdvAddition/Level_8.lean new file mode 100644 index 0000000..09a2200 --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_8.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvAddition/Level_9.lean b/server/nng/NNG/Levels/AdvAddition/Level_9.lean new file mode 100644 index 0000000..6acbb8b --- /dev/null +++ b/server/nng/NNG/Levels/AdvAddition/Level_9.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvAddition" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvMultiplication.lean b/server/nng/NNG/Levels/AdvMultiplication.lean new file mode 100644 index 0000000..903e3d9 --- /dev/null +++ b/server/nng/NNG/Levels/AdvMultiplication.lean @@ -0,0 +1,13 @@ +import NNG.Levels.AdvMultiplication.Level_1 +import NNG.Levels.AdvMultiplication.Level_2 +import NNG.Levels.AdvMultiplication.Level_3 +import NNG.Levels.AdvMultiplication.Level_4 + + +Game "NNG" +World "AdvMultiplication" +Title "Advanced Multiplication World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/AdvMultiplication/Level_1.lean b/server/nng/NNG/Levels/AdvMultiplication/Level_1.lean new file mode 100644 index 0000000..bb1d6fc --- /dev/null +++ b/server/nng/NNG/Levels/AdvMultiplication/Level_1.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvMultiplication" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvMultiplication/Level_2.lean b/server/nng/NNG/Levels/AdvMultiplication/Level_2.lean new file mode 100644 index 0000000..f1afe1b --- /dev/null +++ b/server/nng/NNG/Levels/AdvMultiplication/Level_2.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvMultiplication" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvMultiplication/Level_3.lean b/server/nng/NNG/Levels/AdvMultiplication/Level_3.lean new file mode 100644 index 0000000..33413e4 --- /dev/null +++ b/server/nng/NNG/Levels/AdvMultiplication/Level_3.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvMultiplication" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvMultiplication/Level_4.lean b/server/nng/NNG/Levels/AdvMultiplication/Level_4.lean new file mode 100644 index 0000000..fa3a204 --- /dev/null +++ b/server/nng/NNG/Levels/AdvMultiplication/Level_4.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvMultiplication" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition.lean b/server/nng/NNG/Levels/AdvProposition.lean new file mode 100644 index 0000000..8d38a47 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition.lean @@ -0,0 +1,19 @@ +import NNG.Levels.AdvProposition.Level_1 +import NNG.Levels.AdvProposition.Level_2 +import NNG.Levels.AdvProposition.Level_3 +import NNG.Levels.AdvProposition.Level_4 +import NNG.Levels.AdvProposition.Level_5 +import NNG.Levels.AdvProposition.Level_6 +import NNG.Levels.AdvProposition.Level_7 +import NNG.Levels.AdvProposition.Level_8 +import NNG.Levels.AdvProposition.Level_9 +import NNG.Levels.AdvProposition.Level_10 + + +Game "NNG" +World "AdvProposition" +Title "Advanced Proposition World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/AdvProposition/Level_1.lean b/server/nng/NNG/Levels/AdvProposition/Level_1.lean new file mode 100644 index 0000000..10868a8 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_1.lean @@ -0,0 +1,28 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "AdvProposition" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) (p : P) (q : Q) : P ∧ Q := by + constructor + exact p + exact q + +NewTactic constructor + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_10.lean b/server/nng/NNG/Levels/AdvProposition/Level_10.lean new file mode 100644 index 0000000..1622db4 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_10.lean @@ -0,0 +1,36 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases + +Game "NNG" +World "AdvProposition" +Level 10 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) : (¬ Q → ¬ P) → (P → Q) := by + by_cases p : P + · by_cases q : Q + intro h p' -- cc + assumption + intro h p' + have g : ¬ P := h q + contradiction + · by_cases q : Q + intro h p + assumption + intro h p + contradiction + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_2.lean b/server/nng/NNG/Levels/AdvProposition/Level_2.lean new file mode 100644 index 0000000..526e47a --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_2.lean @@ -0,0 +1,33 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases + +Game "NNG" +World "AdvProposition" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +set_option tactic.hygienic false + +Statement and_symm +"" + (P Q : Prop) : P ∧ Q → Q ∧ P := by + intro h + rcases h with ⟨p, q⟩ + constructor + exact q + exact p + +NewTactic rcases + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_3.lean b/server/nng/NNG/Levels/AdvProposition/Level_3.lean new file mode 100644 index 0000000..76415ec --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_3.lean @@ -0,0 +1,31 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases + +Game "NNG" +World "AdvProposition" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement and_trans +"" + (P Q R : Prop) : P ∧ Q → Q ∧ R → P ∧ R := by + intro hpq + intro hqr + rcases hpq with ⟨p, q⟩ + rcases hqr with ⟨q', r⟩ + constructor + assumption + assumption + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_4.lean b/server/nng/NNG/Levels/AdvProposition/Level_4.lean new file mode 100644 index 0000000..023bd22 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_4.lean @@ -0,0 +1,31 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases + +Game "NNG" +World "AdvProposition" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement iff_trans +"" + (P Q R : Prop) : (P ↔ Q) → (Q ↔ R) → (P ↔ R) := by + intro hpq + intro hqr + rcases hpq with ⟨hpq, hqp⟩ + rcases hqr with ⟨hqr, hrq⟩ + constructor + exact fun x => hqr (hpq x) -- cc + exact fun x => hqp (hrq x) -- cc + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_5.lean b/server/nng/NNG/Levels/AdvProposition/Level_5.lean new file mode 100644 index 0000000..26224e6 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_5.lean @@ -0,0 +1,34 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases + +Game "NNG" +World "AdvProposition" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement iff_trans +"" + (P Q R : Prop) : (P ↔ Q) → (Q ↔ R) → (P ↔ R) := by + intro hpq hqr + constructor + intro p + apply hqr.1 + apply hpq.1 + assumption + intro r + apply hpq.2 + apply hqr.2 + assumption + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_6.lean b/server/nng/NNG/Levels/AdvProposition/Level_6.lean new file mode 100644 index 0000000..01ee698 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_6.lean @@ -0,0 +1,31 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases +import Mathlib.Tactic.LeftRight +--import Mathlib.Logic.Basic + +Game "NNG" +World "AdvProposition" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) : Q → (P ∨ Q) := by + intro q + right + assumption + +NewTactic left right + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_7.lean b/server/nng/NNG/Levels/AdvProposition/Level_7.lean new file mode 100644 index 0000000..abff8e3 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_7.lean @@ -0,0 +1,31 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases +import Mathlib.Tactic.LeftRight + +Game "NNG" +World "AdvProposition" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement or_symm +"" + (P Q : Prop) : P ∨ Q → Q ∨ P := by + intro h + rcases h with p | q + right + exact p + left + exact q + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_8.lean b/server/nng/NNG/Levels/AdvProposition/Level_8.lean new file mode 100644 index 0000000..fd235cc --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_8.lean @@ -0,0 +1,49 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases +import Mathlib.Tactic.LeftRight + +Game "NNG" +World "AdvProposition" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement and_or_distrib_left +"" + (P Q R : Prop) : P ∧ (Q ∨ R) ↔ (P ∧ Q) ∨ (P ∧ R) := by + constructor + intro h + rcases h with ⟨hp, hqr⟩ + rcases hqr with q | r + left + constructor + assumption + assumption + right + constructor + assumption + assumption + intro h + rcases h with hpq | hpr + rcases hpq with ⟨p, q⟩ + constructor + assumption + left + assumption + rcases hpr with ⟨hp, hr⟩ + constructor + assumption + right + assumption + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/AdvProposition/Level_9.lean b/server/nng/NNG/Levels/AdvProposition/Level_9.lean new file mode 100644 index 0000000..d04f314 --- /dev/null +++ b/server/nng/NNG/Levels/AdvProposition/Level_9.lean @@ -0,0 +1,36 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import Std.Tactic.RCases +import NNG.MyNat.Theorems.Proposition + + + +Game "NNG" +World "AdvProposition" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement contra +"" + (P Q : Prop) : (P ∧ ¬ P) → Q := by + intro h + rcases h with ⟨p, np ⟩ + contradiction + -- rw [not_iff_imp_false] at np + -- exfalso + -- apply np + -- exact p + +NewTactic exfalso contradiction + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function.lean b/server/nng/NNG/Levels/Function.lean new file mode 100644 index 0000000..5b7a403 --- /dev/null +++ b/server/nng/NNG/Levels/Function.lean @@ -0,0 +1,18 @@ +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 + + +Game "NNG" +World "Function" +Title "Function World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Function/Level_1.lean b/server/nng/NNG/Levels/Function/Level_1.lean new file mode 100644 index 0000000..18aa81f --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_1.lean @@ -0,0 +1,27 @@ +import NNG.Metadata +import NNG.MyNat.Theorems.Addition +import NNG.MyNat.Multiplication + +Game "NNG" +World "Function" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"If $P$ is true, and $P\\implies Q$ is also true, then $Q$ is true." + (P Q : Prop) (p : P) (h : P → Q) : Q := by + exact h p + +NewTactic exact + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_2.lean b/server/nng/NNG/Levels/Function/Level_2.lean new file mode 100644 index 0000000..1e27341 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_2.lean @@ -0,0 +1,28 @@ +import NNG.Metadata +import NNG.MyNat.Theorems.Addition +import NNG.MyNat.Multiplication + +Game "NNG" +World "Function" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : ℕ → ℕ := by + intro n + exact 3 * n + 2 + +NewTactic intro + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_3.lean b/server/nng/NNG/Levels/Function/Level_3.lean new file mode 100644 index 0000000..1dc9c55 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_3.lean @@ -0,0 +1,31 @@ +import NNG.Metadata +import NNG.MyNat.Theorems.Addition +import NNG.MyNat.Multiplication + +Game "NNG" +World "Function" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R S T U: Type) (p : P) (h : P → Q) (i : Q → R) (j : Q → T) (k : S → T) (l : T → U) : + U := by + have q := h p + have t : T := j q + have u : U := l t + exact u + +NewTactic «have» + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_4.lean b/server/nng/NNG/Levels/Function/Level_4.lean new file mode 100644 index 0000000..ab2a23d --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_4.lean @@ -0,0 +1,37 @@ +import NNG.Metadata +import NNG.MyNat.Theorems.Addition +import NNG.MyNat.Multiplication + +Game "NNG" +World "Function" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R S T U: Type) +(p : P) +(h : P → Q) +(i : Q → R) +(j : Q → T) +(k : S → T) +(l : T → U) : U := +by + apply l + apply j + apply h + exact p + +NewTactic apply + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_5.lean b/server/nng/NNG/Levels/Function/Level_5.lean new file mode 100644 index 0000000..8f00824 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_5.lean @@ -0,0 +1,27 @@ +import NNG.Metadata +import NNG.MyNat.Theorems.Addition +import NNG.MyNat.Multiplication + +Game "NNG" +World "Function" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Type) : P → (Q → P) := by + intro p + intro q + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_6.lean b/server/nng/NNG/Levels/Function/Level_6.lean new file mode 100644 index 0000000..7754306 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_6.lean @@ -0,0 +1,30 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Function" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R : Type) : (P → (Q → R)) → ((P → Q) → (P → R)) := by + intro f + intro h + intro p + have j : Q → R := f p + apply j + apply h + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_7.lean b/server/nng/NNG/Levels/Function/Level_7.lean new file mode 100644 index 0000000..6cf284b --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_7.lean @@ -0,0 +1,29 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Function" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q F : Type) : (P → Q) → ((Q → F) → (P → F)) := by + intro f + intro h + intro p + apply h + apply f + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_8.lean b/server/nng/NNG/Levels/Function/Level_8.lean new file mode 100644 index 0000000..7a76cb5 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_8.lean @@ -0,0 +1,27 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Function" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Type) : (P → Q) → ((Q → empty) → (P → empty)) := by + intros f h p + apply h + apply f + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Function/Level_9.lean b/server/nng/NNG/Levels/Function/Level_9.lean new file mode 100644 index 0000000..f612d41 --- /dev/null +++ b/server/nng/NNG/Levels/Function/Level_9.lean @@ -0,0 +1,36 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Function" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (A B C D E F G H I J K L : Type) + (f1 : A → B) (f2 : B → E) (f3 : E → D) (f4 : D → A) (f5 : E → F) + (f6 : F → C) (f7 : B → C) (f8 : F → G) (f9 : G → J) (f10 : I → J) + (f11 : J → I) (f12 : I → H) (f13 : E → H) (f14 : H → K) (f15 : I → L) : A → L := by + intro a + apply f15 + apply f11 + apply f9 + apply f8 + apply f5 + apply f2 + apply f1 + exact a + + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality.lean b/server/nng/NNG/Levels/Inequality.lean new file mode 100644 index 0000000..87a1766 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality.lean @@ -0,0 +1,25 @@ +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 + +Game "NNG" +World "Inequality" +Title "Inequality World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Inequality/Level_1.lean b/server/nng/NNG/Levels/Inequality/Level_1.lean new file mode 100644 index 0000000..0995685 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_1.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_10.lean b/server/nng/NNG/Levels/Inequality/Level_10.lean new file mode 100644 index 0000000..a08569a --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_10.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 10 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_11.lean b/server/nng/NNG/Levels/Inequality/Level_11.lean new file mode 100644 index 0000000..b141e0f --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_11.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 11 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_12.lean b/server/nng/NNG/Levels/Inequality/Level_12.lean new file mode 100644 index 0000000..9ef7d0e --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_12.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 12 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_13.lean b/server/nng/NNG/Levels/Inequality/Level_13.lean new file mode 100644 index 0000000..5308b97 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_13.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 13 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_14.lean b/server/nng/NNG/Levels/Inequality/Level_14.lean new file mode 100644 index 0000000..4fd5211 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_14.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 14 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_15.lean b/server/nng/NNG/Levels/Inequality/Level_15.lean new file mode 100644 index 0000000..74ff4aa --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_15.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 15 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_16.lean b/server/nng/NNG/Levels/Inequality/Level_16.lean new file mode 100644 index 0000000..25d25fc --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_16.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 16 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_17.lean b/server/nng/NNG/Levels/Inequality/Level_17.lean new file mode 100644 index 0000000..f42a282 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_17.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 17 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_2.lean b/server/nng/NNG/Levels/Inequality/Level_2.lean new file mode 100644 index 0000000..597f6bd --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_2.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_3.lean b/server/nng/NNG/Levels/Inequality/Level_3.lean new file mode 100644 index 0000000..21d9865 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_3.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_4.lean b/server/nng/NNG/Levels/Inequality/Level_4.lean new file mode 100644 index 0000000..788af62 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_4.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_5.lean b/server/nng/NNG/Levels/Inequality/Level_5.lean new file mode 100644 index 0000000..3cf1b1b --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_5.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_6.lean b/server/nng/NNG/Levels/Inequality/Level_6.lean new file mode 100644 index 0000000..5b28efe --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_6.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_7.lean b/server/nng/NNG/Levels/Inequality/Level_7.lean new file mode 100644 index 0000000..bc22434 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_7.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_8.lean b/server/nng/NNG/Levels/Inequality/Level_8.lean new file mode 100644 index 0000000..8cc9b70 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_8.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Inequality/Level_9.lean b/server/nng/NNG/Levels/Inequality/Level_9.lean new file mode 100644 index 0000000..4c2afa4 --- /dev/null +++ b/server/nng/NNG/Levels/Inequality/Level_9.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Inequality" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication.lean b/server/nng/NNG/Levels/Multiplication.lean new file mode 100644 index 0000000..4ff6d8c --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication.lean @@ -0,0 +1,18 @@ +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 + + +Game "NNG" +World "Multiplication" +Title "Multiplication World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Multiplication/Level_1.lean b/server/nng/NNG/Levels/Multiplication/Level_1.lean new file mode 100644 index 0000000..c2ad14a --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_1.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_2.lean b/server/nng/NNG/Levels/Multiplication/Level_2.lean new file mode 100644 index 0000000..502e4f6 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_2.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_3.lean b/server/nng/NNG/Levels/Multiplication/Level_3.lean new file mode 100644 index 0000000..ca45877 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_3.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_4.lean b/server/nng/NNG/Levels/Multiplication/Level_4.lean new file mode 100644 index 0000000..e692704 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_4.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_5.lean b/server/nng/NNG/Levels/Multiplication/Level_5.lean new file mode 100644 index 0000000..01e06dc --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_5.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_6.lean b/server/nng/NNG/Levels/Multiplication/Level_6.lean new file mode 100644 index 0000000..4eeba03 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_6.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_7.lean b/server/nng/NNG/Levels/Multiplication/Level_7.lean new file mode 100644 index 0000000..746f3c9 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_7.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_8.lean b/server/nng/NNG/Levels/Multiplication/Level_8.lean new file mode 100644 index 0000000..369d554 --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_8.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Multiplication/Level_9.lean b/server/nng/NNG/Levels/Multiplication/Level_9.lean new file mode 100644 index 0000000..20fb8eb --- /dev/null +++ b/server/nng/NNG/Levels/Multiplication/Level_9.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Multiplication" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power.lean b/server/nng/NNG/Levels/Power.lean new file mode 100644 index 0000000..54910cb --- /dev/null +++ b/server/nng/NNG/Levels/Power.lean @@ -0,0 +1,16 @@ +import NNG.Levels.Power.Level_1 +import NNG.Levels.Power.Level_2 +import NNG.Levels.Power.Level_3 +import NNG.Levels.Power.Level_4 +import NNG.Levels.Power.Level_5 +import NNG.Levels.Power.Level_6 +import NNG.Levels.Power.Level_7 +import NNG.Levels.Power.Level_8 + +Game "NNG" +World "Power" +Title "Power World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Power/Level_1.lean b/server/nng/NNG/Levels/Power/Level_1.lean new file mode 100644 index 0000000..6a9192c --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_1.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_2.lean b/server/nng/NNG/Levels/Power/Level_2.lean new file mode 100644 index 0000000..fe6698a --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_2.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_3.lean b/server/nng/NNG/Levels/Power/Level_3.lean new file mode 100644 index 0000000..7cf3d38 --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_3.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_4.lean b/server/nng/NNG/Levels/Power/Level_4.lean new file mode 100644 index 0000000..635fd22 --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_4.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_5.lean b/server/nng/NNG/Levels/Power/Level_5.lean new file mode 100644 index 0000000..e9f6dc0 --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_5.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_6.lean b/server/nng/NNG/Levels/Power/Level_6.lean new file mode 100644 index 0000000..eaf97a0 --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_6.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_7.lean b/server/nng/NNG/Levels/Power/Level_7.lean new file mode 100644 index 0000000..f5b1949 --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_7.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Power/Level_8.lean b/server/nng/NNG/Levels/Power/Level_8.lean new file mode 100644 index 0000000..0240bfd --- /dev/null +++ b/server/nng/NNG/Levels/Power/Level_8.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Power" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : true := by + trivial + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition.lean b/server/nng/NNG/Levels/Proposition.lean new file mode 100644 index 0000000..9dc768a --- /dev/null +++ b/server/nng/NNG/Levels/Proposition.lean @@ -0,0 +1,18 @@ +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 + + +Game "NNG" +World "Proposition" +Title "Proposition World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Proposition/Level_1.lean b/server/nng/NNG/Levels/Proposition/Level_1.lean new file mode 100644 index 0000000..179f73a --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_1.lean @@ -0,0 +1,24 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 1 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) (p : P) (h : P → Q) : Q := by +exact h p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_2.lean b/server/nng/NNG/Levels/Proposition/Level_2.lean new file mode 100644 index 0000000..221bf0d --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_2.lean @@ -0,0 +1,25 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 2 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + : P → P := by + intro p + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_3.lean b/server/nng/NNG/Levels/Proposition/Level_3.lean new file mode 100644 index 0000000..707f571 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_3.lean @@ -0,0 +1,30 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 3 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R S T U: Prop) (p : P) (h : P → Q) (i : Q → R) + (j : Q → T) (k : S → T) (l : T → U) : U := by + have q := h p + have t := j q + have u := l t + exact u + +DisabledTactic apply + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_4.lean b/server/nng/NNG/Levels/Proposition/Level_4.lean new file mode 100644 index 0000000..e81b416 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_4.lean @@ -0,0 +1,30 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 4 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R S T U: Prop) (p : P) (h : P → Q) (i : Q → R) + (j : Q → T) (k : S → T) (l : T → U) : U := by + apply l + apply j + apply h + exact p + +DisabledTactic «have» + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_5.lean b/server/nng/NNG/Levels/Proposition/Level_5.lean new file mode 100644 index 0000000..6afe937 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_5.lean @@ -0,0 +1,27 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 5 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) : P → (Q → P) := by + intro p + intro q + exact p + rfl + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_6.lean b/server/nng/NNG/Levels/Proposition/Level_6.lean new file mode 100644 index 0000000..2d71058 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_6.lean @@ -0,0 +1,30 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 6 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R : Prop) : (P → (Q → R)) → ((P → Q) → (P → R)) := by + intro f + intro h + intro p + have j : Q → R := f p + apply j + apply h + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_7.lean b/server/nng/NNG/Levels/Proposition/Level_7.lean new file mode 100644 index 0000000..5caa3a3 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_7.lean @@ -0,0 +1,28 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Proposition" +Level 7 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q R : Prop) : (P → Q) → ((Q → R) → (P → R)) := by + intro hpq hqr + intro p + apply hqr + apply hpq + exact p + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_8.lean b/server/nng/NNG/Levels/Proposition/Level_8.lean new file mode 100644 index 0000000..566034c --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_8.lean @@ -0,0 +1,35 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.MyNat.Theorems.Proposition + + +Game "NNG" +World "Proposition" +Level 8 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (P Q : Prop) : (P → Q) → (¬ Q → ¬ P) := by + rw [not_iff_imp_false] + rw [not_iff_imp_false] + intro f + intro h + intro p + apply h + apply f + exact p + +NewLemma not_iff_imp_false + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Proposition/Level_9.lean b/server/nng/NNG/Levels/Proposition/Level_9.lean new file mode 100644 index 0000000..3f83050 --- /dev/null +++ b/server/nng/NNG/Levels/Proposition/Level_9.lean @@ -0,0 +1,29 @@ +import NNG.Metadata +import NNG.MyNat.Addition +import NNG.MyNat.Theorems.Proposition + +Game "NNG" +World "Proposition" +Level 9 +Title "" + +open MyNat + +Introduction +" + +" + +Statement +"" + (A B C D E F G H I J K L : Prop) + (f1 : A → B) (f2 : B → E) (f3 : E → D) (f4 : D → A) (f5 : E → F) + (f6 : F → C) (f7 : B → C) (f8 : F → G) (f9 : G → J) (f10 : I → J) + (f11 : J → I) (f12 : I → H) (f13 : E → H) (f14 : H → K) (f15 : I → L) : A → L := by + -- cc -- TODO: `cc` is not ported yet. + sorry + +Conclusion +" + +" diff --git a/server/nng/NNG/Levels/Tutorial.lean b/server/nng/NNG/Levels/Tutorial.lean new file mode 100644 index 0000000..5fcd9a3 --- /dev/null +++ b/server/nng/NNG/Levels/Tutorial.lean @@ -0,0 +1,12 @@ +import NNG.Levels.Tutorial.Level_1 +import NNG.Levels.Tutorial.Level_2 +import NNG.Levels.Tutorial.Level_3 +import NNG.Levels.Tutorial.Level_4 + +Game "NNG" +World "Tutorial" +Title "Tutorial World" + +Introduction +" +" \ No newline at end of file diff --git a/server/nng/NNG/Levels/Tutorial/Level_1.lean b/server/nng/NNG/Levels/Tutorial/Level_1.lean new file mode 100644 index 0000000..13a6d5b --- /dev/null +++ b/server/nng/NNG/Levels/Tutorial/Level_1.lean @@ -0,0 +1,42 @@ +import NNG.Metadata +import NNG.MyNat.Multiplication + +Game "NNG" +World "Tutorial" +Level 1 +Title "The rfl tactic" + +Introduction +" +Each level in this game involves proving a mathematical statement. In this first level +you have three natural numbers $x, y, z$ (listed under \"Objects\") and you want to prove +$x \\cdot y + z = x \\cdot y + z$ (displayed under \"Goal\"). + +You can modify the Goal using *Tactics* until you can close (i.e. prove) it. + +The first tactic is called `rfl`, which stands for \"reflexivity\", +a fancy way of saying that it will prove any goal of the form `A = A`. It doesn't matter how +complicated `A` is, all that matters is that the left hand side is exactly equal to the right hand +side (a computer scientist would say \"definitionally equal\"). I really mean \"press the same buttons +on your computer in the same order\" equal. For example, `x * y + z = x * y + z` can be proved by `rfl`, +but `x + y = y + x` cannot. +" + +Statement +"For all natural numbers $x, y$ and $z$, we have $xy + z = xy + z$." + (x y z : ℕ) : x * y + z = x * y + z := by + Hint "In order to use the tactic `rfl` you can enter it above and hit \"Execute\"." + rfl + +NewTactic rfl +NewDefinition MyNat + +Conclusion +" +Congratulations! You completed your first verified proof! + +If you want to be reminded about the `rfl` tactic, your inventory on the right contains useful +information about things you've learned. + +Now click on \"Next\" to continue the journey. +" diff --git a/server/nng/NNG/Levels/Tutorial/Level_2.lean b/server/nng/NNG/Levels/Tutorial/Level_2.lean new file mode 100644 index 0000000..a17243e --- /dev/null +++ b/server/nng/NNG/Levels/Tutorial/Level_2.lean @@ -0,0 +1,46 @@ +import NNG.Metadata +import NNG.MyNat.Multiplication + +Game "NNG" +World "Tutorial" +Level 2 +Title "the rewrite (rw) tactic" + +Introduction +" +In this level, you also get \"Assumptions\" about your objects. These are hypotheses of which +you assume (or know) that they are true. + +The `rewrite` tactic is the way to \"substitute in\" the value of a variable. +If you have a hypothesis of the form `A = B`, and your goal mentions +the left hand side `A` somewhere, +then the rewrite tactic will replace the `A` in your goal with a `B`. + +*(Note: For this game, `rw` is a shorthand for `rewrite`. Out in the real world, `rw` tries to call +`rfl` automatically afterwards.)* +" + +Statement +"If $x$ and $y$ are natural numbers, and $y = x + 7$, then $2y = 2(x + 7)$." + (x y : ℕ) (h : y = x + 7) : 2 * y = 2 * (x + 7) := by + Hint "You can use `rewrite [h]` to replace the `{y}` with `x + 7`. + Note that the assumption `h` is written + inside square brackets: `[h]`." + rw [h] + Hint "In this game not all hints are directly shown. If you need help finishing the proof, click + on \"More Help\" below!" + Hint (hidden := true) + "Now both sides are identical, so you can use `rfl` to close the goal." + rfl + +NewTactic rewrite rw + +Conclusion +" +If you want to see the entire proof you created, toggle \"Editor mode\" above. + +There you can also move your cursor around the proof to see the \"state\" of the proof at this point. + +Each tactic is written on a new line and Lean is sensitive to indentation (i.e. there must be no +spaces before any of the tactics) +" diff --git a/server/nng/NNG/Levels/Tutorial/Level_3.lean b/server/nng/NNG/Levels/Tutorial/Level_3.lean new file mode 100644 index 0000000..a65e434 --- /dev/null +++ b/server/nng/NNG/Levels/Tutorial/Level_3.lean @@ -0,0 +1,71 @@ +import NNG.Metadata +import NNG.MyNat.Definition + +Game "NNG" +World "Tutorial" +Level 3 +Title "Peano axioms" + +open MyNat + +Introduction +" +Now we start from the beginning, where we don't know about addition or multiplication on `ℕ`. + +All we get is the following data: + +* a term `(0 : ℕ)`, interpreted as the zero number. +* a function `succ : ℕ → ℕ`, with `succ n` interpreted as \"the number after $n$\". +* the principle of mathematical induction. + +These axioms are essentially the axioms isolated by Peano which uniquely characterise the natural +numbers (we also need recursion, but we can ignore it for now). +The first axiom says that $0$ is a natural number. +The second says that there is a $\\operatorname{succ}$ function which eats a number and spits out +the number after it, so $\\operatorname{succ}(0)=1$, $\\operatorname{succ}(1)=2$ and so on. + +Peano's last axiom is the principle of mathematical induction. This is a deeper fact. +It says that if we have infinitely many true/false statements $P(0)$, $P(1)$, $P(2)$ and so on, +and if $P(0)$ is true, and if for every natural number $d$ we know that $P(d)$ implies +$P(\\operatorname{succ}(d))$, then $P(n)$ must be true for every natural number $n$. +It's like saying that if you have a long line of dominoes, and if you knock the first +one down, and if you know that if a domino falls down then the one after it will fall +down too, then you can deduce that all the dominos will fall down. One can also think +of it as saying that every natural number can be built by starting at $0$ and then applying +$\\operatorname{succ}$ a finite number of times. + +Peano's insights were firstly that these axioms completely characterise the natural numbers, +and secondly that these axioms alone can be used to build a whole bunch of other structure +on the natural numbers, for example addition, multiplication and so on. + +This game is all about seeing how far these axioms of Peano can take us. + +Now let us practise the use of `rewrite` with this new function `succ`: +" + +Statement +"If $\\operatorname{succ}(a) = b$, then $\\operatorname{succ}(\\operatorname{succ}(a)) = \\operatorname{succ}(a)$." + (a b : ℕ) (h : (succ a) = b) : succ (succ a) = succ b := by + Hint "You can use `rewrite` and your assumption `{h}` to substitute `succ a` with `b`. + + Notes: + + 1) We do not need brackets for function application the way we would write + them in mathematics: `succ b` means $\\operatorname\{succ}(b)$. + 2) If you would want to substitute instead `b` with `succ a`, you can do that + writing a small `←` (`\\l`, i.e. backslash + small letter L + space) + before `h` like this: `rewrite [← h]`." + Branch + rewrite [← h] + Hint (hidden := true) "Now both sides are identical…" + rewrite [h] + Hint (hidden := true) "Now both sides are identical…" + rfl + +Conclusion +" +You may also be wondering why we keep writing `succ b` instead of `b + 1`. +This is because we haven't defined addition yet! +On the next level, the final level of Tutorial World, +we will introduce addition, and then we'll be ready to enter Addition World. +" diff --git a/server/nng/NNG/Levels/Tutorial/Level_4.lean b/server/nng/NNG/Levels/Tutorial/Level_4.lean new file mode 100644 index 0000000..742c5ac --- /dev/null +++ b/server/nng/NNG/Levels/Tutorial/Level_4.lean @@ -0,0 +1,68 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +Game "NNG" +World "Tutorial" +Level 4 +Title "addition" + +open MyNat + +Introduction +" +Peano defined addition $a + b$ by induction on $b$, or, more precisely, by *recursion* on $b$. +He first explained how to add $0$ to a number: this is the base case. + +* `add_zero (a : ℕ) : a + 0 = a` + +We will call this theorem `add_zero`. +More precisely, `add_zero` is the name of the *proof* of the +theorem. Note the name of this proof. Mathematicians sometimes call it +\"Lemma 2.1\" or \"Hypothesis P6\" or something. +But computer scientists call it `add_zero` because it tells you what the answer to +\"x add zero\" is. It's a much better name than \"Lemma 2.1\". +Even better, you can use the `rewrite` tactic +with `add_zero`. If you ever see `x + 0` in your goal, +`rewrite [add_zero]` should simplify it to `x`. This is +because `add_zero` is a proof that `x + 0 = x` +(more precisely, `add_zero x` is a proof that `x + 0 = x` but +Lean can figure out the `x` from the context). + +Now here's the inductive step. If you know how to add $d$ to $a$, then Peano +tells you how to add $\\operatorname{succ} (d)$ to $a$. It looks like this: + +- `add_succ (a d : ℕ) : a + (succ d) = succ (a + d)` + +What's going on here is that we assume `a + d` is already defined, and we define +`a + (succ d)` to be the number after it. +Note the name of this proof too: `add_succ` tells you how to add a successor +to something. +If you ever see `… + succ …` in your goal, you should be able to use +`rewrite [add_succ]`, to make progress. +" + +Statement +"For all natural numbers $a$, we have $a + \\operatorname{succ}(0) = a$." + (a : ℕ) : a + succ 0 = succ a := by + Hint "You find `{a} + succ …` in the goal, so you can use `rewrite` and `add_succ` + to make progress." + Hint (hidden := true) "Explicitely, type `rewrite [add_succ]`!" + rewrite [add_succ] + Hint "Now you see a term of the form `… + 0`, so you can use `add_zero`." + Hint (hidden := true) "Explicitely, type `rewrite [add_zero]`!" + rewrite [add_zero] + Hint (hidden := true) "Finally both sides are identical." + rfl + +NewLemma MyNat.add_succ MyNat.add_zero + +Conclusion +" +You have finished tutorial world! If you're happy, let's move onto Addition World, +and learn about proof by induction. + +## Inspection time + +If you want to examine the proof, toggle \"Editor mode\" and click somewhere +inside the proof to see the state at that point! +" diff --git a/server/nng/NNG/Metadata.lean b/server/nng/NNG/Metadata.lean new file mode 100644 index 0000000..faf9e98 --- /dev/null +++ b/server/nng/NNG/Metadata.lean @@ -0,0 +1,5 @@ +import GameServer.Commands +import NNG.Doc.Tactics +import NNG.Doc.Lemmas +import NNG.Doc.Definitions +import NNG.Modifications.Tactics diff --git a/server/nng/NNG/Modifications/Tactics.lean b/server/nng/NNG/Modifications/Tactics.lean new file mode 100644 index 0000000..4a488bd --- /dev/null +++ b/server/nng/NNG/Modifications/Tactics.lean @@ -0,0 +1,131 @@ +import Mathlib.Lean.Expr.Basic +import NNG.MyNat.Addition +import Lean.Elab.Tactic.Basic + +/-! +# Modified `rw` + +Modify `rw` to work like `rewrite`. + +This is mainly a copy of the implementation of `rewrite` in Lean core. +-/ + +namespace MyNat + +open Lean.Meta Lean.Elab.Tactic Lean.Parser.Tactic + +/-- +Modified `rw` tactic. For this game, `rw` works exactly like `rewrite`. +-/ +syntax (name := rewriteSeq) "rw" (config)? rwRuleSeq (location)? : tactic + +@[tactic MyNat.rewriteSeq] def evalRewriteSeq : Tactic := fun stx => do + let cfg ← elabRewriteConfig stx[1] + let loc := expandOptLocation stx[3] + withRWRulesSeq stx[0] stx[2] fun symm term => do + withLocation loc + (rewriteLocalDecl term symm · cfg) + (rewriteTarget term symm cfg) + (throwTacticEx `rewrite · "did not find instance of the pattern in the current goal") + +/-! +# Modified `induction` tactic + +Modify `induction` tactic to always show `(0 : MyNat)` instead of `MyNat.zero` and +to support the lean3-style `while` keyword. + +This is mainly copied and modified from the mathlib-tactic `induction'`. +-/ + +def rec' {P : ℕ → Prop} (zero : P 0) + (succ : (n : ℕ) → (n_ih : P n) → P (succ n)) (t : ℕ) : P t := by + induction t with + | zero => assumption + | succ n => + apply succ + assumption + +end MyNat + +namespace Lean.Parser.Tactic +open Meta Elab Elab.Tactic + +open private getAltNumFields in evalCases ElimApp.evalAlts.go in +def ElimApp.evalNames (elimInfo : ElimInfo) (alts : Array ElimApp.Alt) (withArg : Syntax) + (numEqs := 0) (numGeneralized := 0) (toClear : Array FVarId := #[]) : + TermElabM (Array MVarId) := do + let mut names : List Syntax := withArg[1].getArgs |>.toList + let mut subgoals := #[] + for { name := altName, mvarId := g, .. } in alts do + let numFields ← getAltNumFields elimInfo altName + let (altVarNames, names') := names.splitAtD numFields (Unhygienic.run `(_)) + names := names' + let (fvars, g) ← g.introN numFields <| altVarNames.map (getNameOfIdent' ·[0]) + let some (g, subst) ← Cases.unifyEqs? numEqs g {} | pure () + let (_, g) ← g.introNP numGeneralized + let g ← liftM $ toClear.foldlM (·.tryClear) g + for fvar in fvars, stx in altVarNames do + g.withContext <| (subst.apply <| .fvar fvar).addLocalVarInfoForBinderIdent ⟨stx⟩ + subgoals := subgoals.push g + pure subgoals + +open private getElimNameInfo generalizeTargets generalizeVars in evalInduction in + +/-- +Modified `induction` tactic for this game. + +Usage: `induction n with d hd`. + +*(The actual `induction` tactic has a more complex `with`-argument that works differently)* +-/ +elab (name := _root_.MyNat.induction) "induction " tgts:(casesTarget,+) + withArg:((" with " (colGt binderIdent)+)?) + : tactic => do + let targets ← elabCasesTargets tgts.1.getSepArgs + let g :: gs ← getUnsolvedGoals | throwNoGoalsToBeSolved + g.withContext do + let elimInfo ← getElimInfo `MyNat.rec' + let targets ← addImplicitTargets elimInfo targets + evalInduction.checkTargets targets + let targetFVarIds := targets.map (·.fvarId!) + g.withContext do + let forbidden ← mkGeneralizationForbiddenSet targets + let mut s ← getFVarSetToGeneralize targets forbidden + let (fvarIds, g) ← g.revert (← sortFVarIds s.toArray) + let result ← withRef tgts <| ElimApp.mkElimApp elimInfo targets (← g.getTag) + let elimArgs := result.elimApp.getAppArgs + ElimApp.setMotiveArg g elimArgs[elimInfo.motivePos]!.mvarId! targetFVarIds + g.assign result.elimApp + let subgoals ← ElimApp.evalNames elimInfo result.alts withArg + (numGeneralized := fvarIds.size) (toClear := targetFVarIds) + setGoals <| (subgoals ++ result.others).toList ++ gs + +end Lean.Parser.Tactic + + +/-! # `rfl` tactic + +Added `withReducible` to prevent `rfl` proving stuff like `n + 0 = n`. +-/ + +namespace MyNat + +open Lean Meta Elab Tactic + +-- @[match_pattern] def MyNat.rfl {α : Sort u} {a : α} : Eq a a := Eq.refl a + +/-- Modified `rfl` tactic. + +`rfl` closes goals of the form `A = A`. + +Note that teh version for this game is somewhat weaker than the real one. -/ +syntax (name := rfl) "rfl" : tactic + +@[tactic MyNat.rfl] def evalRfl : Tactic := fun _ => + liftMetaTactic fun mvarId => do withReducible <| mvarId.refl; pure [] + +-- @[tactic MyNat.rfl] def evalRfl : Tactic := fun _ => +-- liftMetaTactic fun mvarId => do mvarId.refl; pure [] +-- (with_reducible rfl) + +end MyNat diff --git a/server/nng/NNG/MyNat/Addition.lean b/server/nng/NNG/MyNat/Addition.lean new file mode 100644 index 0000000..9f482f4 --- /dev/null +++ b/server/nng/NNG/MyNat/Addition.lean @@ -0,0 +1,23 @@ +import NNG.MyNat.Definition + +namespace MyNat + +open MyNat + +def add : MyNat → MyNat → MyNat + | a, 0 => a + | a, MyNat.succ b => MyNat.succ (MyNat.add a b) + +instance : Add MyNat where + add := MyNat.add + +/-- +This theorem proves that if you add zero to a MyNat you get back the same number. +-/ + +theorem add_zero (a : MyNat) : a + 0 = a := by rfl + +/-- +This theorem proves that (a + (d + 1)) = ((a + d) + 1) for a,d in MyNat. +-/ +theorem add_succ (a d : MyNat) : a + (succ d) = succ (a + d) := by rfl diff --git a/server/nng/NNG/MyNat/Definition.lean b/server/nng/NNG/MyNat/Definition.lean new file mode 100644 index 0000000..f567b27 --- /dev/null +++ b/server/nng/NNG/MyNat/Definition.lean @@ -0,0 +1,37 @@ +--import Mathlib.Tactic.Basic +--import Mathlib.Tactic.Cases + +/-- Our copy of the natural numbers called `MyNat`. -/ +inductive MyNat where +| zero : MyNat +| succ : MyNat → MyNat +deriving BEq, DecidableEq, Inhabited + +@[inherit_doc] +notation "ℕ" => MyNat +-- Note: as long as we do not import `Mathlib.Init.Data.Nat.Notation` this is fine. + +namespace MyNat + +instance : Inhabited MyNat where + default := MyNat.zero + +def myNatFromNat (x : Nat) : MyNat := + match x with + | Nat.zero => MyNat.zero + | Nat.succ b => MyNat.succ (myNatFromNat b) + +def natFromMyNat (x : MyNat) : Nat := + match x with + | MyNat.zero => Nat.zero + | MyNat.succ b => Nat.succ (natFromMyNat b) + +instance ofNat {n : Nat} : OfNat MyNat n where + ofNat := myNatFromNat n + +instance : ToString MyNat where + toString p := toString (natFromMyNat p) + +theorem zero_eq_0 : MyNat.zero = 0 := rfl + +def one : MyNat := MyNat.succ 0 diff --git a/server/nng/NNG/MyNat/Inequality.lean b/server/nng/NNG/MyNat/Inequality.lean new file mode 100644 index 0000000..1fb0956 --- /dev/null +++ b/server/nng/NNG/MyNat/Inequality.lean @@ -0,0 +1,28 @@ +import NNG.MyNat.Multiplication + +-- this is one of *three* routes to +-- canonically_ordered_comm_semiring + +namespace MyNat + +def le (a b : MyNat) := ∃ (c : MyNat), b = a + c + +-- Another choice is to define it recursively: +-- | le 0 _ +-- | le (succ a) (succ b) = le ab + +-- notation +instance : LE MyNat := ⟨MyNat.le⟩ + +theorem le_def' : MyNat.le = (.≤.) := rfl + +theorem le_iff_exists_add (a b : MyNat) : a ≤ b ↔ ∃ (c : MyNat), b = a + c := Iff.rfl + +def lt_myNat (a b : MyNat) := a ≤ b ∧ ¬ (b ≤ a) + +instance : LT MyNat := ⟨lt_myNat⟩ + +theorem lt : ∀ (a b : MyNat), a < b ↔ a ≤ b ∧ ¬b ≤ a := fun _ _ => Iff.rfl + + +end MyNat \ No newline at end of file diff --git a/server/nng/NNG/MyNat/Multiplication.lean b/server/nng/NNG/MyNat/Multiplication.lean new file mode 100644 index 0000000..53dd6b3 --- /dev/null +++ b/server/nng/NNG/MyNat/Multiplication.lean @@ -0,0 +1,17 @@ +import NNG.MyNat.Addition + +namespace MyNat + +open MyNat + +def mul : MyNat → MyNat → MyNat + | _, 0 => 0 + | a, b + 1 => a + (MyNat.mul a b) + +instance : Mul MyNat where + mul := MyNat.mul + +axiom mul_zero (a : MyNat) : a * 0 = 0 + +axiom mul_succ (a b : MyNat) : a * (succ b) = a * b + a + diff --git a/server/nng/NNG/MyNat/Power.lean b/server/nng/NNG/MyNat/Power.lean new file mode 100644 index 0000000..a1a0a01 --- /dev/null +++ b/server/nng/NNG/MyNat/Power.lean @@ -0,0 +1,21 @@ +import NNG.MyNat.Definition +namespace MyNat +open MyNat + +def pow : MyNat → MyNat → MyNat +| _, zero => one +| m, (succ n) => pow m n * m + +instance : Pow MyNat MyNat where + pow := pow + +-- notation a ^ b := pow a b + +example : (1 : MyNat) ^ (1 : MyNat) = 1 := rfl + +lemma pow_zero (m : MyNat) : m ^ (0 : MyNat) = 1 := rfl + +lemma pow_succ (m n : MyNat) : m ^ (succ n) = m ^ n * m := rfl + +end MyNat + diff --git a/server/nng/NNG/MyNat/Theorems/Addition.lean b/server/nng/NNG/MyNat/Theorems/Addition.lean new file mode 100644 index 0000000..ed685f9 --- /dev/null +++ b/server/nng/NNG/MyNat/Theorems/Addition.lean @@ -0,0 +1,45 @@ +import NNG.Metadata +import NNG.MyNat.Addition + +open MyNat + +theorem MyNat.zero_add (n : ℕ) : 0 + n = n := by + induction n with n hn + · rw [add_zero] + rfl + · rw [add_succ] + rw [hn] + rfl + +theorem MyNat.add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by + induction c with c hc + · rw [add_zero] + rw [add_zero] + rfl + · rw [add_succ] + rw [add_succ] + rw [add_succ] + rw [hc] + rfl + +theorem MyNat.succ_add (a b : ℕ) : succ a + b = succ (a + b) := by + induction b with d hd + · rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [add_succ] + rfl + +theorem MyNat.add_comm (a b : ℕ) : a + b = b + a := by + induction b with d hd + · rw [zero_add] + rw [add_zero] + rfl + · rw [add_succ] + rw [hd] + rw [succ_add] + rfl + +theorem MyNat.one_eq_succ_zero : (1 : ℕ) = succ 0 := by + rfl diff --git a/server/nng/NNG/MyNat/Theorems/Proposition.lean b/server/nng/NNG/MyNat/Theorems/Proposition.lean new file mode 100644 index 0000000..9901853 --- /dev/null +++ b/server/nng/NNG/MyNat/Theorems/Proposition.lean @@ -0,0 +1 @@ +theorem not_iff_imp_false (P : Prop) : ¬ P ↔ P → false := by simp only diff --git a/server/nng/lake-manifest.json b/server/nng/lake-manifest.json index fee354b..7534416 100644 --- a/server/nng/lake-manifest.json +++ b/server/nng/lake-manifest.json @@ -1,3 +1,28 @@ {"version": 4, "packagesDir": "lake-packages", - "packages": [{"path": {"name": "GameServer", "dir": "./../leanserver"}}]} + "packages": + [{"git": + {"url": "https://github.com/leanprover-community/mathlib4.git", + "subDir?": null, + "rev": "fc4a489c2af75f687338fe85c8901335360f8541", + "name": "mathlib", + "inputRev?": "fc4a489c2af75f687338fe85c8901335360f8541"}}, + {"git": + {"url": "https://github.com/gebner/quote4", + "subDir?": null, + "rev": "cc915afc9526e904a7b61f660d330170f9d60dd7", + "name": "Qq", + "inputRev?": "master"}}, + {"git": + {"url": "https://github.com/JLimperg/aesop", + "subDir?": null, + "rev": "071464ac36e339afb7a87640aa1f8121f707a59a", + "name": "aesop", + "inputRev?": "master"}}, + {"path": {"name": "GameServer", "dir": "./../leanserver"}}, + {"git": + {"url": "https://github.com/leanprover/std4", + "subDir?": null, + "rev": "44a92d84c31a88b9af9329a441890ad449d8cd5f", + "name": "std", + "inputRev?": "main"}}]} diff --git a/server/nng/lakefile.lean b/server/nng/lakefile.lean index 9ff2130..942473c 100644 --- a/server/nng/lakefile.lean +++ b/server/nng/lakefile.lean @@ -3,6 +3,9 @@ open Lake DSL require GameServer from ".."/"leanserver" + +require mathlib from git + "https://github.com/leanprover-community/mathlib4.git" @ "fc4a489c2af75f687338fe85c8901335360f8541" package NNG @[default_target] From 9eb0f2543fa18ded09f4c0a7293f162ac8b750ba Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Tue, 28 Mar 2023 22:14:41 +0200 Subject: [PATCH 28/29] privacy policy and graph layout --- client/src/components/PrivacyPolicy.tsx | 52 +++++++ client/src/components/Welcome.tsx | 78 ++++++---- client/src/components/welcome.css | 191 +++++++++++++++++++++++- package-lock.json | 23 +++ package.json | 2 + 5 files changed, 311 insertions(+), 35 deletions(-) create mode 100644 client/src/components/PrivacyPolicy.tsx diff --git a/client/src/components/PrivacyPolicy.tsx b/client/src/components/PrivacyPolicy.tsx new file mode 100644 index 0000000..774cc36 --- /dev/null +++ b/client/src/components/PrivacyPolicy.tsx @@ -0,0 +1,52 @@ +import { faShield } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import * as React from 'react' + +const PrivacyPolicy: React.FC = () => { + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( + +
+ +

legal

+

notes

+
+ {open? +
+
+
+
+

Privacy Policy & Impressum

+ +

Our server collects metadata (such as IP address, browser, operating system) + and the data that the user enters into the editor. The data is used to + compute the Lean output and display it to the user. The information will be stored + as long as the user stays on our website and will be deleted immediately afterwards. + We keep logs to improve our software, but the contained data is anonymized.

+ +

We do not use cookies, but your game progress is stored in the browser + as site data. Your game progress is not saved on the server; if you delete + your browser storage, it is completely gone. +

+ +

Our server is located in Germany.

+ +

Contact information:
+ Jon Eugster
+ Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
+ Universitätsstr. 1
+ 40225 Düsseldorf
+ Germany
+ jon.eugster@hhu.de + +

+
+
: null} + + ) +} + +export default PrivacyPolicy diff --git a/client/src/components/Welcome.tsx b/client/src/components/Welcome.tsx index 2ee5de7..a69d37f 100644 --- a/client/src/components/Welcome.tsx +++ b/client/src/components/Welcome.tsx @@ -5,7 +5,9 @@ import cytoscape, { LayoutOptions } from 'cytoscape' import klay from 'cytoscape-klay'; import { useNavigate } from 'react-router-dom'; import { useSelector } from 'react-redux'; +import Split from 'react-split' +import PrivacyPolicy from './PrivacyPolicy'; cytoscape.use( klay ); @@ -16,14 +18,23 @@ import Markdown from './Markdown'; import { selectCompleted } from '../state/progress'; import { GameIdContext } from '../App'; +const N = 24 // max number of levels per world +const R = 800 // radius of a world +const r = 110 // radius of a level +const s = 100 // global scale +const padding = 2000 // padding of the graphic (on a different scale) function LevelIcon({ worldId, levelId, position }) { const gameId = React.useContext(GameIdContext) const completed = useSelector(selectCompleted(gameId, worldId,levelId)) + + const x = s * position.x + Math.sin(levelId * 2 * Math.PI / N) * (R + 1.2*r + 2*Math.floor((levelId - 1)/N)) + const y = s * position.y - Math.cos(levelId * 2 * Math.PI / N) * (R + 1.2*r + 2*Math.floor((levelId - 1)/N)) + // TODO: relative positioning? return ( - + ) } @@ -42,56 +53,66 @@ function Welcome() { } }, [gameInfo.data?.title]) - const padding = 20 - const svgElements = [] if (gameInfo.data) { for (let i in gameInfo.data.worlds.edges) { const edge = gameInfo.data.worlds.edges[i] svgElements.push( - + ) } + for (let id in nodes) { let position: cytoscape.Position = nodes[id].position - svgElements.push( - - - {nodes[id].data.title ? nodes[id].data.title : id} - - ) - for (let i = 1; i <= gameInfo.data.worldSize[id]; i++) { svgElements.push( ) } + + svgElements.push( + + + +
+

+ {nodes[id].data.title ? nodes[id].data.title : id} +

+
+
+ + ) } } - return
+ return
{ gameInfo.isLoading? - + + + : -
- - + +
+ {gameInfo.data?.introduction} - - - - {svgElements} - - -
+
+
+ + + {svgElements} + + +
+ } - +
} @@ -119,9 +140,8 @@ function computeWorldLayout(worlds) { headless: true, styleEnabled: false }) -// TODO: Jon play around with graph layout - const layout = cy.layout({name: "klay", klay: {direction: "DOWN"}} as LayoutOptions).run() + const layout = cy.layout({name: "klay", klay: {direction: "DOWN", nodePlacement: "LINEAR_SEGMENTS"}} as LayoutOptions).run() let nodes = {} cy.nodes().forEach((node, id) => { nodes[node.id()] = { diff --git a/client/src/components/welcome.css b/client/src/components/welcome.css index 849f441..8e457a2 100644 --- a/client/src/components/welcome.css +++ b/client/src/components/welcome.css @@ -1,12 +1,191 @@ -svg .world-circle { +/* svg .world-circle { fill: var(--clr-primary) +} */ + +.welcome { + height: 100%; + flex: 1; + min-height: 0; + display: flex; +} + +.app-content { + height: 100% +} + +.welcome .column { + height: 100%; + overflow: auto; +} + +.welcome-text { + padding: 20px; +} + +h1 { + font-size: 2em; + margin: .67em 0; +} + +h2 { + font-size: 1.5em; +} + +h3 { + font-size: 1.3em; +} + +h4 { + font-size: 1.1em; + font-style: italic; +} + +h5, h6 { + font-size: 1em; + font-style: italic; +} + +/***************/ +/* SVG Graphic */ +/***************/ + +svg .world-title-wrapper { + overflow: auto; +} + +svg .world-title-wrapper div { + width: 100%; + height: 100%; +} + +svg .world-title-wrapper div { + display: flex; + align-items:center; + justify-content:center; + overflow: visible; + } -svg .world-name { - fill: white; - font-size: 2px; +svg .world-title { font-weight: 500; - text-anchor: middle; - dominant-baseline: middle; + color: white; + margin: 0; + padding: 0; +} + +/******************/ +/* Privacy Button */ +/******************/ + +.privacy { + width: 40px; + height: 40px; + font-size: 25px; + border-radius: 20px; + position: absolute; + right: 10px; + bottom: 10px; + display: flex; + align-items:center; + justify-content:center; + color: #aaa; + background-color: #eee; + cursor: pointer; +} + +.privacy p { + position: absolute; + color: #888; + bottom: 1.5px; + font-size: 6px; +} + +.privacy .p1 { + transform: rotate(50deg); + left: 1.5px; +} + +.privacy .p2 { + transform: rotate(-50deg); + right: 1.5px; +} + +/*****************/ +/* Privacy Popup */ +/*****************/ + +.modal-wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0, 0, 0, 0.25); + z-index: 2; +} + +.modal h2 { + text-align: center; +} + +.modal { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + min-width: 50%; + max-width: 60ch; + background: #fff; + z-index: 3; + padding: 2em; + border-radius: 1em; + text-align: left; + color: var(--vscode-breadcrumb-foreground); +} + +.modal input[type="text"] { + width: 100%; +} + +.modal .form-error { + color: #a00; + font-weight: bold; +} + +.modal input[type="submit"] { + border: none; + color: var(--vscode-button-foreground); + background: var(--vscode-button-background); + cursor: pointer; + padding: .5em 1em; + border-radius: .2em; + display: block; + margin: 1em auto; +} + +.modal-close { + float: right; + scale: 2; + color: var(--vscode-breadcrumb-foreground); + cursor: pointer; +} + +.modal-close:hover { + float: right; + scale: 2; + color: var(--vscode-breadcrumb-focusForeground); +} + +.modal table { + width: 100%; } diff --git a/package-lock.json b/package-lock.json index 26c2ec9..2e6d55a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@types/cytoscape": "^3.19.9", "@types/react-router-dom": "^5.3.3", "cytoscape": "^3.23.0", + "cytoscape-elk": "^2.1.0", "cytoscape-klay": "^3.1.4", "debounce": "^1.2.1", "express": "^4.18.2", @@ -34,6 +35,7 @@ "remark-gfm": "^3.0.1", "remark-math": "^5.1.1", "vscode-ws-jsonrpc": "^2.0.1", + "web-worker": "^1.2.0", "ws": "^8.11.0" }, "devDependencies": { @@ -4180,6 +4182,17 @@ "node": ">=0.10" } }, + "node_modules/cytoscape-elk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-elk/-/cytoscape-elk-2.1.0.tgz", + "integrity": "sha512-stkKoUTNOqpyP5eMuqatK0EYir2NWGTH+XlY0rxFj0t0HiQPGI4AuSuTPaGbNM1WhVfb0tWJ5TQQ0R0qshACLw==", + "dependencies": { + "elkjs": "^0.8.1" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, "node_modules/cytoscape-klay": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/cytoscape-klay/-/cytoscape-klay-3.1.4.tgz", @@ -4435,6 +4448,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.286.tgz", "integrity": "sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ==" }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -9869,6 +9887,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/webpack": { "version": "5.75.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", diff --git a/package.json b/package.json index fc3bf0a..67cab6b 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@types/cytoscape": "^3.19.9", "@types/react-router-dom": "^5.3.3", "cytoscape": "^3.23.0", + "cytoscape-elk": "^2.1.0", "cytoscape-klay": "^3.1.4", "debounce": "^1.2.1", "express": "^4.18.2", @@ -30,6 +31,7 @@ "remark-gfm": "^3.0.1", "remark-math": "^5.1.1", "vscode-ws-jsonrpc": "^2.0.1", + "web-worker": "^1.2.0", "ws": "^8.11.0" }, "devDependencies": { From 4d1d97a164e5f49a6323f442de909772444a14fb Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Tue, 28 Mar 2023 22:15:25 +0200 Subject: [PATCH 29/29] nng --- server/nng/.gitignore | 1 - server/nng/NNG.lean | 41 +- server/nng/NNG/Levels/Addition/Level_2.lean | 4 +- server/nng/NNG/Levels/Addition/Level_3.lean | 6 +- server/nng/NNG/Levels/Addition/Level_4.lean | 5 +- server/nng/NNG/Levels/Addition/Level_5.lean | 7 +- server/nng/NNG/Levels/Addition/Level_6.lean | 4 +- server/nng/NNG/Levels/Function/Level_8.lean | 2 +- .../nng/NNG/Levels/Proposition/Level_2.lean | 2 +- .../nng/NNG/Levels/Proposition/Level_5.lean | 1 - server/nng/NNG/MyNat/Theorems/Addition.lean | 3 +- server/nng/build/ir/NNG.c | 73 + server/nng/build/ir/NNG.c.trace | 1 + server/nng/build/ir/NNG/Doc/Definitions.c | 33 + .../nng/build/ir/NNG/Doc/Definitions.c.trace | 1 + server/nng/build/ir/NNG/Doc/Lemmas.c | 33 + server/nng/build/ir/NNG/Doc/Lemmas.c.trace | 1 + server/nng/build/ir/NNG/Doc/Tactics.c | 33 + server/nng/build/ir/NNG/Doc/Tactics.c.trace | 1 + server/nng/build/ir/NNG/Levels/Addition.c | 53 + .../nng/build/ir/NNG/Levels/Addition.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_1.c | 37 + .../ir/NNG/Levels/Addition/Level_1.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_2.c | 37 + .../ir/NNG/Levels/Addition/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_3.c | 41 + .../ir/NNG/Levels/Addition/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_4.c | 41 + .../ir/NNG/Levels/Addition/Level_4.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_5.c | 41 + .../ir/NNG/Levels/Addition/Level_5.c.trace | 1 + .../build/ir/NNG/Levels/Addition/Level_6.c | 41 + .../ir/NNG/Levels/Addition/Level_6.c.trace | 1 + server/nng/build/ir/NNG/Levels/AdvAddition.c | 81 + .../build/ir/NNG/Levels/AdvAddition.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_1.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_1.c.trace | 1 + .../ir/NNG/Levels/AdvAddition/Level_10.c | 37 + .../NNG/Levels/AdvAddition/Level_10.c.trace | 1 + .../ir/NNG/Levels/AdvAddition/Level_11.c | 37 + .../NNG/Levels/AdvAddition/Level_11.c.trace | 1 + .../ir/NNG/Levels/AdvAddition/Level_12.c | 37 + .../NNG/Levels/AdvAddition/Level_12.c.trace | 1 + .../ir/NNG/Levels/AdvAddition/Level_13.c | 37 + .../NNG/Levels/AdvAddition/Level_13.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_2.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_3.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_4.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_4.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_5.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_5.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_6.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_6.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_7.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_7.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_8.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_8.c.trace | 1 + .../build/ir/NNG/Levels/AdvAddition/Level_9.c | 37 + .../ir/NNG/Levels/AdvAddition/Level_9.c.trace | 1 + .../build/ir/NNG/Levels/AdvMultiplication.c | 45 + .../ir/NNG/Levels/AdvMultiplication.c.trace | 1 + .../ir/NNG/Levels/AdvMultiplication/Level_1.c | 37 + .../Levels/AdvMultiplication/Level_1.c.trace | 1 + .../ir/NNG/Levels/AdvMultiplication/Level_2.c | 37 + .../Levels/AdvMultiplication/Level_2.c.trace | 1 + .../ir/NNG/Levels/AdvMultiplication/Level_3.c | 37 + .../Levels/AdvMultiplication/Level_3.c.trace | 1 + .../ir/NNG/Levels/AdvMultiplication/Level_4.c | 37 + .../Levels/AdvMultiplication/Level_4.c.trace | 1 + .../nng/build/ir/NNG/Levels/AdvProposition.c | 69 + .../ir/NNG/Levels/AdvProposition.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_1.c | 37 + .../NNG/Levels/AdvProposition/Level_1.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_10.c | 41 + .../Levels/AdvProposition/Level_10.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_2.c | 41 + .../NNG/Levels/AdvProposition/Level_2.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_3.c | 41 + .../NNG/Levels/AdvProposition/Level_3.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_4.c | 41 + .../NNG/Levels/AdvProposition/Level_4.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_5.c | 41 + .../NNG/Levels/AdvProposition/Level_5.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_6.c | 45 + .../NNG/Levels/AdvProposition/Level_6.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_7.c | 45 + .../NNG/Levels/AdvProposition/Level_7.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_8.c | 45 + .../NNG/Levels/AdvProposition/Level_8.c.trace | 1 + .../ir/NNG/Levels/AdvProposition/Level_9.c | 45 + .../NNG/Levels/AdvProposition/Level_9.c.trace | 1 + server/nng/build/ir/NNG/Levels/Function.c | 65 + .../nng/build/ir/NNG/Levels/Function.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_1.c | 41 + .../ir/NNG/Levels/Function/Level_1.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_2.c | 41 + .../ir/NNG/Levels/Function/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_3.c | 41 + .../ir/NNG/Levels/Function/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_4.c | 41 + .../ir/NNG/Levels/Function/Level_4.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_5.c | 41 + .../ir/NNG/Levels/Function/Level_5.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_6.c | 37 + .../ir/NNG/Levels/Function/Level_6.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_7.c | 37 + .../ir/NNG/Levels/Function/Level_7.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_8.c | 37 + .../ir/NNG/Levels/Function/Level_8.c.trace | 1 + .../build/ir/NNG/Levels/Function/Level_9.c | 37 + .../ir/NNG/Levels/Function/Level_9.c.trace | 1 + server/nng/build/ir/NNG/Levels/Inequality.c | 97 + .../build/ir/NNG/Levels/Inequality.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_1.c | 37 + .../ir/NNG/Levels/Inequality/Level_1.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_10.c | 37 + .../ir/NNG/Levels/Inequality/Level_10.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_11.c | 37 + .../ir/NNG/Levels/Inequality/Level_11.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_12.c | 37 + .../ir/NNG/Levels/Inequality/Level_12.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_13.c | 37 + .../ir/NNG/Levels/Inequality/Level_13.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_14.c | 37 + .../ir/NNG/Levels/Inequality/Level_14.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_15.c | 37 + .../ir/NNG/Levels/Inequality/Level_15.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_16.c | 37 + .../ir/NNG/Levels/Inequality/Level_16.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_17.c | 37 + .../ir/NNG/Levels/Inequality/Level_17.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_2.c | 37 + .../ir/NNG/Levels/Inequality/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_3.c | 37 + .../ir/NNG/Levels/Inequality/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_4.c | 37 + .../ir/NNG/Levels/Inequality/Level_4.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_5.c | 37 + .../ir/NNG/Levels/Inequality/Level_5.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_6.c | 37 + .../ir/NNG/Levels/Inequality/Level_6.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_7.c | 37 + .../ir/NNG/Levels/Inequality/Level_7.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_8.c | 37 + .../ir/NNG/Levels/Inequality/Level_8.c.trace | 1 + .../build/ir/NNG/Levels/Inequality/Level_9.c | 37 + .../ir/NNG/Levels/Inequality/Level_9.c.trace | 1 + .../nng/build/ir/NNG/Levels/Multiplication.c | 65 + .../ir/NNG/Levels/Multiplication.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_1.c | 37 + .../NNG/Levels/Multiplication/Level_1.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_2.c | 37 + .../NNG/Levels/Multiplication/Level_2.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_3.c | 37 + .../NNG/Levels/Multiplication/Level_3.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_4.c | 37 + .../NNG/Levels/Multiplication/Level_4.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_5.c | 37 + .../NNG/Levels/Multiplication/Level_5.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_6.c | 37 + .../NNG/Levels/Multiplication/Level_6.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_7.c | 37 + .../NNG/Levels/Multiplication/Level_7.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_8.c | 37 + .../NNG/Levels/Multiplication/Level_8.c.trace | 1 + .../ir/NNG/Levels/Multiplication/Level_9.c | 37 + .../NNG/Levels/Multiplication/Level_9.c.trace | 1 + server/nng/build/ir/NNG/Levels/Power.c | 61 + server/nng/build/ir/NNG/Levels/Power.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_1.c | 37 + .../build/ir/NNG/Levels/Power/Level_1.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_2.c | 37 + .../build/ir/NNG/Levels/Power/Level_2.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_3.c | 37 + .../build/ir/NNG/Levels/Power/Level_3.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_4.c | 37 + .../build/ir/NNG/Levels/Power/Level_4.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_5.c | 37 + .../build/ir/NNG/Levels/Power/Level_5.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_6.c | 37 + .../build/ir/NNG/Levels/Power/Level_6.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_7.c | 37 + .../build/ir/NNG/Levels/Power/Level_7.c.trace | 1 + .../nng/build/ir/NNG/Levels/Power/Level_8.c | 37 + .../build/ir/NNG/Levels/Power/Level_8.c.trace | 1 + server/nng/build/ir/NNG/Levels/Proposition.c | 61 + .../build/ir/NNG/Levels/Proposition.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_1.c | 37 + .../ir/NNG/Levels/Proposition/Level_1.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_2.c | 37 + .../ir/NNG/Levels/Proposition/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_3.c | 37 + .../ir/NNG/Levels/Proposition/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_4.c | 37 + .../ir/NNG/Levels/Proposition/Level_4.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_5.c | 37 + .../ir/NNG/Levels/Proposition/Level_5.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_6.c | 37 + .../ir/NNG/Levels/Proposition/Level_6.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_7.c | 37 + .../ir/NNG/Levels/Proposition/Level_7.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_8.c | 41 + .../ir/NNG/Levels/Proposition/Level_8.c.trace | 1 + .../build/ir/NNG/Levels/Proposition/Level_9.c | 37 + .../ir/NNG/Levels/Proposition/Level_9.c.trace | 1 + server/nng/build/ir/NNG/Levels/Tutorial.c | 45 + .../nng/build/ir/NNG/Levels/Tutorial.c.trace | 1 + .../build/ir/NNG/Levels/Tutorial/Level_1.c | 37 + .../ir/NNG/Levels/Tutorial/Level_1.c.trace | 1 + .../build/ir/NNG/Levels/Tutorial/Level_2.c | 37 + .../ir/NNG/Levels/Tutorial/Level_2.c.trace | 1 + .../build/ir/NNG/Levels/Tutorial/Level_3.c | 37 + .../ir/NNG/Levels/Tutorial/Level_3.c.trace | 1 + .../build/ir/NNG/Levels/Tutorial/Level_4.c | 37 + .../ir/NNG/Levels/Tutorial/Level_4.c.trace | 1 + server/nng/build/ir/NNG/Metadata.c | 49 + server/nng/build/ir/NNG/Metadata.c.trace | 1 + .../nng/build/ir/NNG/Modifications/Tactics.c | 3061 +++++++++++++++++ .../ir/NNG/Modifications/Tactics.c.trace | 1 + server/nng/build/ir/NNG/MyNat/Addition.c | 100 + .../nng/build/ir/NNG/MyNat/Addition.c.trace | 1 + server/nng/build/ir/NNG/MyNat/Definition.c | 799 +++++ .../nng/build/ir/NNG/MyNat/Definition.c.trace | 1 + .../nng/build/ir/NNG/MyNat/Multiplication.c | 100 + .../build/ir/NNG/MyNat/Multiplication.c.trace | 1 + .../build/ir/NNG/MyNat/Theorems/Addition.c | 37 + .../ir/NNG/MyNat/Theorems/Addition.c.trace | 1 + .../build/ir/NNG/MyNat/Theorems/Proposition.c | 29 + .../ir/NNG/MyNat/Theorems/Proposition.c.trace | 1 + server/nng/build/lib/NNG.ilean | 1 + server/nng/build/lib/NNG.olean | Bin 0 -> 350168 bytes server/nng/build/lib/NNG.trace | 1 + .../nng/build/lib/NNG/Doc/Definitions.ilean | 1 + .../nng/build/lib/NNG/Doc/Definitions.olean | Bin 0 -> 11608 bytes .../nng/build/lib/NNG/Doc/Definitions.trace | 1 + server/nng/build/lib/NNG/Doc/Lemmas.ilean | 1 + server/nng/build/lib/NNG/Doc/Lemmas.olean | Bin 0 -> 12912 bytes server/nng/build/lib/NNG/Doc/Lemmas.trace | 1 + server/nng/build/lib/NNG/Doc/Tactics.ilean | 1 + server/nng/build/lib/NNG/Doc/Tactics.olean | Bin 0 -> 13240 bytes server/nng/build/lib/NNG/Doc/Tactics.trace | 1 + .../nng/build/lib/NNG/Levels/Addition.ilean | 1 + .../nng/build/lib/NNG/Levels/Addition.olean | Bin 0 -> 78616 bytes .../nng/build/lib/NNG/Levels/Addition.trace | 1 + .../lib/NNG/Levels/Addition/Level_1.ilean | 1 + .../lib/NNG/Levels/Addition/Level_1.olean | Bin 0 -> 39472 bytes .../lib/NNG/Levels/Addition/Level_1.trace | 1 + .../lib/NNG/Levels/Addition/Level_2.ilean | 1 + .../lib/NNG/Levels/Addition/Level_2.olean | Bin 0 -> 47336 bytes .../lib/NNG/Levels/Addition/Level_2.trace | 1 + .../lib/NNG/Levels/Addition/Level_3.ilean | 1 + .../lib/NNG/Levels/Addition/Level_3.olean | Bin 0 -> 58248 bytes .../lib/NNG/Levels/Addition/Level_3.trace | 1 + .../lib/NNG/Levels/Addition/Level_4.ilean | 1 + .../lib/NNG/Levels/Addition/Level_4.olean | Bin 0 -> 62232 bytes .../lib/NNG/Levels/Addition/Level_4.trace | 1 + .../lib/NNG/Levels/Addition/Level_5.ilean | 1 + .../lib/NNG/Levels/Addition/Level_5.olean | Bin 0 -> 66856 bytes .../lib/NNG/Levels/Addition/Level_5.trace | 1 + .../lib/NNG/Levels/Addition/Level_6.ilean | 1 + .../lib/NNG/Levels/Addition/Level_6.olean | Bin 0 -> 67304 bytes .../lib/NNG/Levels/Addition/Level_6.trace | 1 + .../build/lib/NNG/Levels/AdvAddition.ilean | 1 + .../build/lib/NNG/Levels/AdvAddition.olean | Bin 0 -> 32008 bytes .../build/lib/NNG/Levels/AdvAddition.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_1.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_1.olean | Bin 0 -> 28448 bytes .../lib/NNG/Levels/AdvAddition/Level_1.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_10.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_10.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/AdvAddition/Level_10.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_11.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_11.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/AdvAddition/Level_11.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_12.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_12.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/AdvAddition/Level_12.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_13.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_13.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/AdvAddition/Level_13.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_2.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_2.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_2.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_3.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_3.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_3.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_4.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_4.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_4.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_5.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_5.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_5.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_6.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_6.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_6.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_7.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_7.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_7.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_8.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_8.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_8.trace | 1 + .../lib/NNG/Levels/AdvAddition/Level_9.ilean | 1 + .../lib/NNG/Levels/AdvAddition/Level_9.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/AdvAddition/Level_9.trace | 1 + .../lib/NNG/Levels/AdvMultiplication.ilean | 1 + .../lib/NNG/Levels/AdvMultiplication.olean | Bin 0 -> 18504 bytes .../lib/NNG/Levels/AdvMultiplication.trace | 1 + .../Levels/AdvMultiplication/Level_1.ilean | 1 + .../Levels/AdvMultiplication/Level_1.olean | Bin 0 -> 17368 bytes .../Levels/AdvMultiplication/Level_1.trace | 1 + .../Levels/AdvMultiplication/Level_2.ilean | 1 + .../Levels/AdvMultiplication/Level_2.olean | Bin 0 -> 17368 bytes .../Levels/AdvMultiplication/Level_2.trace | 1 + .../Levels/AdvMultiplication/Level_3.ilean | 1 + .../Levels/AdvMultiplication/Level_3.olean | Bin 0 -> 17368 bytes .../Levels/AdvMultiplication/Level_3.trace | 1 + .../Levels/AdvMultiplication/Level_4.ilean | 1 + .../Levels/AdvMultiplication/Level_4.olean | Bin 0 -> 17368 bytes .../Levels/AdvMultiplication/Level_4.trace | 1 + .../build/lib/NNG/Levels/AdvProposition.ilean | 1 + .../build/lib/NNG/Levels/AdvProposition.olean | Bin 0 -> 61248 bytes .../build/lib/NNG/Levels/AdvProposition.trace | 1 + .../NNG/Levels/AdvProposition/Level_1.ilean | 1 + .../NNG/Levels/AdvProposition/Level_1.olean | Bin 0 -> 21536 bytes .../NNG/Levels/AdvProposition/Level_1.trace | 1 + .../NNG/Levels/AdvProposition/Level_10.ilean | 1 + .../NNG/Levels/AdvProposition/Level_10.olean | Bin 0 -> 24736 bytes .../NNG/Levels/AdvProposition/Level_10.trace | 1 + .../NNG/Levels/AdvProposition/Level_2.ilean | 1 + .../NNG/Levels/AdvProposition/Level_2.olean | Bin 0 -> 21992 bytes .../NNG/Levels/AdvProposition/Level_2.trace | 1 + .../NNG/Levels/AdvProposition/Level_3.ilean | 1 + .../NNG/Levels/AdvProposition/Level_3.olean | Bin 0 -> 23672 bytes .../NNG/Levels/AdvProposition/Level_3.trace | 1 + .../NNG/Levels/AdvProposition/Level_4.ilean | 1 + .../NNG/Levels/AdvProposition/Level_4.olean | Bin 0 -> 25096 bytes .../NNG/Levels/AdvProposition/Level_4.trace | 1 + .../NNG/Levels/AdvProposition/Level_5.ilean | 1 + .../NNG/Levels/AdvProposition/Level_5.olean | Bin 0 -> 24184 bytes .../NNG/Levels/AdvProposition/Level_5.trace | 1 + .../NNG/Levels/AdvProposition/Level_6.ilean | 1 + .../NNG/Levels/AdvProposition/Level_6.olean | Bin 0 -> 21160 bytes .../NNG/Levels/AdvProposition/Level_6.trace | 1 + .../NNG/Levels/AdvProposition/Level_7.ilean | 1 + .../NNG/Levels/AdvProposition/Level_7.olean | Bin 0 -> 21992 bytes .../NNG/Levels/AdvProposition/Level_7.trace | 1 + .../NNG/Levels/AdvProposition/Level_8.ilean | 1 + .../NNG/Levels/AdvProposition/Level_8.olean | Bin 0 -> 28360 bytes .../NNG/Levels/AdvProposition/Level_8.trace | 1 + .../NNG/Levels/AdvProposition/Level_9.ilean | 1 + .../NNG/Levels/AdvProposition/Level_9.olean | Bin 0 -> 22552 bytes .../NNG/Levels/AdvProposition/Level_9.trace | 1 + .../nng/build/lib/NNG/Levels/Function.ilean | 1 + .../nng/build/lib/NNG/Levels/Function.olean | Bin 0 -> 90704 bytes .../nng/build/lib/NNG/Levels/Function.trace | 1 + .../lib/NNG/Levels/Function/Level_1.ilean | 1 + .../lib/NNG/Levels/Function/Level_1.olean | Bin 0 -> 21920 bytes .../lib/NNG/Levels/Function/Level_1.trace | 1 + .../lib/NNG/Levels/Function/Level_2.ilean | 1 + .../lib/NNG/Levels/Function/Level_2.olean | Bin 0 -> 19896 bytes .../lib/NNG/Levels/Function/Level_2.trace | 1 + .../lib/NNG/Levels/Function/Level_3.ilean | 1 + .../lib/NNG/Levels/Function/Level_3.olean | Bin 0 -> 30424 bytes .../lib/NNG/Levels/Function/Level_3.trace | 1 + .../lib/NNG/Levels/Function/Level_4.ilean | 1 + .../lib/NNG/Levels/Function/Level_4.olean | Bin 0 -> 29632 bytes .../lib/NNG/Levels/Function/Level_4.trace | 1 + .../lib/NNG/Levels/Function/Level_5.ilean | 1 + .../lib/NNG/Levels/Function/Level_5.olean | Bin 0 -> 20456 bytes .../lib/NNG/Levels/Function/Level_5.trace | 1 + .../lib/NNG/Levels/Function/Level_6.ilean | 1 + .../lib/NNG/Levels/Function/Level_6.olean | Bin 0 -> 24336 bytes .../lib/NNG/Levels/Function/Level_6.trace | 1 + .../lib/NNG/Levels/Function/Level_7.ilean | 1 + .../lib/NNG/Levels/Function/Level_7.olean | Bin 0 -> 23128 bytes .../lib/NNG/Levels/Function/Level_7.trace | 1 + .../lib/NNG/Levels/Function/Level_8.ilean | 1 + .../lib/NNG/Levels/Function/Level_8.olean | Bin 0 -> 22848 bytes .../lib/NNG/Levels/Function/Level_8.trace | 1 + .../lib/NNG/Levels/Function/Level_9.ilean | 1 + .../lib/NNG/Levels/Function/Level_9.olean | Bin 0 -> 47024 bytes .../lib/NNG/Levels/Function/Level_9.trace | 1 + .../nng/build/lib/NNG/Levels/Inequality.ilean | 1 + .../nng/build/lib/NNG/Levels/Inequality.olean | Bin 0 -> 30672 bytes .../nng/build/lib/NNG/Levels/Inequality.trace | 1 + .../lib/NNG/Levels/Inequality/Level_1.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_1.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_1.trace | 1 + .../lib/NNG/Levels/Inequality/Level_10.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_10.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_10.trace | 1 + .../lib/NNG/Levels/Inequality/Level_11.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_11.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_11.trace | 1 + .../lib/NNG/Levels/Inequality/Level_12.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_12.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_12.trace | 1 + .../lib/NNG/Levels/Inequality/Level_13.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_13.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_13.trace | 1 + .../lib/NNG/Levels/Inequality/Level_14.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_14.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_14.trace | 1 + .../lib/NNG/Levels/Inequality/Level_15.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_15.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_15.trace | 1 + .../lib/NNG/Levels/Inequality/Level_16.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_16.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_16.trace | 1 + .../lib/NNG/Levels/Inequality/Level_17.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_17.olean | Bin 0 -> 17368 bytes .../lib/NNG/Levels/Inequality/Level_17.trace | 1 + .../lib/NNG/Levels/Inequality/Level_2.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_2.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_2.trace | 1 + .../lib/NNG/Levels/Inequality/Level_3.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_3.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_3.trace | 1 + .../lib/NNG/Levels/Inequality/Level_4.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_4.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_4.trace | 1 + .../lib/NNG/Levels/Inequality/Level_5.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_5.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_5.trace | 1 + .../lib/NNG/Levels/Inequality/Level_6.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_6.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_6.trace | 1 + .../lib/NNG/Levels/Inequality/Level_7.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_7.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_7.trace | 1 + .../lib/NNG/Levels/Inequality/Level_8.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_8.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_8.trace | 1 + .../lib/NNG/Levels/Inequality/Level_9.ilean | 1 + .../lib/NNG/Levels/Inequality/Level_9.olean | Bin 0 -> 17352 bytes .../lib/NNG/Levels/Inequality/Level_9.trace | 1 + .../build/lib/NNG/Levels/Multiplication.ilean | 1 + .../build/lib/NNG/Levels/Multiplication.olean | Bin 0 -> 23128 bytes .../build/lib/NNG/Levels/Multiplication.trace | 1 + .../NNG/Levels/Multiplication/Level_1.ilean | 1 + .../NNG/Levels/Multiplication/Level_1.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_1.trace | 1 + .../NNG/Levels/Multiplication/Level_2.ilean | 1 + .../NNG/Levels/Multiplication/Level_2.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_2.trace | 1 + .../NNG/Levels/Multiplication/Level_3.ilean | 1 + .../NNG/Levels/Multiplication/Level_3.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_3.trace | 1 + .../NNG/Levels/Multiplication/Level_4.ilean | 1 + .../NNG/Levels/Multiplication/Level_4.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_4.trace | 1 + .../NNG/Levels/Multiplication/Level_5.ilean | 1 + .../NNG/Levels/Multiplication/Level_5.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_5.trace | 1 + .../NNG/Levels/Multiplication/Level_6.ilean | 1 + .../NNG/Levels/Multiplication/Level_6.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_6.trace | 1 + .../NNG/Levels/Multiplication/Level_7.ilean | 1 + .../NNG/Levels/Multiplication/Level_7.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_7.trace | 1 + .../NNG/Levels/Multiplication/Level_8.ilean | 1 + .../NNG/Levels/Multiplication/Level_8.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_8.trace | 1 + .../NNG/Levels/Multiplication/Level_9.ilean | 1 + .../NNG/Levels/Multiplication/Level_9.olean | Bin 0 -> 17360 bytes .../NNG/Levels/Multiplication/Level_9.trace | 1 + server/nng/build/lib/NNG/Levels/Power.ilean | 1 + server/nng/build/lib/NNG/Levels/Power.olean | Bin 0 -> 22120 bytes server/nng/build/lib/NNG/Levels/Power.trace | 1 + .../build/lib/NNG/Levels/Power/Level_1.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_1.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_1.trace | 1 + .../build/lib/NNG/Levels/Power/Level_2.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_2.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_2.trace | 1 + .../build/lib/NNG/Levels/Power/Level_3.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_3.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_3.trace | 1 + .../build/lib/NNG/Levels/Power/Level_4.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_4.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_4.trace | 1 + .../build/lib/NNG/Levels/Power/Level_5.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_5.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_5.trace | 1 + .../build/lib/NNG/Levels/Power/Level_6.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_6.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_6.trace | 1 + .../build/lib/NNG/Levels/Power/Level_7.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_7.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_7.trace | 1 + .../build/lib/NNG/Levels/Power/Level_8.ilean | 1 + .../build/lib/NNG/Levels/Power/Level_8.olean | Bin 0 -> 17344 bytes .../build/lib/NNG/Levels/Power/Level_8.trace | 1 + .../build/lib/NNG/Levels/Proposition.ilean | 1 + .../build/lib/NNG/Levels/Proposition.olean | Bin 0 -> 63840 bytes .../build/lib/NNG/Levels/Proposition.trace | 1 + .../lib/NNG/Levels/Proposition/Level_1.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_1.olean | Bin 0 -> 21360 bytes .../lib/NNG/Levels/Proposition/Level_1.trace | 1 + .../lib/NNG/Levels/Proposition/Level_2.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_2.olean | Bin 0 -> 18840 bytes .../lib/NNG/Levels/Proposition/Level_2.trace | 1 + .../lib/NNG/Levels/Proposition/Level_3.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_3.olean | Bin 0 -> 30160 bytes .../lib/NNG/Levels/Proposition/Level_3.trace | 1 + .../lib/NNG/Levels/Proposition/Level_4.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_4.olean | Bin 0 -> 29384 bytes .../lib/NNG/Levels/Proposition/Level_4.trace | 1 + .../lib/NNG/Levels/Proposition/Level_5.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_5.olean | Bin 0 -> 20192 bytes .../lib/NNG/Levels/Proposition/Level_5.trace | 1 + .../lib/NNG/Levels/Proposition/Level_6.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_6.olean | Bin 0 -> 24304 bytes .../lib/NNG/Levels/Proposition/Level_6.trace | 1 + .../lib/NNG/Levels/Proposition/Level_7.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_7.olean | Bin 0 -> 23096 bytes .../lib/NNG/Levels/Proposition/Level_7.trace | 1 + .../lib/NNG/Levels/Proposition/Level_8.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_8.olean | Bin 0 -> 26120 bytes .../lib/NNG/Levels/Proposition/Level_8.trace | 1 + .../lib/NNG/Levels/Proposition/Level_9.ilean | 1 + .../lib/NNG/Levels/Proposition/Level_9.olean | Bin 0 -> 17360 bytes .../lib/NNG/Levels/Proposition/Level_9.trace | 1 + .../nng/build/lib/NNG/Levels/Tutorial.ilean | 1 + .../nng/build/lib/NNG/Levels/Tutorial.olean | Bin 0 -> 67368 bytes .../nng/build/lib/NNG/Levels/Tutorial.trace | 1 + .../lib/NNG/Levels/Tutorial/Level_1.ilean | 1 + .../lib/NNG/Levels/Tutorial/Level_1.olean | Bin 0 -> 30112 bytes .../lib/NNG/Levels/Tutorial/Level_1.trace | 1 + .../lib/NNG/Levels/Tutorial/Level_2.ilean | 1 + .../lib/NNG/Levels/Tutorial/Level_2.olean | Bin 0 -> 36080 bytes .../lib/NNG/Levels/Tutorial/Level_2.trace | 1 + .../lib/NNG/Levels/Tutorial/Level_3.ilean | 1 + .../lib/NNG/Levels/Tutorial/Level_3.olean | Bin 0 -> 36816 bytes .../lib/NNG/Levels/Tutorial/Level_3.trace | 1 + .../lib/NNG/Levels/Tutorial/Level_4.ilean | 1 + .../lib/NNG/Levels/Tutorial/Level_4.olean | Bin 0 -> 34680 bytes .../lib/NNG/Levels/Tutorial/Level_4.trace | 1 + server/nng/build/lib/NNG/Metadata.ilean | 1 + server/nng/build/lib/NNG/Metadata.olean | Bin 0 -> 13712 bytes server/nng/build/lib/NNG/Metadata.trace | 1 + .../build/lib/NNG/Modifications/Tactics.ilean | 1 + .../build/lib/NNG/Modifications/Tactics.olean | Bin 0 -> 589856 bytes .../build/lib/NNG/Modifications/Tactics.trace | 1 + server/nng/build/lib/NNG/MyNat/Addition.ilean | 1 + server/nng/build/lib/NNG/MyNat/Addition.olean | Bin 0 -> 32560 bytes server/nng/build/lib/NNG/MyNat/Addition.trace | 1 + .../nng/build/lib/NNG/MyNat/Definition.ilean | 1 + .../nng/build/lib/NNG/MyNat/Definition.olean | Bin 0 -> 196472 bytes .../nng/build/lib/NNG/MyNat/Definition.trace | 1 + .../build/lib/NNG/MyNat/Multiplication.ilean | 1 + .../build/lib/NNG/MyNat/Multiplication.olean | Bin 0 -> 33232 bytes .../build/lib/NNG/MyNat/Multiplication.trace | 1 + .../lib/NNG/MyNat/Theorems/Addition.ilean | 1 + .../lib/NNG/MyNat/Theorems/Addition.olean | Bin 0 -> 39432 bytes .../lib/NNG/MyNat/Theorems/Addition.trace | 1 + .../lib/NNG/MyNat/Theorems/Proposition.ilean | 1 + .../lib/NNG/MyNat/Theorems/Proposition.olean | Bin 0 -> 15608 bytes .../lib/NNG/MyNat/Theorems/Proposition.trace | 1 + 561 files changed, 8761 insertions(+), 19 deletions(-) delete mode 100644 server/nng/.gitignore create mode 100644 server/nng/build/ir/NNG.c create mode 100644 server/nng/build/ir/NNG.c.trace create mode 100644 server/nng/build/ir/NNG/Doc/Definitions.c create mode 100644 server/nng/build/ir/NNG/Doc/Definitions.c.trace create mode 100644 server/nng/build/ir/NNG/Doc/Lemmas.c create mode 100644 server/nng/build/ir/NNG/Doc/Lemmas.c.trace create mode 100644 server/nng/build/ir/NNG/Doc/Tactics.c create mode 100644 server/nng/build/ir/NNG/Doc/Tactics.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Addition/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function.c create mode 100644 server/nng/build/ir/NNG/Levels/Function.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/Function/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_10.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_10.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_11.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_11.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_12.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_12.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_13.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_13.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_14.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_14.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_15.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_15.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_16.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_16.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_17.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_17.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/Inequality/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power.c create mode 100644 server/nng/build/ir/NNG/Levels/Power.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/Power/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_5.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_5.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_6.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_6.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_7.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_7.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_8.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_8.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_9.c create mode 100644 server/nng/build/ir/NNG/Levels/Proposition/Level_9.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial.c create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c.trace create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c create mode 100644 server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c.trace create mode 100644 server/nng/build/ir/NNG/Metadata.c create mode 100644 server/nng/build/ir/NNG/Metadata.c.trace create mode 100644 server/nng/build/ir/NNG/Modifications/Tactics.c create mode 100644 server/nng/build/ir/NNG/Modifications/Tactics.c.trace create mode 100644 server/nng/build/ir/NNG/MyNat/Addition.c create mode 100644 server/nng/build/ir/NNG/MyNat/Addition.c.trace create mode 100644 server/nng/build/ir/NNG/MyNat/Definition.c create mode 100644 server/nng/build/ir/NNG/MyNat/Definition.c.trace create mode 100644 server/nng/build/ir/NNG/MyNat/Multiplication.c create mode 100644 server/nng/build/ir/NNG/MyNat/Multiplication.c.trace create mode 100644 server/nng/build/ir/NNG/MyNat/Theorems/Addition.c create mode 100644 server/nng/build/ir/NNG/MyNat/Theorems/Addition.c.trace create mode 100644 server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c create mode 100644 server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c.trace create mode 100644 server/nng/build/lib/NNG.ilean create mode 100644 server/nng/build/lib/NNG.olean create mode 100644 server/nng/build/lib/NNG.trace create mode 100644 server/nng/build/lib/NNG/Doc/Definitions.ilean create mode 100644 server/nng/build/lib/NNG/Doc/Definitions.olean create mode 100644 server/nng/build/lib/NNG/Doc/Definitions.trace create mode 100644 server/nng/build/lib/NNG/Doc/Lemmas.ilean create mode 100644 server/nng/build/lib/NNG/Doc/Lemmas.olean create mode 100644 server/nng/build/lib/NNG/Doc/Lemmas.trace create mode 100644 server/nng/build/lib/NNG/Doc/Tactics.ilean create mode 100644 server/nng/build/lib/NNG/Doc/Tactics.olean create mode 100644 server/nng/build/lib/NNG/Doc/Tactics.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Addition/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_11.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_11.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_11.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/Function/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_10.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_10.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_10.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_11.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_11.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_11.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_12.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_12.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_12.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_13.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_13.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_13.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_14.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_14.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_14.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_15.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_15.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_15.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_16.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_16.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_16.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_17.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_17.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_17.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/Inequality/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/Multiplication/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/Power/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_5.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_5.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_5.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_6.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_6.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_6.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_7.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_7.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_7.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_8.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_8.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_8.trace create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_9.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_9.olean create mode 100644 server/nng/build/lib/NNG/Levels/Proposition/Level_9.trace create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial.olean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial.trace create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_1.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_1.olean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_1.trace create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_2.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_2.olean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_2.trace create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_3.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_3.olean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_3.trace create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_4.ilean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_4.olean create mode 100644 server/nng/build/lib/NNG/Levels/Tutorial/Level_4.trace create mode 100644 server/nng/build/lib/NNG/Metadata.ilean create mode 100644 server/nng/build/lib/NNG/Metadata.olean create mode 100644 server/nng/build/lib/NNG/Metadata.trace create mode 100644 server/nng/build/lib/NNG/Modifications/Tactics.ilean create mode 100644 server/nng/build/lib/NNG/Modifications/Tactics.olean create mode 100644 server/nng/build/lib/NNG/Modifications/Tactics.trace create mode 100644 server/nng/build/lib/NNG/MyNat/Addition.ilean create mode 100644 server/nng/build/lib/NNG/MyNat/Addition.olean create mode 100644 server/nng/build/lib/NNG/MyNat/Addition.trace create mode 100644 server/nng/build/lib/NNG/MyNat/Definition.ilean create mode 100644 server/nng/build/lib/NNG/MyNat/Definition.olean create mode 100644 server/nng/build/lib/NNG/MyNat/Definition.trace create mode 100644 server/nng/build/lib/NNG/MyNat/Multiplication.ilean create mode 100644 server/nng/build/lib/NNG/MyNat/Multiplication.olean create mode 100644 server/nng/build/lib/NNG/MyNat/Multiplication.trace create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Addition.ilean create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Addition.olean create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Addition.trace create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Proposition.ilean create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Proposition.olean create mode 100644 server/nng/build/lib/NNG/MyNat/Theorems/Proposition.trace diff --git a/server/nng/.gitignore b/server/nng/.gitignore deleted file mode 100644 index c795b05..0000000 --- a/server/nng/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build \ No newline at end of file diff --git a/server/nng/NNG.lean b/server/nng/NNG.lean index b315174..f9dbac0 100644 --- a/server/nng/NNG.lean +++ b/server/nng/NNG.lean @@ -15,16 +15,45 @@ Game "NNG" Title "Natural Number Game" Introduction " -[intro text missing] +# Natural Number Game + +##### version 2.0.1 + +Welcome to the natural number game -- a game which shows the power of induction. + +In this game, you get own version of the natural numbers, in an interactive +theorem prover called Lean. Your version of the natural numbers satisfies something called +the principle of mathematical induction, and a couple of other things too (Peano's axioms). +Unfortunately, nobody has proved any theorems about these +natural numbers yet! For example, addition will be defined for you, +but nobody has proved that `x + y = y + x` yet. This is your job. You're going to +prove mathematical theorems using the Lean theorem prover. In other words, you're going to solve +levels in a computer game. + +You're going to prove these theorems using *tactics*. The introductory world, Tutorial World, +will take you through some of these tactics. During your proofs, the assistant shows your +\"goal\" (i.e. what you're supposed to be proving) and keeps track of the state of your proof. + +Click on the blue \"Tutorial World\" to start your journey! + +## Save progress + +The game stores your progress locally in your browser storage. +If you delete it, your progress will be lost! + +(usually the *website data* gets deleted together with cookies.) ## Credits -* Content and Lean3-version: Kevin Buzzard, Mohammad Pedramfar -* Game Engine: Alexander Bentkamp, Jon Eugster, Patrick Massot -* Port to Lean 4: Chris Lovett + +* **Content and Lean3-version:** Kevin Buzzard, Mohammad Pedramfar +* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot ## Resources + +* The [Lean Zulip chat] forum * [Original Lean3 version](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) -* [Chris' translation to lean4](https://lovettsoftware.com/NaturalNumbers/TutorialWorld/Level1.lean.html) +* [A textbook-style (lean4) version of the NN-game](https://lovettsoftware.com/NaturalNumbers/TutorialWorld/Level1.lean.html) + " Path Tutorial → Addition → Function → Proposition → AdvProposition → AdvAddition @@ -32,4 +61,4 @@ Path AdvAddition → AdvMultiplication → Inequality Path Addition → Multiplication → AdvMultiplication Path Multiplication → Power -MakeGame \ No newline at end of file +MakeGame diff --git a/server/nng/NNG/Levels/Addition/Level_2.lean b/server/nng/NNG/Levels/Addition/Level_2.lean index b49723a..d89e00f 100644 --- a/server/nng/NNG/Levels/Addition/Level_2.lean +++ b/server/nng/NNG/Levels/Addition/Level_2.lean @@ -8,7 +8,9 @@ Title "add_assoc (associativity of addition)" open MyNat -theorem MyNat.zero_add (n : ℕ) : 0 + n = n := by +namespace AdditionWorld + +theorem zero_add (n : ℕ) : 0 + n = n := by induction n with n hn · rw [add_zero] rfl diff --git a/server/nng/NNG/Levels/Addition/Level_3.lean b/server/nng/NNG/Levels/Addition/Level_3.lean index 95a846d..06d1fd1 100644 --- a/server/nng/NNG/Levels/Addition/Level_3.lean +++ b/server/nng/NNG/Levels/Addition/Level_3.lean @@ -9,7 +9,9 @@ Title "succ_add" open MyNat -theorem MyNat.add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by +namespace AdditionWorld + +theorem add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by induction c with c hc · rw [add_zero] rw [add_zero] @@ -20,7 +22,6 @@ theorem MyNat.add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by rw [hc] rfl - Introduction " Oh no! On the way to `add_comm`, a wild `succ_add` appears. `succ_add` @@ -52,6 +53,7 @@ $ \\operatorname{succ}(a) + b = \\operatorname{succ}(a + b)$." Hint "Induction on `a` will not work." induction b with d hd · rw [add_zero] + rw [add_zero] rfl · rw [add_succ] rw [hd] diff --git a/server/nng/NNG/Levels/Addition/Level_4.lean b/server/nng/NNG/Levels/Addition/Level_4.lean index d32acd2..e729fb7 100644 --- a/server/nng/NNG/Levels/Addition/Level_4.lean +++ b/server/nng/NNG/Levels/Addition/Level_4.lean @@ -9,9 +9,12 @@ Title "`add_comm` (boss level)" open MyNat -theorem MyNat.succ_add (a b : ℕ) : succ a + b = succ (a + b) := by +namespace AdditionWorld + +theorem succ_add (a b : ℕ) : succ a + b = succ (a + b) := by induction b with d hd · rw [add_zero] + rw [add_zero] rfl · rw [add_succ] rw [hd] diff --git a/server/nng/NNG/Levels/Addition/Level_5.lean b/server/nng/NNG/Levels/Addition/Level_5.lean index 62dd561..9c13070 100644 --- a/server/nng/NNG/Levels/Addition/Level_5.lean +++ b/server/nng/NNG/Levels/Addition/Level_5.lean @@ -9,7 +9,9 @@ Title "succ_eq_add_one" open MyNat -theorem MyNat.add_comm (a b : ℕ) : a + b = b + a := by +namespace AdditionWorld + +theorem add_comm (a b : ℕ) : a + b = b + a := by induction b with d hd · rw [zero_add] rw [add_zero] @@ -19,8 +21,7 @@ theorem MyNat.add_comm (a b : ℕ) : a + b = b + a := by rw [succ_add] rfl -theorem MyNat.one_eq_succ_zero : (1 : ℕ) = succ 0 := by - rfl +theorem one_eq_succ_zero : (1 : ℕ) = succ 0 := by simp only NewLemma MyNat.add_comm MyNat.one_eq_succ_zero diff --git a/server/nng/NNG/Levels/Addition/Level_6.lean b/server/nng/NNG/Levels/Addition/Level_6.lean index 362d261..29658e1 100644 --- a/server/nng/NNG/Levels/Addition/Level_6.lean +++ b/server/nng/NNG/Levels/Addition/Level_6.lean @@ -9,11 +9,13 @@ Title "add_right_comm" open MyNat +namespace AdditionWorld + Introduction " Lean sometimes writes `a + b + c`. What does it mean? The convention is that if there are no brackets displayed in an addition formula, the brackets -are around the left most `+` (Lean's addition is \"left associative\"). +are around the left most `+` (Lean's addition is \"left associative\"). So the goal in this level is `(a + b) + c = (a + c) + b`. This isn't quite `add_assoc` or `add_comm`, it's something you'll have to prove by putting these two theorems together. diff --git a/server/nng/NNG/Levels/Function/Level_8.lean b/server/nng/NNG/Levels/Function/Level_8.lean index 7a76cb5..f715436 100644 --- a/server/nng/NNG/Levels/Function/Level_8.lean +++ b/server/nng/NNG/Levels/Function/Level_8.lean @@ -15,7 +15,7 @@ Introduction Statement "" - (P Q : Type) : (P → Q) → ((Q → empty) → (P → empty)) := by + (P Q : Type) : (P → Q) → ((Q → Empty) → (P → Empty)) := by intros f h p apply h apply f diff --git a/server/nng/NNG/Levels/Proposition/Level_2.lean b/server/nng/NNG/Levels/Proposition/Level_2.lean index 221bf0d..d4165df 100644 --- a/server/nng/NNG/Levels/Proposition/Level_2.lean +++ b/server/nng/NNG/Levels/Proposition/Level_2.lean @@ -15,7 +15,7 @@ Introduction Statement "" - : P → P := by + {P : Prop} : P → P := by intro p exact p diff --git a/server/nng/NNG/Levels/Proposition/Level_5.lean b/server/nng/NNG/Levels/Proposition/Level_5.lean index 6afe937..30c6832 100644 --- a/server/nng/NNG/Levels/Proposition/Level_5.lean +++ b/server/nng/NNG/Levels/Proposition/Level_5.lean @@ -19,7 +19,6 @@ Statement intro p intro q exact p - rfl Conclusion " diff --git a/server/nng/NNG/MyNat/Theorems/Addition.lean b/server/nng/NNG/MyNat/Theorems/Addition.lean index ed685f9..0d04f8a 100644 --- a/server/nng/NNG/MyNat/Theorems/Addition.lean +++ b/server/nng/NNG/MyNat/Theorems/Addition.lean @@ -25,6 +25,7 @@ theorem MyNat.add_assoc (a b c : ℕ) : (a + b) + c = a + (b + c) := by theorem MyNat.succ_add (a b : ℕ) : succ a + b = succ (a + b) := by induction b with d hd · rw [add_zero] + rw [add_zero] rfl · rw [add_succ] rw [hd] @@ -42,4 +43,4 @@ theorem MyNat.add_comm (a b : ℕ) : a + b = b + a := by rfl theorem MyNat.one_eq_succ_zero : (1 : ℕ) = succ 0 := by - rfl + simp only diff --git a/server/nng/build/ir/NNG.c b/server/nng/build/ir/NNG.c new file mode 100644 index 0000000..1af17f6 --- /dev/null +++ b/server/nng/build/ir/NNG.c @@ -0,0 +1,73 @@ +// Lean compiler output +// Module: NNG +// Imports: Init GameServer.Commands NNG.Levels.Tutorial NNG.Levels.Addition NNG.Levels.Multiplication NNG.Levels.Power NNG.Levels.Function NNG.Levels.Proposition NNG.Levels.AdvProposition NNG.Levels.AdvAddition NNG.Levels.AdvMultiplication NNG.Levels.Inequality +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_GameServer_Commands(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Tutorial(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvMultiplication(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_GameServer_Commands(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Tutorial(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvMultiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG.c.trace b/server/nng/build/ir/NNG.c.trace new file mode 100644 index 0000000..813ce6e --- /dev/null +++ b/server/nng/build/ir/NNG.c.trace @@ -0,0 +1 @@ +7356427851528760174 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Doc/Definitions.c b/server/nng/build/ir/NNG/Doc/Definitions.c new file mode 100644 index 0000000..15f9cb0 --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Definitions.c @@ -0,0 +1,33 @@ +// Lean compiler output +// Module: NNG.Doc.Definitions +// Imports: Init GameServer.Commands +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_GameServer_Commands(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Doc_Definitions(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_GameServer_Commands(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Doc/Definitions.c.trace b/server/nng/build/ir/NNG/Doc/Definitions.c.trace new file mode 100644 index 0000000..a4001fc --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Definitions.c.trace @@ -0,0 +1 @@ +2922655963706979749 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Doc/Lemmas.c b/server/nng/build/ir/NNG/Doc/Lemmas.c new file mode 100644 index 0000000..0e18b5c --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Lemmas.c @@ -0,0 +1,33 @@ +// Lean compiler output +// Module: NNG.Doc.Lemmas +// Imports: Init GameServer.Commands +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_GameServer_Commands(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Doc_Lemmas(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_GameServer_Commands(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Doc/Lemmas.c.trace b/server/nng/build/ir/NNG/Doc/Lemmas.c.trace new file mode 100644 index 0000000..a348b20 --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Lemmas.c.trace @@ -0,0 +1 @@ +16771103639053061509 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Doc/Tactics.c b/server/nng/build/ir/NNG/Doc/Tactics.c new file mode 100644 index 0000000..896dd48 --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Tactics.c @@ -0,0 +1,33 @@ +// Lean compiler output +// Module: NNG.Doc.Tactics +// Imports: Init GameServer.Commands +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_GameServer_Commands(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Doc_Tactics(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_GameServer_Commands(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Doc/Tactics.c.trace b/server/nng/build/ir/NNG/Doc/Tactics.c.trace new file mode 100644 index 0000000..5a55535 --- /dev/null +++ b/server/nng/build/ir/NNG/Doc/Tactics.c.trace @@ -0,0 +1 @@ +5348243054589539109 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition.c b/server/nng/build/ir/NNG/Levels/Addition.c new file mode 100644 index 0000000..64c5101 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition.c @@ -0,0 +1,53 @@ +// Lean compiler output +// Module: NNG.Levels.Addition +// Imports: Init NNG.Levels.Addition.Level_1 NNG.Levels.Addition.Level_2 NNG.Levels.Addition.Level_3 NNG.Levels.Addition.Level_4 NNG.Levels.Addition.Level_5 NNG.Levels.Addition.Level_6 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__6(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition.c.trace b/server/nng/build/ir/NNG/Levels/Addition.c.trace new file mode 100644 index 0000000..97256e5 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition.c.trace @@ -0,0 +1 @@ +2084978910118405033 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_1.c b/server/nng/build/ir/NNG/Levels/Addition/Level_1.c new file mode 100644 index 0000000..4a48f7a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_1.c.trace new file mode 100644 index 0000000..09a9b3a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_1.c.trace @@ -0,0 +1 @@ +5269099431713252405 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_2.c b/server/nng/build/ir/NNG/Levels/Addition/Level_2.c new file mode 100644 index 0000000..86ebe99 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_2.c.trace new file mode 100644 index 0000000..14654bc --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_2.c.trace @@ -0,0 +1 @@ +17690234639472501785 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_3.c b/server/nng/build/ir/NNG/Levels/Addition/Level_3.c new file mode 100644 index 0000000..857252d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_3.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition NNG.Levels.Addition.Level_2 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__2(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_3.c.trace new file mode 100644 index 0000000..7d2c4df --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_3.c.trace @@ -0,0 +1 @@ +18302928042269315295 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_4.c b/server/nng/build/ir/NNG/Levels/Addition/Level_4.c new file mode 100644 index 0000000..7ec61f1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_4.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition NNG.Levels.Addition.Level_3 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__3(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_4.c.trace new file mode 100644 index 0000000..72e6acf --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_4.c.trace @@ -0,0 +1 @@ +12154535057277385306 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_5.c b/server/nng/build/ir/NNG/Levels/Addition/Level_5.c new file mode 100644 index 0000000..48b3da7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_5.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition NNG.Levels.Addition.Level_4 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__4(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_5.c.trace new file mode 100644 index 0000000..b660c1d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_5.c.trace @@ -0,0 +1 @@ +9679823460697032654 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_6.c b/server/nng/build/ir/NNG/Levels/Addition/Level_6.c new file mode 100644 index 0000000..9ae92fa --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_6.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Addition.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition NNG.Levels.Addition.Level_5 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Addition_Level__5(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Addition_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Addition_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Addition/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Addition/Level_6.c.trace new file mode 100644 index 0000000..13460c6 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Addition/Level_6.c.trace @@ -0,0 +1 @@ +17709657049698654137 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition.c b/server/nng/build/ir/NNG/Levels/AdvAddition.c new file mode 100644 index 0000000..7fb0302 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition.c @@ -0,0 +1,81 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition +// Imports: Init NNG.Levels.AdvAddition.Level_1 NNG.Levels.AdvAddition.Level_2 NNG.Levels.AdvAddition.Level_3 NNG.Levels.AdvAddition.Level_4 NNG.Levels.AdvAddition.Level_5 NNG.Levels.AdvAddition.Level_6 NNG.Levels.AdvAddition.Level_7 NNG.Levels.AdvAddition.Level_8 NNG.Levels.AdvAddition.Level_9 NNG.Levels.AdvAddition.Level_10 NNG.Levels.AdvAddition.Level_11 NNG.Levels.AdvAddition.Level_12 NNG.Levels.AdvAddition.Level_13 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__8(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__9(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__10(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__11(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__12(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvAddition_Level__13(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__9(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__10(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__11(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__12(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvAddition_Level__13(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition.c.trace new file mode 100644 index 0000000..9116234 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition.c.trace @@ -0,0 +1 @@ +7852774950450280612 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c new file mode 100644 index 0000000..28751bf --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c.trace new file mode 100644 index 0000000..d0094f7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_1.c.trace @@ -0,0 +1 @@ +9336372057508599589 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c new file mode 100644 index 0000000..067a4c0 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_10 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__10(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c.trace new file mode 100644 index 0000000..ed3ffc8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_10.c.trace @@ -0,0 +1 @@ +4008453200266032081 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c new file mode 100644 index 0000000..79c427c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_11 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__11(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c.trace new file mode 100644 index 0000000..5b253cc --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_11.c.trace @@ -0,0 +1 @@ +10015610238961501552 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c new file mode 100644 index 0000000..aa7eb84 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_12 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__12(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c.trace new file mode 100644 index 0000000..15d3040 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_12.c.trace @@ -0,0 +1 @@ +5389173862524826914 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c new file mode 100644 index 0000000..a398c07 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_13 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__13(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c.trace new file mode 100644 index 0000000..3535774 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_13.c.trace @@ -0,0 +1 @@ +185528048873600791 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c new file mode 100644 index 0000000..e92c5f0 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c.trace new file mode 100644 index 0000000..dfa5b14 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_2.c.trace @@ -0,0 +1 @@ +3507750203879559481 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c new file mode 100644 index 0000000..40d76ae --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c.trace new file mode 100644 index 0000000..410d78c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_3.c.trace @@ -0,0 +1 @@ +18314890376638277065 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c new file mode 100644 index 0000000..e87ab4f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c.trace new file mode 100644 index 0000000..16e6312 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_4.c.trace @@ -0,0 +1 @@ +2092365143561121648 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c new file mode 100644 index 0000000..87a21e8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c.trace new file mode 100644 index 0000000..ff557f6 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_5.c.trace @@ -0,0 +1 @@ +17123810049702200014 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c new file mode 100644 index 0000000..aa85e28 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c.trace new file mode 100644 index 0000000..b56da14 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_6.c.trace @@ -0,0 +1 @@ +9314509491732931710 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c new file mode 100644 index 0000000..e357d7d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c.trace new file mode 100644 index 0000000..2d90327 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_7.c.trace @@ -0,0 +1 @@ +13172030794097753806 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c new file mode 100644 index 0000000..8e82ba2 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c.trace new file mode 100644 index 0000000..c4f1af7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_8.c.trace @@ -0,0 +1 @@ +10314181165617171139 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c new file mode 100644 index 0000000..9f357c3 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvAddition.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvAddition_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c.trace new file mode 100644 index 0000000..e3e3b96 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvAddition/Level_9.c.trace @@ -0,0 +1 @@ +8205318715931175597 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication.c b/server/nng/build/ir/NNG/Levels/AdvMultiplication.c new file mode 100644 index 0000000..fd5d855 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.AdvMultiplication +// Imports: Init NNG.Levels.AdvMultiplication.Level_1 NNG.Levels.AdvMultiplication.Level_2 NNG.Levels.AdvMultiplication.Level_3 NNG.Levels.AdvMultiplication.Level_4 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvMultiplication_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvMultiplication_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvMultiplication_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvMultiplication_Level__4(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvMultiplication(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvMultiplication_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvMultiplication_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvMultiplication_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvMultiplication_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication.c.trace b/server/nng/build/ir/NNG/Levels/AdvMultiplication.c.trace new file mode 100644 index 0000000..c00fc7d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication.c.trace @@ -0,0 +1 @@ +5627580921265871323 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c new file mode 100644 index 0000000..a93a197 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvMultiplication.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvMultiplication_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c.trace new file mode 100644 index 0000000..fcd4fe6 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_1.c.trace @@ -0,0 +1 @@ +5496292641504121726 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c new file mode 100644 index 0000000..ecd4bc8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvMultiplication.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvMultiplication_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c.trace new file mode 100644 index 0000000..b982607 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_2.c.trace @@ -0,0 +1 @@ +3065456568864785697 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c new file mode 100644 index 0000000..5f8240e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvMultiplication.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvMultiplication_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c.trace new file mode 100644 index 0000000..63f9ad3 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_3.c.trace @@ -0,0 +1 @@ +11074674160667156308 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c new file mode 100644 index 0000000..0de9924 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvMultiplication.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvMultiplication_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c.trace new file mode 100644 index 0000000..428ebc8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvMultiplication/Level_4.c.trace @@ -0,0 +1 @@ +5171635906789131558 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition.c b/server/nng/build/ir/NNG/Levels/AdvProposition.c new file mode 100644 index 0000000..421a740 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition.c @@ -0,0 +1,69 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition +// Imports: Init NNG.Levels.AdvProposition.Level_1 NNG.Levels.AdvProposition.Level_2 NNG.Levels.AdvProposition.Level_3 NNG.Levels.AdvProposition.Level_4 NNG.Levels.AdvProposition.Level_5 NNG.Levels.AdvProposition.Level_6 NNG.Levels.AdvProposition.Level_7 NNG.Levels.AdvProposition.Level_8 NNG.Levels.AdvProposition.Level_9 NNG.Levels.AdvProposition.Level_10 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__8(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__9(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_AdvProposition_Level__10(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__9(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_AdvProposition_Level__10(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition.c.trace new file mode 100644 index 0000000..4e9a102 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition.c.trace @@ -0,0 +1 @@ +9478676650839776721 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c new file mode 100644 index 0000000..b33ea5a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c.trace new file mode 100644 index 0000000..1fa48a1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_1.c.trace @@ -0,0 +1 @@ +13140666477521992594 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c new file mode 100644 index 0000000..8083a4c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_10 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__10(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c.trace new file mode 100644 index 0000000..790c7bd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_10.c.trace @@ -0,0 +1 @@ +18203712100298108367 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c new file mode 100644 index 0000000..306eabe --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c.trace new file mode 100644 index 0000000..f2787fb --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_2.c.trace @@ -0,0 +1 @@ +10022829939796104452 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c new file mode 100644 index 0000000..6b62118 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c.trace new file mode 100644 index 0000000..9e0f004 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_3.c.trace @@ -0,0 +1 @@ +1967301918816512059 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c new file mode 100644 index 0000000..f7ecc78 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c.trace new file mode 100644 index 0000000..c2fe35c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_4.c.trace @@ -0,0 +1 @@ +16129653996493781623 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c new file mode 100644 index 0000000..4b69e18 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c.trace new file mode 100644 index 0000000..30bf614 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_5.c.trace @@ -0,0 +1 @@ +16436512257645906503 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c new file mode 100644 index 0000000..51c2aca --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases Mathlib.Tactic.LeftRight +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +lean_object* initialize_Mathlib_Tactic_LeftRight(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Mathlib_Tactic_LeftRight(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c.trace new file mode 100644 index 0000000..bf05509 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_6.c.trace @@ -0,0 +1 @@ +14208111587323885963 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c new file mode 100644 index 0000000..23b5137 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases Mathlib.Tactic.LeftRight +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +lean_object* initialize_Mathlib_Tactic_LeftRight(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Mathlib_Tactic_LeftRight(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c.trace new file mode 100644 index 0000000..807ca0c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_7.c.trace @@ -0,0 +1 @@ +8730344058151551457 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c new file mode 100644 index 0000000..a24c8f9 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases Mathlib.Tactic.LeftRight +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +lean_object* initialize_Mathlib_Tactic_LeftRight(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Mathlib_Tactic_LeftRight(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c.trace new file mode 100644 index 0000000..074308d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_8.c.trace @@ -0,0 +1 @@ +14257091850430971994 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c new file mode 100644 index 0000000..9b02e9b --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.AdvProposition.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition Std.Tactic.RCases NNG.MyNat.Theorems.Proposition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Std_Tactic_RCases(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Proposition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_AdvProposition_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Std_Tactic_RCases(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Proposition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c.trace new file mode 100644 index 0000000..34aee37 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/AdvProposition/Level_9.c.trace @@ -0,0 +1 @@ +14967413771991349992 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function.c b/server/nng/build/ir/NNG/Levels/Function.c new file mode 100644 index 0000000..1096fb8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function.c @@ -0,0 +1,65 @@ +// Lean compiler output +// Module: NNG.Levels.Function +// Imports: Init NNG.Levels.Function.Level_1 NNG.Levels.Function.Level_2 NNG.Levels.Function.Level_3 NNG.Levels.Function.Level_4 NNG.Levels.Function.Level_5 NNG.Levels.Function.Level_6 NNG.Levels.Function.Level_7 NNG.Levels.Function.Level_8 NNG.Levels.Function.Level_9 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__8(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Function_Level__9(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Function_Level__9(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function.c.trace b/server/nng/build/ir/NNG/Levels/Function.c.trace new file mode 100644 index 0000000..a011cea --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function.c.trace @@ -0,0 +1 @@ +4955068752717367929 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_1.c b/server/nng/build/ir/NNG/Levels/Function/Level_1.c new file mode 100644 index 0000000..60c18c8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_1.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Theorems.Addition NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_1.c.trace new file mode 100644 index 0000000..3648ee3 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_1.c.trace @@ -0,0 +1 @@ +11635906400192042058 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_2.c b/server/nng/build/ir/NNG/Levels/Function/Level_2.c new file mode 100644 index 0000000..b5fd02a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_2.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Theorems.Addition NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_2.c.trace new file mode 100644 index 0000000..2f74304 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_2.c.trace @@ -0,0 +1 @@ +5739902419023245944 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_3.c b/server/nng/build/ir/NNG/Levels/Function/Level_3.c new file mode 100644 index 0000000..5e5c417 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_3.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Theorems.Addition NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_3.c.trace new file mode 100644 index 0000000..3765006 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_3.c.trace @@ -0,0 +1 @@ +13295869598671621401 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_4.c b/server/nng/build/ir/NNG/Levels/Function/Level_4.c new file mode 100644 index 0000000..c9563c7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_4.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Theorems.Addition NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_4.c.trace new file mode 100644 index 0000000..f73245d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_4.c.trace @@ -0,0 +1 @@ +2060723493075565450 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_5.c b/server/nng/build/ir/NNG/Levels/Function/Level_5.c new file mode 100644 index 0000000..73ca291 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_5.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Theorems.Addition NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_5.c.trace new file mode 100644 index 0000000..348e271 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_5.c.trace @@ -0,0 +1 @@ +33560334747064612 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_6.c b/server/nng/build/ir/NNG/Levels/Function/Level_6.c new file mode 100644 index 0000000..8cfe33e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_6.c.trace new file mode 100644 index 0000000..4fcc927 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_6.c.trace @@ -0,0 +1 @@ +11236535691868165392 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_7.c b/server/nng/build/ir/NNG/Levels/Function/Level_7.c new file mode 100644 index 0000000..fa6a455 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_7.c.trace new file mode 100644 index 0000000..81404ca --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_7.c.trace @@ -0,0 +1 @@ +13833688845280623014 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_8.c b/server/nng/build/ir/NNG/Levels/Function/Level_8.c new file mode 100644 index 0000000..a7ee1bb --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_8.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_8.c.trace new file mode 100644 index 0000000..247b254 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_8.c.trace @@ -0,0 +1 @@ +3072509448285891874 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_9.c b/server/nng/build/ir/NNG/Levels/Function/Level_9.c new file mode 100644 index 0000000..4a3f731 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_9.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Function.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Function_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Function/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/Function/Level_9.c.trace new file mode 100644 index 0000000..a7ade54 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Function/Level_9.c.trace @@ -0,0 +1 @@ +11794545348629460374 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality.c b/server/nng/build/ir/NNG/Levels/Inequality.c new file mode 100644 index 0000000..19c9284 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality.c @@ -0,0 +1,97 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality +// Imports: Init NNG.Levels.Inequality.Level_1 NNG.Levels.Inequality.Level_2 NNG.Levels.Inequality.Level_3 NNG.Levels.Inequality.Level_4 NNG.Levels.Inequality.Level_5 NNG.Levels.Inequality.Level_6 NNG.Levels.Inequality.Level_7 NNG.Levels.Inequality.Level_8 NNG.Levels.Inequality.Level_9 NNG.Levels.Inequality.Level_10 NNG.Levels.Inequality.Level_11 NNG.Levels.Inequality.Level_12 NNG.Levels.Inequality.Level_13 NNG.Levels.Inequality.Level_14 NNG.Levels.Inequality.Level_15 NNG.Levels.Inequality.Level_16 NNG.Levels.Inequality.Level_17 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__8(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__9(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__10(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__11(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__12(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__13(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__14(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__15(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__16(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Inequality_Level__17(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__9(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__10(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__11(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__12(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__13(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__14(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__15(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__16(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Inequality_Level__17(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality.c.trace b/server/nng/build/ir/NNG/Levels/Inequality.c.trace new file mode 100644 index 0000000..55184cc --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality.c.trace @@ -0,0 +1 @@ +9336489098668184658 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c new file mode 100644 index 0000000..93799f1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c.trace new file mode 100644 index 0000000..b5ffa38 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_1.c.trace @@ -0,0 +1 @@ +15715418939533793162 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c new file mode 100644 index 0000000..32776cd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_10 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__10(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c.trace new file mode 100644 index 0000000..eb78d47 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_10.c.trace @@ -0,0 +1 @@ +8366872987603129236 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c new file mode 100644 index 0000000..1d41270 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_11 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__11(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c.trace new file mode 100644 index 0000000..3e01f72 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_11.c.trace @@ -0,0 +1 @@ +9104254495681588724 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c new file mode 100644 index 0000000..3b5425a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_12 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__12(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c.trace new file mode 100644 index 0000000..5115864 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_12.c.trace @@ -0,0 +1 @@ +14766865931000247685 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c new file mode 100644 index 0000000..bf62bc0 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_13 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__13(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c.trace new file mode 100644 index 0000000..e9d270e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_13.c.trace @@ -0,0 +1 @@ +7236720961247687624 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c new file mode 100644 index 0000000..a76a602 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_14 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__14(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c.trace new file mode 100644 index 0000000..e65fa47 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_14.c.trace @@ -0,0 +1 @@ +17080990698887132932 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c new file mode 100644 index 0000000..3c9173d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_15 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__15(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c.trace new file mode 100644 index 0000000..9a7cd4e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_15.c.trace @@ -0,0 +1 @@ +15808132813580510808 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c new file mode 100644 index 0000000..068662e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_16 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__16(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c.trace new file mode 100644 index 0000000..65a9805 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_16.c.trace @@ -0,0 +1 @@ +7637579646193566177 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c new file mode 100644 index 0000000..7077e0f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_17 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__17(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c.trace new file mode 100644 index 0000000..1983d9c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_17.c.trace @@ -0,0 +1 @@ +14135338231934509378 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c new file mode 100644 index 0000000..5d37942 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c.trace new file mode 100644 index 0000000..6ada09d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_2.c.trace @@ -0,0 +1 @@ +10180719735176429031 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c new file mode 100644 index 0000000..3d54808 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c.trace new file mode 100644 index 0000000..3e40b0c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_3.c.trace @@ -0,0 +1 @@ +10425666160152371884 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c new file mode 100644 index 0000000..0e8a92b --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c.trace new file mode 100644 index 0000000..8aeaca9 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_4.c.trace @@ -0,0 +1 @@ +5262542741621948205 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c new file mode 100644 index 0000000..d3713ae --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c.trace new file mode 100644 index 0000000..e6f0c73 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_5.c.trace @@ -0,0 +1 @@ +10099871401285119100 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c new file mode 100644 index 0000000..0d6d71b --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c.trace new file mode 100644 index 0000000..02ff8cd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_6.c.trace @@ -0,0 +1 @@ +18291074078086778850 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c new file mode 100644 index 0000000..8e416bf --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c.trace new file mode 100644 index 0000000..ea65ccd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_7.c.trace @@ -0,0 +1 @@ +4948452312372643925 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c new file mode 100644 index 0000000..8b59cbd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c.trace new file mode 100644 index 0000000..4675054 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_8.c.trace @@ -0,0 +1 @@ +8910944482383625099 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c b/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c new file mode 100644 index 0000000..482d92d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Inequality.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Inequality_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c.trace new file mode 100644 index 0000000..3ed8de7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Inequality/Level_9.c.trace @@ -0,0 +1 @@ +10084756629938233881 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication.c b/server/nng/build/ir/NNG/Levels/Multiplication.c new file mode 100644 index 0000000..65d0279 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication.c @@ -0,0 +1,65 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication +// Imports: Init NNG.Levels.Multiplication.Level_1 NNG.Levels.Multiplication.Level_2 NNG.Levels.Multiplication.Level_3 NNG.Levels.Multiplication.Level_4 NNG.Levels.Multiplication.Level_5 NNG.Levels.Multiplication.Level_6 NNG.Levels.Multiplication.Level_7 NNG.Levels.Multiplication.Level_8 NNG.Levels.Multiplication.Level_9 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__8(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Multiplication_Level__9(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Multiplication_Level__9(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication.c.trace new file mode 100644 index 0000000..aa0fcb8 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication.c.trace @@ -0,0 +1 @@ +15100919068659915784 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c new file mode 100644 index 0000000..28fe579 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c.trace new file mode 100644 index 0000000..3ceaf84 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_1.c.trace @@ -0,0 +1 @@ +2681194911731925232 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c new file mode 100644 index 0000000..4944242 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c.trace new file mode 100644 index 0000000..51a6198 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_2.c.trace @@ -0,0 +1 @@ +10245843345607907477 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c new file mode 100644 index 0000000..a75be3f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c.trace new file mode 100644 index 0000000..35f0e4e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_3.c.trace @@ -0,0 +1 @@ +8940547588455067611 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c new file mode 100644 index 0000000..ac85175 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c.trace new file mode 100644 index 0000000..a872f1f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_4.c.trace @@ -0,0 +1 @@ +14993641720182264605 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c new file mode 100644 index 0000000..b5b1608 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c.trace new file mode 100644 index 0000000..8105ffd --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_5.c.trace @@ -0,0 +1 @@ +18175551488241716216 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c new file mode 100644 index 0000000..ea41cab --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c.trace new file mode 100644 index 0000000..2a12214 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_6.c.trace @@ -0,0 +1 @@ +14531862140867195758 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c new file mode 100644 index 0000000..135c507 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c.trace new file mode 100644 index 0000000..ffc70ae --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_7.c.trace @@ -0,0 +1 @@ +15474257035701176495 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c new file mode 100644 index 0000000..0995e5b --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c.trace new file mode 100644 index 0000000..5757f7c --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_8.c.trace @@ -0,0 +1 @@ +3648854208530401287 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c b/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c new file mode 100644 index 0000000..3fec2ad --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Multiplication.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Multiplication_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c.trace new file mode 100644 index 0000000..2b1f5bf --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Multiplication/Level_9.c.trace @@ -0,0 +1 @@ +4975536308483488989 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power.c b/server/nng/build/ir/NNG/Levels/Power.c new file mode 100644 index 0000000..bd1a706 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power.c @@ -0,0 +1,61 @@ +// Lean compiler output +// Module: NNG.Levels.Power +// Imports: Init NNG.Levels.Power.Level_1 NNG.Levels.Power.Level_2 NNG.Levels.Power.Level_3 NNG.Levels.Power.Level_4 NNG.Levels.Power.Level_5 NNG.Levels.Power.Level_6 NNG.Levels.Power.Level_7 NNG.Levels.Power.Level_8 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Power_Level__8(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Power_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power.c.trace b/server/nng/build/ir/NNG/Levels/Power.c.trace new file mode 100644 index 0000000..30f497d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power.c.trace @@ -0,0 +1 @@ +12255441869344750286 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_1.c b/server/nng/build/ir/NNG/Levels/Power/Level_1.c new file mode 100644 index 0000000..ef1b1c9 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_1.c.trace new file mode 100644 index 0000000..1d06499 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_1.c.trace @@ -0,0 +1 @@ +3557218418934706832 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_2.c b/server/nng/build/ir/NNG/Levels/Power/Level_2.c new file mode 100644 index 0000000..9079e5b --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_2.c.trace new file mode 100644 index 0000000..f8ba540 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_2.c.trace @@ -0,0 +1 @@ +3161955687484215514 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_3.c b/server/nng/build/ir/NNG/Levels/Power/Level_3.c new file mode 100644 index 0000000..20b2663 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_3.c.trace new file mode 100644 index 0000000..e72a579 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_3.c.trace @@ -0,0 +1 @@ +13739636179189224786 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_4.c b/server/nng/build/ir/NNG/Levels/Power/Level_4.c new file mode 100644 index 0000000..bfe83ea --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_4.c.trace new file mode 100644 index 0000000..9672833 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_4.c.trace @@ -0,0 +1 @@ +2643256504804179665 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_5.c b/server/nng/build/ir/NNG/Levels/Power/Level_5.c new file mode 100644 index 0000000..76575a7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_5.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_5.c.trace new file mode 100644 index 0000000..b91249f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_5.c.trace @@ -0,0 +1 @@ +14401556251889401930 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_6.c b/server/nng/build/ir/NNG/Levels/Power/Level_6.c new file mode 100644 index 0000000..b3f3fd1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_6.c.trace new file mode 100644 index 0000000..83f1ba1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_6.c.trace @@ -0,0 +1 @@ +16899530818829903575 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_7.c b/server/nng/build/ir/NNG/Levels/Power/Level_7.c new file mode 100644 index 0000000..c8b95d0 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_7.c.trace new file mode 100644 index 0000000..36ca048 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_7.c.trace @@ -0,0 +1 @@ +8728766979918631633 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_8.c b/server/nng/build/ir/NNG/Levels/Power/Level_8.c new file mode 100644 index 0000000..aa403b9 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_8.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Power.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Power_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Power/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/Power/Level_8.c.trace new file mode 100644 index 0000000..83efa59 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Power/Level_8.c.trace @@ -0,0 +1 @@ +16000363894567288792 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition.c b/server/nng/build/ir/NNG/Levels/Proposition.c new file mode 100644 index 0000000..f31e1eb --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition.c @@ -0,0 +1,61 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition +// Imports: Init NNG.Levels.Proposition.Level_1 NNG.Levels.Proposition.Level_2 NNG.Levels.Proposition.Level_3 NNG.Levels.Proposition.Level_4 NNG.Levels.Proposition.Level_5 NNG.Levels.Proposition.Level_6 NNG.Levels.Proposition.Level_7 NNG.Levels.Proposition.Level_8 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__4(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__5(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__6(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__7(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Proposition_Level__8(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__5(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__6(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__7(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Proposition_Level__8(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition.c.trace b/server/nng/build/ir/NNG/Levels/Proposition.c.trace new file mode 100644 index 0000000..91cc1cc --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition.c.trace @@ -0,0 +1 @@ +8034725322126254406 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c new file mode 100644 index 0000000..5da8568 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c.trace new file mode 100644 index 0000000..71d00c7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_1.c.trace @@ -0,0 +1 @@ +18179347340463669579 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c new file mode 100644 index 0000000..23ab12d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c.trace new file mode 100644 index 0000000..9622df1 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_2.c.trace @@ -0,0 +1 @@ +13217430201083326791 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c new file mode 100644 index 0000000..6ac78d7 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c.trace new file mode 100644 index 0000000..32f55cb --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_3.c.trace @@ -0,0 +1 @@ +5299063203734346172 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c new file mode 100644 index 0000000..ce268b9 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c.trace new file mode 100644 index 0000000..619fbad --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_4.c.trace @@ -0,0 +1 @@ +7415905544244480042 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c new file mode 100644 index 0000000..b4b1602 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_5 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__5(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c.trace new file mode 100644 index 0000000..067710f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_5.c.trace @@ -0,0 +1 @@ +10613228186954229021 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c new file mode 100644 index 0000000..456f58a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_6 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__6(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c.trace new file mode 100644 index 0000000..a0c149e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_6.c.trace @@ -0,0 +1 @@ +7894357058058824740 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c new file mode 100644 index 0000000..8281a79 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_7 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__7(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c.trace new file mode 100644 index 0000000..f619780 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_7.c.trace @@ -0,0 +1 @@ +16656846323211551510 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c new file mode 100644 index 0000000..350ff4d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c @@ -0,0 +1,41 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_8 +// Imports: Init NNG.Metadata NNG.MyNat.Addition NNG.MyNat.Theorems.Proposition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Theorems_Proposition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__8(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Theorems_Proposition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c.trace new file mode 100644 index 0000000..ba8e72d --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_8.c.trace @@ -0,0 +1 @@ +13601220282574937828 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c b/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c new file mode 100644 index 0000000..11f600f --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Proposition.Level_9 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Proposition_Level__9(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c.trace b/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c.trace new file mode 100644 index 0000000..4a5bc97 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Proposition/Level_9.c.trace @@ -0,0 +1 @@ +15399361750882572321 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Tutorial.c b/server/nng/build/ir/NNG/Levels/Tutorial.c new file mode 100644 index 0000000..a24d933 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial.c @@ -0,0 +1,45 @@ +// Lean compiler output +// Module: NNG.Levels.Tutorial +// Imports: Init NNG.Levels.Tutorial.Level_1 NNG.Levels.Tutorial.Level_2 NNG.Levels.Tutorial.Level_3 NNG.Levels.Tutorial.Level_4 +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Tutorial_Level__1(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Tutorial_Level__2(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Tutorial_Level__3(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Levels_Tutorial_Level__4(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Tutorial(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Tutorial_Level__1(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Tutorial_Level__2(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Tutorial_Level__3(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Levels_Tutorial_Level__4(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Tutorial.c.trace b/server/nng/build/ir/NNG/Levels/Tutorial.c.trace new file mode 100644 index 0000000..f666963 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial.c.trace @@ -0,0 +1 @@ +1595615440839641244 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c b/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c new file mode 100644 index 0000000..ae6752a --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Tutorial.Level_1 +// Imports: Init NNG.Metadata NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Tutorial_Level__1(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c.trace b/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c.trace new file mode 100644 index 0000000..029fdab --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_1.c.trace @@ -0,0 +1 @@ +17057151196775041350 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c b/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c new file mode 100644 index 0000000..6244a6e --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Tutorial.Level_2 +// Imports: Init NNG.Metadata NNG.MyNat.Multiplication +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Tutorial_Level__2(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Multiplication(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c.trace b/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c.trace new file mode 100644 index 0000000..f0c7b10 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_2.c.trace @@ -0,0 +1 @@ +2087975388406110178 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c b/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c new file mode 100644 index 0000000..455b9b0 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Tutorial.Level_3 +// Imports: Init NNG.Metadata NNG.MyNat.Definition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Definition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Tutorial_Level__3(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Definition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c.trace b/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c.trace new file mode 100644 index 0000000..4568320 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_3.c.trace @@ -0,0 +1 @@ +2143617200443064964 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c b/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c new file mode 100644 index 0000000..6d85b72 --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.Levels.Tutorial.Level_4 +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Levels_Tutorial_Level__4(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c.trace b/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c.trace new file mode 100644 index 0000000..03fc4ca --- /dev/null +++ b/server/nng/build/ir/NNG/Levels/Tutorial/Level_4.c.trace @@ -0,0 +1 @@ +7407492338022565581 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Metadata.c b/server/nng/build/ir/NNG/Metadata.c new file mode 100644 index 0000000..364d1ee --- /dev/null +++ b/server/nng/build/ir/NNG/Metadata.c @@ -0,0 +1,49 @@ +// Lean compiler output +// Module: NNG.Metadata +// Imports: Init GameServer.Commands NNG.Doc.Tactics NNG.Doc.Lemmas NNG.Doc.Definitions NNG.Modifications.Tactics +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_GameServer_Commands(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Doc_Tactics(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Doc_Lemmas(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Doc_Definitions(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Modifications_Tactics(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_GameServer_Commands(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Doc_Tactics(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Doc_Lemmas(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Doc_Definitions(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Modifications_Tactics(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Metadata.c.trace b/server/nng/build/ir/NNG/Metadata.c.trace new file mode 100644 index 0000000..0a81af6 --- /dev/null +++ b/server/nng/build/ir/NNG/Metadata.c.trace @@ -0,0 +1 @@ +10126315224814379241 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/Modifications/Tactics.c b/server/nng/build/ir/NNG/Modifications/Tactics.c new file mode 100644 index 0000000..23f8c1d --- /dev/null +++ b/server/nng/build/ir/NNG/Modifications/Tactics.c @@ -0,0 +1,3061 @@ +// Lean compiler output +// Module: NNG.Modifications.Tactics +// Imports: Init Mathlib.Lean.Expr.Basic NNG.MyNat.Addition Lean.Elab.Tactic.Basic +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* l_Lean_Meta_getElimInfo(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Meta_FVarSubst_apply(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_induction; +lean_object* l___private_Init_Util_0__outOfBounds___rarg(lean_object*); +static lean_object* l_MyNat_induction___closed__14; +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7; +lean_object* l_Lean_Elab_Tactic_withRWRulesSeq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Meta_throwTacticEx___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_mk_empty_array_with_capacity(lean_object*); +lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(lean_object*, lean_object*); +static lean_object* l_MyNat_rfl___closed__4; +extern lean_object* l_Lean_Parser_Tactic_location; +static lean_object* l_MyNat_induction___closed__7; +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic_ElimApp_evalNames(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_expandOptLocation(lean_object*); +lean_object* l_Lean_Meta_mkGeneralizationForbiddenSet(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_evalRfl___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Expr_sort___override(lean_object*); +lean_object* lean_array_push(lean_object*, lean_object*); +lean_object* l_Lean_MVarId_assign___at_Lean_Elab_Tactic_closeMainGoal___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_mk_array(lean_object*, lean_object*); +uint8_t lean_usize_dec_eq(size_t, size_t); +static lean_object* l_MyNat_induction___closed__11; +lean_object* l_Lean_Syntax_getArgs(lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__10; +lean_object* l_Lean_replaceRef(lean_object*, lean_object*); +extern lean_object* l_Lean_Parser_Tactic_casesTarget; +lean_object* lean_array_fget(lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_getMainGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_MVarId_getTag(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__24; +lean_object* l_Lean_MVarId_refl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*); +static lean_object* l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1; +LEAN_EXPORT lean_object* l_MyNat_evalRfl(lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__7; +static lean_object* l_MyNat_rewriteSeq___closed__5; +static lean_object* l_MyNat_induction___closed__12; +lean_object* l_Lean_Elab_Tactic_throwNoGoalsToBeSolved___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_throwUnsupportedSyntax___at_Std_Tactic___aux__Std__Tactic__ShowTerm______elabRules__Std__Tactic__showTermTac__1___spec__1___rarg(lean_object*); +lean_object* l_Lean_MVarId_withContext___at_Lean_Elab_Term_logUnassignedUsingErrorInfos___spec__4___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__12; +static lean_object* l_MyNat_evalRewriteSeq___lambda__2___closed__1; +lean_object* l_Lean_Elab_Tactic_ElimApp_mkElimApp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_List_appendTR___rarg(lean_object*, lean_object*); +size_t lean_usize_of_nat(lean_object*); +lean_object* l_Lean_Elab_Tactic_getNameOfIdent_x27(lean_object*); +lean_object* l_Lean_Elab_Tactic_getUnsolvedGoals(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__15; +static lean_object* l_MyNat_induction___closed__17; +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___boxed(lean_object**); +static lean_object* l_MyNat_rewriteSeq___closed__11; +lean_object* l_Lean_Elab_Tactic_withLocation(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_rewriteLocalDecl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_SourceInfo_fromRef(lean_object*, uint8_t); +static lean_object* l_MyNat_rewriteSeq___closed__1; +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4; +static lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1; +static lean_object* l_MyNat_induction___closed__8; +static lean_object* l_MyNat_evalRewriteSeq___lambda__2___closed__4; +extern lean_object* l_Lean_Parser_Tactic_rwRuleSeq; +lean_object* l_Lean_Elab_Tactic_elabCasesTargets(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_withMainContext___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6; +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_array_to_list(lean_object*, lean_object*); +lean_object* l_Lean_MVarId_withContext___at_Lean_Elab_Tactic_withMainContext___spec__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__20; +static lean_object* l_MyNat_induction___closed__9; +LEAN_EXPORT lean_object* l_MyNat_evalRfl___boxed(lean_object*); +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__3(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +extern lean_object* l_Lean_levelZero; +lean_object* l_Lean_MVarId_revert(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +extern lean_object* l_Lean_instInhabitedExpr; +lean_object* l_Lean_Meta_addImplicitTargets(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rfl___closed__2; +static lean_object* l_MyNat_induction___closed__15; +static lean_object* l_MyNat_rewriteSeq___closed__6; +lean_object* l_Lean_Expr_addLocalVarInfoForBinderIdent(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Syntax_getSepArgs(lean_object*); +static lean_object* l_MyNat_induction___closed__16; +lean_object* l_Lean_Name_str___override(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__22; +lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*); +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1; +static lean_object* l_MyNat_rfl___closed__1; +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__3; +static lean_object* l_MyNat_evalRfl___rarg___closed__1; +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2; +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5; +lean_object* l_Array_append___rarg(lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_rewriteTarget___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__14; +static lean_object* l_MyNat_induction___closed__10; +static lean_object* l_MyNat_rewriteSeq___closed__9; +lean_object* l_Lean_Name_mkStr6(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__1; +static lean_object* l_MyNat_rewriteSeq___closed__2; +lean_object* l_Lean_Meta_introNCore(lean_object*, lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8; +static lean_object* l_MyNat_evalRewriteSeq___lambda__2___closed__5; +static lean_object* l_MyNat_induction___closed__5; +static lean_object* l_MyNat_rewriteSeq___closed__4; +static lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2; +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +uint8_t lean_nat_dec_lt(lean_object*, lean_object*); +static lean_object* l_MyNat_evalRewriteSeq___lambda__3___closed__1; +lean_object* l_Lean_Name_mkStr2(lean_object*, lean_object*); +static lean_object* l_MyNat_rfl___closed__3; +static lean_object* l_MyNat_induction___closed__21; +lean_object* l_Lean_Meta_getFVarSetToGeneralize(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Syntax_node1(lean_object*, lean_object*, lean_object*); +extern lean_object* l_Lean_binderIdent; +lean_object* l_Lean_RBTree_toArray___at_Lean_Meta_getFVarsToGeneralize___spec__1(lean_object*); +static lean_object* l_MyNat_induction___closed__4; +static lean_object* l_MyNat_induction___closed__2; +lean_object* lean_nat_sub(lean_object*, lean_object*); +lean_object* l_Lean_MVarId_tryClear(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__23; +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic_ElimApp_evalNames___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_elabRewriteConfig(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_List_splitAtD___rarg(lean_object*, lean_object*, lean_object*); +lean_object* l_List_reverse___rarg(lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__3; +LEAN_EXPORT lean_object* l_MyNat_rfl; +size_t lean_usize_add(size_t, size_t); +static lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1; +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__13; +LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_array_uget(lean_object*, size_t); +lean_object* l_Lean_Expr_fvar___override(lean_object*); +static lean_object* l_MyNat_induction___closed__19; +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_rewriteSeq___closed__8; +extern lean_object* l_Lean_Parser_Tactic_config; +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9; +lean_object* l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_ElimApp_getAltNumFields(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_evalRfl___rarg___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Meta_sortFVarIds(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3; +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_evalInduction_checkTargets(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* lean_array_get_size(lean_object*); +lean_object* l_Array_mapMUnsafe_map___at_Lean_Elab_Tactic_evalInduction___spec__2(size_t, size_t, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_rewriteSeq; +uint8_t lean_nat_dec_le(lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__6; +uint8_t lean_usize_dec_lt(size_t, size_t); +lean_object* l_Lean_Meta_Cases_unifyEqs_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_setGoals(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2(lean_object*, lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__18; +LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__1(lean_object*, lean_object*); +lean_object* l_Lean_Expr_mvarId_x21(lean_object*); +static lean_object* l_MyNat_evalRewriteSeq___lambda__2___closed__3; +lean_object* l_Lean_Elab_Tactic_replaceMainGoal(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Elab_Tactic_ElimApp_setMotiveArg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_evalRewriteSeq___lambda__2___closed__2; +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*); +static lean_object* l_MyNat_induction___closed__13; +static lean_object* _init_l_MyNat_rewriteSeq___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("MyNat", 5); +return x_1; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__2() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("rewriteSeq", 10); +return x_1; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__3() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__1; +x_2 = l_MyNat_rewriteSeq___closed__2; +x_3 = l_Lean_Name_mkStr2(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__4() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("andthen", 7); +return x_1; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__5() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_MyNat_rewriteSeq___closed__4; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__6() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("rw", 2); +return x_1; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__7() { +_start: +{ +lean_object* x_1; uint8_t x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__6; +x_2 = 0; +x_3 = lean_alloc_ctor(6, 1, 1); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__8() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("optional", 8); +return x_1; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__9() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_MyNat_rewriteSeq___closed__8; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__10() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__9; +x_2 = l_Lean_Parser_Tactic_config; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__11() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_rewriteSeq___closed__7; +x_3 = l_MyNat_rewriteSeq___closed__10; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__12() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_rewriteSeq___closed__11; +x_3 = l_Lean_Parser_Tactic_rwRuleSeq; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__13() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__9; +x_2 = l_Lean_Parser_Tactic_location; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__14() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_rewriteSeq___closed__12; +x_3 = l_MyNat_rewriteSeq___closed__13; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_rewriteSeq___closed__15() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__3; +x_2 = lean_unsigned_to_nat(1022u); +x_3 = l_MyNat_rewriteSeq___closed__14; +x_4 = lean_alloc_ctor(3, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_rewriteSeq() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_rewriteSeq___closed__15; +return x_1; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +lean_object* x_14; +x_14 = l_Lean_Elab_Tactic_rewriteLocalDecl(x_1, x_2, x_4, x_3, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +return x_14; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__2___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("rewrite", 7); +return x_1; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__2___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_MyNat_evalRewriteSeq___lambda__2___closed__1; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__2___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("did not find instance of the pattern in the current goal", 56); +return x_1; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__2___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_evalRewriteSeq___lambda__2___closed__3; +x_2 = lean_alloc_ctor(3, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__2___closed__5() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_evalRewriteSeq___lambda__2___closed__4; +x_2 = lean_alloc_ctor(0, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { +_start: +{ +lean_object* x_11; lean_object* x_12; lean_object* x_13; +x_11 = l_MyNat_evalRewriteSeq___lambda__2___closed__2; +x_12 = l_MyNat_evalRewriteSeq___lambda__2___closed__5; +x_13 = l_Lean_Meta_throwTacticEx___rarg(x_11, x_1, x_12, x_6, x_7, x_8, x_9, x_10); +return x_13; +} +} +static lean_object* _init_l_MyNat_evalRewriteSeq___lambda__3___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l_MyNat_evalRewriteSeq___lambda__2___boxed), 10, 0); +return x_1; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__3(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; +x_14 = lean_box(x_3); +lean_inc(x_1); +lean_inc(x_4); +x_15 = lean_alloc_closure((void*)(l_MyNat_evalRewriteSeq___lambda__1___boxed), 13, 3); +lean_closure_set(x_15, 0, x_4); +lean_closure_set(x_15, 1, x_14); +lean_closure_set(x_15, 2, x_1); +x_16 = lean_box(x_3); +x_17 = lean_alloc_closure((void*)(l_Lean_Elab_Tactic_rewriteTarget___boxed), 12, 3); +lean_closure_set(x_17, 0, x_4); +lean_closure_set(x_17, 1, x_16); +lean_closure_set(x_17, 2, x_1); +x_18 = l_MyNat_evalRewriteSeq___lambda__3___closed__1; +x_19 = l_Lean_Elab_Tactic_withLocation(x_2, x_15, x_17, x_18, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +return x_19; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { +_start: +{ +lean_object* x_11; lean_object* x_12; lean_object* x_13; +x_11 = lean_unsigned_to_nat(1u); +x_12 = l_Lean_Syntax_getArg(x_1, x_11); +lean_inc(x_9); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +lean_inc(x_5); +lean_inc(x_4); +x_13 = l_Lean_Elab_Tactic_elabRewriteConfig(x_12, x_4, x_5, x_6, x_7, x_8, x_9, x_10); +lean_dec(x_12); +if (lean_obj_tag(x_13) == 0) +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; +x_14 = lean_ctor_get(x_13, 0); +lean_inc(x_14); +x_15 = lean_ctor_get(x_13, 1); +lean_inc(x_15); +lean_dec(x_13); +x_16 = lean_unsigned_to_nat(3u); +x_17 = l_Lean_Syntax_getArg(x_1, x_16); +x_18 = l_Lean_Elab_Tactic_expandOptLocation(x_17); +lean_dec(x_17); +x_19 = lean_unsigned_to_nat(0u); +x_20 = l_Lean_Syntax_getArg(x_1, x_19); +x_21 = lean_unsigned_to_nat(2u); +x_22 = l_Lean_Syntax_getArg(x_1, x_21); +x_23 = lean_alloc_closure((void*)(l_MyNat_evalRewriteSeq___lambda__3___boxed), 13, 2); +lean_closure_set(x_23, 0, x_14); +lean_closure_set(x_23, 1, x_18); +x_24 = l_Lean_Elab_Tactic_withRWRulesSeq(x_20, x_22, x_23, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_15); +lean_dec(x_22); +return x_24; +} +else +{ +uint8_t x_25; +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +x_25 = !lean_is_exclusive(x_13); +if (x_25 == 0) +{ +return x_13; +} +else +{ +lean_object* x_26; lean_object* x_27; lean_object* x_28; +x_26 = lean_ctor_get(x_13, 0); +x_27 = lean_ctor_get(x_13, 1); +lean_inc(x_27); +lean_inc(x_26); +lean_dec(x_13); +x_28 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_28, 0, x_26); +lean_ctor_set(x_28, 1, x_27); +return x_28; +} +} +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +uint8_t x_14; lean_object* x_15; +x_14 = lean_unbox(x_2); +lean_dec(x_2); +x_15 = l_MyNat_evalRewriteSeq___lambda__1(x_1, x_14, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +return x_15; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { +_start: +{ +lean_object* x_11; +x_11 = l_MyNat_evalRewriteSeq___lambda__2(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10); +lean_dec(x_9); +lean_dec(x_7); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +return x_11; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___lambda__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +uint8_t x_14; lean_object* x_15; +x_14 = lean_unbox(x_3); +lean_dec(x_3); +x_15 = l_MyNat_evalRewriteSeq___lambda__3(x_1, x_2, x_14, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +lean_dec(x_2); +return x_15; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRewriteSeq___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { +_start: +{ +lean_object* x_11; +x_11 = l_MyNat_evalRewriteSeq(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10); +lean_dec(x_1); +return x_11; +} +} +LEAN_EXPORT lean_object* l_List_mapTR_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__1(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_1) == 0) +{ +lean_object* x_3; +x_3 = l_List_reverse___rarg(x_2); +return x_3; +} +else +{ +uint8_t x_4; +x_4 = !lean_is_exclusive(x_1); +if (x_4 == 0) +{ +lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; +x_5 = lean_ctor_get(x_1, 0); +x_6 = lean_ctor_get(x_1, 1); +x_7 = lean_unsigned_to_nat(0u); +x_8 = l_Lean_Syntax_getArg(x_5, x_7); +lean_dec(x_5); +x_9 = l_Lean_Elab_Tactic_getNameOfIdent_x27(x_8); +lean_dec(x_8); +lean_ctor_set(x_1, 1, x_2); +lean_ctor_set(x_1, 0, x_9); +{ +lean_object* _tmp_0 = x_6; +lean_object* _tmp_1 = x_1; +x_1 = _tmp_0; +x_2 = _tmp_1; +} +goto _start; +} +else +{ +lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; +x_11 = lean_ctor_get(x_1, 0); +x_12 = lean_ctor_get(x_1, 1); +lean_inc(x_12); +lean_inc(x_11); +lean_dec(x_1); +x_13 = lean_unsigned_to_nat(0u); +x_14 = l_Lean_Syntax_getArg(x_11, x_13); +lean_dec(x_11); +x_15 = l_Lean_Elab_Tactic_getNameOfIdent_x27(x_14); +lean_dec(x_14); +x_16 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_16, 0, x_15); +lean_ctor_set(x_16, 1, x_2); +x_1 = x_12; +x_2 = x_16; +goto _start; +} +} +} +} +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, size_t x_4, size_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +uint8_t x_14; +x_14 = lean_usize_dec_lt(x_5, x_4); +if (x_14 == 0) +{ +lean_object* x_15; +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_2); +x_15 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_15, 0, x_6); +lean_ctor_set(x_15, 1, x_13); +return x_15; +} +else +{ +lean_object* x_16; +x_16 = lean_array_uget(x_3, x_5); +if (lean_obj_tag(x_6) == 0) +{ +lean_object* x_17; +lean_dec(x_16); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_2); +x_17 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_17, 0, x_6); +lean_ctor_set(x_17, 1, x_13); +return x_17; +} +else +{ +lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; +x_18 = lean_ctor_get(x_6, 0); +lean_inc(x_18); +x_19 = lean_ctor_get(x_6, 1); +lean_inc(x_19); +lean_dec(x_6); +x_20 = l_Lean_Expr_fvar___override(x_16); +x_21 = l_Lean_Meta_FVarSubst_apply(x_1, x_20); +x_22 = lean_alloc_closure((void*)(l_Lean_Expr_addLocalVarInfoForBinderIdent), 9, 2); +lean_closure_set(x_22, 0, x_21); +lean_closure_set(x_22, 1, x_18); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_10); +lean_inc(x_9); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_2); +x_23 = l_Lean_MVarId_withContext___at_Lean_Elab_Term_logUnassignedUsingErrorInfos___spec__4___rarg(x_2, x_22, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +if (lean_obj_tag(x_23) == 0) +{ +lean_object* x_24; size_t x_25; size_t x_26; +x_24 = lean_ctor_get(x_23, 1); +lean_inc(x_24); +lean_dec(x_23); +x_25 = 1; +x_26 = lean_usize_add(x_5, x_25); +x_5 = x_26; +x_6 = x_19; +x_13 = x_24; +goto _start; +} +else +{ +uint8_t x_28; +lean_dec(x_19); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_2); +x_28 = !lean_is_exclusive(x_23); +if (x_28 == 0) +{ +return x_23; +} +else +{ +lean_object* x_29; lean_object* x_30; lean_object* x_31; +x_29 = lean_ctor_get(x_23, 0); +x_30 = lean_ctor_get(x_23, 1); +lean_inc(x_30); +lean_inc(x_29); +lean_dec(x_23); +x_31 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_31, 0, x_29); +lean_ctor_set(x_31, 1, x_30); +return x_31; +} +} +} +} +} +} +LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +uint8_t x_10; +x_10 = lean_usize_dec_eq(x_2, x_3); +if (x_10 == 0) +{ +lean_object* x_11; lean_object* x_12; +x_11 = lean_array_uget(x_1, x_2); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +lean_inc(x_5); +x_12 = l_Lean_MVarId_tryClear(x_4, x_11, x_5, x_6, x_7, x_8, x_9); +if (lean_obj_tag(x_12) == 0) +{ +lean_object* x_13; lean_object* x_14; size_t x_15; size_t x_16; +x_13 = lean_ctor_get(x_12, 0); +lean_inc(x_13); +x_14 = lean_ctor_get(x_12, 1); +lean_inc(x_14); +lean_dec(x_12); +x_15 = 1; +x_16 = lean_usize_add(x_2, x_15); +x_2 = x_16; +x_4 = x_13; +x_9 = x_14; +goto _start; +} +else +{ +uint8_t x_18; +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +x_18 = !lean_is_exclusive(x_12); +if (x_18 == 0) +{ +return x_12; +} +else +{ +lean_object* x_19; lean_object* x_20; lean_object* x_21; +x_19 = lean_ctor_get(x_12, 0); +x_20 = lean_ctor_get(x_12, 1); +lean_inc(x_20); +lean_inc(x_19); +lean_dec(x_12); +x_21 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_21, 0, x_19); +lean_ctor_set(x_21, 1, x_20); +return x_21; +} +} +} +else +{ +lean_object* x_22; +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +x_22 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_22, 0, x_4); +lean_ctor_set(x_22, 1, x_9); +return x_22; +} +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1() { +_start: +{ +lean_object* x_1; uint8_t x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = 0; +x_3 = l_Lean_SourceInfo_fromRef(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Lean", 4); +return x_1; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Parser", 6); +return x_1; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Term", 4); +return x_1; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("hole", 4); +return x_1; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; +x_1 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2; +x_2 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3; +x_3 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4; +x_4 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5; +x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4); +return x_5; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("_", 1); +return x_1; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1; +x_2 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7; +x_3 = lean_alloc_ctor(2, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +static lean_object* _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1; +x_2 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6; +x_3 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8; +x_4 = l_Lean_Syntax_node1(x_1, x_2, x_3); +return x_4; +} +} +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, size_t x_6, size_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) { +_start: +{ +uint8_t x_16; +x_16 = lean_usize_dec_lt(x_7, x_6); +if (x_16 == 0) +{ +lean_object* x_17; +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_17 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_17, 0, x_8); +lean_ctor_set(x_17, 1, x_15); +return x_17; +} +else +{ +lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; +x_18 = lean_array_uget(x_5, x_7); +x_26 = lean_ctor_get(x_18, 0); +lean_inc(x_26); +x_27 = lean_ctor_get(x_18, 2); +lean_inc(x_27); +lean_dec(x_18); +x_28 = lean_ctor_get(x_8, 0); +lean_inc(x_28); +x_29 = lean_ctor_get(x_8, 1); +lean_inc(x_29); +if (lean_is_exclusive(x_8)) { + lean_ctor_release(x_8, 0); + lean_ctor_release(x_8, 1); + x_30 = x_8; +} else { + lean_dec_ref(x_8); + x_30 = lean_box(0); +} +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_10); +lean_inc(x_9); +lean_inc(x_1); +x_31 = l___private_Lean_Elab_Tactic_Induction_0__Lean_Elab_Tactic_ElimApp_getAltNumFields(x_1, x_26, x_9, x_10, x_11, x_12, x_13, x_14, x_15); +if (lean_obj_tag(x_31) == 0) +{ +lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; uint8_t x_40; lean_object* x_41; +x_32 = lean_ctor_get(x_31, 0); +lean_inc(x_32); +x_33 = lean_ctor_get(x_31, 1); +lean_inc(x_33); +lean_dec(x_31); +x_34 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9; +lean_inc(x_32); +x_35 = l_List_splitAtD___rarg(x_32, x_28, x_34); +x_36 = lean_ctor_get(x_35, 0); +lean_inc(x_36); +x_37 = lean_ctor_get(x_35, 1); +lean_inc(x_37); +lean_dec(x_35); +x_38 = lean_box(0); +lean_inc(x_36); +x_39 = l_List_mapTR_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__1(x_36, x_38); +x_40 = 0; +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +x_41 = l_Lean_Meta_introNCore(x_27, x_32, x_39, x_40, x_40, x_11, x_12, x_13, x_14, x_33); +if (lean_obj_tag(x_41) == 0) +{ +lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; +x_42 = lean_ctor_get(x_41, 0); +lean_inc(x_42); +x_43 = lean_ctor_get(x_41, 1); +lean_inc(x_43); +lean_dec(x_41); +x_44 = lean_ctor_get(x_42, 0); +lean_inc(x_44); +x_45 = lean_ctor_get(x_42, 1); +lean_inc(x_45); +lean_dec(x_42); +x_46 = lean_box(0); +x_47 = lean_box(0); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_2); +x_48 = l_Lean_Meta_Cases_unifyEqs_x3f(x_2, x_45, x_46, x_47, x_11, x_12, x_13, x_14, x_43); +if (lean_obj_tag(x_48) == 0) +{ +lean_object* x_49; +x_49 = lean_ctor_get(x_48, 0); +lean_inc(x_49); +if (lean_obj_tag(x_49) == 0) +{ +lean_object* x_50; lean_object* x_51; lean_object* x_52; +lean_dec(x_44); +lean_dec(x_36); +x_50 = lean_ctor_get(x_48, 1); +lean_inc(x_50); +lean_dec(x_48); +if (lean_is_scalar(x_30)) { + x_51 = lean_alloc_ctor(0, 2, 0); +} else { + x_51 = x_30; +} +lean_ctor_set(x_51, 0, x_37); +lean_ctor_set(x_51, 1, x_29); +x_52 = lean_alloc_ctor(1, 1, 0); +lean_ctor_set(x_52, 0, x_51); +x_19 = x_52; +x_20 = x_50; +goto block_25; +} +else +{ +lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; uint8_t x_72; lean_object* x_73; +x_53 = lean_ctor_get(x_49, 0); +lean_inc(x_53); +lean_dec(x_49); +x_54 = lean_ctor_get(x_48, 1); +lean_inc(x_54); +lean_dec(x_48); +x_55 = lean_ctor_get(x_53, 0); +lean_inc(x_55); +x_56 = lean_ctor_get(x_53, 1); +lean_inc(x_56); +lean_dec(x_53); +x_72 = 1; +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_3); +x_73 = l_Lean_Meta_introNCore(x_55, x_3, x_38, x_40, x_72, x_11, x_12, x_13, x_14, x_54); +if (lean_obj_tag(x_73) == 0) +{ +lean_object* x_74; lean_object* x_75; lean_object* x_76; lean_object* x_77; lean_object* x_78; uint8_t x_79; +x_74 = lean_ctor_get(x_73, 0); +lean_inc(x_74); +x_75 = lean_ctor_get(x_73, 1); +lean_inc(x_75); +lean_dec(x_73); +x_76 = lean_ctor_get(x_74, 1); +lean_inc(x_76); +lean_dec(x_74); +x_77 = lean_array_get_size(x_4); +x_78 = lean_unsigned_to_nat(0u); +x_79 = lean_nat_dec_lt(x_78, x_77); +if (x_79 == 0) +{ +lean_dec(x_77); +x_57 = x_76; +x_58 = x_75; +goto block_71; +} +else +{ +uint8_t x_80; +x_80 = lean_nat_dec_le(x_77, x_77); +if (x_80 == 0) +{ +lean_dec(x_77); +x_57 = x_76; +x_58 = x_75; +goto block_71; +} +else +{ +size_t x_81; size_t x_82; lean_object* x_83; +x_81 = 0; +x_82 = lean_usize_of_nat(x_77); +lean_dec(x_77); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +x_83 = l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3(x_4, x_81, x_82, x_76, x_11, x_12, x_13, x_14, x_75); +if (lean_obj_tag(x_83) == 0) +{ +lean_object* x_84; lean_object* x_85; +x_84 = lean_ctor_get(x_83, 0); +lean_inc(x_84); +x_85 = lean_ctor_get(x_83, 1); +lean_inc(x_85); +lean_dec(x_83); +x_57 = x_84; +x_58 = x_85; +goto block_71; +} +else +{ +uint8_t x_86; +lean_dec(x_56); +lean_dec(x_44); +lean_dec(x_37); +lean_dec(x_36); +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_86 = !lean_is_exclusive(x_83); +if (x_86 == 0) +{ +return x_83; +} +else +{ +lean_object* x_87; lean_object* x_88; lean_object* x_89; +x_87 = lean_ctor_get(x_83, 0); +x_88 = lean_ctor_get(x_83, 1); +lean_inc(x_88); +lean_inc(x_87); +lean_dec(x_83); +x_89 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_89, 0, x_87); +lean_ctor_set(x_89, 1, x_88); +return x_89; +} +} +} +} +} +else +{ +uint8_t x_90; +lean_dec(x_56); +lean_dec(x_44); +lean_dec(x_37); +lean_dec(x_36); +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_90 = !lean_is_exclusive(x_73); +if (x_90 == 0) +{ +return x_73; +} +else +{ +lean_object* x_91; lean_object* x_92; lean_object* x_93; +x_91 = lean_ctor_get(x_73, 0); +x_92 = lean_ctor_get(x_73, 1); +lean_inc(x_92); +lean_inc(x_91); +lean_dec(x_73); +x_93 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_93, 0, x_91); +lean_ctor_set(x_93, 1, x_92); +return x_93; +} +} +block_71: +{ +lean_object* x_59; size_t x_60; size_t x_61; lean_object* x_62; +x_59 = lean_array_get_size(x_44); +x_60 = lean_usize_of_nat(x_59); +lean_dec(x_59); +x_61 = 0; +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_10); +lean_inc(x_9); +lean_inc(x_57); +x_62 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2(x_56, x_57, x_44, x_60, x_61, x_36, x_9, x_10, x_11, x_12, x_13, x_14, x_58); +lean_dec(x_44); +lean_dec(x_56); +if (lean_obj_tag(x_62) == 0) +{ +lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; +x_63 = lean_ctor_get(x_62, 1); +lean_inc(x_63); +lean_dec(x_62); +x_64 = lean_array_push(x_29, x_57); +if (lean_is_scalar(x_30)) { + x_65 = lean_alloc_ctor(0, 2, 0); +} else { + x_65 = x_30; +} +lean_ctor_set(x_65, 0, x_37); +lean_ctor_set(x_65, 1, x_64); +x_66 = lean_alloc_ctor(1, 1, 0); +lean_ctor_set(x_66, 0, x_65); +x_19 = x_66; +x_20 = x_63; +goto block_25; +} +else +{ +uint8_t x_67; +lean_dec(x_57); +lean_dec(x_37); +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_67 = !lean_is_exclusive(x_62); +if (x_67 == 0) +{ +return x_62; +} +else +{ +lean_object* x_68; lean_object* x_69; lean_object* x_70; +x_68 = lean_ctor_get(x_62, 0); +x_69 = lean_ctor_get(x_62, 1); +lean_inc(x_69); +lean_inc(x_68); +lean_dec(x_62); +x_70 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_70, 0, x_68); +lean_ctor_set(x_70, 1, x_69); +return x_70; +} +} +} +} +} +else +{ +uint8_t x_94; +lean_dec(x_44); +lean_dec(x_37); +lean_dec(x_36); +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_94 = !lean_is_exclusive(x_48); +if (x_94 == 0) +{ +return x_48; +} +else +{ +lean_object* x_95; lean_object* x_96; lean_object* x_97; +x_95 = lean_ctor_get(x_48, 0); +x_96 = lean_ctor_get(x_48, 1); +lean_inc(x_96); +lean_inc(x_95); +lean_dec(x_48); +x_97 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_97, 0, x_95); +lean_ctor_set(x_97, 1, x_96); +return x_97; +} +} +} +else +{ +uint8_t x_98; +lean_dec(x_37); +lean_dec(x_36); +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_98 = !lean_is_exclusive(x_41); +if (x_98 == 0) +{ +return x_41; +} +else +{ +lean_object* x_99; lean_object* x_100; lean_object* x_101; +x_99 = lean_ctor_get(x_41, 0); +x_100 = lean_ctor_get(x_41, 1); +lean_inc(x_100); +lean_inc(x_99); +lean_dec(x_41); +x_101 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_101, 0, x_99); +lean_ctor_set(x_101, 1, x_100); +return x_101; +} +} +} +else +{ +uint8_t x_102; +lean_dec(x_30); +lean_dec(x_29); +lean_dec(x_28); +lean_dec(x_27); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_102 = !lean_is_exclusive(x_31); +if (x_102 == 0) +{ +return x_31; +} +else +{ +lean_object* x_103; lean_object* x_104; lean_object* x_105; +x_103 = lean_ctor_get(x_31, 0); +x_104 = lean_ctor_get(x_31, 1); +lean_inc(x_104); +lean_inc(x_103); +lean_dec(x_31); +x_105 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_105, 0, x_103); +lean_ctor_set(x_105, 1, x_104); +return x_105; +} +} +block_25: +{ +lean_object* x_21; size_t x_22; size_t x_23; +x_21 = lean_ctor_get(x_19, 0); +lean_inc(x_21); +lean_dec(x_19); +x_22 = 1; +x_23 = lean_usize_add(x_7, x_22); +x_7 = x_23; +x_8 = x_21; +x_15 = x_20; +goto _start; +} +} +} +} +static lean_object* _init_l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = lean_unsigned_to_nat(0u); +x_2 = lean_mk_empty_array_with_capacity(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic_ElimApp_evalNames(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; size_t x_21; size_t x_22; lean_object* x_23; +x_14 = lean_unsigned_to_nat(1u); +x_15 = l_Lean_Syntax_getArg(x_3, x_14); +x_16 = l_Lean_Syntax_getArgs(x_15); +lean_dec(x_15); +x_17 = lean_array_to_list(lean_box(0), x_16); +x_18 = l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1; +x_19 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_19, 0, x_17); +lean_ctor_set(x_19, 1, x_18); +x_20 = lean_array_get_size(x_2); +x_21 = lean_usize_of_nat(x_20); +lean_dec(x_20); +x_22 = 0; +x_23 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4(x_1, x_4, x_5, x_6, x_2, x_21, x_22, x_19, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +if (lean_obj_tag(x_23) == 0) +{ +uint8_t x_24; +x_24 = !lean_is_exclusive(x_23); +if (x_24 == 0) +{ +lean_object* x_25; lean_object* x_26; +x_25 = lean_ctor_get(x_23, 0); +x_26 = lean_ctor_get(x_25, 1); +lean_inc(x_26); +lean_dec(x_25); +lean_ctor_set(x_23, 0, x_26); +return x_23; +} +else +{ +lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; +x_27 = lean_ctor_get(x_23, 0); +x_28 = lean_ctor_get(x_23, 1); +lean_inc(x_28); +lean_inc(x_27); +lean_dec(x_23); +x_29 = lean_ctor_get(x_27, 1); +lean_inc(x_29); +lean_dec(x_27); +x_30 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_30, 0, x_29); +lean_ctor_set(x_30, 1, x_28); +return x_30; +} +} +else +{ +uint8_t x_31; +x_31 = !lean_is_exclusive(x_23); +if (x_31 == 0) +{ +return x_23; +} +else +{ +lean_object* x_32; lean_object* x_33; lean_object* x_34; +x_32 = lean_ctor_get(x_23, 0); +x_33 = lean_ctor_get(x_23, 1); +lean_inc(x_33); +lean_inc(x_32); +lean_dec(x_23); +x_34 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_34, 0, x_32); +lean_ctor_set(x_34, 1, x_33); +return x_34; +} +} +} +} +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +size_t x_14; size_t x_15; lean_object* x_16; +x_14 = lean_unbox_usize(x_4); +lean_dec(x_4); +x_15 = lean_unbox_usize(x_5); +lean_dec(x_5); +x_16 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__2(x_1, x_2, x_3, x_14, x_15, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +lean_dec(x_3); +lean_dec(x_1); +return x_16; +} +} +LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +size_t x_10; size_t x_11; lean_object* x_12; +x_10 = lean_unbox_usize(x_2); +lean_dec(x_2); +x_11 = lean_unbox_usize(x_3); +lean_dec(x_3); +x_12 = l_Array_foldlMUnsafe_fold___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__3(x_1, x_10, x_11, x_4, x_5, x_6, x_7, x_8, x_9); +lean_dec(x_1); +return x_12; +} +} +LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15) { +_start: +{ +size_t x_16; size_t x_17; lean_object* x_18; +x_16 = lean_unbox_usize(x_6); +lean_dec(x_6); +x_17 = lean_unbox_usize(x_7); +lean_dec(x_7); +x_18 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4(x_1, x_2, x_3, x_4, x_5, x_16, x_17, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15); +lean_dec(x_5); +lean_dec(x_4); +return x_18; +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic_ElimApp_evalNames___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13) { +_start: +{ +lean_object* x_14; +x_14 = l_Lean_Parser_Tactic_ElimApp_evalNames(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13); +lean_dec(x_6); +lean_dec(x_3); +lean_dec(x_2); +return x_14; +} +} +static lean_object* _init_l_MyNat_induction___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Tactic", 6); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__2() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("_root_", 6); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("induction", 9); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; +x_1 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2; +x_2 = l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3; +x_3 = l_MyNat_induction___closed__1; +x_4 = l_MyNat_induction___closed__2; +x_5 = l_MyNat_rewriteSeq___closed__1; +x_6 = l_MyNat_induction___closed__3; +x_7 = l_Lean_Name_mkStr6(x_1, x_2, x_3, x_4, x_5, x_6); +return x_7; +} +} +static lean_object* _init_l_MyNat_induction___closed__5() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("induction ", 10); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__6() { +_start: +{ +lean_object* x_1; uint8_t x_2; lean_object* x_3; +x_1 = l_MyNat_induction___closed__5; +x_2 = 0; +x_3 = lean_alloc_ctor(6, 1, 1); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_induction___closed__7() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes(", ", 2); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__8() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_induction___closed__7; +x_2 = lean_alloc_ctor(5, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_induction___closed__9() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes(",", 1); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__10() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; uint8_t x_4; lean_object* x_5; +x_1 = l_Lean_Parser_Tactic_casesTarget; +x_2 = l_MyNat_induction___closed__9; +x_3 = l_MyNat_induction___closed__8; +x_4 = 0; +x_5 = lean_alloc_ctor(11, 3, 1); +lean_ctor_set(x_5, 0, x_1); +lean_ctor_set(x_5, 1, x_2); +lean_ctor_set(x_5, 2, x_3); +lean_ctor_set_uint8(x_5, sizeof(void*)*3, x_4); +return x_5; +} +} +static lean_object* _init_l_MyNat_induction___closed__11() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_induction___closed__6; +x_3 = l_MyNat_induction___closed__10; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_induction___closed__12() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes(" with ", 6); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__13() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_induction___closed__12; +x_2 = lean_alloc_ctor(5, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_induction___closed__14() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("many1", 5); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__15() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_MyNat_induction___closed__14; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_induction___closed__16() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("colGt", 5); +return x_1; +} +} +static lean_object* _init_l_MyNat_induction___closed__17() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_MyNat_induction___closed__16; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_induction___closed__18() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_induction___closed__17; +x_2 = lean_alloc_ctor(0, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_induction___closed__19() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_induction___closed__18; +x_3 = l_Lean_binderIdent; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_induction___closed__20() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_induction___closed__15; +x_2 = l_MyNat_induction___closed__19; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_induction___closed__21() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_induction___closed__13; +x_3 = l_MyNat_induction___closed__20; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_induction___closed__22() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__9; +x_2 = l_MyNat_induction___closed__21; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_induction___closed__23() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rewriteSeq___closed__5; +x_2 = l_MyNat_induction___closed__11; +x_3 = l_MyNat_induction___closed__22; +x_4 = lean_alloc_ctor(2, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_induction___closed__24() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_induction___closed__4; +x_2 = lean_unsigned_to_nat(1022u); +x_3 = l_MyNat_induction___closed__23; +x_4 = lean_alloc_ctor(3, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_induction() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_induction___closed__24; +return x_1; +} +} +static lean_object* _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_Lean_levelZero; +x_2 = l_Lean_Expr_sort___override(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16, lean_object* x_17) { +_start: +{ +lean_object* x_18; +lean_inc(x_16); +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +x_18 = l_Lean_Meta_mkGeneralizationForbiddenSet(x_1, x_2, x_13, x_14, x_15, x_16, x_17); +if (lean_obj_tag(x_18) == 0) +{ +lean_object* x_19; lean_object* x_20; uint8_t x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; +x_19 = lean_ctor_get(x_18, 0); +lean_inc(x_19); +x_20 = lean_ctor_get(x_18, 1); +lean_inc(x_20); +lean_dec(x_18); +x_21 = 0; +lean_inc(x_13); +x_22 = l_Lean_Meta_getFVarSetToGeneralize(x_1, x_19, x_21, x_13, x_14, x_15, x_16, x_20); +x_23 = lean_ctor_get(x_22, 0); +lean_inc(x_23); +x_24 = lean_ctor_get(x_22, 1); +lean_inc(x_24); +lean_dec(x_22); +x_25 = l_Lean_RBTree_toArray___at_Lean_Meta_getFVarsToGeneralize___spec__1(x_23); +lean_inc(x_13); +x_26 = l_Lean_Meta_sortFVarIds(x_25, x_13, x_14, x_15, x_16, x_24); +x_27 = lean_ctor_get(x_26, 0); +lean_inc(x_27); +x_28 = lean_ctor_get(x_26, 1); +lean_inc(x_28); +lean_dec(x_26); +lean_inc(x_16); +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +x_29 = l_Lean_MVarId_revert(x_3, x_27, x_21, x_21, x_13, x_14, x_15, x_16, x_28); +if (lean_obj_tag(x_29) == 0) +{ +lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; +x_30 = lean_ctor_get(x_29, 0); +lean_inc(x_30); +x_31 = lean_ctor_get(x_29, 1); +lean_inc(x_31); +lean_dec(x_29); +x_32 = lean_ctor_get(x_30, 0); +lean_inc(x_32); +x_33 = lean_ctor_get(x_30, 1); +lean_inc(x_33); +lean_dec(x_30); +lean_inc(x_33); +x_34 = l_Lean_MVarId_getTag(x_33, x_13, x_14, x_15, x_16, x_31); +if (lean_obj_tag(x_34) == 0) +{ +lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48; lean_object* x_49; lean_object* x_50; +x_35 = lean_ctor_get(x_34, 0); +lean_inc(x_35); +x_36 = lean_ctor_get(x_34, 1); +lean_inc(x_36); +lean_dec(x_34); +x_37 = lean_ctor_get(x_15, 0); +lean_inc(x_37); +x_38 = lean_ctor_get(x_15, 1); +lean_inc(x_38); +x_39 = lean_ctor_get(x_15, 2); +lean_inc(x_39); +x_40 = lean_ctor_get(x_15, 3); +lean_inc(x_40); +x_41 = lean_ctor_get(x_15, 4); +lean_inc(x_41); +x_42 = lean_ctor_get(x_15, 5); +lean_inc(x_42); +x_43 = lean_ctor_get(x_15, 6); +lean_inc(x_43); +x_44 = lean_ctor_get(x_15, 7); +lean_inc(x_44); +x_45 = lean_ctor_get(x_15, 8); +lean_inc(x_45); +x_46 = lean_ctor_get(x_15, 9); +lean_inc(x_46); +x_47 = lean_ctor_get(x_15, 10); +lean_inc(x_47); +x_48 = l_Lean_replaceRef(x_4, x_42); +lean_dec(x_42); +x_49 = lean_alloc_ctor(0, 11, 0); +lean_ctor_set(x_49, 0, x_37); +lean_ctor_set(x_49, 1, x_38); +lean_ctor_set(x_49, 2, x_39); +lean_ctor_set(x_49, 3, x_40); +lean_ctor_set(x_49, 4, x_41); +lean_ctor_set(x_49, 5, x_48); +lean_ctor_set(x_49, 6, x_43); +lean_ctor_set(x_49, 7, x_44); +lean_ctor_set(x_49, 8, x_45); +lean_ctor_set(x_49, 9, x_46); +lean_ctor_set(x_49, 10, x_47); +lean_inc(x_16); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +lean_inc(x_5); +x_50 = l_Lean_Elab_Tactic_ElimApp_mkElimApp(x_5, x_1, x_35, x_11, x_12, x_13, x_14, x_49, x_16, x_36); +if (lean_obj_tag(x_50) == 0) +{ +lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; uint8_t x_89; +x_51 = lean_ctor_get(x_50, 0); +lean_inc(x_51); +x_52 = lean_ctor_get(x_50, 1); +lean_inc(x_52); +lean_dec(x_50); +x_53 = lean_ctor_get(x_51, 0); +lean_inc(x_53); +x_80 = lean_unsigned_to_nat(0u); +x_81 = l___private_Lean_Expr_0__Lean_Expr_getAppNumArgsAux(x_53, x_80); +x_82 = l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1; +lean_inc(x_81); +x_83 = lean_mk_array(x_81, x_82); +x_84 = lean_unsigned_to_nat(1u); +x_85 = lean_nat_sub(x_81, x_84); +lean_dec(x_81); +lean_inc(x_53); +x_86 = l___private_Lean_Expr_0__Lean_Expr_getAppArgsAux(x_53, x_83, x_85); +x_87 = lean_ctor_get(x_5, 1); +lean_inc(x_87); +x_88 = lean_array_get_size(x_86); +x_89 = lean_nat_dec_lt(x_87, x_88); +lean_dec(x_88); +if (x_89 == 0) +{ +lean_object* x_90; lean_object* x_91; +lean_dec(x_87); +lean_dec(x_86); +x_90 = l_Lean_instInhabitedExpr; +x_91 = l___private_Init_Util_0__outOfBounds___rarg(x_90); +x_54 = x_91; +goto block_79; +} +else +{ +lean_object* x_92; +x_92 = lean_array_fget(x_86, x_87); +lean_dec(x_87); +lean_dec(x_86); +x_54 = x_92; +goto block_79; +} +block_79: +{ +lean_object* x_55; lean_object* x_56; +x_55 = l_Lean_Expr_mvarId_x21(x_54); +lean_inc(x_16); +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_6); +lean_inc(x_33); +x_56 = l_Lean_Elab_Tactic_ElimApp_setMotiveArg(x_33, x_55, x_6, x_13, x_14, x_15, x_16, x_52); +if (lean_obj_tag(x_56) == 0) +{ +lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63; +x_57 = lean_ctor_get(x_56, 1); +lean_inc(x_57); +lean_dec(x_56); +x_58 = l_Lean_MVarId_assign___at_Lean_Elab_Tactic_closeMainGoal___spec__1(x_33, x_53, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_57); +x_59 = lean_ctor_get(x_58, 1); +lean_inc(x_59); +lean_dec(x_58); +x_60 = lean_ctor_get(x_51, 1); +lean_inc(x_60); +x_61 = lean_array_get_size(x_32); +lean_dec(x_32); +x_62 = lean_unsigned_to_nat(0u); +lean_inc(x_16); +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_11); +x_63 = l_Lean_Parser_Tactic_ElimApp_evalNames(x_5, x_60, x_7, x_62, x_61, x_6, x_11, x_12, x_13, x_14, x_15, x_16, x_59); +lean_dec(x_6); +lean_dec(x_60); +if (lean_obj_tag(x_63) == 0) +{ +lean_object* x_64; lean_object* x_65; lean_object* x_66; lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; +x_64 = lean_ctor_get(x_63, 0); +lean_inc(x_64); +x_65 = lean_ctor_get(x_63, 1); +lean_inc(x_65); +lean_dec(x_63); +x_66 = lean_ctor_get(x_51, 2); +lean_inc(x_66); +lean_dec(x_51); +x_67 = l_Array_append___rarg(x_64, x_66); +x_68 = lean_array_to_list(lean_box(0), x_67); +x_69 = l_List_appendTR___rarg(x_68, x_8); +x_70 = l_Lean_Elab_Tactic_setGoals(x_69, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_65); +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +return x_70; +} +else +{ +uint8_t x_71; +lean_dec(x_51); +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +x_71 = !lean_is_exclusive(x_63); +if (x_71 == 0) +{ +return x_63; +} +else +{ +lean_object* x_72; lean_object* x_73; lean_object* x_74; +x_72 = lean_ctor_get(x_63, 0); +x_73 = lean_ctor_get(x_63, 1); +lean_inc(x_73); +lean_inc(x_72); +lean_dec(x_63); +x_74 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_74, 0, x_72); +lean_ctor_set(x_74, 1, x_73); +return x_74; +} +} +} +else +{ +uint8_t x_75; +lean_dec(x_53); +lean_dec(x_51); +lean_dec(x_33); +lean_dec(x_32); +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +lean_dec(x_6); +lean_dec(x_5); +x_75 = !lean_is_exclusive(x_56); +if (x_75 == 0) +{ +return x_56; +} +else +{ +lean_object* x_76; lean_object* x_77; lean_object* x_78; +x_76 = lean_ctor_get(x_56, 0); +x_77 = lean_ctor_get(x_56, 1); +lean_inc(x_77); +lean_inc(x_76); +lean_dec(x_56); +x_78 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_78, 0, x_76); +lean_ctor_set(x_78, 1, x_77); +return x_78; +} +} +} +} +else +{ +uint8_t x_93; +lean_dec(x_33); +lean_dec(x_32); +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +lean_dec(x_6); +lean_dec(x_5); +x_93 = !lean_is_exclusive(x_50); +if (x_93 == 0) +{ +return x_50; +} +else +{ +lean_object* x_94; lean_object* x_95; lean_object* x_96; +x_94 = lean_ctor_get(x_50, 0); +x_95 = lean_ctor_get(x_50, 1); +lean_inc(x_95); +lean_inc(x_94); +lean_dec(x_50); +x_96 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_96, 0, x_94); +lean_ctor_set(x_96, 1, x_95); +return x_96; +} +} +} +else +{ +uint8_t x_97; +lean_dec(x_33); +lean_dec(x_32); +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_1); +x_97 = !lean_is_exclusive(x_34); +if (x_97 == 0) +{ +return x_34; +} +else +{ +lean_object* x_98; lean_object* x_99; lean_object* x_100; +x_98 = lean_ctor_get(x_34, 0); +x_99 = lean_ctor_get(x_34, 1); +lean_inc(x_99); +lean_inc(x_98); +lean_dec(x_34); +x_100 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_100, 0, x_98); +lean_ctor_set(x_100, 1, x_99); +return x_100; +} +} +} +else +{ +uint8_t x_101; +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_1); +x_101 = !lean_is_exclusive(x_29); +if (x_101 == 0) +{ +return x_29; +} +else +{ +lean_object* x_102; lean_object* x_103; lean_object* x_104; +x_102 = lean_ctor_get(x_29, 0); +x_103 = lean_ctor_get(x_29, 1); +lean_inc(x_103); +lean_inc(x_102); +lean_dec(x_29); +x_104 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_104, 0, x_102); +lean_ctor_set(x_104, 1, x_103); +return x_104; +} +} +} +else +{ +uint8_t x_105; +lean_dec(x_16); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_8); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_3); +lean_dec(x_1); +x_105 = !lean_is_exclusive(x_18); +if (x_105 == 0) +{ +return x_18; +} +else +{ +lean_object* x_106; lean_object* x_107; lean_object* x_108; +x_106 = lean_ctor_get(x_18, 0); +x_107 = lean_ctor_get(x_18, 1); +lean_inc(x_107); +lean_inc(x_106); +lean_dec(x_18); +x_108 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_108, 0, x_106); +lean_ctor_set(x_108, 1, x_107); +return x_108; +} +} +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12, lean_object* x_13, lean_object* x_14, lean_object* x_15, lean_object* x_16) { +_start: +{ +lean_object* x_17; +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +x_17 = l_Lean_Meta_getElimInfo(x_1, x_2, x_12, x_13, x_14, x_15, x_16); +if (lean_obj_tag(x_17) == 0) +{ +lean_object* x_18; lean_object* x_19; lean_object* x_20; +x_18 = lean_ctor_get(x_17, 0); +lean_inc(x_18); +x_19 = lean_ctor_get(x_17, 1); +lean_inc(x_19); +lean_dec(x_17); +lean_inc(x_15); +lean_inc(x_14); +lean_inc(x_13); +lean_inc(x_12); +lean_inc(x_18); +x_20 = l_Lean_Meta_addImplicitTargets(x_18, x_3, x_12, x_13, x_14, x_15, x_19); +if (lean_obj_tag(x_20) == 0) +{ +lean_object* x_21; lean_object* x_22; lean_object* x_23; +x_21 = lean_ctor_get(x_20, 0); +lean_inc(x_21); +x_22 = lean_ctor_get(x_20, 1); +lean_inc(x_22); +lean_dec(x_20); +x_23 = l_Lean_Elab_Tactic_evalInduction_checkTargets(x_21, x_12, x_13, x_14, x_15, x_22); +if (lean_obj_tag(x_23) == 0) +{ +lean_object* x_24; lean_object* x_25; size_t x_26; size_t x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; +x_24 = lean_ctor_get(x_23, 1); +lean_inc(x_24); +lean_dec(x_23); +x_25 = lean_array_get_size(x_21); +x_26 = lean_usize_of_nat(x_25); +lean_dec(x_25); +x_27 = 0; +lean_inc(x_21); +x_28 = l_Array_mapMUnsafe_map___at_Lean_Elab_Tactic_evalInduction___spec__2(x_26, x_27, x_21); +x_29 = lean_box(0); +lean_inc(x_4); +x_30 = lean_alloc_closure((void*)(l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___boxed), 17, 8); +lean_closure_set(x_30, 0, x_21); +lean_closure_set(x_30, 1, x_29); +lean_closure_set(x_30, 2, x_4); +lean_closure_set(x_30, 3, x_5); +lean_closure_set(x_30, 4, x_18); +lean_closure_set(x_30, 5, x_28); +lean_closure_set(x_30, 6, x_6); +lean_closure_set(x_30, 7, x_7); +x_31 = l_Lean_MVarId_withContext___at_Lean_Elab_Tactic_withMainContext___spec__1___rarg(x_4, x_30, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_24); +return x_31; +} +else +{ +uint8_t x_32; +lean_dec(x_21); +lean_dec(x_18); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +x_32 = !lean_is_exclusive(x_23); +if (x_32 == 0) +{ +return x_23; +} +else +{ +lean_object* x_33; lean_object* x_34; lean_object* x_35; +x_33 = lean_ctor_get(x_23, 0); +x_34 = lean_ctor_get(x_23, 1); +lean_inc(x_34); +lean_inc(x_33); +lean_dec(x_23); +x_35 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_35, 0, x_33); +lean_ctor_set(x_35, 1, x_34); +return x_35; +} +} +} +else +{ +uint8_t x_36; +lean_dec(x_18); +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +x_36 = !lean_is_exclusive(x_20); +if (x_36 == 0) +{ +return x_20; +} +else +{ +lean_object* x_37; lean_object* x_38; lean_object* x_39; +x_37 = lean_ctor_get(x_20, 0); +x_38 = lean_ctor_get(x_20, 1); +lean_inc(x_38); +lean_inc(x_37); +lean_dec(x_20); +x_39 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_39, 0, x_37); +lean_ctor_set(x_39, 1, x_38); +return x_39; +} +} +} +else +{ +uint8_t x_40; +lean_dec(x_15); +lean_dec(x_14); +lean_dec(x_13); +lean_dec(x_12); +lean_dec(x_11); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +x_40 = !lean_is_exclusive(x_17); +if (x_40 == 0) +{ +return x_17; +} +else +{ +lean_object* x_41; lean_object* x_42; lean_object* x_43; +x_41 = lean_ctor_get(x_17, 0); +x_42 = lean_ctor_get(x_17, 1); +lean_inc(x_42); +lean_inc(x_41); +lean_dec(x_17); +x_43 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_43, 0, x_41); +lean_ctor_set(x_43, 1, x_42); +return x_43; +} +} +} +} +static lean_object* _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("rec'", 4); +return x_1; +} +} +static lean_object* _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__1; +x_2 = l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1; +x_3 = l_Lean_Name_mkStr2(x_1, x_2); +return x_3; +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) { +_start: +{ +lean_object* x_11; uint8_t x_12; +x_11 = l_MyNat_induction___closed__4; +lean_inc(x_1); +x_12 = l_Lean_Syntax_isOfKind(x_1, x_11); +if (x_12 == 0) +{ +lean_object* x_13; +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_13 = l_Lean_Elab_throwUnsupportedSyntax___at_Std_Tactic___aux__Std__Tactic__ShowTerm______elabRules__Std__Tactic__showTermTac__1___spec__1___rarg(x_10); +return x_13; +} +else +{ +lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; +x_14 = lean_unsigned_to_nat(1u); +x_15 = l_Lean_Syntax_getArg(x_1, x_14); +x_16 = lean_unsigned_to_nat(2u); +x_17 = l_Lean_Syntax_getArg(x_1, x_16); +lean_dec(x_1); +x_18 = l_Lean_Syntax_getSepArgs(x_15); +lean_inc(x_9); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +lean_inc(x_5); +lean_inc(x_4); +lean_inc(x_3); +lean_inc(x_2); +x_19 = l_Lean_Elab_Tactic_elabCasesTargets(x_18, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10); +if (lean_obj_tag(x_19) == 0) +{ +lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; +x_20 = lean_ctor_get(x_19, 0); +lean_inc(x_20); +x_21 = lean_ctor_get(x_19, 1); +lean_inc(x_21); +lean_dec(x_19); +x_22 = l_Lean_Elab_Tactic_getUnsolvedGoals(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_21); +x_23 = lean_ctor_get(x_22, 0); +lean_inc(x_23); +if (lean_obj_tag(x_23) == 0) +{ +lean_object* x_24; lean_object* x_25; +lean_dec(x_20); +lean_dec(x_17); +lean_dec(x_15); +x_24 = lean_ctor_get(x_22, 1); +lean_inc(x_24); +lean_dec(x_22); +x_25 = l_Lean_Elab_Tactic_throwNoGoalsToBeSolved___rarg(x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_24); +return x_25; +} +else +{ +lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; +x_26 = lean_ctor_get(x_22, 1); +lean_inc(x_26); +lean_dec(x_22); +x_27 = lean_ctor_get(x_23, 0); +lean_inc(x_27); +x_28 = lean_ctor_get(x_23, 1); +lean_inc(x_28); +lean_dec(x_23); +x_29 = lean_box(0); +x_30 = l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2; +lean_inc(x_27); +x_31 = lean_alloc_closure((void*)(l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__2), 16, 7); +lean_closure_set(x_31, 0, x_30); +lean_closure_set(x_31, 1, x_29); +lean_closure_set(x_31, 2, x_20); +lean_closure_set(x_31, 3, x_27); +lean_closure_set(x_31, 4, x_15); +lean_closure_set(x_31, 5, x_17); +lean_closure_set(x_31, 6, x_28); +x_32 = l_Lean_MVarId_withContext___at_Lean_Elab_Tactic_withMainContext___spec__1___rarg(x_27, x_31, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_26); +return x_32; +} +} +else +{ +uint8_t x_33; +lean_dec(x_17); +lean_dec(x_15); +lean_dec(x_9); +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +x_33 = !lean_is_exclusive(x_19); +if (x_33 == 0) +{ +return x_19; +} +else +{ +lean_object* x_34; lean_object* x_35; lean_object* x_36; +x_34 = lean_ctor_get(x_19, 0); +x_35 = lean_ctor_get(x_19, 1); +lean_inc(x_35); +lean_inc(x_34); +lean_dec(x_19); +x_36 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_36, 0, x_34); +lean_ctor_set(x_36, 1, x_35); +return x_36; +} +} +} +} +} +LEAN_EXPORT lean_object* l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___boxed(lean_object** _args) { +lean_object* x_1 = _args[0]; +lean_object* x_2 = _args[1]; +lean_object* x_3 = _args[2]; +lean_object* x_4 = _args[3]; +lean_object* x_5 = _args[4]; +lean_object* x_6 = _args[5]; +lean_object* x_7 = _args[6]; +lean_object* x_8 = _args[7]; +lean_object* x_9 = _args[8]; +lean_object* x_10 = _args[9]; +lean_object* x_11 = _args[10]; +lean_object* x_12 = _args[11]; +lean_object* x_13 = _args[12]; +lean_object* x_14 = _args[13]; +lean_object* x_15 = _args[14]; +lean_object* x_16 = _args[15]; +lean_object* x_17 = _args[16]; +_start: +{ +lean_object* x_18; +x_18 = l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12, x_13, x_14, x_15, x_16, x_17); +lean_dec(x_10); +lean_dec(x_9); +lean_dec(x_7); +lean_dec(x_4); +return x_18; +} +} +static lean_object* _init_l_MyNat_rfl___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("rfl", 3); +return x_1; +} +} +static lean_object* _init_l_MyNat_rfl___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l_MyNat_rewriteSeq___closed__1; +x_2 = l_MyNat_rfl___closed__1; +x_3 = l_Lean_Name_mkStr2(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rfl___closed__3() { +_start: +{ +lean_object* x_1; uint8_t x_2; lean_object* x_3; +x_1 = l_MyNat_rfl___closed__1; +x_2 = 0; +x_3 = lean_alloc_ctor(6, 1, 1); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2); +return x_3; +} +} +static lean_object* _init_l_MyNat_rfl___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_MyNat_rfl___closed__2; +x_2 = lean_unsigned_to_nat(1024u); +x_3 = l_MyNat_rfl___closed__3; +x_4 = lean_alloc_ctor(3, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_MyNat_rfl() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_rfl___closed__4; +return x_1; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRfl___rarg___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +lean_object* x_10; +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +lean_inc(x_5); +lean_inc(x_4); +lean_inc(x_3); +lean_inc(x_2); +lean_inc(x_1); +x_10 = l_Lean_Elab_Tactic_getMainGoal(x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +if (lean_obj_tag(x_10) == 0) +{ +lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; +x_11 = lean_ctor_get(x_5, 0); +lean_inc(x_11); +x_12 = lean_ctor_get(x_10, 0); +lean_inc(x_12); +x_13 = lean_ctor_get(x_10, 1); +lean_inc(x_13); +lean_dec(x_10); +x_14 = lean_ctor_get(x_5, 1); +lean_inc(x_14); +x_15 = lean_ctor_get(x_5, 2); +lean_inc(x_15); +x_16 = lean_ctor_get(x_5, 3); +lean_inc(x_16); +x_17 = lean_ctor_get(x_5, 4); +lean_inc(x_17); +x_18 = lean_ctor_get(x_5, 5); +lean_inc(x_18); +x_19 = !lean_is_exclusive(x_11); +if (x_19 == 0) +{ +uint8_t x_20; lean_object* x_21; lean_object* x_22; +x_20 = 2; +lean_ctor_set_uint8(x_11, 5, x_20); +x_21 = lean_alloc_ctor(0, 6, 0); +lean_ctor_set(x_21, 0, x_11); +lean_ctor_set(x_21, 1, x_14); +lean_ctor_set(x_21, 2, x_15); +lean_ctor_set(x_21, 3, x_16); +lean_ctor_set(x_21, 4, x_17); +lean_ctor_set(x_21, 5, x_18); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +x_22 = l_Lean_MVarId_refl(x_12, x_21, x_6, x_7, x_8, x_13); +if (lean_obj_tag(x_22) == 0) +{ +lean_object* x_23; lean_object* x_24; lean_object* x_25; +x_23 = lean_ctor_get(x_22, 1); +lean_inc(x_23); +lean_dec(x_22); +x_24 = lean_box(0); +x_25 = l_Lean_Elab_Tactic_replaceMainGoal(x_24, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_23); +if (lean_obj_tag(x_25) == 0) +{ +uint8_t x_26; +x_26 = !lean_is_exclusive(x_25); +if (x_26 == 0) +{ +lean_object* x_27; lean_object* x_28; +x_27 = lean_ctor_get(x_25, 0); +lean_dec(x_27); +x_28 = lean_box(0); +lean_ctor_set(x_25, 0, x_28); +return x_25; +} +else +{ +lean_object* x_29; lean_object* x_30; lean_object* x_31; +x_29 = lean_ctor_get(x_25, 1); +lean_inc(x_29); +lean_dec(x_25); +x_30 = lean_box(0); +x_31 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_31, 0, x_30); +lean_ctor_set(x_31, 1, x_29); +return x_31; +} +} +else +{ +uint8_t x_32; +x_32 = !lean_is_exclusive(x_25); +if (x_32 == 0) +{ +return x_25; +} +else +{ +lean_object* x_33; lean_object* x_34; lean_object* x_35; +x_33 = lean_ctor_get(x_25, 0); +x_34 = lean_ctor_get(x_25, 1); +lean_inc(x_34); +lean_inc(x_33); +lean_dec(x_25); +x_35 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_35, 0, x_33); +lean_ctor_set(x_35, 1, x_34); +return x_35; +} +} +} +else +{ +uint8_t x_36; +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_36 = !lean_is_exclusive(x_22); +if (x_36 == 0) +{ +return x_22; +} +else +{ +lean_object* x_37; lean_object* x_38; lean_object* x_39; +x_37 = lean_ctor_get(x_22, 0); +x_38 = lean_ctor_get(x_22, 1); +lean_inc(x_38); +lean_inc(x_37); +lean_dec(x_22); +x_39 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_39, 0, x_37); +lean_ctor_set(x_39, 1, x_38); +return x_39; +} +} +} +else +{ +uint8_t x_40; uint8_t x_41; uint8_t x_42; uint8_t x_43; uint8_t x_44; uint8_t x_45; uint8_t x_46; uint8_t x_47; uint8_t x_48; uint8_t x_49; uint8_t x_50; uint8_t x_51; uint8_t x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; +x_40 = lean_ctor_get_uint8(x_11, 0); +x_41 = lean_ctor_get_uint8(x_11, 1); +x_42 = lean_ctor_get_uint8(x_11, 2); +x_43 = lean_ctor_get_uint8(x_11, 3); +x_44 = lean_ctor_get_uint8(x_11, 4); +x_45 = lean_ctor_get_uint8(x_11, 6); +x_46 = lean_ctor_get_uint8(x_11, 7); +x_47 = lean_ctor_get_uint8(x_11, 8); +x_48 = lean_ctor_get_uint8(x_11, 9); +x_49 = lean_ctor_get_uint8(x_11, 10); +x_50 = lean_ctor_get_uint8(x_11, 11); +x_51 = lean_ctor_get_uint8(x_11, 12); +lean_dec(x_11); +x_52 = 2; +x_53 = lean_alloc_ctor(0, 0, 13); +lean_ctor_set_uint8(x_53, 0, x_40); +lean_ctor_set_uint8(x_53, 1, x_41); +lean_ctor_set_uint8(x_53, 2, x_42); +lean_ctor_set_uint8(x_53, 3, x_43); +lean_ctor_set_uint8(x_53, 4, x_44); +lean_ctor_set_uint8(x_53, 5, x_52); +lean_ctor_set_uint8(x_53, 6, x_45); +lean_ctor_set_uint8(x_53, 7, x_46); +lean_ctor_set_uint8(x_53, 8, x_47); +lean_ctor_set_uint8(x_53, 9, x_48); +lean_ctor_set_uint8(x_53, 10, x_49); +lean_ctor_set_uint8(x_53, 11, x_50); +lean_ctor_set_uint8(x_53, 12, x_51); +x_54 = lean_alloc_ctor(0, 6, 0); +lean_ctor_set(x_54, 0, x_53); +lean_ctor_set(x_54, 1, x_14); +lean_ctor_set(x_54, 2, x_15); +lean_ctor_set(x_54, 3, x_16); +lean_ctor_set(x_54, 4, x_17); +lean_ctor_set(x_54, 5, x_18); +lean_inc(x_8); +lean_inc(x_7); +lean_inc(x_6); +x_55 = l_Lean_MVarId_refl(x_12, x_54, x_6, x_7, x_8, x_13); +if (lean_obj_tag(x_55) == 0) +{ +lean_object* x_56; lean_object* x_57; lean_object* x_58; +x_56 = lean_ctor_get(x_55, 1); +lean_inc(x_56); +lean_dec(x_55); +x_57 = lean_box(0); +x_58 = l_Lean_Elab_Tactic_replaceMainGoal(x_57, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_56); +if (lean_obj_tag(x_58) == 0) +{ +lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; +x_59 = lean_ctor_get(x_58, 1); +lean_inc(x_59); +if (lean_is_exclusive(x_58)) { + lean_ctor_release(x_58, 0); + lean_ctor_release(x_58, 1); + x_60 = x_58; +} else { + lean_dec_ref(x_58); + x_60 = lean_box(0); +} +x_61 = lean_box(0); +if (lean_is_scalar(x_60)) { + x_62 = lean_alloc_ctor(0, 2, 0); +} else { + x_62 = x_60; +} +lean_ctor_set(x_62, 0, x_61); +lean_ctor_set(x_62, 1, x_59); +return x_62; +} +else +{ +lean_object* x_63; lean_object* x_64; lean_object* x_65; lean_object* x_66; +x_63 = lean_ctor_get(x_58, 0); +lean_inc(x_63); +x_64 = lean_ctor_get(x_58, 1); +lean_inc(x_64); +if (lean_is_exclusive(x_58)) { + lean_ctor_release(x_58, 0); + lean_ctor_release(x_58, 1); + x_65 = x_58; +} else { + lean_dec_ref(x_58); + x_65 = lean_box(0); +} +if (lean_is_scalar(x_65)) { + x_66 = lean_alloc_ctor(1, 2, 0); +} else { + x_66 = x_65; +} +lean_ctor_set(x_66, 0, x_63); +lean_ctor_set(x_66, 1, x_64); +return x_66; +} +} +else +{ +lean_object* x_67; lean_object* x_68; lean_object* x_69; lean_object* x_70; +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_67 = lean_ctor_get(x_55, 0); +lean_inc(x_67); +x_68 = lean_ctor_get(x_55, 1); +lean_inc(x_68); +if (lean_is_exclusive(x_55)) { + lean_ctor_release(x_55, 0); + lean_ctor_release(x_55, 1); + x_69 = x_55; +} else { + lean_dec_ref(x_55); + x_69 = lean_box(0); +} +if (lean_is_scalar(x_69)) { + x_70 = lean_alloc_ctor(1, 2, 0); +} else { + x_70 = x_69; +} +lean_ctor_set(x_70, 0, x_67); +lean_ctor_set(x_70, 1, x_68); +return x_70; +} +} +} +else +{ +uint8_t x_71; +lean_dec(x_8); +lean_dec(x_7); +lean_dec(x_6); +lean_dec(x_5); +lean_dec(x_4); +lean_dec(x_3); +lean_dec(x_2); +lean_dec(x_1); +x_71 = !lean_is_exclusive(x_10); +if (x_71 == 0) +{ +return x_10; +} +else +{ +lean_object* x_72; lean_object* x_73; lean_object* x_74; +x_72 = lean_ctor_get(x_10, 0); +x_73 = lean_ctor_get(x_10, 1); +lean_inc(x_73); +lean_inc(x_72); +lean_dec(x_10); +x_74 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_74, 0, x_72); +lean_ctor_set(x_74, 1, x_73); +return x_74; +} +} +} +} +static lean_object* _init_l_MyNat_evalRfl___rarg___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l_MyNat_evalRfl___rarg___lambda__1), 9, 0); +return x_1; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRfl___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) { +_start: +{ +lean_object* x_10; lean_object* x_11; +x_10 = l_MyNat_evalRfl___rarg___closed__1; +x_11 = l_Lean_Elab_Tactic_withMainContext___rarg(x_10, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9); +return x_11; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRfl(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = lean_alloc_closure((void*)(l_MyNat_evalRfl___rarg), 9, 0); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_evalRfl___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_evalRfl(x_1); +lean_dec(x_1); +return x_2; +} +} +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_Mathlib_Lean_Expr_Basic(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +lean_object* initialize_Lean_Elab_Tactic_Basic(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_Modifications_Tactics(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Mathlib_Lean_Expr_Basic(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_Lean_Elab_Tactic_Basic(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +l_MyNat_rewriteSeq___closed__1 = _init_l_MyNat_rewriteSeq___closed__1(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__1); +l_MyNat_rewriteSeq___closed__2 = _init_l_MyNat_rewriteSeq___closed__2(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__2); +l_MyNat_rewriteSeq___closed__3 = _init_l_MyNat_rewriteSeq___closed__3(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__3); +l_MyNat_rewriteSeq___closed__4 = _init_l_MyNat_rewriteSeq___closed__4(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__4); +l_MyNat_rewriteSeq___closed__5 = _init_l_MyNat_rewriteSeq___closed__5(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__5); +l_MyNat_rewriteSeq___closed__6 = _init_l_MyNat_rewriteSeq___closed__6(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__6); +l_MyNat_rewriteSeq___closed__7 = _init_l_MyNat_rewriteSeq___closed__7(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__7); +l_MyNat_rewriteSeq___closed__8 = _init_l_MyNat_rewriteSeq___closed__8(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__8); +l_MyNat_rewriteSeq___closed__9 = _init_l_MyNat_rewriteSeq___closed__9(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__9); +l_MyNat_rewriteSeq___closed__10 = _init_l_MyNat_rewriteSeq___closed__10(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__10); +l_MyNat_rewriteSeq___closed__11 = _init_l_MyNat_rewriteSeq___closed__11(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__11); +l_MyNat_rewriteSeq___closed__12 = _init_l_MyNat_rewriteSeq___closed__12(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__12); +l_MyNat_rewriteSeq___closed__13 = _init_l_MyNat_rewriteSeq___closed__13(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__13); +l_MyNat_rewriteSeq___closed__14 = _init_l_MyNat_rewriteSeq___closed__14(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__14); +l_MyNat_rewriteSeq___closed__15 = _init_l_MyNat_rewriteSeq___closed__15(); +lean_mark_persistent(l_MyNat_rewriteSeq___closed__15); +l_MyNat_rewriteSeq = _init_l_MyNat_rewriteSeq(); +lean_mark_persistent(l_MyNat_rewriteSeq); +l_MyNat_evalRewriteSeq___lambda__2___closed__1 = _init_l_MyNat_evalRewriteSeq___lambda__2___closed__1(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__2___closed__1); +l_MyNat_evalRewriteSeq___lambda__2___closed__2 = _init_l_MyNat_evalRewriteSeq___lambda__2___closed__2(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__2___closed__2); +l_MyNat_evalRewriteSeq___lambda__2___closed__3 = _init_l_MyNat_evalRewriteSeq___lambda__2___closed__3(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__2___closed__3); +l_MyNat_evalRewriteSeq___lambda__2___closed__4 = _init_l_MyNat_evalRewriteSeq___lambda__2___closed__4(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__2___closed__4); +l_MyNat_evalRewriteSeq___lambda__2___closed__5 = _init_l_MyNat_evalRewriteSeq___lambda__2___closed__5(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__2___closed__5); +l_MyNat_evalRewriteSeq___lambda__3___closed__1 = _init_l_MyNat_evalRewriteSeq___lambda__3___closed__1(); +lean_mark_persistent(l_MyNat_evalRewriteSeq___lambda__3___closed__1); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__1); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__2); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__3); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__4); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__5); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__6); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__7); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__8); +l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9 = _init_l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9(); +lean_mark_persistent(l_Array_forInUnsafe_loop___at_Lean_Parser_Tactic_ElimApp_evalNames___spec__4___closed__9); +l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1 = _init_l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1(); +lean_mark_persistent(l_Lean_Parser_Tactic_ElimApp_evalNames___closed__1); +l_MyNat_induction___closed__1 = _init_l_MyNat_induction___closed__1(); +lean_mark_persistent(l_MyNat_induction___closed__1); +l_MyNat_induction___closed__2 = _init_l_MyNat_induction___closed__2(); +lean_mark_persistent(l_MyNat_induction___closed__2); +l_MyNat_induction___closed__3 = _init_l_MyNat_induction___closed__3(); +lean_mark_persistent(l_MyNat_induction___closed__3); +l_MyNat_induction___closed__4 = _init_l_MyNat_induction___closed__4(); +lean_mark_persistent(l_MyNat_induction___closed__4); +l_MyNat_induction___closed__5 = _init_l_MyNat_induction___closed__5(); +lean_mark_persistent(l_MyNat_induction___closed__5); +l_MyNat_induction___closed__6 = _init_l_MyNat_induction___closed__6(); +lean_mark_persistent(l_MyNat_induction___closed__6); +l_MyNat_induction___closed__7 = _init_l_MyNat_induction___closed__7(); +lean_mark_persistent(l_MyNat_induction___closed__7); +l_MyNat_induction___closed__8 = _init_l_MyNat_induction___closed__8(); +lean_mark_persistent(l_MyNat_induction___closed__8); +l_MyNat_induction___closed__9 = _init_l_MyNat_induction___closed__9(); +lean_mark_persistent(l_MyNat_induction___closed__9); +l_MyNat_induction___closed__10 = _init_l_MyNat_induction___closed__10(); +lean_mark_persistent(l_MyNat_induction___closed__10); +l_MyNat_induction___closed__11 = _init_l_MyNat_induction___closed__11(); +lean_mark_persistent(l_MyNat_induction___closed__11); +l_MyNat_induction___closed__12 = _init_l_MyNat_induction___closed__12(); +lean_mark_persistent(l_MyNat_induction___closed__12); +l_MyNat_induction___closed__13 = _init_l_MyNat_induction___closed__13(); +lean_mark_persistent(l_MyNat_induction___closed__13); +l_MyNat_induction___closed__14 = _init_l_MyNat_induction___closed__14(); +lean_mark_persistent(l_MyNat_induction___closed__14); +l_MyNat_induction___closed__15 = _init_l_MyNat_induction___closed__15(); +lean_mark_persistent(l_MyNat_induction___closed__15); +l_MyNat_induction___closed__16 = _init_l_MyNat_induction___closed__16(); +lean_mark_persistent(l_MyNat_induction___closed__16); +l_MyNat_induction___closed__17 = _init_l_MyNat_induction___closed__17(); +lean_mark_persistent(l_MyNat_induction___closed__17); +l_MyNat_induction___closed__18 = _init_l_MyNat_induction___closed__18(); +lean_mark_persistent(l_MyNat_induction___closed__18); +l_MyNat_induction___closed__19 = _init_l_MyNat_induction___closed__19(); +lean_mark_persistent(l_MyNat_induction___closed__19); +l_MyNat_induction___closed__20 = _init_l_MyNat_induction___closed__20(); +lean_mark_persistent(l_MyNat_induction___closed__20); +l_MyNat_induction___closed__21 = _init_l_MyNat_induction___closed__21(); +lean_mark_persistent(l_MyNat_induction___closed__21); +l_MyNat_induction___closed__22 = _init_l_MyNat_induction___closed__22(); +lean_mark_persistent(l_MyNat_induction___closed__22); +l_MyNat_induction___closed__23 = _init_l_MyNat_induction___closed__23(); +lean_mark_persistent(l_MyNat_induction___closed__23); +l_MyNat_induction___closed__24 = _init_l_MyNat_induction___closed__24(); +lean_mark_persistent(l_MyNat_induction___closed__24); +l_MyNat_induction = _init_l_MyNat_induction(); +lean_mark_persistent(l_MyNat_induction); +l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1 = _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1(); +lean_mark_persistent(l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___lambda__1___closed__1); +l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1 = _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1(); +lean_mark_persistent(l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__1); +l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2 = _init_l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2(); +lean_mark_persistent(l_Lean_Parser_Tactic___aux__NNG__Modifications__Tactics______elabRules__Lean__Parser__Tactic____root____MyNat__induction__1___closed__2); +l_MyNat_rfl___closed__1 = _init_l_MyNat_rfl___closed__1(); +lean_mark_persistent(l_MyNat_rfl___closed__1); +l_MyNat_rfl___closed__2 = _init_l_MyNat_rfl___closed__2(); +lean_mark_persistent(l_MyNat_rfl___closed__2); +l_MyNat_rfl___closed__3 = _init_l_MyNat_rfl___closed__3(); +lean_mark_persistent(l_MyNat_rfl___closed__3); +l_MyNat_rfl___closed__4 = _init_l_MyNat_rfl___closed__4(); +lean_mark_persistent(l_MyNat_rfl___closed__4); +l_MyNat_rfl = _init_l_MyNat_rfl(); +lean_mark_persistent(l_MyNat_rfl); +l_MyNat_evalRfl___rarg___closed__1 = _init_l_MyNat_evalRfl___rarg___closed__1(); +lean_mark_persistent(l_MyNat_evalRfl___rarg___closed__1); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/Modifications/Tactics.c.trace b/server/nng/build/ir/NNG/Modifications/Tactics.c.trace new file mode 100644 index 0000000..b8a6417 --- /dev/null +++ b/server/nng/build/ir/NNG/Modifications/Tactics.c.trace @@ -0,0 +1 @@ +14754082556322596060 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/MyNat/Addition.c b/server/nng/build/ir/NNG/MyNat/Addition.c new file mode 100644 index 0000000..db5eec9 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Addition.c @@ -0,0 +1,100 @@ +// Lean compiler output +// Module: NNG.MyNat.Addition +// Imports: Init NNG.MyNat.Definition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +static lean_object* l_MyNat_instAddMyNat___closed__1; +LEAN_EXPORT lean_object* l_MyNat_add___boxed(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_instAddMyNat; +LEAN_EXPORT lean_object* l_MyNat_add(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_add(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_2) == 0) +{ +lean_inc(x_1); +return x_1; +} +else +{ +uint8_t x_3; +x_3 = !lean_is_exclusive(x_2); +if (x_3 == 0) +{ +lean_object* x_4; lean_object* x_5; +x_4 = lean_ctor_get(x_2, 0); +x_5 = l_MyNat_add(x_1, x_4); +lean_ctor_set(x_2, 0, x_5); +return x_2; +} +else +{ +lean_object* x_6; lean_object* x_7; lean_object* x_8; +x_6 = lean_ctor_get(x_2, 0); +lean_inc(x_6); +lean_dec(x_2); +x_7 = l_MyNat_add(x_1, x_6); +x_8 = lean_alloc_ctor(1, 1, 0); +lean_ctor_set(x_8, 0, x_7); +return x_8; +} +} +} +} +LEAN_EXPORT lean_object* l_MyNat_add___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; +x_3 = l_MyNat_add(x_1, x_2); +lean_dec(x_1); +return x_3; +} +} +static lean_object* _init_l_MyNat_instAddMyNat___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l_MyNat_add___boxed), 2, 0); +return x_1; +} +} +static lean_object* _init_l_MyNat_instAddMyNat() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_instAddMyNat___closed__1; +return x_1; +} +} +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Definition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Definition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +l_MyNat_instAddMyNat___closed__1 = _init_l_MyNat_instAddMyNat___closed__1(); +lean_mark_persistent(l_MyNat_instAddMyNat___closed__1); +l_MyNat_instAddMyNat = _init_l_MyNat_instAddMyNat(); +lean_mark_persistent(l_MyNat_instAddMyNat); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/MyNat/Addition.c.trace b/server/nng/build/ir/NNG/MyNat/Addition.c.trace new file mode 100644 index 0000000..9a68d6e --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Addition.c.trace @@ -0,0 +1 @@ +2760095421866741095 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/MyNat/Definition.c b/server/nng/build/ir/NNG/MyNat/Definition.c new file mode 100644 index 0000000..344c155 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Definition.c @@ -0,0 +1,799 @@ +// Lean compiler output +// Module: NNG.MyNat.Definition +// Imports: Init +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2; +LEAN_EXPORT lean_object* l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99____boxed(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_instInhabitedMyNat; +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10; +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6; +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7; +lean_object* lean_mk_empty_array_with_capacity(lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1; +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9; +static lean_object* l_term_u2115___closed__5; +LEAN_EXPORT lean_object* l_instInhabitedMyNat; +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3; +LEAN_EXPORT uint8_t l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99_(lean_object*, lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4; +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3; +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___boxed(lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Syntax_getArgs(lean_object*); +static lean_object* l_term_u2115___closed__1; +lean_object* l_Lean_replaceRef(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_instToStringMyNat___boxed(lean_object*); +uint8_t l_Lean_Syntax_isOfKind(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_one; +LEAN_EXPORT lean_object* l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15____boxed(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_term_u2115; +lean_object* l_Lean_SourceInfo_fromRef(lean_object*, uint8_t); +LEAN_EXPORT lean_object* l_MyNat_ofNat(lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5; +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4; +LEAN_EXPORT lean_object* l_MyNat_myNatFromNat(lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7; +LEAN_EXPORT lean_object* l_MyNat_natFromMyNat(lean_object*); +LEAN_EXPORT uint8_t l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15_(lean_object*, lean_object*); +lean_object* l_Lean_addMacroScope(lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Name_str___override(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_instToStringMyNat(lean_object*); +lean_object* l_Lean_Syntax_node2(lean_object*, lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Syntax_getArg(lean_object*, lean_object*); +lean_object* l_Array_append___rarg(lean_object*, lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8; +static lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5; +static lean_object* l_MyNat_one___closed__2; +static lean_object* l_MyNat_one___closed__1; +uint8_t lean_nat_dec_eq(lean_object*, lean_object*); +static lean_object* l_instBEqMyNat___closed__1; +lean_object* l_Lean_Syntax_node1(lean_object*, lean_object*, lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6; +lean_object* lean_nat_sub(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_myNatFromNat___boxed(lean_object*); +static lean_object* l_term_u2115___closed__4; +LEAN_EXPORT lean_object* l_MyNat_natFromMyNat___boxed(lean_object*); +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1(lean_object*, lean_object*, lean_object*); +lean_object* l_Lean_Name_mkStr4(lean_object*, lean_object*, lean_object*, lean_object*); +LEAN_EXPORT uint8_t l_instDecidableEqMyNat(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_instDecidableEqMyNat___boxed(lean_object*, lean_object*); +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1; +lean_object* lean_nat_add(lean_object*, lean_object*); +static lean_object* l_term_u2115___closed__3; +static lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2; +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1(lean_object*, lean_object*, lean_object*); +lean_object* l_String_toSubstring_x27(lean_object*); +lean_object* l_Nat_repr(lean_object*); +static lean_object* l_term_u2115___closed__2; +LEAN_EXPORT lean_object* l_instBEqMyNat; +LEAN_EXPORT lean_object* l_MyNat_ofNat___boxed(lean_object*); +LEAN_EXPORT uint8_t l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15_(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_1) == 0) +{ +if (lean_obj_tag(x_2) == 0) +{ +uint8_t x_3; +x_3 = 1; +return x_3; +} +else +{ +uint8_t x_4; +x_4 = 0; +return x_4; +} +} +else +{ +if (lean_obj_tag(x_2) == 0) +{ +uint8_t x_5; +x_5 = 0; +return x_5; +} +else +{ +lean_object* x_6; lean_object* x_7; +x_6 = lean_ctor_get(x_1, 0); +x_7 = lean_ctor_get(x_2, 0); +x_1 = x_6; +x_2 = x_7; +goto _start; +} +} +} +} +LEAN_EXPORT lean_object* l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15____boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; lean_object* x_4; +x_3 = l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15_(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +x_4 = lean_box(x_3); +return x_4; +} +} +static lean_object* _init_l_instBEqMyNat___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l___private_NNG_MyNat_Definition_0__beqMyNat____x40_NNG_MyNat_Definition___hyg_15____boxed), 2, 0); +return x_1; +} +} +static lean_object* _init_l_instBEqMyNat() { +_start: +{ +lean_object* x_1; +x_1 = l_instBEqMyNat___closed__1; +return x_1; +} +} +LEAN_EXPORT uint8_t l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99_(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_1) == 0) +{ +if (lean_obj_tag(x_2) == 0) +{ +uint8_t x_3; +x_3 = 1; +return x_3; +} +else +{ +uint8_t x_4; +x_4 = 0; +return x_4; +} +} +else +{ +if (lean_obj_tag(x_2) == 0) +{ +uint8_t x_5; +x_5 = 0; +return x_5; +} +else +{ +lean_object* x_6; lean_object* x_7; +x_6 = lean_ctor_get(x_1, 0); +x_7 = lean_ctor_get(x_2, 0); +x_1 = x_6; +x_2 = x_7; +goto _start; +} +} +} +} +LEAN_EXPORT lean_object* l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99____boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; lean_object* x_4; +x_3 = l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99_(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +x_4 = lean_box(x_3); +return x_4; +} +} +LEAN_EXPORT uint8_t l_instDecidableEqMyNat(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; +x_3 = l___private_NNG_MyNat_Definition_0__decEqMyNat____x40_NNG_MyNat_Definition___hyg_99_(x_1, x_2); +return x_3; +} +} +LEAN_EXPORT lean_object* l_instDecidableEqMyNat___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +uint8_t x_3; lean_object* x_4; +x_3 = l_instDecidableEqMyNat(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +x_4 = lean_box(x_3); +return x_4; +} +} +static lean_object* _init_l_instInhabitedMyNat() { +_start: +{ +lean_object* x_1; +x_1 = lean_box(0); +return x_1; +} +} +static lean_object* _init_l_term_u2115___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("termℕ", 7); +return x_1; +} +} +static lean_object* _init_l_term_u2115___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l_term_u2115___closed__1; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l_term_u2115___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("ℕ", 3); +return x_1; +} +} +static lean_object* _init_l_term_u2115___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_term_u2115___closed__3; +x_2 = lean_alloc_ctor(5, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_term_u2115___closed__5() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; +x_1 = l_term_u2115___closed__2; +x_2 = lean_unsigned_to_nat(1024u); +x_3 = l_term_u2115___closed__4; +x_4 = lean_alloc_ctor(3, 3, 0); +lean_ctor_set(x_4, 0, x_1); +lean_ctor_set(x_4, 1, x_2); +lean_ctor_set(x_4, 2, x_3); +return x_4; +} +} +static lean_object* _init_l_term_u2115() { +_start: +{ +lean_object* x_1; +x_1 = l_term_u2115___closed__5; +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("MyNat", 5); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1; +x_2 = l_String_toSubstring_x27(x_1); +return x_2; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_2); +lean_ctor_set(x_3, 1, x_1); +return x_3; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3; +x_2 = lean_alloc_ctor(0, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_2); +lean_ctor_set(x_3, 1, x_1); +return x_3; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4; +x_2 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6; +x_3 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_3, 0, x_1); +lean_ctor_set(x_3, 1, x_2); +return x_3; +} +} +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; uint8_t x_5; +x_4 = l_term_u2115___closed__2; +x_5 = l_Lean_Syntax_isOfKind(x_1, x_4); +if (x_5 == 0) +{ +lean_object* x_6; lean_object* x_7; +lean_dec(x_2); +x_6 = lean_box(1); +x_7 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_7, 0, x_6); +lean_ctor_set(x_7, 1, x_3); +return x_7; +} +else +{ +lean_object* x_8; uint8_t x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; +x_8 = lean_ctor_get(x_2, 5); +lean_inc(x_8); +x_9 = 0; +x_10 = l_Lean_SourceInfo_fromRef(x_8, x_9); +x_11 = lean_ctor_get(x_2, 2); +lean_inc(x_11); +x_12 = lean_ctor_get(x_2, 1); +lean_inc(x_12); +lean_dec(x_2); +x_13 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3; +x_14 = l_Lean_addMacroScope(x_12, x_13, x_11); +x_15 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2; +x_16 = l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7; +x_17 = lean_alloc_ctor(3, 4, 0); +lean_ctor_set(x_17, 0, x_10); +lean_ctor_set(x_17, 1, x_15); +lean_ctor_set(x_17, 2, x_14); +lean_ctor_set(x_17, 3, x_16); +x_18 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_18, 0, x_17); +lean_ctor_set(x_18, 1, x_3); +return x_18; +} +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("ident", 5); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Lean", 4); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Parser", 6); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("Term", 4); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("app", 3); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; +x_1 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3; +x_2 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4; +x_3 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5; +x_4 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6; +x_5 = l_Lean_Name_mkStr4(x_1, x_2, x_3, x_4); +return x_5; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8() { +_start: +{ +lean_object* x_1; +x_1 = lean_mk_string_from_bytes("null", 4); +return x_1; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9() { +_start: +{ +lean_object* x_1; lean_object* x_2; lean_object* x_3; +x_1 = lean_box(0); +x_2 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8; +x_3 = l_Lean_Name_str___override(x_1, x_2); +return x_3; +} +} +static lean_object* _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = lean_unsigned_to_nat(0u); +x_2 = lean_mk_empty_array_with_capacity(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; uint8_t x_5; +x_4 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2; +lean_inc(x_1); +x_5 = l_Lean_Syntax_isOfKind(x_1, x_4); +if (x_5 == 0) +{ +lean_object* x_6; uint8_t x_7; +x_6 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7; +lean_inc(x_1); +x_7 = l_Lean_Syntax_isOfKind(x_1, x_6); +if (x_7 == 0) +{ +lean_object* x_8; lean_object* x_9; +lean_dec(x_1); +x_8 = lean_box(0); +x_9 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_9, 0, x_8); +lean_ctor_set(x_9, 1, x_3); +return x_9; +} +else +{ +lean_object* x_10; lean_object* x_11; uint8_t x_12; +x_10 = lean_unsigned_to_nat(0u); +x_11 = l_Lean_Syntax_getArg(x_1, x_10); +lean_inc(x_11); +x_12 = l_Lean_Syntax_isOfKind(x_11, x_4); +if (x_12 == 0) +{ +lean_object* x_13; lean_object* x_14; +lean_dec(x_11); +lean_dec(x_1); +x_13 = lean_box(0); +x_14 = lean_alloc_ctor(1, 2, 0); +lean_ctor_set(x_14, 0, x_13); +lean_ctor_set(x_14, 1, x_3); +return x_14; +} +else +{ +lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; uint8_t x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30; +x_15 = lean_unsigned_to_nat(1u); +x_16 = l_Lean_Syntax_getArg(x_1, x_15); +lean_dec(x_1); +x_17 = l_Lean_Syntax_getArgs(x_16); +lean_dec(x_16); +x_18 = l_Lean_replaceRef(x_11, x_2); +lean_dec(x_11); +x_19 = 0; +x_20 = l_Lean_SourceInfo_fromRef(x_18, x_19); +x_21 = l_term_u2115___closed__3; +lean_inc(x_20); +x_22 = lean_alloc_ctor(2, 2, 0); +lean_ctor_set(x_22, 0, x_20); +lean_ctor_set(x_22, 1, x_21); +x_23 = l_term_u2115___closed__2; +lean_inc(x_20); +x_24 = l_Lean_Syntax_node1(x_20, x_23, x_22); +x_25 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10; +x_26 = l_Array_append___rarg(x_25, x_17); +x_27 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9; +lean_inc(x_20); +x_28 = lean_alloc_ctor(1, 3, 0); +lean_ctor_set(x_28, 0, x_20); +lean_ctor_set(x_28, 1, x_27); +lean_ctor_set(x_28, 2, x_26); +x_29 = l_Lean_Syntax_node2(x_20, x_6, x_24, x_28); +x_30 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_30, 0, x_29); +lean_ctor_set(x_30, 1, x_3); +return x_30; +} +} +} +else +{ +lean_object* x_31; uint8_t x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; +x_31 = l_Lean_replaceRef(x_1, x_2); +lean_dec(x_1); +x_32 = 0; +x_33 = l_Lean_SourceInfo_fromRef(x_31, x_32); +x_34 = l_term_u2115___closed__3; +lean_inc(x_33); +x_35 = lean_alloc_ctor(2, 2, 0); +lean_ctor_set(x_35, 0, x_33); +lean_ctor_set(x_35, 1, x_34); +x_36 = l_term_u2115___closed__2; +x_37 = l_Lean_Syntax_node1(x_33, x_36, x_35); +x_38 = lean_alloc_ctor(0, 2, 0); +lean_ctor_set(x_38, 0, x_37); +lean_ctor_set(x_38, 1, x_3); +return x_38; +} +} +} +LEAN_EXPORT lean_object* l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) { +_start: +{ +lean_object* x_4; +x_4 = l___aux__NNG__MyNat__Definition______unexpand__MyNat__1(x_1, x_2, x_3); +lean_dec(x_2); +return x_4; +} +} +static lean_object* _init_l_MyNat_instInhabitedMyNat() { +_start: +{ +lean_object* x_1; +x_1 = lean_box(0); +return x_1; +} +} +LEAN_EXPORT lean_object* l_MyNat_myNatFromNat(lean_object* x_1) { +_start: +{ +lean_object* x_2; uint8_t x_3; +x_2 = lean_unsigned_to_nat(0u); +x_3 = lean_nat_dec_eq(x_1, x_2); +if (x_3 == 0) +{ +lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; +x_4 = lean_unsigned_to_nat(1u); +x_5 = lean_nat_sub(x_1, x_4); +x_6 = l_MyNat_myNatFromNat(x_5); +lean_dec(x_5); +x_7 = lean_alloc_ctor(1, 1, 0); +lean_ctor_set(x_7, 0, x_6); +return x_7; +} +else +{ +lean_object* x_8; +x_8 = lean_box(0); +return x_8; +} +} +} +LEAN_EXPORT lean_object* l_MyNat_myNatFromNat___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_myNatFromNat(x_1); +lean_dec(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_natFromMyNat(lean_object* x_1) { +_start: +{ +if (lean_obj_tag(x_1) == 0) +{ +lean_object* x_2; +x_2 = lean_unsigned_to_nat(0u); +return x_2; +} +else +{ +lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; +x_3 = lean_ctor_get(x_1, 0); +x_4 = l_MyNat_natFromMyNat(x_3); +x_5 = lean_unsigned_to_nat(1u); +x_6 = lean_nat_add(x_4, x_5); +lean_dec(x_4); +return x_6; +} +} +} +LEAN_EXPORT lean_object* l_MyNat_natFromMyNat___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_natFromMyNat(x_1); +lean_dec(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_ofNat(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_myNatFromNat(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_ofNat___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_ofNat(x_1); +lean_dec(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_instToStringMyNat(lean_object* x_1) { +_start: +{ +lean_object* x_2; lean_object* x_3; +x_2 = l_MyNat_natFromMyNat(x_1); +x_3 = l_Nat_repr(x_2); +return x_3; +} +} +LEAN_EXPORT lean_object* l_MyNat_instToStringMyNat___boxed(lean_object* x_1) { +_start: +{ +lean_object* x_2; +x_2 = l_MyNat_instToStringMyNat(x_1); +lean_dec(x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_one___closed__1() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = lean_unsigned_to_nat(0u); +x_2 = l_MyNat_myNatFromNat(x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_one___closed__2() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = l_MyNat_one___closed__1; +x_2 = lean_alloc_ctor(1, 1, 0); +lean_ctor_set(x_2, 0, x_1); +return x_2; +} +} +static lean_object* _init_l_MyNat_one() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_one___closed__2; +return x_1; +} +} +lean_object* initialize_Init(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_MyNat_Definition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +l_instBEqMyNat___closed__1 = _init_l_instBEqMyNat___closed__1(); +lean_mark_persistent(l_instBEqMyNat___closed__1); +l_instBEqMyNat = _init_l_instBEqMyNat(); +lean_mark_persistent(l_instBEqMyNat); +l_instInhabitedMyNat = _init_l_instInhabitedMyNat(); +lean_mark_persistent(l_instInhabitedMyNat); +l_term_u2115___closed__1 = _init_l_term_u2115___closed__1(); +lean_mark_persistent(l_term_u2115___closed__1); +l_term_u2115___closed__2 = _init_l_term_u2115___closed__2(); +lean_mark_persistent(l_term_u2115___closed__2); +l_term_u2115___closed__3 = _init_l_term_u2115___closed__3(); +lean_mark_persistent(l_term_u2115___closed__3); +l_term_u2115___closed__4 = _init_l_term_u2115___closed__4(); +lean_mark_persistent(l_term_u2115___closed__4); +l_term_u2115___closed__5 = _init_l_term_u2115___closed__5(); +lean_mark_persistent(l_term_u2115___closed__5); +l_term_u2115 = _init_l_term_u2115(); +lean_mark_persistent(l_term_u2115); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__1); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__2); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__3); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__4); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__5); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__6); +l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7 = _init_l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______macroRules__term_u2115__1___closed__7); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__1); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__2); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__3); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__4); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__5); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__6); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__7); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__8); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__9); +l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10 = _init_l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10(); +lean_mark_persistent(l___aux__NNG__MyNat__Definition______unexpand__MyNat__1___closed__10); +l_MyNat_instInhabitedMyNat = _init_l_MyNat_instInhabitedMyNat(); +lean_mark_persistent(l_MyNat_instInhabitedMyNat); +l_MyNat_one___closed__1 = _init_l_MyNat_one___closed__1(); +lean_mark_persistent(l_MyNat_one___closed__1); +l_MyNat_one___closed__2 = _init_l_MyNat_one___closed__2(); +lean_mark_persistent(l_MyNat_one___closed__2); +l_MyNat_one = _init_l_MyNat_one(); +lean_mark_persistent(l_MyNat_one); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/MyNat/Definition.c.trace b/server/nng/build/ir/NNG/MyNat/Definition.c.trace new file mode 100644 index 0000000..78e3290 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Definition.c.trace @@ -0,0 +1 @@ +6972496789146285202 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/MyNat/Multiplication.c b/server/nng/build/ir/NNG/MyNat/Multiplication.c new file mode 100644 index 0000000..9da0f29 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Multiplication.c @@ -0,0 +1,100 @@ +// Lean compiler output +// Module: NNG.MyNat.Multiplication +// Imports: Init NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +LEAN_EXPORT lean_object* l_MyNat_instMulMyNat; +static lean_object* l_MyNat_instMulMyNat___closed__1; +lean_object* l_MyNat_myNatFromNat(lean_object*); +LEAN_EXPORT lean_object* l_MyNat_mul___boxed(lean_object*, lean_object*); +LEAN_EXPORT lean_object* l_MyNat_mul(lean_object*, lean_object*); +lean_object* l_MyNat_add(lean_object*, lean_object*); +static lean_object* l_MyNat_mul___closed__1; +static lean_object* _init_l_MyNat_mul___closed__1() { +_start: +{ +lean_object* x_1; lean_object* x_2; +x_1 = lean_unsigned_to_nat(0u); +x_2 = l_MyNat_myNatFromNat(x_1); +return x_2; +} +} +LEAN_EXPORT lean_object* l_MyNat_mul(lean_object* x_1, lean_object* x_2) { +_start: +{ +if (lean_obj_tag(x_2) == 0) +{ +lean_object* x_3; +x_3 = l_MyNat_mul___closed__1; +return x_3; +} +else +{ +lean_object* x_4; lean_object* x_5; lean_object* x_6; +x_4 = lean_ctor_get(x_2, 0); +x_5 = l_MyNat_mul(x_1, x_4); +x_6 = l_MyNat_add(x_1, x_5); +return x_6; +} +} +} +LEAN_EXPORT lean_object* l_MyNat_mul___boxed(lean_object* x_1, lean_object* x_2) { +_start: +{ +lean_object* x_3; +x_3 = l_MyNat_mul(x_1, x_2); +lean_dec(x_2); +lean_dec(x_1); +return x_3; +} +} +static lean_object* _init_l_MyNat_instMulMyNat___closed__1() { +_start: +{ +lean_object* x_1; +x_1 = lean_alloc_closure((void*)(l_MyNat_mul___boxed), 2, 0); +return x_1; +} +} +static lean_object* _init_l_MyNat_instMulMyNat() { +_start: +{ +lean_object* x_1; +x_1 = l_MyNat_instMulMyNat___closed__1; +return x_1; +} +} +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_MyNat_Multiplication(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +l_MyNat_mul___closed__1 = _init_l_MyNat_mul___closed__1(); +lean_mark_persistent(l_MyNat_mul___closed__1); +l_MyNat_instMulMyNat___closed__1 = _init_l_MyNat_instMulMyNat___closed__1(); +lean_mark_persistent(l_MyNat_instMulMyNat___closed__1); +l_MyNat_instMulMyNat = _init_l_MyNat_instMulMyNat(); +lean_mark_persistent(l_MyNat_instMulMyNat); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/MyNat/Multiplication.c.trace b/server/nng/build/ir/NNG/MyNat/Multiplication.c.trace new file mode 100644 index 0000000..a9ec026 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Multiplication.c.trace @@ -0,0 +1 @@ +2052634667963101258 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c b/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c new file mode 100644 index 0000000..a33cb00 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c @@ -0,0 +1,37 @@ +// Lean compiler output +// Module: NNG.MyNat.Theorems.Addition +// Imports: Init NNG.Metadata NNG.MyNat.Addition +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_Metadata(uint8_t builtin, lean_object*); +lean_object* initialize_NNG_MyNat_Addition(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_MyNat_Theorems_Addition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_Metadata(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +res = initialize_NNG_MyNat_Addition(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c.trace b/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c.trace new file mode 100644 index 0000000..bfa62e3 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Theorems/Addition.c.trace @@ -0,0 +1 @@ +3227530040224467366 \ No newline at end of file diff --git a/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c b/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c new file mode 100644 index 0000000..4175d5f --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c @@ -0,0 +1,29 @@ +// Lean compiler output +// Module: NNG.MyNat.Theorems.Proposition +// Imports: Init +#include +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wunused-parameter" +#pragma clang diagnostic ignored "-Wunused-label" +#elif defined(__GNUC__) && !defined(__CLANG__) +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wunused-label" +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif +#ifdef __cplusplus +extern "C" { +#endif +lean_object* initialize_Init(uint8_t builtin, lean_object*); +static bool _G_initialized = false; +LEAN_EXPORT lean_object* initialize_NNG_MyNat_Theorems_Proposition(uint8_t builtin, lean_object* w) { +lean_object * res; +if (_G_initialized) return lean_io_result_mk_ok(lean_box(0)); +_G_initialized = true; +res = initialize_Init(builtin, lean_io_mk_world()); +if (lean_io_result_is_error(res)) return res; +lean_dec_ref(res); +return lean_io_result_mk_ok(lean_box(0)); +} +#ifdef __cplusplus +} +#endif diff --git a/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c.trace b/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c.trace new file mode 100644 index 0000000..3b33097 --- /dev/null +++ b/server/nng/build/ir/NNG/MyNat/Theorems/Proposition.c.trace @@ -0,0 +1 @@ +483796173031302994 \ No newline at end of file diff --git a/server/nng/build/lib/NNG.ilean b/server/nng/build/lib/NNG.ilean new file mode 100644 index 0000000..03c7188 --- /dev/null +++ b/server/nng/build/lib/NNG.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG.olean b/server/nng/build/lib/NNG.olean new file mode 100644 index 0000000000000000000000000000000000000000..1712c5162c2d186842e0870520ef636925260541 GIT binary patch literal 350168 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%0D* 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG.trace b/server/nng/build/lib/NNG.trace new file mode 100644 index 0000000..813ce6e --- /dev/null +++ b/server/nng/build/lib/NNG.trace @@ -0,0 +1 @@ +7356427851528760174 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Definitions.ilean b/server/nng/build/lib/NNG/Doc/Definitions.ilean new file mode 100644 index 0000000..7158bdc --- /dev/null +++ b/server/nng/build/lib/NNG/Doc/Definitions.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Doc.Definitions"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Definitions.olean b/server/nng/build/lib/NNG/Doc/Definitions.olean new file mode 100644 index 0000000000000000000000000000000000000000..5cb4d98d15f04a3dc6177b12f2e1dc9e70dc68d8 GIT binary patch literal 11608 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 OD*eVfc4L&+@BaY*iT)k{ literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Doc/Definitions.trace b/server/nng/build/lib/NNG/Doc/Definitions.trace new file mode 100644 index 0000000..a4001fc --- /dev/null +++ b/server/nng/build/lib/NNG/Doc/Definitions.trace @@ -0,0 +1 @@ +2922655963706979749 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Lemmas.ilean b/server/nng/build/lib/NNG/Doc/Lemmas.ilean new file mode 100644 index 0000000..128363e --- /dev/null +++ b/server/nng/build/lib/NNG/Doc/Lemmas.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Doc.Lemmas"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Lemmas.olean b/server/nng/build/lib/NNG/Doc/Lemmas.olean new file mode 100644 index 0000000000000000000000000000000000000000..f3f354eb34167da22326f98a1bc82bc7ff2d3e32 GIT binary patch literal 12912 zcmb_i3wRaPwLZKfj}QeUAkt7!f)7lweoe2?M)HP$fg~6nZJ3-)P6ke9j&sh50RyIr zk`^t2qBlM&fv;*VqK#T0SG~PKt{Q8rxriDSG+sY6RG<+NgYvk0?Y;iPWIPA1{qB4p z{Ac!Fv;MW#UVH65dt&)@%`7+k`UG`(JbO!PhIu?`(-eBd)yLyGDgMa|$hW?qNuIuaU|%Eq(KYLn z{TsG7N^$CMF?=s_2=+?5+n4JJo#}E{SX&0PThLQ{u0An z#l;Xb_$#;_{TJd#9Ds;>zHJ4-O?Fj=b~JK3`Y#kWj295&rj?bIc&*CHSp410v#S2-bqDq? ztO0*gKNSb`|FiruZ-f!C_yf!{{3nYatkP!P2>wQHNB@QR2QvW>aUlP-V9<(8J|X9f ze>d}7`ESRbw-&ze4fvD#v;W+GA%5@y5q~-V&*wk$oXBkX_DoK8Bo7<8J;3J@}KqZyZx>Gzq>W*^@#ri*#G|r{`2L3fO*#KyrJpROBSVozmeO~e*ynbVBCSN z{CpZ?EBleg*vjLY#@Nd9AeFI>=Y1R_*+q3Ho_>f6h=h+tkz8}uo8o~g zp22%OPi}thgGr<#(bLyc$L-y0C$$Tn6NK)I_>ot@K`i9cD)r22wI(@vJ6Qj-gMWR+ z-;d6?p2UgQGf3If%Kg+%`bW_ZaREoFThDDqnNJTDSYg|%&)0oMFl4XbF8Lhn0AgLc zMLwq_Nk8g35cNGzEZflMw7-Gv%-UVB`cQiNVi1j5L)NSR9+k0hCgpc(e8a!up*~xoYA|&oYA%CxjgNfpG?6yz>k*6m7iQ*^aivcen0Z)KBi6$o?K~uV?(P zEl>XAt2g2c$sDpjaY*!eF^260Ch~pQG|COHMgx!|Oc7@5W>DO4w*;~u^BstJKSvMA z*peXGhk0GkcDyug*`rgY``$r+3%BPp7XEcZ&GEZ`zLEOL{*D;-4<`X}0a3pzjbP9) zeHoVbT*%2@?B9XNpE>8`l|u2qGp=bvRs6;j6(+wp@{HV1QGbBj6BzZHqbnAyJ^fQs zLUz}4yE|{d3q=0vx0<e35aW{R*GeJj9GB!_ z%D*3f-SgU#(JyW$8S2mH_8#^l{=lZbK<_q+W^ zeF37*(7X?a^s+2N_m|xi3fZKHFB(6LGZ5oV^FHz%7bmCvo_OWoj6=TP^uPZ1GR>(! zh1=WM&eKai{LjVHy)v3)e?IrS?Z^8fP^`T2x+RN$2ypV(v7W>+SHJ$!kv);TZw5cd zZ{C?R1&_X%kV#sIzdZ&&{0AZqUd!~+lH#1LWC!L~+;A0#rn%v^Z)a~`DZa<+H zh<#B|yokAIq`%+^u)Yn?PTRa}eRdsq8e{Mv4}i!ATla?Tpk-4k7^Px_NfBR8zdBfN zW_)<#`&;gxO(GP(gaqZU+b_%`Am)=U=EqIJOuylHv!cAiJOW}q73y|G(mCGM%zNtN zuTR={t(7v=-^lGbjEiOryYrWue)0+IZH-|s))yew8M5~lBUE99MU4*VUNLnFR|NE4 zGsnr>!}?oVjWyrwE0Xh=;*@%E^f+Ok2*m!$8xDr7N{W+VYGQxvELhHQ39#Psx(BB} zyW?AVen5OpG5D}g0)ki6g-XpVqw@8gRG{&}z8Q%1RMZ7}PG*dAd=f8F{ywwg_|QJ_ z+dd}&>QCeLPPXs8k^5eGplZ_sjL%Z;cjpuA1R_o$O>FkOQO%Zh8g>G){uj#Uq}kFg z)ZupK-}33fqMh|Sn_+hkw>L0WEo@yq;FYI-0J{@ML?2(wHz4L+Kuo*}-Mjod!4?WB z-k2{yydTdCTOqk?P^QcOo%vVCcEqpB-R_-oyPVE4U${M=@#V$ux5Yno@Mo~UBZmE` ze?Zi!fH)kOqnVn|vB4(0F@J%W$9d^g|r>+$??JdredUubH<*W zA(eIOt4NOgYvA@Y#)ElZ{d7RwH7)3G;r0Z^s;Tc?=HIk+BlXjK>EL#E-eH~qk$>f3 zQ@&*sghl?_hJJ1rq{a_&K;&zYY3rJ|f;O!)ZOs%pz>6vS0XuU>DL-Gib8Y6s@k{T5 zAGO?`z_|CllNax4*tZaVG;+J!53DOd?9YOtrlkvmA}_&05seS(HV}DOAmk0rZ>*G= zMXW0RusiNjWp~lSHxHine6$b!sodVd_FaAG(|*r zK+KB*vCb>0-f=7*t>SoO>|;yXKVAMH$xxoxa(go4Gh+gmbZ@&umK9kCxV?w{Jbr9j zvhPoq{X0ERac<>)cbxHl2)vXY5SJDR6q$N;K-75My-6Uy;5QKYl0gfnWz*876p8;y z9^(i^{PJx*6k3sQJ6_AAznJ$+6IDE_p9pWd>n~Ty@R7gu+@8XC^Xji_z8E*;IFV9+ zGq?A!-#0#!wd2YWd55W=;?d6i?s%Zy0by?$`Q<9wPM)|i%Fefq{@3@t@%1C%N#%Ao z57q@B)(7!&DpvpRP?0+67xp;;*89=nyN}-Y-_OfpLVh*H;DbLv_*JQSZ7YgjSQk54 z-@7&atd|OR-VMJJ#wvf^e#wPV2m!~_1LCS&E-HMf+S6oNcBK{)o<`xtxaP3_*FLM+ z<$34JF495%)y3dNodqJUD&*&*As(pA_<5K_(OHu%g=nx z7H6EI(u=C;_Lan){3(~IcxGMqX0Cn9HJQ{;{#JAQ|259yXhHXhW7YF6Q$V}NlL08eJuN{j5SZmeu_`R z<T4y74jk;ymxo8K67L+ zSX(t#uFK?4;t!(d0qPJC^~f;Gb-OS<+Y;Ye=jZjJ^HBc6Zy@rhV1=k8xpI%;)uY%~ z$960}@Wk0`%|{QCh_s*E^BG6g)IY!RkJo)h{bYYf4EwP!2Vy=|T4v-BP3p(~I!VQ0 zOZJ|TH_Z0E0R5@l?jCRG1wwzR7L25nQ-6TY8 zu7&*}M6!1QQIDv&@wsR_>))GN-T3Sqcim1R6t{#4(Z?O*48*!_@X$pgbmmzO>z#f2 zg@u3L+9lJ6_-bSDK|c_6QY^6EihQ}sn!U43eK$VZC<$)jEa2S`mG&m8iHe>>w<_d_)fKfmYs+h=r_%q9`)Z|3%5 z#>!V0{b6Qc_Z0NEb9*x5tn9p9wfjz;qJD~ZH@Ca<7V{B^IwHRB$@Ah!^0FO>bMi!G zXTMReT)gVunR0#-PcgT`?E^{jVz;k=$x8wRb0Uu`k?kUv1= zk!hLYh)5g()0?XpG}42M_~4&slJakJcEg#Q-@bkV$&i1k-0t=d??J$RtW@L?)XRE^ zJOCme(j6~QWJd$np$6v5+<5t8!`8kkw`I~!ZVxaH_w4v`@!UO;I@lS*PQ(F-^{F&$ z_(O*HreK63)5{r;#4A)h+Lk^v`l5kZlM#;`ZgN=9FMr@Y zoc#oNnq%-F&On^6=gyCWUCtkjYZvSJcz^JL?sb+-ck(mgO64EUE9~tppHG?bi5z$8 zPvL%?S3FR6Mal934@b_O^10s~2h<55>P6TrwW=eLR<`yL^#bz`i1oaPM(JfU zSGWi%j+pngtoLuVJN&y2SA7h=mKb~(C*Zm967Qw171KFh-K=j>!`Pc|d$HqF@FY!% zo);rYKwLoV2LraXOng-kUw*T`^I_7-SIl}7wlAN&Zdp+_>7x9okHY7S2hPD(Ox7ss$M`H{=_>cG!u8uz5h#wGf^!mlYxtKTZ?}w-ZIjpat>$9gOy|cTXOd+1?7(A$VK;*Gu z`VCWlraI@5bG({a-+zpo*YMC=uT29_XAB$y3MruIj)0i?Qn)-vUod3?9sPAl4ZzELIKY zOS;RSZq{cUdHlepWj~74wWMpmUp|PVbnSfkP|W(y&aGZK@{}3bm)6DL!G08oybyIJ zB)?upqSkwST3O$Ssaq$+XWsue#H~9955@xsK2!WXT`-_|ogYM; z6^tIn20q70VXWozs|1{9@wr|iV-ufmrZBegd2caeH=mPt@;Q1Ze_yD^_Z0rF)5H7k z9{!$~%2>wh^fhp9VC@ic+KQ-`0cH?~ri1#UaVSt>IzlHTQ rln;HbZU6YOBt!Z;qw7C`_XD73nzFyqA)n$I;7R0m%wsp!^Su3EFPp!; literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Doc/Lemmas.trace b/server/nng/build/lib/NNG/Doc/Lemmas.trace new file mode 100644 index 0000000..a348b20 --- /dev/null +++ b/server/nng/build/lib/NNG/Doc/Lemmas.trace @@ -0,0 +1 @@ +16771103639053061509 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Tactics.ilean b/server/nng/build/lib/NNG/Doc/Tactics.ilean new file mode 100644 index 0000000..4722546 --- /dev/null +++ b/server/nng/build/lib/NNG/Doc/Tactics.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Doc.Tactics"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Doc/Tactics.olean b/server/nng/build/lib/NNG/Doc/Tactics.olean new file mode 100644 index 0000000000000000000000000000000000000000..abbc514b491aa315a411d00bd601af04e9af8267 GIT binary patch literal 13240 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_3.trace b/server/nng/build/lib/NNG/Levels/Addition/Level_3.trace new file mode 100644 index 0000000..7d2c4df --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Addition/Level_3.trace @@ -0,0 +1 @@ +18302928042269315295 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_4.ilean b/server/nng/build/lib/NNG/Levels/Addition/Level_4.ilean new file mode 100644 index 0000000..c3a591a --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Addition/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.succ":{"usages":[[13,29,13,33],[13,42,13,46]],"definition":null},"c:MyNat.add_zero":{"usages":[[15,8,15,16],[16,8,16,16],[39,10,39,18],[47,8,47,16]],"definition":null},"c:MyNat.add_succ":{"usages":[[18,8,18,16],[20,8,20,16],[43,10,43,18],[49,8,49,16]],"definition":null},"c:MyNat":{"usages":[[13,24,13,25],[35,11,35,12]],"definition":null},"c:AdditionWorld.zero_add":{"usages":[[38,10,38,18],[46,8,46,16]],"definition":null},"c:AdditionWorld.succ_add":{"usages":[[41,10,41,18],[51,8,51,16]],"definition":[13,8,13,16]}},"module":"NNG.Levels.Addition.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_4.olean b/server/nng/build/lib/NNG/Levels/Addition/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..5d36bd49f3fc6cd6d82ece9e7edd7647b8ee51df GIT binary patch literal 62232 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 L>3S%y*YN)XP&EQu literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_5.trace b/server/nng/build/lib/NNG/Levels/Addition/Level_5.trace new file mode 100644 index 0000000..b660c1d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Addition/Level_5.trace @@ -0,0 +1 @@ +9679823460697032654 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_6.ilean b/server/nng/build/lib/NNG/Levels/Addition/Level_6.ilean new file mode 100644 index 0000000..d1d3fc5 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Addition/Level_6.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat":{"usages":[[40,13,40,14]],"definition":null},"c:AdditionWorld.add_comm":{"usages":[[42,6,42,14]],"definition":null},"c:AdditionWorld.add_assoc":{"usages":[[41,6,41,15],[43,7,43,16]],"definition":null}},"module":"NNG.Levels.Addition.Level_6"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Addition/Level_6.olean b/server/nng/build/lib/NNG/Levels/Addition/Level_6.olean new file mode 100644 index 0000000000000000000000000000000000000000..d015a759d1abb43a9cacaa10648b7cffb0aee1eb GIT binary patch literal 67304 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 KJRyeXrT+&O_a%`4 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.trace new file mode 100644 index 0000000..f2787fb --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_2.trace @@ -0,0 +1 @@ +10022829939796104452 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.ilean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.ilean new file mode 100644 index 0000000..1a8ae67 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.AdvProposition.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.olean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..8f33a29b28df9f512ba56ec718b08a14960f23c3 GIT binary patch literal 23672 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.trace new file mode 100644 index 0000000..9e0f004 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_3.trace @@ -0,0 +1 @@ +1967301918816512059 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.ilean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.ilean new file mode 100644 index 0000000..e3a22a9 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.AdvProposition.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.olean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..ce5a396dd780fb3cbd36876cc19e9470d5e7029d GIT binary patch literal 25096 zcmb_^33yah*6qy%As|LUiD+ZtL{Nc%+D04fFo(GyL4(?oqEbmplB%LAfuLxoorog= z(T*blwT)xP0m<+14AM%}7SrMo6(!2A#uhOujlqd`_C0G=PA*m2zVF?Sk5zZ?efD(r z8S30y36}XhfntA|Z>YX3Yu?rWJI=D&JQ^)^C0N!zLFc9D`}=}OOv8O3SmqB@jIXE& zcefJx6xmumedT`d z-B*O4VI^8Q;Jd&Vy7-?eAJj!;ypiRBd{3oLiTFqTRnT+h;@fgB+41pkX)F5cL1+9z z7yXCG2Xztq>07I)GBn#$?u&#xUONUMn|9iu@8KJ+UUuGH->Ztyc2W~{9-MaA|3ub- zx76odJU`%H8W9cpGVSC*-;J-iKfBkeC=&^ZCltpH^%DC)r)?*Hc_=z>QSQPY5C{rDkUs@iOH|TE^9=B=g?qfwr>@>!)lMXG! zLvddjsEqiE#)nHP%YA_g-C3rc4(MB$-Sqh%J{&QDb~2J<*TX>QB@XCeC)cyo7s;zE zF7|tU-GyP=b3^a0zxSJ8d`rz-+N+6Uk99!gcq;N0&-9g-dtlxM(@rz=b*>y(H>Ys& z`?S;fTkW8q;@Qbe(Ru10DA{$<8*Q^_rvP-vc-qJMCRRZ%9oPW>vVpDWpHg5K>be$~ z32er=7W-0noEM0!zeq)qOv%3RXZ%Fw!5>(v#$7PHe4!fgqC{O{N5y1crO+3-#(HSo6YrlOM6pvB#}4bC$b8K7 zE%lWxJl)nQ`QrE|(y#GFOWomMC>Zfq_=5pk+^!euAx85ndeIf4m+LW+^*wv`RINc0yy(5=%l+BoT#J@NwQX0~wl5-iCW?Q|FOmDES<7d8I55pT*7ebO z?3li5$LfdcZE>lSX3$N0ik{FOgRa&FQ_S|4bxPzsq4p@jY2|uNr0=Fbt~BjW#nmrv z^PhXs2O=Z>xIs?`f}Rk&ST%JrQ3dEp4h=(_P0Y zHOHl$7YvsbxsK~O;*LwRN2=@ew0wU>nG!uNEiD-G1zdK=r=?8`RD^>?m1;8_45TTZ z`j=PXsqo3_-Cee6s+mh&nP&0YwTse4<)UzLhq6W0Dg|mG2nSuIp(Wj)mxR^luvdZ+ zhHII>qSW>Ax(4<6R9ESe(8uc@Fa(x_y9Jhnl|Xoj7VriGk&3ViBPjZORcd$dDy|H; zs$ApFQEI}jOi^An+%;l^%j=CL5>g^zLnLitFyJk#j70O&-LWn!$x835>+xOm=lejB zGWqX-P85Eom29ORqT7?+(XXdIkyG`ZmL(o zmj=_%w_^Aii%&T*A#t=qFX_&>AeYn$xkg|u5N2(UB`(hMMDo=HY0JoereE73K>JSq zYv2=wFMikb*ZC&B6!+98a+3cB&~t!7S1RM?-z@^T%=~wtef_7)j{Q&HTXu_x8OO`; z^HrdePdfc|^4Xp!e2Fu3sE(6#H}0tqa!IwIX93fJhC34XKCZvSCdjoSz6?j6xbGx# zy;nQJ@`b8X7m5S8%zUM%Yrl7_82-}#ZuoMqh^TxeaNWuQza934ul$SKFPS2M%gp;$ z1V|JS$y)>TlOBQ{=27INK3X7G4HSB;JavL!2y~YJ&KbF?7DjI0}VD@`9@=DK0(|DPE8WAQ0R`_0fxy3-%XCACAY9vExBH|=eL zKh!IFO#Wlw6X}n8pw0*BS-7V@k&}FcK>u&&ar>Y^8mp^E{X@@!dq280`RMnzXnuEH zJpw=f4s`NKr@u}<+Y^N^{hob1VM!P!5rvl;M zLGx|{UPw+3|vf1>_!z9@ja@MFba z1AZ#>6d2=H$;X|aJ>hV0nJ874)JX=~wL#xgYgSFWB$D#F=6A1O)*u~cgW;E1?+?Vt zqshMqe4^-=Iw^!+(sOW6eIh4$t_D5c{IouXe$)Os@QJkF4!xu|%k|A3aNuS*d@IR_tYnHlE)^{ z-97!>$8!*3JNQ{W<@WPjoyc>=3iZe(FXXeomx?X9%=y%HjLyrf%fGIC^trNgG`~B4 zZt%MdduH6%#)#YGuLPec`Xw)o&`WwP?x|1YBrmO?oAa4c8Fzmjs4TP3h^4)`zexX` zjx*!z(L2|?{$h>hcgL9xzIiV7OLpXxQFO><#`|a0NG_s$mU!!-pLA#ZA}8@SL#_%a zbft11)XHc3>gdUjn~zWrKfBja*AShLmUs8v@Wewyz7?e^j_A0_1>YiSestcr4301! zw2$&H1)nH<$wLG5kzRv)>JvH1LksA?HXb@5R|=H&W*qF-)MLBHzu8~Q;OBB6+DGFc zo&GxcY)=%v#90e_q=#@%eUM9P1lcF>%s=dq;TyNr`*irHC=eZz}`++nb04ljE_4JnOKcB}~CuqN& z_igaQiS(lh{Cb>^vwaty*R=t~KZ%oeGht8p9KF=%ed?K&eG$ozhxHCU@#Owr>EetU zU+UyaU(K*5cjmr<&n@R{-Tln=f84)K_*qtp6*{qJUYQ?a0r*;9QUc{`L8srsSD$}# ze%Sv1H#Qr7oB3&X(5p_;@v~kej%=%!RfW1>9-K&jYtdfXi5<3UFzAvO$`jjr^5edr zRid8X@zn^kKQo4DzaLM#_QZeh8Fw1(=YZbj(0_yosEasI-&)K3MJ2w9ykKS6>zn5* z@vEm~J)R$PJ|Xg)_&mFvRw91!e76zyzZrFL&CNf}wx877e9)_a-+giWRb$7TY`^Cq zdFuk*><5*r{R7}9@o?O$w}`^p2dCG%?%SX*D^us`^R!u)7wylxMVgDfQqZ0Dj)Z<9 z^W_Z|`NrE%LDi0Vsb8%r>=iw)F+W7+DbE*PYOX)bQyc96kZ{BC7wpY@OUz21tl`?< zdho5xv`;4X`^!zj7r$NLJN;%}h$(6`Djzj}$yBZFo!1w}TzvQN zu_bSdjPPqfcLDSNxq8LktN*x0_~L&9`Hs5a`#r?|(m-A1{z$|hD47)WcBfMO<@+5( z*2S!Dd96VGZ{{`qRPFas^Yb&G9r&~TK9ultKyQbCz7>0xpS$v>vqXvbT?oFj9%z@y zy7VmxObZkT&F;6vZ^{uVpJ%^iP#N|_zrE}6!u}w#UnZA%7BN7xU%KGu>ECs|eBq#H z*NKeqT_bedE#UY6U~S@%QQu4_KL`9e@RzmCz3J;2OJ)h*jvsty{G2z4oIhkdS629n zrucnjMaH{xqEGU`ekQWNWjsgQ*{eWL|6Ae5xX(+jOFr!`yUZm%Yov~^4*Z`k{P6h; z#(M2+ivKR~o&IzGL*%~lyeZYms_HBUrqbS-`t;n&b#~B^vR+@ z?AOP!&-jVVgL?6#M3xG3w2B`bUv1FWFuStlhZ&wNw39kY=fN2#^%D7>R7AZT5)4Zz_!p@j7Dc$sxEi2$a{tOT@2$UO zhKNZ1+T+;cI3jX9`PBFrADLX{k3PNbSx0)GJxlgJLHOs z)}FbGew2dl%rDmiBG(1+<2?25QLs|Yz3LoN4GDP*yvK+z?bbtoQ?vi7@86tnk54=P zICi-oBXYl^-aD-bmP`EpfJeQ(WKKk8zB5Mac#CUp8~gaiALZ%&RqJ}u=XFdFR z>57$;@91B6CF5vg9Kbi;-GA7Yx;Gavj;=UyaDFFppA=DZ&_v}>^vj`AB>ltrlgK)h zXD5D7ng0@F!nW%Rb_>tYd7i)E^-q4XcD_l!YeCNfp7QypU)_G-u6+942)Z->tT!V4 z7r$ezQ_Non^d(<5;q?dS-ZG4KGJdc9bJ}5iMAl_-u&l>-G|?mZp&vx%Q@za@sqh3U zrl@uzE0@S~JP)v<>31+Z2ffcZ6afj1JJ91j~x{{yz{|7+tZ5h zyFhmX_kQzWX33LB|BtknI?p&WcKrPQMLbd(sLK-y%@3$UP&JqPoQt)@#kh&Amr1hF z1;et`XhrIOk!L>=nLl^fS5dLt9kzeNffjbWhiQMC;CI#im20nju?*qJiw^=aYrPMs`#iMKV5edd?QJgcwxz7qBG zoL{nS+D-j~j(fr86DA+?#!&nCN$lo=?u?uB1d;QF{T^wYSWSD?(0j(Yi9@HI-nW=> zHpQ`*E&}QzvVN64bu!g+B@jD&PSFW{kA5@tKa;L{Bq%y0F4x%D+aaVc+>wFyWZ(Pk?XfN=$oWMl9^dl*q7MhIY2J- z1qMbU)k_E4`xA+$Dvlk_$3)J{{y?!WoIi1@`bA}A-pn56?0hqBBJ-ZNT+OJ{?7dd> z2jQlF9q{9V5AHuOB5?O75`geCa&#UV!9QX}?bB=iKI${!i~rf+JLfxoKOx!^q-s+h z3`7t0L_ha$A?R5@b<4mrW|TZb{dK=l|04B^B~AsV{#NK&z4N}ydq1}6B2ZC73@B9gZd=+3;cpNZVx_|bK- z44VDe0KGGQdS=1DH+0zLBlg#I7{NeXER?N@biz? zJbmf7&V@5X#IBo(I<6-0%eS6??}X6i;pAt5UjzR1sWUfKzxm^j!k2uz!FR^b@kr!6 zqJJf)9u%p-M2B4B2lHG5eMv{Wbl7D#Ot8nN*lCJmhxJP2zN4fpxX4o$yL`>ObVBc; z`E$E|T;2O}@ki`sPSSaC#>M&}vW^1k*LwDmw0wg%Vspk<2)*m3*8M!^t<#3mUR@k} z{60wJx~=L+n%dVd)x$*Ni=@QO^N=pso4n?C_Z_lwtGzuHzH73MyA}LHt&QJaFnddM z9?SvXnHT1P$n|MarC==1ybymS17I~UPT>u|Obd6Xd<^kv4Inyce&+q43 zu}DZgW`pjGhw}iD^&e3CQu+E3R_Dt-qv}~VA?Q8+s*zVMzM{9it+wkwjyg%MhXu@)bL5Yv!z8!jBtKL|)Y4_5P7+=P;*yDixMC|S__5IwjVw(NshQ9Ob z2G3dcY}==_Qys_7KoL+Ek^4dQUhc)}X^1-5o^sHGQqx`&^rk<&c-Zw9&z~x~B#)gj z?3wxCdEoMqo5ES%Y0>WinbTwEgYz1Z`%gJ{)aRew$v5p3Lf@q1M^pdLE2%T-Uu_&a z>{nv6u7a^Fi8ftV?B^Ef%{aSb@uqcGMbAg98L{JHJrQX)tlsMI`WN}j{1tXtMYO4? zJ&w<8=)L~EVU?4H=&wVP|4dy2x{CopJ&oe1N7B(eD=r*Z*Q&@N5oEB z96Oxvh^%9OK>b}W`|(@jad<}VObC(Xt7pACr4ai*OP=sP)i^Vfq{)o-Vrj9Ibk zg5#aYb;eVvRt@ve!x4`g`ut!1?Sr)!kB-i3)p6`F4kF`Gj}$z=R1ZzicVKqaB?Es9 zME9i~aqMtEN@QKAd8WdC>Ke^j&;D`E*7+GQa>LO6lW%#Ad2@sAsE32z!{xaI&mW|{ ztjmm(NWTL7qh`hfB(onIVfV$03RjHj?0SR#w1Zv)gq?k}<%7D2)*KyA2y&^wdgLt| z*ot~71a@JZ)pEQ68!_MH0@H!@n18c@Em(gFfSp*sYk;lTPh*^8_#1}@mwkc=*E7~jpvfJcs^?ZLwL?@0c-Hw-vZX+J%~(T^GMy_Il$@> z`o8*9jV-5WOa+Ec*7uFWHRb?oGWC51uyB~ZZ|bel4b1JO?+X(&O6{q6I>Ckfs@jiU z8EPc({`>8F2l6mi=-hu7j~)FNHDTJ98V4z@b72>l)U@qi3E)e+-dfZeIcNVFR*t@r zcB%7pyAHIQl{)?AMDV2@$KQ8vln=B*x}A(u?*EDOw@QoH|I7F!y#RK;^=*7Q9KP~7 z5y-NVdR2p-19Snu7?pXMe!H(*q4>l3_Sm7DZ?W8(XUC6rO^Bm-OJ{ik_|lH&0pV{} z|5X{bFFXD`#EwPvwqFHuzQG*Q5QS z#jh+$0blxy>t1#Fm_b&x_Dty9ubg#P+nH9Orc2(KPa^ZTuylEemeTz|K9O=0)oZ8! zjhuX;Hs#nqM2?4rIh4|NNhdPzo^CP8dvv_i%-8w<&h1@3edw!YA}0Js&y>gWIVQj9s<_E?(0|Yd9_z{RF(Zf>5Iluf;is3y>iRwB(F;ZB#w;pbRHN7 zadzLcD-#Mus{8uIIF^K?f@U10(Es_jA760sod=#5A&H|F^lV@U;wj#K;;i0|{3(6O z9Oudh`}*5Q%}?Q@)JsY`^spbseo^&uLba9%NWpe_yLFG?$-fMxK zlkPa+9_jj>{e4^UlRH6g1YY)ZK95N4e5EhwnUA|3E^RgA%_1N1KJn?t^Hg)#uYsoqe4* z&TmA{Q|eE-QB2~F&O6rmI{tAx&Mbc5N{@ZsBmI~OdMo_{zVp!dZ7^f|Eb~EMxWcqePeZ*$R3UFc%o9@*SJzrbUg? zAFN;QgR-B20#5m9Zx6n zwtnaX6Z#r_=7aS+q+|Dy30d9wbfZ1>Uz-1rdSyrtx@A2AO+`_8EaMn5KS9p~Rqeg4!9y&LDe zVLy*i?Gu`ypMO8KYxe0QN6a|M-Zlxp4SYWLcR#mh>-J?A?iA03-vvJZe(K`p>sI7c zKj0=m<02hz2iDPt+&^zw&{A$6d#Lt_+2D^xDsFst_-)&_-}Hjqs{HjX0H6I<2Ya4P zGp8~I&}R@CoYE$8>V0?3Pu@M~~iiagch zdyMeYt%Sq|Lp~wK?;Bfwg-`pUPqmNx{)qlNrXr>5#KQO0j6xmX$A7(N&})yJa;5NP zKb`}+-18Fs{GLYS`vCkCs+1L!dgOT!|IY2k!L7HyG^&vGme2q@Rlsfcp7f!A-m1mY zUi@hJjehWtyh?jsrXQ9^$9vs1yZSs p_*WXEoocg>>m9KMa&BM;;wm)aliv~7gWrXIZv*n&Ed%FS{}+>3Zn*#e literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.trace new file mode 100644 index 0000000..c2fe35c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_4.trace @@ -0,0 +1 @@ +16129653996493781623 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.ilean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.ilean new file mode 100644 index 0000000..d75a82f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Iff.mpr":{"usages":[[26,12,26,13],[27,12,27,13]],"definition":null},"c:Iff.mp":{"usages":[[22,12,22,13],[23,12,23,13]],"definition":null}},"module":"NNG.Levels.AdvProposition.Level_5"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.olean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_5.olean new file mode 100644 index 0000000000000000000000000000000000000000..22b092da300c9d2f4ffa3022b7e05117d4093640 GIT binary patch literal 24184 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 PhdPM^`JB*}r|tefdxObD literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.trace new file mode 100644 index 0000000..bf05509 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_6.trace @@ -0,0 +1 @@ +14208111587323885963 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.ilean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.ilean new file mode 100644 index 0000000..a96a651 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.AdvProposition.Level_7"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.olean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_7.olean new file mode 100644 index 0000000000000000000000000000000000000000..6ab7bd5238d004f3e741247c6c92a8fe4be254bc GIT binary patch literal 21992 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 QgPfh?4diopC7wI~7i%K_LjV8( literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.trace new file mode 100644 index 0000000..34aee37 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_9.trace @@ -0,0 +1 @@ +14967413771991349992 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function.ilean b/server/nng/build/lib/NNG/Levels/Function.ilean new file mode 100644 index 0000000..a133d3d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function.olean b/server/nng/build/lib/NNG/Levels/Function.olean new file mode 100644 index 0000000000000000000000000000000000000000..c10f466f86f2e5bfebe726175a86eab37e0423b7 GIT binary patch literal 90704 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function.trace b/server/nng/build/lib/NNG/Levels/Function.trace new file mode 100644 index 0000000..a011cea --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function.trace @@ -0,0 +1 @@ +4955068752717367929 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_1.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_1.ilean new file mode 100644 index 0000000..7fc2359 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_1.olean b/server/nng/build/lib/NNG/Levels/Function/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..217974c700e1201d1454486a43e0c3ed7b198dfa GIT binary patch literal 21920 zcmcg!d3;pmxt{)96q~n!~YQ(0(ZTmqS4$X5!o*@Ok}_ z8Iee+ua(FT!YOee&KD?YN{ZYNoDc`&ywvT9cs=?=WC2Jn7 zh%dMC@im)oxZpJ*3cm~VM&QCNN7sC~a!Ee^=aW}I|exNz;}W#bn!n!KB$Apc*CpxrS7OsiTFqTb

  • irWe<-~I1N(pL00 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_1.trace b/server/nng/build/lib/NNG/Levels/Function/Level_1.trace new file mode 100644 index 0000000..3648ee3 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_1.trace @@ -0,0 +1 @@ +11635906400192042058 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_2.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_2.ilean new file mode 100644 index 0000000..ec4a0b4 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_2.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat":{"usages":[[18,6,18,7],[18,10,18,11]],"definition":null}},"module":"NNG.Levels.Function.Level_2"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_2.olean b/server/nng/build/lib/NNG/Levels/Function/Level_2.olean new file mode 100644 index 0000000000000000000000000000000000000000..b1d64b0474690a556d13a6378e4974f8f7bfa4c3 GIT binary patch literal 19896 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_2.trace b/server/nng/build/lib/NNG/Levels/Function/Level_2.trace new file mode 100644 index 0000000..2f74304 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_2.trace @@ -0,0 +1 @@ +5739902419023245944 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_3.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_3.ilean new file mode 100644 index 0000000..b66fa84 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_3.olean b/server/nng/build/lib/NNG/Levels/Function/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..e983b55a79553205253a3d1ee59910b0efe12038 GIT binary patch literal 30424 zcmcJ23wTpix^_yr)S?gsrGS^THVJ79LDA`qq8)D( zMzrdv1$FGfTXjb18TGfyK|9V-dl)ZOajZIOy+=i?7w})-UhkW(>?ESk^Z)zNzFFV* zt?#zJwbstw*_%+M&l_AGsPv82hr>~^`Q@b!NAqfp4s~QW9D4=rhoXNs5JX}&+QCp| zAXqcGrY6$cOXT~ZN$iXEY$Z)eksE*pu|L|y-m;oNnQn+2`x7%ES5#AuPY#F6(I-R6 zT1PA5%WZgi-JO3}@`ezF-vxRDaL$$^{GY8}Fq3>ohR%l{{DZbl8vpRBdLQ{N@bkd0 z{^7(gJa4@Iyzp}zeH{7VyTBK^_@5;o)Inst)oX*r-ddd!@sIkW(DR#>w-j8m``t0p zSM)c5&iI8c`VWy0>L4Dhn~w6@@LX?|uR824vtkgkX{QtV?!RvRnhS3KexmTjPF5eC z2fH1PKaq7%=J%DYTo??jt`-gYFzw_+-}NteKD^seQz;T+C!EF(^%4()PRma5+HgD= zMK|pKaAlw@P;iRTjdMZ=)p4WbVJ|Lyw;D-{@1BfXeXy{>UtOky~Lpj zb_%?!ebq&^%a;ere7%KX+Veo~dk-DFaQWu?`LtJ`#vbc{$oW+6TRz)YRpo_w3rst0 z&=2K0b?AO}CIHj}W?x*uKC|L2{#k)G^&`t^Hw)wP|^-YXI&IxRWe|f+T zjE^7KgSu`2x`Az&*J5Alj_U%E^;ca}E=#g6GCdk!m(9HOz>nwhw%omG$bVXHO5M5p z>o^<0r=3CaK^;WetE#Q62~>ox3_P$OYfN-ZOq8^AHHGR`V_tS-Vutcu}Gbv7=(L4nOo&U*)*(&cD2QoDjuM zV;VcGeoi1GZ2UJQlEaX%)qzUR)J z8CPk>=gHFfTyS&#tsCxo!@Rlu=TUI^(*Fy3eLGM8x?i=;QdC$AITu6Q^ z_#NOcyG+^n_$$jD@$(81R0lDtn+{*pTNSSKx!f*~YrboNtH@RCTIf2>xb)h@F5x?QQ-#a4Tv;-4jECc2ibg(C{Y zPxZfb5YbEkk>hv}d7d?A?OZP>vYGexgLK}z&wFq8#`~KrajB~q=%zhI&v0gId6Ta8 z60>Rf%ep3VT~X&Wp+c2e*+c2P>5m8cYu4|4F>wCHZ;6cfQwMrJ5cG_u6#f)A1~{7F zf2)n}wzWAwiS$WO^4SLjA_HA$2%7%q4Al8)+I7&*KaGAQL_Ig4Bk^}=2dcuMNR3NP zi?MTjHQsV>jW^q*$*_$r_WME+Usd(k$>rq%nU%>Rb7UQrw0bRm_Dpro;5tUBJtq5t zP^7Zlbqr_pG1=A{;2NJ@9H>zhe#|l1*`cs6=(0*AJG(Gg6A6{qTC+b}@zj4sHQpMZ zoEKy(VV64G#-z}5LKVI>BNQ6*LA8w8pjyUUP%UF7sFpDg)HJZ{U@EB3es#v+S|u~X z?+UYBW6c~zTj5$oS}kW#rK?8K)I2V$an)vL&-Ja*-yK}f+$YMOc|1FNYA9G%Sz9d$ zwF1SMx*VB~QjFt74E!V(fRZu!q)$%6XMduYa69@sJcsByAw3su>VsTn7<4BvAAYe8 zMNWNATc>A<01ngd@$i@SMa1Nv4n9%%;&;{{?KkP&@QeCHPR-XoZpgKPFLdSSUZ#oY zfm~yvT-tr9MyrD6%yB;rf*fBv|5Wga!k4;mId%MT zI@;7Ha#9!hpm)Mwp^Kl4gUIm<)>c~QWFlwgyAFDC&N}_=O)u@N*ZkgmG=p!h>t>uM zr-&mJpK_w#s{bK6PSTU&)^eF{$aTYybn}*R5;;EV^g&Eohw0ZC_)YsFVDgUzpD29s zyAA%3-h?*wiJXj27wA!-&}Dp}R_(<4pr6HP3z*~MI#lQB>V04S`=OjqTQt9ST|F9# zMpL2Hzn4!s{Y}@OdW0`=Hp4FI^=MNc%e4_9r zPaV)ldJEdrCvs8`G0+dRj^_;1aWo|Q8DF0`A9Eom`c;0@)>VAcD><{SqUe9!?EGtw z%X{im(PP&CaKt+zO>Jaf+POK@aFHiGJ*5eG^@WqYfZf zg81994*G$jSK{FHCnCQW^E%s;}uygvFr-yI5X#3})FClN>=K;Zw&zqqs z@?qA|5b%l8U-FeTT*pUxH}q4V$VtB3kTdr=Q~%%;`cv^KNBi~AOS;`3$YnM|&JRqr zzM1w8fj`tMdQAQR@QL&%Cr9Ul^d8uwK9Q4r}`J~fdJD>fD!nfxC2puQsUGRhYAeZTaTpRdJKvnDULw!!#R|?Rt6!IO& zqjXa7#n*!{*4HrP!H?H<2I8ilcK%OrgeZK8uM7G}Z$q2L9ka!rYT z#^d0AkPkW0uUt#JuB{XS9A-V#qrdlz&0lXSn|hasnDy`j;@t@*P%^)A}8^+ zfu3$%{yK$zv!2K&(!T3Roe$FO{y;7>A94=hf!5_O;ScqS9@C#sz$en57U(Cv0d49N zImt%{=)ZJbwr<2oXLXqK(0P=Of6?9V+|+l}n>#eW_k8|C`1ujg&L^Gz+WG8H6uyjm zBkYnMMVtB{m)Qz>2`~?6xMR&jp63(0AlHLD`GN2+J}Zr3EI>rax#vMpdV;mZi8GN5Prnt;JVyt@Re(6*X0$W0Ebx*E|<>3%-}6Y z&RW0c3=uKw_HD%b4$#ggopIaw>`xTF)I&4ul3tHC^+7JP9dtji0BE>l)dSna806qj zQr>b#ryl>epnyn!OCV2rGxXDck(2R_LheB8auek8=m+$1UG7d?cYFQEy4=cs%C0$H zZ>I3y-(W)B4Yaa zS_(f?@hK<$rLG*u>NrTZ#|61e7v#F&M;j1kMJ&OeSHPfNJO3r{iNY6u8eoU?Fxu27 za#A-fpquNv8Sg)!{{^7*Gx?;`j-Ai`MB$5nxyR{zk?usB`XHC-0X+skf9bj$MZZq; zD*(d3cwKW{Zh}1c@pbv{h?{=e`Okq*gx?P5@j5=zW6)21A}9IJh1`MGEYT zgX?k_a-v_kmUeywL;#05KU&d$&})5fDLwRF>+7~T-a8QQPN1kT`J^*$JD>fD!k2o; zKSAeg@o_-nW$aVMQG*R!8er2I|FTT3E8KK@TbF_HepAWyp8f02{% zb)Kl>I?%eD2e}UDZA4sLm+P=jh~5PMu`YYiAN;ugPo?nR9Iq$ACrW=Aj}GV~y#;OR z6FG@52D-T}oBAJ5p+6O$a%5U}_Xl#BVaVkIQ>_oCz5jwg)GK;S{$Ic+(w{Eq zC%p}A>JvH1hhvQP+gwkT%Cz&)BOP&=^DrNJnm$-_^fv=HCtb&U2!1{c6cuJ1q|;wJ zpZ$r#mvL{0UDBJ;ras7Jc7t9I^aBld9O`q@bqwc8IzMj6HzJSlFFr51F6TiW{CHhI z07LZC&c6?QBK&qVLm%n&Xj7la$vC!yexP+Z201?ve#GP8x}0^gj$8Q3wY2r%7Xch* zJ$TT+<7DR{{)?Q9Z!_c$v@Ul*&JWCmKCa6- zY3i5PF}l%D?3&|oR|@}4{uc0w(qG2If2z(G=>=$0pU6pk^`NI)m+wrW-?UFYk@mZx zmvp;7kju;(tNm<;e5&=qw0ArFp@@hwwY2j&EDCU#^VxNp&d)KoYxd&d_-x-HkT&K`zq|dKU0N*U2x1pO>Zamvq{-`^)}B z`r8Bhq<5lCee^fyOdVG%_^IyunfY4-Ki8)5mvq{-`^)}B`r8aYNUukm`si;v=zidV zu2WUR&)PKpl1{sJf7zc%e@p&D=Z*9{w5gB&MnTU39_V{u2!5_g<1gv7YxkG^iS#$? zH`-s)yWtP@(O);@+QCnCexzL6%ijqRJ?Phjeld(sKCl7x)s?u8B&{=1=&{FDg?tbh zR~O_-x5p`RvK~6}bo>X}hux5CgWeMO%YC@c*k9DV==J|_tv?_A#jfOuzt<$zf!~Au z+Kqj^0oN;fa2>l8*Sp)HSM(*=!~WG|v&Wwg5M$uCV&8&aX`kOK_mx!^1u8^L{7)-4 zHKZO+3YJ@PvM-iEf9V9BhgUlS1K-MfASMFBuLnI3c)0KPKWrbm%DNn$5EuAPp!Aph zg1?7MhaxBb^7lMM{ytHDIxRACnCH9Bv$Vf6cYO8o^G~h$M)*ok()nW^kw zRk6np$%7LuBKdaAKU?d!)Bj($#T_-Dq>=s{)3P1nd8}t{*Pq;;rNd~pJ+V@CUJIw-e}W* zm^i2o;xOHGtO=A?_-cwmwUIL40$)X-x+W5TVoCX$_BpW&tbSUF_?3tC&U3EL=U1n# zsQ=@>xz>|p!jFQU1N`=rTdzE4+)37Rc;a^>=;k%XNdu^ME2> zWVQLbN9HLC`#)q{ckGfqMX!ii$x{>P`9Oy|`~9g0|Lz9ii{EW&{AON=e9l?&v>;rj zoG$Z~*G7z|bQA6MQ18&|<{el3+6LOo%}<@D;Ub_8BJ))ilE>}j*(LS3bJ@z-s-WVD zlKk>{Xd;(=wSS_Y)+>L_d^Ew2P(|IrUr+7ulHUQkADFZ8vEhq8`>8|tlCM}A|Bny> zbr47Crb9nJt)2=Gc$ZcBstYTE>WQrx!RmMrO3tizK6l!l^V-(!i!;NbM)>~8I&W^^ ze{Z?(i*H^WWc|!u{Hh1tUhgB|2Qdfj+F(FEWNkeZR-m5eRqptL^1u_=7G$XWa-S!1 zzn6#7C~Nxfn4lf64SE~=EdHO3>-Malv`P5le*yS*|M~l0qIF|Z z^{EO}R|kR>(?VsvsT6;$jY#o{tcy9l@?z3D%)GY1{)mOe?k9%rx1QG(ei!IjWL^4J1q*}AL+0>1#Ba(GDPL3*QIFi!M!c2UXZb7g91kML zWqPG|870keX@s9=eB1N)3x_{(r^pDu4Rk+n&|5e5IqI~p&Lh7I^gQ62&iOZdIcwD% z;al-fOC3Mg4IxH!&4j-2i$kzzn)rhPMMWW@xLvN|2&^0^1Skb8RDrv%>4C0PtJ&w|MARcJK}Zk zny&N1{LSCLzvzx9oYO^v*v|+5m)3n*C|Ds|g*jWr56-VB^fk||ZU14GcL(h>r?JEQ z68T(iwR+gpX2z-)+UbJ6jgO4GbH#?4)^k=8k8{SatA~iMtTs{|ibyF0mZ=feskQ!^ zaTP%C^g*?o-q^Bv7UQZ*V~_KQ$ob?`^J8-L^vXc|>A%D};`4StzVq#Okt?pYq{NSI z*l7hWo_NUbFTU|N@6nH}nW^LEen8~DAbwmBsPTtt)!M6`TU1j*F5M=~2-9vp^tZMJ zuKfPxh1UF(eAlJ1%kwcJ&v(>&5o$tJ5`Q4*Rqqur7a}v?ta42<%9PZKGyJ93;l_~UMq0*qPENXJ^MiX{VLAF)OEmh zkjV8gtR{fG3MVN!%Al-=tXm@A$1uM(q#nLb+_24hse>PbE-SphY|N$Bv=V*`=mo%? zOWtT7^uYVpbE8sE9cldMdQ9Yc5%yMB&+!Jm6~+my_|1KZ$o*;d)Vc8$ROA>BF-sDy z4q5Nj+ovMBrT>cmJl`!nPv?2sj)H+z^&3`;gzy_c&jY?c`n7n_@q=!!C)PEQb+sJt!zij%bsh=$de27m_)(6?I$Rix_`GF)IVqeH@di~5 zU{gaJ^fP~!j`P{yUp@V{L8VtPjwt9^z+JC@H)KcS%ZnICBk1-xxV{s4o>Z;YpsC8C z_?JVaNXCcjCy{k1&sqn(m4Qo)1>34G#{+;~M2VdO! z)9uCd+XKGcZ`K=;{)^wK_9^DC9{T!THsz&l^EaPJJFRK#Fg_yda(SpS;X9h>k^ImP zBJ-(UAy8f84c5$1{X|v{k>`9Ma$Xdv{Z>oqI;Q`gIXaJ@jlAc=jt^GeA~KTaDCjQW z!z03n#~e91>U`1ZQvdPk(c zB}i^qFM6PR9>J>PZK6Tl_IB^y`T%UTNuW`@)SN-()g}Z6TU6gu$P(P7&)Z4z) zSN}k;B8{C==-b`$WBBbE*I!LL4JqtMoS7n^jtmXfU%AiH4tdh;Z4s3Ir=uU|6X~pX z_7}Q!KdD&9OL`XC_WpUGcfk+oull6DPFyMP6B{p5dcN@bIPXXF4R0IO<$vjR@|&PP z3LG-}+9xwd{S-gnZ3Dd&DE*ZEr0eTliTt$tzTDqi;0;!o=TT;T0iD3qcOp# zwJb?~3qbF&*H}sVu#lOx}h&Pth%~x^+@adMC|08pSs>T{zR_Jf#7mqq(S@poUiJUJ*Yt@QcXq{`tUs!7TR}VjyymjwSrv~qMUjh(*E9f5JVe1WO}yzd0|^dDt>@$FMVJRXk4pd7#_JfqIG5zsy@5 zFDX-h7_++?j6v-D=*sg z$ctB8Dk73MXG!XD=QtC2eiOjZr7~!aV*&Ke+V}XPkGFPPVw}O=14rCnfa<;q{m^>Re!s5Vr=Ow5wYq9^b%mzbBphu5`KCN`5mCUf#=Pf zy}j<`AAc0S2-liCjn2{Xgsab-Z}t2lMP+to_V9?AalgT{p#=pJJy3bh{na zE0O0N6_uf7-pbVFYv!c^dIuNJ@A+}#fXf+Idm4MJA0q20s9q6gU6Ph>@M_RR4-c`& z_#8`ge0R=l+&}M?@uNjX;>!cw9v{CC61i`yI-+`OJ!BmaSr1cV<>q9!H?}CEsQ~axT>Q zXfM5W_(A<=oXC6>fNswR^%H3);;X2w^hVO!se`_A7VUhq?9-X|(oRbnJIphY*ZT_> z#M5rgAC7A`^t`jX`li^mA*UU_bHH|%v6R~%^)c14Sj%kip4Eh!~j-0pViOvsb$5ooTE{2JKI*2?U3`asM z)ZGwuVS7f>jZ)KI3G_PeUwPuSD;CZaT{3PBDeRf~;Pt?@W4A|g%L;w$*Pf!E%puvp4ys9fw!PJ+1G9S^wwxtl6}a3%Y%rIj+QbU4>Fv5^cJ!IL?0P%{i-k z<@P(T>=wS{qbZF&))SF-BkETjWr1aZ%0P`(R@I^ihnfFQ=)Lxh6Kkg(rN0h|J?FC2 zc6dHYWL>CrrpCJK8qZqd z__RUa(6L)b51PLD1?DZ5+D_7QFuX3o>kraj))S5!k$wgFk8T(@kj!!P_;en3UR=6v zT&!mo{iy@p4TPP&bLE3Nh)v)-fz5~`AJ~cU3j-a%M$~^UunqIx1MJ4S*#gW5c49y9 z1ADNaHUQngFwQ4Ba6aV+I)EiO|Ln&3c@*d*;`>MwzL(_!Tk-w01lWV`^LfAyT(|H8 zTX6lU0N91=cu`;$umRUWoxmns4|W6FaDChZ?8beCPTY6s#Qm5suod^gVmMEa;r?qb zunG5>oxmpCe|H0$@Oy+@VEc4kC#AryX_$Y+sk-f-qOp0hMkmmduiIUdG`fMU=jyft z*g8PBJ-~wgx?P$9IaPaVozCF(HC6lZBS*~yuFDf{@BEFURI`N6_2%f&Pj7a3G+oVu zeqq1XTLS#>s3We+F#1vd_y628j2DMR-vF(`F?QZ}XFBqG^|e7yGw_qoYfCf0mwx;{ z75Qr8&FY8E)**iM*!nGf?8`s~_|lL2Xzu+h4|7<%m7e$fK0&0v)(N&&?~wUUdO<+P z+x^J5UoJoCf(Jz;*OA#j40ww67tb)9N8BYoHhdS0zc;|sNV%X|DBPdH&1Y7Phb2b`T5|xVQ1*h;Cr{OzGDXXeM-Tf zECh8tK5l*26B+xb%4aqH1M0wcqCfGB_pe`y;$0u-DHWy z|ET!l_Rj`2a*g}d+dg`Ck2J-;BdFu2U1B=>e9xr|{W{>szWeu09M}*yZGDh>`r5x6jNfwtnX$elG+ zKILGWylMY5DEVU9O;=2svD_(5v7ZzAb$Q|YjPlU08}_GNmpADU+c=u`$H0Dc*HGuI z>NVqOzwuYv=X*O^(a#UeDE#EBK{oqRM|>{;^V$vhP466)JGc~10n|9g*X6$sd1$d3 zR_jpo%!07a)1OCpK4ve`&*zX!!OsD%*m(T$P7ftDTK*iW^-w+v`Nbn<{Ch}#vOJ%| zrF=8wM?U-U*@xyP%kw!{%6CHk=E*aPhPsmF`5Y?cvsP*U_V2plkzvkcc|He9`8>$~ zv-HWn+(Xz)>dQWlIq$|e-h8)D@^}rf&$~wGKklRENM;Io`+R7J{HU+|bNklO6OH1J zy?%Qj|HyB5kL#C0zrEhv5uKlH-KVtoPa$uww-U&&Zj9YApfuSZd;QcyzH-9i?OC2= zc|J$Z{I^2B@2L}RJ}5s~-d;c5kl){M$M)>pWO;l26~=G zJf}v-C-SNIv=4sT>uibtevwFvf9m&d*suBTR6RPfw!NFz)oZQYnzZKU#{x4m`j-dbm literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_3.trace b/server/nng/build/lib/NNG/Levels/Function/Level_3.trace new file mode 100644 index 0000000..3765006 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_3.trace @@ -0,0 +1 @@ +13295869598671621401 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_4.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_4.ilean new file mode 100644 index 0000000..77fbcf0 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_4.olean b/server/nng/build/lib/NNG/Levels/Function/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..15bb08754e95a74ad70e5c1a1f3e43daf6ade6cc GIT binary patch literal 29632 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_4.trace b/server/nng/build/lib/NNG/Levels/Function/Level_4.trace new file mode 100644 index 0000000..f73245d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_4.trace @@ -0,0 +1 @@ +2060723493075565450 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_5.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_5.ilean new file mode 100644 index 0000000..d2a8ae7 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_5.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_5"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_5.olean b/server/nng/build/lib/NNG/Levels/Function/Level_5.olean new file mode 100644 index 0000000000000000000000000000000000000000..7650835bfb22b92fd53c85d77eb2878834717f83 GIT binary patch literal 20456 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_5.trace b/server/nng/build/lib/NNG/Levels/Function/Level_5.trace new file mode 100644 index 0000000..348e271 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_5.trace @@ -0,0 +1 @@ +33560334747064612 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_6.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_6.ilean new file mode 100644 index 0000000..f7560be --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_6.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_6"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_6.olean b/server/nng/build/lib/NNG/Levels/Function/Level_6.olean new file mode 100644 index 0000000000000000000000000000000000000000..e5f7236a71d6812aa8dbdacef54dcb3d57c990bf GIT binary patch literal 24336 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 W#4q1Rs{=h3bQjUm{x{=(=>GteILz_@ literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_6.trace b/server/nng/build/lib/NNG/Levels/Function/Level_6.trace new file mode 100644 index 0000000..4fcc927 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_6.trace @@ -0,0 +1 @@ +11236535691868165392 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_7.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_7.ilean new file mode 100644 index 0000000..90b502f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_7.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_7"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_7.olean b/server/nng/build/lib/NNG/Levels/Function/Level_7.olean new file mode 100644 index 0000000000000000000000000000000000000000..e6462ba5e501ee15ce6202261a77e991fe2681ad GIT binary patch literal 23128 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 Hb@BfK*MFrM literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_7.trace b/server/nng/build/lib/NNG/Levels/Function/Level_7.trace new file mode 100644 index 0000000..81404ca --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_7.trace @@ -0,0 +1 @@ +13833688845280623014 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_8.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_8.ilean new file mode 100644 index 0000000..cd7e338 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Empty":{"usages":[[17,35,17,40],[17,49,17,54]],"definition":null}},"module":"NNG.Levels.Function.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_8.olean b/server/nng/build/lib/NNG/Levels/Function/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..c7c110750661bbc8415af0a430e73ba4c707e3af GIT binary patch literal 22848 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_8.trace b/server/nng/build/lib/NNG/Levels/Function/Level_8.trace new file mode 100644 index 0000000..247b254 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_8.trace @@ -0,0 +1 @@ +3072509448285891874 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_9.ilean b/server/nng/build/lib/NNG/Levels/Function/Level_9.ilean new file mode 100644 index 0000000..d096b16 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_9.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Function.Level_9"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_9.olean b/server/nng/build/lib/NNG/Levels/Function/Level_9.olean new file mode 100644 index 0000000000000000000000000000000000000000..054b056537dddc0b440f72fb6554809bb7d5be9a GIT binary patch literal 47024 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 cBJjFkCvLVRYz8mY-4&>)VX*}2ezg@>>(*OVf literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Function/Level_9.trace b/server/nng/build/lib/NNG/Levels/Function/Level_9.trace new file mode 100644 index 0000000..a7ade54 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Function/Level_9.trace @@ -0,0 +1 @@ +11794545348629460374 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality.ilean b/server/nng/build/lib/NNG/Levels/Inequality.ilean new file mode 100644 index 0000000..7d57769 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Inequality"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality.olean b/server/nng/build/lib/NNG/Levels/Inequality.olean new file mode 100644 index 0000000000000000000000000000000000000000..704725d100c74df52420a60ba52fed56373bdbff GIT binary patch literal 30672 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 T`QCJjaa}qN*HK~}*3JI~@=tP{ literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality.trace b/server/nng/build/lib/NNG/Levels/Inequality.trace new file mode 100644 index 0000000..55184cc --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality.trace @@ -0,0 +1 @@ +9336489098668184658 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_1.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_1.ilean new file mode 100644 index 0000000..6733e24 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_1.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..6badbc8313dfd4462b8888563886c4a93b419c07 GIT binary patch literal 17352 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 PnES1n5&I|OL}~w@Y1j(H literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_1.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_1.trace new file mode 100644 index 0000000..b5ffa38 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_1.trace @@ -0,0 +1 @@ +15715418939533793162 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_10.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_10.ilean new file mode 100644 index 0000000..a65afd3 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_10.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_10"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_10.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_10.olean new file mode 100644 index 0000000000000000000000000000000000000000..aa538d85d5d4c67dc6135f6a29d00285ca505324 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_10.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_10.trace new file mode 100644 index 0000000..eb78d47 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_10.trace @@ -0,0 +1 @@ +8366872987603129236 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_11.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_11.ilean new file mode 100644 index 0000000..2c2b577 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_11.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_11"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_11.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_11.olean new file mode 100644 index 0000000000000000000000000000000000000000..8357122ec28fd2253f5585d97228f15e1b8c7ac5 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_11.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_11.trace new file mode 100644 index 0000000..3e01f72 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_11.trace @@ -0,0 +1 @@ +9104254495681588724 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_12.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_12.ilean new file mode 100644 index 0000000..9dbe64f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_12.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_12"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_12.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_12.olean new file mode 100644 index 0000000000000000000000000000000000000000..6fd62b41a251574e00927df4132d9dddee341749 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_13.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_13.trace new file mode 100644 index 0000000..e9d270e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_13.trace @@ -0,0 +1 @@ +7236720961247687624 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_14.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_14.ilean new file mode 100644 index 0000000..cefc752 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_14.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_14"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_14.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_14.olean new file mode 100644 index 0000000000000000000000000000000000000000..d6f3626b105207e3d1c16c09426ea4eddbca025c GIT binary patch literal 17368 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 YAV+7H_V*xMAItSY?mz6G%)Br8AH?xuJOBUy literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_14.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_14.trace new file mode 100644 index 0000000..e65fa47 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_14.trace @@ -0,0 +1 @@ +17080990698887132932 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_15.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_15.ilean new file mode 100644 index 0000000..5788bbd --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_15.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_15"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_15.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_15.olean new file mode 100644 index 0000000000000000000000000000000000000000..518eea1f7cd49ec15ae296bfada3852c7da8b9ce GIT binary patch literal 17368 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 Xon6}BgK&K`*9W=(uzxc1zT|%Z$PRxo literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_15.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_15.trace new file mode 100644 index 0000000..9a7cd4e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_15.trace @@ -0,0 +1 @@ +15808132813580510808 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_16.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_16.ilean new file mode 100644 index 0000000..8264748 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_16.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_16"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_16.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_16.olean new file mode 100644 index 0000000000000000000000000000000000000000..f43231b542ae7811d6354ccf3e89e3a3cdc3a981 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_16.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_16.trace new file mode 100644 index 0000000..65a9805 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_16.trace @@ -0,0 +1 @@ +7637579646193566177 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_17.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_17.ilean new file mode 100644 index 0000000..be9c88d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_17.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_17"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_17.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_17.olean new file mode 100644 index 0000000000000000000000000000000000000000..16d71a70ed6d64d34738ac53535a1fd77361a65a GIT binary patch literal 17368 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 Ke=?4j_WvKSN5+i+ literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_2.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_2.trace new file mode 100644 index 0000000..6ada09d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_2.trace @@ -0,0 +1 @@ +10180719735176429031 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_3.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_3.ilean new file mode 100644 index 0000000..688fd92 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_3.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..79d9320b1ea1db62989ce1c962a661f17ab29707 GIT binary patch literal 17352 zcmcIr3w%>$mQQ(>f*9l#5T$@<5rqmmRvuC)ZBr>wXbVLgX`0+Np=lEGsKG(DqbM0) z6b77%s}xqHB5FaAt~xsf2B_~YgHjct4vQ8Atcn<3vfsJi`KLFRhFyQZ-TPDix#ygF zUf=ni_tx!HEUsdQQyC&JgW*uZh6x5kRhmSDxZ(_k(}em<(9d*dA~1pPU2dnt<)7^L zd)uBO`ObU`?8NukLK>1J*OhO8UHCrFV)Z+$@`mK_Jg_6n<@#;>%V0<}bchqO>Q%?_ zC0FiPvhGjwKPMvbo0(q8IDP#f`-$?|ncy4ZWIpW7@3v{u*e#1f3iyf4Phr0A+zsF7 zeE!*c#5Wl_7*d&^$b6!c|MB!gTtLL@TkOiS1Y}CcKj;s#p4&^GHs62npCjm5(qGMV z#7}h6e+B&z7qExCHP`~48J04|=doDT7>KO3)5Q8VKmPE2bDupsk@#dMzJttz-VWLy zh&r&^6>Dj}%Tewl4f4|3No9Rce3Z}QtFP4KXmgH*fDi#zaILqUSRJiJ7!C{;>!&b z7dxy3po9b61T;vnJUOH)C~~zlkajVqGo&+@8Vo#QHI+ZXsaK34&x^f^M(vY`ap4D zyl-HCe|JZv=hUix>i9$aR>Z-WaOCejxJTaFvUG=k_jMAbLD05f|AJF{ziG_4yt#yu9x9FRmjZ*{Ol3&uxO+k7w9|KX}GiGE)6l&wkiI@4D z{g>3WEBRVOJXJ7guE+Fbn30lfLP9zKsHsLw2b+S*E(P}bTuTioLR@O)A^770)$V5luzUji29;d zf~?m68n*YH<;)|y5B8W3J#{P$+|KuoGLPHqPZVW3YP#aL*erfaf|f?jHfplX=I}e* zu7re4F*PR+71Bc!=DNL3TjJ2Rjx#ht?QDr-6Y?B>QA$IHCM38$iYrlV`-Frnm*4BQ z1;lz*Xc9c}U#{QcS7-uG5W@DCV&g^W8VTJ8+i zA3%)1ez7#o^(YwHN$q9pIZyGHsX{D=@fL{jBuA`672abBKV$ZfY_ZLQK5hSK;5agN zx1fBMoN0BmU*$a0Q&|91S}{R=p}&k7?X3hgW^Po5%k)J9V%Vz5lwTU7J|W z!$``>AG9M7?O;=^&Rj={>ci#a(%fPZ>awYFlwTw3H(x39_-Uh~`)ybMHrCtx8UWb`y;-qmz_v9SSkH}{o+avJce2D3YgZSe2|2jW-?*9wxG=6LI z)1;$&u9ESiUMP+fLl*;CU{f?dW`8dc6F#;?+V(W| zmVR$d_|x!jPfk=9*knJ2>8(2bSZ@Nc?!3=oD^dKp?ts^-%vMSqKEF3=-HHAH#5^!p zeU74*b%yb~hVB12dSU3#7iOp{bn?5A=^n;kzFWI&!k8P?{SEou%5-fzh+LiNEln7J zI3E$G2VUue-fQU(>?QS)c{-LbeW~qC?ix}@_6nJP@r(U6pIG_A)UpCmr{ZR&ez zy^?+81&H$_%F}F*RXA-`Yyq$4^ds6{4)peZeCBm|2Ufsd2=wTA>`Z?W5El^nvbt#- zLrY9?jASj%76pa!HISd!_W?2Ni}{M5lX~f2Z9c;6hr6Vr$4_aE7Vwk$$$Zo^-?Z}0 z{_{>;Y$QJA%glUzI}aiOaRINEw+4AGB~IHMmLjL(%PMiXy-J457YRbhY1l`5VE3~8Wry6C!UWj}BICH(F^{oh$fG8CU_0M|S7dw#jP!?mM-ybJsk=2tTRzNT4E z{xEIPbmFV=GhZJ+#tk6G59-eWzhcX9C{CN^%#8F=9?;G}v^VwV$aCr}5bb{h`!VrY z$)ladKC6~F#TSPEj2G@X^tbsFtZFvNf73u2zuteWe}Gt5&dnfC<)zJE4(l-u82SFr z6T2dHA7nc6H|y75bDw+1m`)nVepL+nh#!bNSlzA?I@8qlR`LV=tC989%m_4`n`YSs zJBF*=W7KY0GDU(R?R zTCPfwAE|?6{)~)wPrTy6dsp9n1b!4UU0+9-4}h2#$d9=Wzug@WW3Sj(i!MQLf1-MX z)@~K+ud8<~JG(z$?VptIrWkgy9s^>%BhH)s?lOws;j)PHTJ1oj&A0Iy8Eq(9`i|@ozmDxyFn-o&|DLDH zSI>bzO)>m|eIVlZtM6aibth^(#Cz2BUmwkXv+~Va_+!47>wvL*Uj5R}dtQmWx3V)` zpC8mc5cTg79e`djUXmPPkj6vQEfD82vjT2$))qZsYwM+n{pk5X)@JL7Kd9Y``0<0K z|JBUjJ^%BDp06BL&o!u?l9;deAL9@ZMnElve1fhk|BNz(<>Q|X8(Lg=lGk{V^TH#L>Ye} z^UFtlcC~Z$hE?>u8b9;(@uRMRsH@_DOI^k121K2E9ZK73M7AH~fT+WKmshb^?X)PI z;`bp+Rr}`=pWX6O?#YwK?e$9Zb&2PaFndkg@A0NG7IJ}?yB7TVJNsJ?p zef|B~i_hi}pZu<2y54Wp8xa1J-|fv)$X_$->-4~sk2lR)a|7%chf4qSb`T#Bby@6o zM(xo^59J4b0Fh5|!0q!}T>cF49Ldr}^5_ph^ov|E-%2T&C-`5(ex4Zk!aa>&mp)B0 zYWp)i$hc*I=c?9C|Dp~n#BXJ~neo(*o03Z2xccAedCIeKSo`r~{{`$v4~Wa+@#MS2 z#{*(4SM-xL#f7+msF$fU(Yd`e)ksC+Uy?^V0+GKQuj2PF&he`6Zuto{9zI{KWxs

    ?-6zbyG-Q1?@$g7}8(WV~kPkKdB9?fTx?$B9q*NMydg9x&bk z;jfM2(hb^LI|Z!o6Gx}99mc|kC1Vtx>Bu*GbBi78U2#)WlBJ?lMu{Na;N z{O4QhU_x<)W7tDHK*UvMv3lL@#D#e}dAQ8ufh8T?JM-Rr7;zOcU7tU7ViZEaYv}=T zm6eJSzDTY?GTh!Wi(f?Aj$O2C73+WZnDGw;%$gwANd6$&ti+Ol!({zm$R+4Yq&wiJ#WW#>4WwSQIDU#I7o`H_n!?>PuN6~EDr_=-Yo{ly7K z3_EqK?_lkD&*6+Gmcvd%>U)+EGJen#b@wDl&#M!s_>KMq`Vjgd zE<8`aNpDc6r;zXU&sQ=%g^_i|JpXjkcN$|!O7<6=kK=vB&hMU1J38dR>)?l3ZzJQz zkuToA^N+m-5?^iq8)f`;(e^JnUr%8bt zPiDS;T)_SWs1A_gnKHL4a;Qi8v3|3&p7oi#`rJ0HftWAELc?m$QCAzT=qi(S zfpOe8O2+qM>6}BW&)$`c_{>b#$A|p_5c>ut`lwFLB#j@C146#NJdk`B^+|(xlPE9j zAEr}0Ow;D8nf;vf$XkDy*t%dEiKulmTEs^;w z_3O+}#ttDFimx(;J?sa8n72h8LA^R2q7HzlhcwMblKjAVNGsb*UvDSX zx<$s_!2Bx>+kToqV^?GxOkuu0FUSKB^HWj4AwGx|?>HQ7e>|bhhX?iw*Y@w$B|}|S zP(G@EqaCkO5^!3)G3_+5z6tYoe_=hIxe~A=)pDme?M%nHjdye1cOxbqQQMvPA?6qI`OH(H;R{MTKXWJitBK(s#t9(Ci-4=h z9n=kEabmnc{{vz^&nNlWicgI7k-)Tm8^_B01V70fc;~(o0TLp9D$|?Uzh6tHu3YlZ z`gQQTkoo#Lfn6Z{7e@)=JH=?n$qw>c#rhn|$pgct{A&^HH2g+8v>uyop;sBCL0;N; z4Y$g8YmYy5^EIoMEF=l4$7H7KmW^6g`e4`F zV6QrcJ9*wf|%=YfkyZTBWyvlKj+_`CM=fpHCp^(UP>%Ja{*$|bjjvofD zsQw4+81HDm-qGKIm}e{jF>7cKJ#_JyS)b#?i(jr@cuQnl3&ya6IDm*pyi%}St{!Sx z-^Cfh`}>@CMb@RwG3;PH3PfFqamKH{b&X^#x_wOJWPW;&+AySN`kD`sH#5_9^>E2| zxRG;-=yQdb=iV;-F{9=MlC~Xd*zWFo3zv*(4ex_LO-!#~B)XXYPtTwq;sS=5Z-*RX z73VFPv4QKQfU%YPS%}fZSi|E=Dq}oj6_3BkjP*SKV{m}H51J&__m^m3wD*(uHGL(fFjn-D_eREo-txY#tHc~ea~FAE7$=cx zPmI%XCeE*@$;c&s$9xYq#qD-Nkm?`L)lQUp&)&4BsczTatt3PICZ^->WcvNQb5LEk zMHS5N6lOm36dsxMCh_PJ&v(M};P)~e!_X)EkBiuUqt|P9Q^%r<;wrdP`h(|)E`G<1 z%c~Se;vzZhGl1A{q%R^(@`{R|?X4KDgu9*o+hLMW<7aw^(cGnUo8f`J>Nyj|7iPML zF|OD61FW8&?`)bR<49rtw|5@-i||jqh@ZlI6Z3~`+}j1dQXE*n0WlxaxsEtEblBAW z@gi-rs(!;pko6B&9!wY4ztYA9=}3eej@0e`k-5Klr7UCbYHC6Z898 zcku$TWf9*4FHjaO(Ed@F%uA#mYgzx^6;Ik<8ahcm&ZD?mm=0fyJB@!{8&~{f8CNCC zT{u)c1ZNGDw3D{a+5VnvMAy%@Q>Wdnl=$$VZ|G42g;YirGnqnGG{C%#8CO?2wmRmUDWE z9_^6b61|mVR%n^r>fD2RRqB*+J(g3M((zhYYFK9Y%JZ%Lt^crR%Xoj@-`&6RKYOjU z*Xvu~b8p;E#o{V-IF%vtG8nRxYGMqAsuYO^af#bAg!)U+&vs`bFplqCZl}ZLpX~R0 z+nyr%&U_2(#P^v(8j>W}m2ZGu_&&#C^*gNchUD-(up`T5`)&NoV2C$#h!L{tRmbrq zR&Fm}`^WiT5|Q{#Os`~|zHX5HMCt5w@C`9CA9m(<+c;^==0!mT{CMUkG2eIomLIde z{Nf|xn+zQc$;^*uKGDhlSo$F@Ama5ccI8+CG9~06^p~-oyNjPUKYZ{XBj{PuU(IyH zPju3M4gC-ou!p=g*aDszmJ-G1u~^j@h^(~}Vtt#Qe*B@iFP@u7e6kbULFPek2kj3; z9a!y(wK&)1DD{yBd1>t=v%Y6O$@=bPgWpLKWXBW54)g-Mu};-a&SFnE7(v(CsbPJC zXRNyQc;CtEVJ8&D&ULI8*o*I#GLO??b@=C4yuO)*8HI&RC(zn6c9ePgaZbnO!@K96 zCqBhxX1Zvb@FjkqMY{lzN1NL^#VHyp$6gYa*V?IIeapwbG;v${@xdfSc50*8F|rom zwR|6N1$>HavbQKuqPYCBv9xxYS>J-Bx?|%H-7y7rOr6@Vhd!(q*gL|G*;1B_$R%uY%T2J?m>()~9M_e(G1S z({i9CW>bX|WsgZc)Rv7C{yhW$%oY~=Q_Gq!SFS289r z)^oom`&4%r7l5cgpWjA9vf@oG3y;g%ytT3)dy>|@yt3D8s+&}I30-8ImCT2op7cXp zK-en@IQ@vAcgW_%X!;%sG6n%f#^s~>s}<0laFh73mfKyhHa zZ(x6acTc6~^vZtf_(S{_#K9PMtcr%^p$8bwFX`o`AibE6fvE2pGt$Efwee-e%6!iL zbMl(y|Gs4p2@$`H=?RR_uXC@)&aAjt09r)%sPIZ&VTe5AbcXEd?J59)EBi9 zWVQa+u)QBFXP?-0u*ZDpsbgW_HokY1c-&rpyeQL=(-ptPX7O9%v@~kAk&|sUhu`6L z#l@wIsX2bAkRBR0*X?!M;)k|%oS|`QXNw;jm*en@QW`omF3#;yT=8n#$His1{9d;$ zAl9=&li-Q}vi%mnLKASD5RMm@w)_Oa?{$M~!PXb#0VCDmfPkz_4KcH9hJ@k>BsOt_*OfO?3x=?ur{sCjJk#T25%ALjf z1Bmh0FP5g+9tA@?sl8%7=P2G1Rfy#<-U2b6WQldC!h0;?XVm_YDYkjgr|lmN97o#r z>?Oxi8ebt9;CBm_Kdf`X_@QpFawIBJ<76pT6W&;LX1{ z@0I+HG3dWpEEmsm#J^G;u7FdWqhUwLs#hiJF^#+P@XAkj@%Z0nrw(=^_g|N_Yl!7M zjHI0WK|2D`4mQQ=%yty1K3qvI#Vr=0E}JSx`8BeB^R+UMpEo+Xf1UJ33keY4!}NH@ ze#)cgxAk5$Tk_lDs$_nv#$T#;jGxhv^pL-pmw~A7I4lH&T$xz4p`J00x3XRReIwKL z2tR6>pU>k#_<5eELyU+McH@mQPr~Q$C4Qg5J_ZPWG_2C;i6-}drIT|sKO&!XY>(*L zeuwqSr{BL2KVjd=Q^Zd+bT-&~$vBZ0J!Uaq>gyN-`5@EbH}S>qtIiLe|Nq81jo;e* zgmiSzbuxa`3&oLS=wiS+P@fOn!`~o3PtTDZJXfuuQ(hns3`O#z_V*$&;bTjrZBJuw z>GzhnKMw!?4V;D=@0BB^pSZw7B_u~?QHgHQb+dknXb3jkL>}GFRR<8OjegpSzdRk!=~M+ zlAp*A5P8a0yrq~gDG$g~Bilb8^YpO!r?WpJv&3&@dKIG~A?|2OkAHoZ_~f^#@8$JM z_K_DL&W|WhvprVfv{kVMyqeRGNPAh(+xzL6H{~2y4tqh+Bj>TR{YgMvK;+Bnrfm!@ zF~u>GwK!806w22?eq!GT#IP^sD}GMurGK^gXk|a#MHM}MPHD7&pU_X{qn`Pu74P<+ zcj8hb@hM+s=Ih&e5DAD2c)h$e$a5)i+UBqnI2B(;k<0B>(pyuXV5g_{-j&Im9QwnxgnMfCR(^G|5}xmqQ$0Stzk)aZV!KQCzef zXSND4BEMMY0I^@8%>`t&{^#|V`P(si;Y%YX6n#!I#IInwi81Hn73HTNpR|(rYZnJ>B!%#-+s$}=>uabX(0PmQS2jrAo5^!yNc*cQ`=j~5A?4_)>ktl&~Sd5Whd+y zu5Uk1=mp|@#U~C8bY|3gft@7Qw_?lawF{T0tNRs-#~#HF>Hvs(@G91T*XQ<9DL4v5 z3(M51|7zo^X1%FB11rB=w|W}l3PrJpegs5+Qbhll>`Qez!n@PRI>LVN!Z*L3^***t zl_Ecq2g&>y8SkHX&7%*ly88(H$Y;8~jxZkpF)xrGa~*!WJ0Qkhv9A_gg5Lf_^a!op zD%M|D?^t?nf3Dg;Dc_+ecCj7x>dG$*=?|viv-pbB& zeST2)K-9lSbO3tAcv*6UL6QEms9PZRld}SDan=?&VQcFp#D4UABx93x#2?gdMf}*o z(*J7a@0$N*L(eyks^=P1PYKM|`;T!5i1ET>@%g4(T$Uou0+#&7dI5-aLuSg1@CZtB zhzE%C2^#OkTYWF(9T)kJ^==*eId!MGdr5G4DajDOndy~`M>Bu9r*rJ>>M^Mrf4q!8 zpZTRDzqsDHYW+%jUX7pm`uI`TK-5)Xz@@I@vjd{ey$+>qH6q&&azNB!uFI=ftae%y zPVrh?q6T+AH$lutL#T73)b7>7##^mY&*5OrDT zc1G;cNDt))egKhAalq~KTU`D$@f^w0Me^tmK=g}jG2colnJ4&P!+xF^_{sx~-xfbl zGHUxXy^L}50MB(T8~;TeR*2uibTi}WpEf2Gy>tD4(DRgMwK@ccl97fH%?u z;wmW?BYc5egQU5=B^JMkv>m%>*DBWk;dkZR44?npOgbpOP!ziuXMxCTVH8`WPg_UE zn`NAP2Tu5X#+w<3V9(5SeVoHcKwQ9~@-`w)@vcL>8WSVE7&Y~=lDO7>1=~p*^=XE8 z?(M0>r+6Ep*hhYW$g|kuD@Ee9{FQ8L?HX>8anIX+Q|h37L)7CZvYX6wecTu)fEX`4 zSBO<>uZ;EHHK)UnjIrGd5oc`_dqxrv7ZCL;?1_`9$eDob;5|h%>wEL3^k1efeZx&U zC@xcij8`8Q#v>rcwG#2h)2WDK2hGBn>|kAz#rmpFZ+ha=$p;R?PQ_K)5noY=t-m3MbH6u;4*Kp#Rs z#D(YSH|Z_Y>B;AN{qvPfPhwp`C;1+?qoavV(KN5bMc3(|`HeCtp~Pcw=vCzur;bK+NA( zw=z|PL?bh)P%pBBbAV*l=j!A0Rg?}?*C!N@CyE`kKM>=x!&Rtwb5hd9msGylnGxpH zd?Rik`epWFF`{OuYpw8ypj!W$*pK;NZ@6@a>!qU<0P&5t%RJODzi)Zvdn?}>^&Roa z|3v2N#|7+9fa(A#o+)v=!iRdKAL}sgn+v(H`Air$C*%B$30VDW`ZN~^zt^{hDj z%95^|x7`f=Em8CjAOUd!aULwbGqi|L*^tS|fmA-C<_+zhaEHv_zNE71EqfpP1Bp=H z>`d3^4eboX`o_Uc*PcObJ65yaX&2w0_x<{2wS354D2hGk2V%Yu3k|D1OI>ZaBCAZ+ z1;%mXNEzR&#d8j=I(J_p;xjW{A0PG$KMC>d8R^Go*J|MC>i_7UJGFu#KN_oZiUtJr_x z0`V!|X6EbTM}Guj91-vT)bs0b@v|s9$#Jnx)2=@Lt5Bg>dG5lxn|iOb$LpB z)15Nz2IgOD*!uJQ89T${U=s87c|jh4n4by)4)H;(c*o&r`{N01K0L6Ozovh;E@|qr zg7Q&)m3F*JQNU^OMzs@SeG}&G`pSAdeFO3yJG%XLMxKE<@6VVWPP^KF(5}g>=bMAR z=USd}tL08{+L?}X8}FvNA4W_(qP9EngUrw8^O@&@!xt2He&JsDR};lQj1xeN7Xep+ zyG%Eb#fb3&{SS!wJeTBWD?TyShXd34Z5$)>Q}$Wes^WeCF%x1a^V&UmPWf?-U~)Cp*Y*73*^-Cl3sp@^1yO({Pn`XgxOFLa#DNgS@oy z8pg_aYmYy7#|A9iaL||Y z6q!$&3fn{fOuSp>>!~kq2~53FZiguUcBbq54e|#>9<5IC0zvc}{rgPVsb+mu&ELIo z)92eO$q};C7{w08J0R-V;Szt(r@mfmi%8pEu}LzXzYLmHwdU_1j)t8irt9NDy#kR( z3*KYuVj_Lo`t`8huLhi3(O9?90edx3>>+PJ_6C(VWGm(<}gPHU%$_1)TO`>BD; ztN#u=#(UbYcl384<{3*s%o^H54_!QF*5^3!>es6l-WeX(%A(jo96-b)UMX0vR1dYR z@6wF2hx=S`h1aD`QS4wn3PfFqamKH{bq!}NvVBbBWPW;&TtB2|>grFBH#5_9^>EpD zxZ!h&$a96L=iV;-F{9=MlC~Xd*zT?e^UFuKwC;mHA*NR_5?##yXJ*h3aRFPIZ-*RX z73VFHv4QI)kFkaOS&-4hSi|E=GGi=b6_3A(jP*SKWHC1L{9VD=!0U+w#(G}2LG&0umJ~)f9lK1-wjP-m@63gvW&F5!HjE#J5n9tbE=dX6g zRz82OU^Fq-@VR?3Vk{tCuc{{A6| z?;sfK2Fm(PVk{dV@5@XQ>-$SIFxvac`8XA8*?Kg4wWolL)9b_}ZP zwy1*nom!a>J^4o_y-Pg0#Pgl-Jovp#$1wB>|6{`T-|6+%{nWAOqPX(zmHyy4qKn^A zx#(le{A0XM4+sE3Mtm{Pi$NsPQvB$Y}0Tyw&hXU-g`c;%jBP zhcTwt_yeq-p6_g$B;!b8{`dDD`Lpm(y@;R0d=vABY}nHUzET`mzX35H(z%W}ICR+5 z{qZ7gv#Nf>Mj7iLyn1-e&TR8sGE9EgG97ZKH?4wd;&*P;`E@D%qn{v4{1zR*`P_@e z@SF69bb0xomHYoBqgL&APE3x>%iG2q#%c9uF&}x!Nq+R8Mt^6Ijz9Rd6(+Q`&=d9h zT6f_Bv1Jk8120e(Eztf^n9NJK9&1_up5@QlUmH3}J@KpFD4ygyfE0A4xNP5-dINgaejquj^wB zjZy5Nt$=7-Iw*k+(vSLxO_A|b74~?$;oyw}NrvJ`WICQ9r1n4!1G8AJh5ZR?{8IlO Sg!!%9ZXrgjpN!+B{eJ>>FY2NI literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_4.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_4.trace new file mode 100644 index 0000000..8aeaca9 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_4.trace @@ -0,0 +1 @@ +5262542741621948205 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_5.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_5.ilean new file mode 100644 index 0000000..1962e78 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_5.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_5"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_5.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_5.olean new file mode 100644 index 0000000000000000000000000000000000000000..1c31a9a42ef0ebee849f8f943caaeb5d8e5743f5 GIT binary patch literal 17352 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_6.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_6.trace new file mode 100644 index 0000000..02ff8cd --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_6.trace @@ -0,0 +1 @@ +18291074078086778850 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_7.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_7.ilean new file mode 100644 index 0000000..1f9ea1c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_7.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_7"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_7.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_7.olean new file mode 100644 index 0000000000000000000000000000000000000000..500f5f8cf1e689e44854c9c113239c50eff6bb94 GIT binary patch literal 17352 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 P+-_k;te=eIr2YQ^vAP}5 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_7.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_7.trace new file mode 100644 index 0000000..ea65ccd --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_7.trace @@ -0,0 +1 @@ +4948452312372643925 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_8.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_8.ilean new file mode 100644 index 0000000..e8cb103 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_8.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..65571b5c85a5640f4a7e41d53961c68a62114ca4 GIT binary patch literal 17352 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 L5$h-8SZV)Xu}Fi& literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_8.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_8.trace new file mode 100644 index 0000000..4675054 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_8.trace @@ -0,0 +1 @@ +8910944482383625099 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_9.ilean b/server/nng/build/lib/NNG/Levels/Inequality/Level_9.ilean new file mode 100644 index 0000000..19f48cc --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_9.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Inequality.Level_9"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_9.olean b/server/nng/build/lib/NNG/Levels/Inequality/Level_9.olean new file mode 100644 index 0000000000000000000000000000000000000000..8578e0fd6590617a79e8965d6d0ce48c3b84409e GIT binary patch literal 17352 zcmcIr3w%>$mQQ(>f*9l#5T$@<5rqmmmX{Pt+f)h^+CmXWnkKhRXqtpPYEWdmijwg~ zVZf=lN?}zhq81eCsab{0z^aJhCG(y8oqu|BY1r|%zr8=@pL@=^ z=k=ZMd2iiL#o{V&iF4E_|P7vHBfWc|&q|9@vrPa{V^`WiTWfI>ZTC^{V6e zk}G#EUH^v#pA(Vz%}lRkoUvh${Y3ekOz;hHG9Py4ciTL9?AFC01^h(jr!e1l?uPGk zKL6}};+qT|45`ddWIoZ!|9JW#E+FFdEpg>p0x~7!AM^)V&+Vm8o9{dL_Yw3g>91xw z;wL)kzk+^<3)n;68f*d2OiP*K^H{8E3`Ex2X<~g_9)I}WdC#7mM0~On-$CX*Y|inTP~Sx}s0jtitp! zV5jxB+TnJJWhbe#%u`QS$&q{ZHO+vX0;cQw(`nQIR7V$#=OFQ8PY^cS)|YIKyoXwABwihw&4Lc|!&xeV{ln z-Z!wnzZ+NSIkmc%^o9J&6(=HGwvGHD>bv8#-;kojvW5ZE*OoB^WVvRumIfW_(XFHuD!^3Vf}~Owe=UfAs?LZ4{6k@&m-WXU3A57IZ9a z9tyh2Jha?-E5{I^RoS_M7XGcCqsM>+3ujXbeH$g$8sH$SgwKjjkxa|f57-FWZXH?a%Zsq z0Al?0i=}CZb4S5XX1Q%{lOyh4ky!zwaJpQ-Yse_&9{nsV!+Qf1m zMp91xpdEo|2b*Gb<~mALA1)`C<`#=kmra$U{2E!m`AV6`Pa7TGzf5_hl>~_IVR|BC zKjp!5J9;mkBl&G{RWd)U@t5iy<7X@+J>)OuWgzN10Sf^k7Zj^DtiLdhhuNWb`y;{}ror_WoIYFA!TWc;WXiX+9)#ej97J|DP;A0d98o+CSWu3AH-%G@Vk1dh5J&nDk z-`f)YF#Ow-lg7e+3e#J4`mx>wV%>SK!&ajBbKL>2RhgrdIDCF@)VdSn4iNLeJoP!U zD(ej6cMaSBarC0lA1};QSLoz-Bhx*MzkIiD`NT0ds{0$tTPxGG?I3b>2K^C;^AT}+ z;FUh;y_WvKUQ!>Kr(+2-mf6nat|foTULn)<_WF^4xPZu))ooLzs7t3Due;n~({5DB zPvi%PJmo6ha?F>M2jr=d?VpQ#eAt3hxu1|t;)j`D#b`)MIGWbuU!NpC`EBZZX}ywt z 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Inequality/Level_9.trace b/server/nng/build/lib/NNG/Levels/Inequality/Level_9.trace new file mode 100644 index 0000000..3ed8de7 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Inequality/Level_9.trace @@ -0,0 +1 @@ +10084756629938233881 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication.ilean b/server/nng/build/lib/NNG/Levels/Multiplication.ilean new file mode 100644 index 0000000..1d9f701 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Multiplication"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication.olean b/server/nng/build/lib/NNG/Levels/Multiplication.olean new file mode 100644 index 0000000000000000000000000000000000000000..f4be59d3e8984be2a77d4db436ebdda80e69f258 GIT binary patch literal 23128 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication.trace b/server/nng/build/lib/NNG/Levels/Multiplication.trace new file mode 100644 index 0000000..aa0fcb8 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication.trace @@ -0,0 +1 @@ +15100919068659915784 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.ilean new file mode 100644 index 0000000..8509594 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..12d08c4de0676d1afa65649568758eada167eb81 GIT binary patch literal 17360 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.trace new file mode 100644 index 0000000..3ceaf84 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_1.trace @@ -0,0 +1 @@ +2681194911731925232 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.ilean new file mode 100644 index 0000000..c47bad5 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_2"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.olean new file mode 100644 index 0000000000000000000000000000000000000000..fb5224b6dc6d7f2a2d6bb0e63e886f1c8cad4426 GIT binary patch literal 17360 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

    wJ$Z~Q{_gTL7v1ixA-?*FF&UfTD5bL+i zqfQYn(acODv_g7t50J+4+&%sNvXXw<{)GG~ji3kp55&CebQh?;?8&L(8&&?98LiZ5 z@rK_(jLWQrVn$8Z_FCaDgzD{UVmsy@+;H(0_wz@|0iv63mT{oi}eA3j13k$nQ%Gq5yFpEWU4O6zlOnA$^Sz^g%ul>xI~8*a|J$Zo}O= z%Vb_)9yg7U{=HN*>(HvRcPGF<3)dU{!+8OSbA#IYs!od}%^%O!@4n}SN#5&Dd79 z_xyRHQ@kxqH~Nq92*f-h-v4R$*Wu)4I}qn`me;=5uI>*#F-aSrq$dkg7+2kt{!SYPtW0WV&)Y`3;O zCA#@m>32QTuU5AHJa^iT@I08rbYol)2O!p`{Gd~O0aLu=a9;Wmg+3moEUzwaO`k5E zQnYOa#iRNU>hY)}V^lKW+ z`RaiG>E_2hTDp^;UarTzjc-%v`{Cn{X#Gy~3Z@tGJ;~GML*^BAeD*HbR};ZL%o9M& z7eRNvr_?Z!MTz+W;}3}SJcsyas(vxohaJ<~Z5l1(Q~FtIzq|IF2oe*~)40Bg?fcC! zWyPYeYuCc=LZ%z@1bTt6UtA@K?<=-8ob({RRV>e`{_y$rll~(gdg}k69@>v(TIp2= zNsvYFZ}e@_-AI5zn%l)`)t83fwlCPl8bbH(50R05K z)L-I!Zdft({bgZ!_f+x)A<*?wC>*R5W;_r>15Ag#cjy9Kgfgr|>@qH%rRI|Lw zrf*-pVc+%&GKBOrM9_oz4v0Kn z0$84!t$IaUOKpH{;lD8tt^5b_yL4J;+2B+ zO8F3Cc^9XZKG5^LJG?J#il7JkQ6Ta{%rgP)t!p@Ht^3D3M#iVdi1mYFlUIL?xLLT~ zkPnxA4;S|mxPPGbv@XL>AnbDEM~%7{Ncw)PVZA%=%Ud+6xn&RRY2^BHM%HtB8hsE2 zsEn2Vc$qJnv5MoC$XL($lE>J>5Ba#wwnF6B+Ax{mEr)=JmUrv7Yx6 z35<2TZ_8s0@xC;Tv4QvRULc=S6vhfZ51JT5d=AcKtmN~40%INDlf?1;Pc`44B{4Se zy#Tp5@UH!`D|j$>mi>*oh4cr z(>lrLyeNs3dt#oBGIM-I?uQGF1DscYIPXmIcwAtl{71Xccq#Yn&AS>xJ9cj&9-=pL zJ$^6K`N&@YD<^X|2#|_n*Us1!I;*mXshy2 zFYTU*{8J`K|4U(S_pzU|cxvC#%=9Fte|OiBzX|)aLi8l2o0&dn!|qP7mHfc|4T$xS z?sde)q0_FNj~D2>RkIs9%2@uu)kCUxWTnj}#bkGg>%n(w(<+E2ddCKXT^Cb7_zAp3 zZ!yrD&OTQJyGec{`-8ar@5;S@m0oN5J0>Q{xFIfY#0?mum!HdY#3eiF;R8DP9ZL=L zfiJHxp|6FUGuSTxvH$WE%o9fz@qOTV>VkRtABV}fg!3`P@^>$Ps_^B(6SV6*@~fHa zVQWE$u`lTTikm3?s${+khYAK^>`~kjm~LYF!2R<-!WbpGh3R=5-y1h|%;JSXqLw+Q3J=zdbe;|i} cxy;wX_EhNX(tZyDIb7e!{fGUNiT5S{2O9al+yDRo literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.trace new file mode 100644 index 0000000..51a6198 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_2.trace @@ -0,0 +1 @@ +10245843345607907477 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_3.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_3.ilean new file mode 100644 index 0000000..787ddb4 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_3.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..40da5f1847e57febd4f630e977084bc1be246d86 GIT binary patch literal 17360 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
    wJ$a1pI^jop+v1d2H--l5k0MSi1%Q#dsy-!K` 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_4.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_4.trace new file mode 100644 index 0000000..a872f1f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_4.trace @@ -0,0 +1 @@ +14993641720182264605 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_5.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_5.ilean new file mode 100644 index 0000000..2051584 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_5.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_5"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_5.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_5.olean new file mode 100644 index 0000000000000000000000000000000000000000..3a06142fbd26e886bffcbcc9c4b91597c599c620 GIT binary patch literal 17360 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
    mrBtZA&$8(n5nm@(<&_f#rTuy2Y{Wc*!@=XS%)Z zae#gTw)B@cpBq+8eScY4-n|w5ra$mr{kPCl8b(h~Vh{z0{h-_9nlIjlh>Pu{OJ0=f z^#xgO%*LW&PtMOuCRx;PO>OAY#{>6)3rB48#Mx3+w2Qr??Ra2b17iP4_m1-ZvnBX? zJvl6IN{2Th-~T8w4SLGM=s~{%LwV(DOA|?xd4+ziWx1v?jYZqmED7C@D0jB)7xD=R zy&mzc4x2sK?y&o`wDL+-A$=I1@htbruZQ`kTqlo16n}RZeTW|rakM$a3j{H4jPEm{ zr;6oOG=BH`4PR_8Cqqb2eHcBM?|{f-yHotGPkX)A;*q|;V&Y|-{@Q;=#p-{4I0||a zxZXGqAYXxqqZRKl4L*@Pef|bm?!LZfm)8Y1*rBgFj6TE-i1;~O;-)!Y`!;oGj??RD zWO+As*#1+$WtIPg9@AZI=LN<)5bKQ9FIElxrH8>E3(K>gc;&##`L~AVwbC$p;0F-? zh*t{M%jH9mc(CVrXJ}vA7)B5Fqd??^m}h+2Th~z3TKA86jEql@5$gs;C$9Pg zakFr}As;UJ9xm=BaQ{HiE5siP6IQK?}c^Ea&&L3Zt9f zb1Qfs&hPyd#&Z51L@Z-XKiS_2jHP|$bE!#UZ6Aq|jPBm@xw@Cc1je$S^4Y|g(?dQ7 zJ4>`MrgW0eIS~>m_ryFMVdnUX+z%BR2RN?)ao(Baayh_A`HyzN@lx*Dn|IX*ckJFw zJVbBcdi-9d_pcxH4|Z8l%JdG(-Lf6zm1tB%`wnOidUw+?Ont)sh>-rbyT5ra z4PYwdSB^n0)eCZ1zdUMw$S>lLiDYIB#+4Rn*Us1&Y04v zXp8c2FYTU*{8J`K{{yhM``9m8Jhks=W_kkCzrXv)pM`x|A$kJS%}gJ(es?F>N`7Gf z2E=+u_d4R@(4MEAj~D2>RkIs9N?HEERYR(FWTea{#bkGo>%n(w<4TAoddGT$T^Ex- z`Wd`LZ#K{y&%RIuyGecn`-8ar?~1*Dl3r{2JH{u-xFIfY#S9pum!Hja#3eJ~k^MUP z9RmjXz*m=>(APrF8SEE;*nhe5=ZPbW_&)GFb-_ISkHchKLireE`MZ}rQ~2uO3EFiY z`PIbrur*-neaLGM<-Ty&{er_N3`z81(9PyzD|3bgp z#P1om^s8IFYh;c#ClK8-Nyg92_~}bS587ugD*@LR zc2u#vCmui2Wm8!J@9QI!`Y?LXS3vYFU6eov$wz*~Oy+#Z@Ag*h{_FY?5BU+#^=Ly# g{ec_?W;0(i+f%NyOZzrDd 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_7.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_7.trace new file mode 100644 index 0000000..ffc70ae --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_7.trace @@ -0,0 +1 @@ +15474257035701176495 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.ilean new file mode 100644 index 0000000..a86942d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..4e1b5459a3c28454309d1cabee8ca0596e44a8b1 GIT binary patch literal 17360 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 Y?Wxe&rTrcRa=5;c`w#mk6Yop@2ek@IqyPW_ literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.trace new file mode 100644 index 0000000..5757f7c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_8.trace @@ -0,0 +1 @@ +3648854208530401287 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.ilean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.ilean new file mode 100644 index 0000000..954badf --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Multiplication.Level_9"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.olean b/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.olean new file mode 100644 index 0000000000000000000000000000000000000000..2c95e7bfadf9ed1370f5ccbddf362812ffef7189 GIT binary patch literal 17360 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 el?WLuzxb~zT}@L#EXCc literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.trace b/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.trace new file mode 100644 index 0000000..2b1f5bf --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Multiplication/Level_9.trace @@ -0,0 +1 @@ +4975536308483488989 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power.ilean b/server/nng/build/lib/NNG/Levels/Power.ilean new file mode 100644 index 0000000..91694c3 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Power"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power.olean b/server/nng/build/lib/NNG/Levels/Power.olean new file mode 100644 index 0000000000000000000000000000000000000000..4466be0224b4cdbae63e10b034eb4ed430df2437 GIT binary patch literal 22120 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 z«*%-`q6>Avh?qMAD5!N*zuD|IynS5T?oqW|!6YHDW`^l{Tej}>{b`mCbFt5N= zUHN;mMA~FsVV<*Q%DAl;b}rhuW?AZfKA-8vc}6_}VK*qgLU4H&c)XslUREJ#DrFD- zS^sU@xWX3jq&{(>~yle#?CLEIQhLzF>-|LSZD1& z&j(ufJU;Pv@$}b0-4Utt>v&x;t`L)od>FiBjBrJKJjMj~S0!T?uTN1% z2V)1XxAlx!jE%f+ICelJkT z*v#)^I{5m#1MdMDWBk6;!WiTCz*fc>-hVT;@b>`@#sq&KkpnzO)Lbr9GbB>&SuGisL{|4X(dZz$`gaW^RnpbpU8{8U zccCg>{oR^MSASQd($(+&Rl53JGU&8V;C=~+`z^YmfE@Lykkya+av5)9b^oW^wwySe zh!k%V)1{RBzZmla)=gk5%T+QKG3GK_87+*RWzt@Pv4xQ=(09S@EQj^mh`GEj{2!}S B7YhIY literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Power.trace b/server/nng/build/lib/NNG/Levels/Power.trace new file mode 100644 index 0000000..30f497d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power.trace @@ -0,0 +1 @@ +12255441869344750286 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_1.ilean b/server/nng/build/lib/NNG/Levels/Power/Level_1.ilean new file mode 100644 index 0000000..2650824 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Power.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_1.olean b/server/nng/build/lib/NNG/Levels/Power/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..d073b5344e1dbaaba2ca8990c625acd1d376a7e1 GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_3.trace b/server/nng/build/lib/NNG/Levels/Power/Level_3.trace new file mode 100644 index 0000000..e72a579 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_3.trace @@ -0,0 +1 @@ +13739636179189224786 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_4.ilean b/server/nng/build/lib/NNG/Levels/Power/Level_4.ilean new file mode 100644 index 0000000..e15a998 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Power.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_4.olean b/server/nng/build/lib/NNG/Levels/Power/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..b949d5aac9e9f6ca9739b52296a237859c76f285 GIT binary patch literal 17344 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 z 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_5.trace b/server/nng/build/lib/NNG/Levels/Power/Level_5.trace new file mode 100644 index 0000000..b91249f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_5.trace @@ -0,0 +1 @@ +14401556251889401930 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_6.ilean b/server/nng/build/lib/NNG/Levels/Power/Level_6.ilean new file mode 100644 index 0000000..7068f22 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_6.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Power.Level_6"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_6.olean b/server/nng/build/lib/NNG/Levels/Power/Level_6.olean new file mode 100644 index 0000000000000000000000000000000000000000..7e1e06d3cd1509e4b7187dda42302c3e0870b2b3 GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_7.trace b/server/nng/build/lib/NNG/Levels/Power/Level_7.trace new file mode 100644 index 0000000..36ca048 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_7.trace @@ -0,0 +1 @@ +8728766979918631633 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_8.ilean b/server/nng/build/lib/NNG/Levels/Power/Level_8.ilean new file mode 100644 index 0000000..ed85ad4 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.Power.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_8.olean b/server/nng/build/lib/NNG/Levels/Power/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..a71ecab7666519aaa333e89d21fac135c89b2036 GIT binary patch literal 17344 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Power/Level_8.trace b/server/nng/build/lib/NNG/Levels/Power/Level_8.trace new file mode 100644 index 0000000..83efa59 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Power/Level_8.trace @@ -0,0 +1 @@ +16000363894567288792 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition.ilean b/server/nng/build/lib/NNG/Levels/Proposition.ilean new file mode 100644 index 0000000..8f9853c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Proposition"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition.olean b/server/nng/build/lib/NNG/Levels/Proposition.olean new file mode 100644 index 0000000000000000000000000000000000000000..44b16fc96138679b07002de5e85f1934f0babd6a GIT binary patch literal 63840 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 Jzw5#N;y>o7lqdiI literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_1.trace b/server/nng/build/lib/NNG/Levels/Proposition/Level_1.trace new file mode 100644 index 0000000..71d00c7 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_1.trace @@ -0,0 +1 @@ +18179347340463669579 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_2.ilean b/server/nng/build/lib/NNG/Levels/Proposition/Level_2.ilean new file mode 100644 index 0000000..1585563 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_2.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Proposition.Level_2"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_2.olean b/server/nng/build/lib/NNG/Levels/Proposition/Level_2.olean new file mode 100644 index 0000000000000000000000000000000000000000..8ceb1c0172baeb68fc83979069291ca2f89b0e89 GIT binary patch literal 18840 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_6.trace b/server/nng/build/lib/NNG/Levels/Proposition/Level_6.trace new file mode 100644 index 0000000..a0c149e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_6.trace @@ -0,0 +1 @@ +7894357058058824740 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_7.ilean b/server/nng/build/lib/NNG/Levels/Proposition/Level_7.ilean new file mode 100644 index 0000000..b80426e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_7.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.Proposition.Level_7"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_7.olean b/server/nng/build/lib/NNG/Levels/Proposition/Level_7.olean new file mode 100644 index 0000000000000000000000000000000000000000..3de6399c4a0c7464dcaea8b5d0245afda525226b GIT binary patch literal 23096 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 Y1G|j)<-4Oc(91zD0P;HBh3nt{137c=ZU6uP literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_7.trace b/server/nng/build/lib/NNG/Levels/Proposition/Level_7.trace new file mode 100644 index 0000000..f619780 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_7.trace @@ -0,0 +1 @@ +16656846323211551510 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_8.ilean b/server/nng/build/lib/NNG/Levels/Proposition/Level_8.ilean new file mode 100644 index 0000000..ae70d0f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Proposition/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:not_iff_imp_false":{"usages":[[20,6,20,23],[21,6,21,23]],"definition":null}},"module":"NNG.Levels.Proposition.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Proposition/Level_8.olean b/server/nng/build/lib/NNG/Levels/Proposition/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..67b2caa22791be3048d8756ac3ffa0e979bcb0bc GIT binary patch literal 26120 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

    rafh#d*j1)PssK!n?b80;i@&mf+GTTJY>5i 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 He)<0a*vkUk literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Tutorial.trace b/server/nng/build/lib/NNG/Levels/Tutorial.trace new file mode 100644 index 0000000..f666963 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial.trace @@ -0,0 +1 @@ +1595615440839641244 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.ilean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.ilean new file mode 100644 index 0000000..7eb784c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat":{"usages":[[26,13,26,14]],"definition":null}},"module":"NNG.Levels.Tutorial.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.olean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..d4067b64e73331c6cec171ae535d8e8411365d3e GIT binary patch literal 30112 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.trace b/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.trace new file mode 100644 index 0000000..029fdab --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_1.trace @@ -0,0 +1 @@ +17057151196775041350 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.ilean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.ilean new file mode 100644 index 0000000..1f2e7eb --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat":{"usages":[[24,11,24,12]],"definition":null}},"module":"NNG.Levels.Tutorial.Level_2"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.olean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.olean new file mode 100644 index 0000000000000000000000000000000000000000..713786bf82696003fd180d5efee58552ece8ce58 GIT binary patch literal 36080 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.trace b/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.trace new file mode 100644 index 0000000..f0c7b10 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_2.trace @@ -0,0 +1 @@ +2087975388406110178 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.ilean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.ilean new file mode 100644 index 0000000..7a02609 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.succ":{"usages":[[47,20,47,24],[47,35,47,39],[47,41,47,45],[47,51,47,55]],"definition":null},"c:MyNat":{"usages":[[47,11,47,12]],"definition":null}},"module":"NNG.Levels.Tutorial.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.olean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..1d7fadb993bf88d7e5c01ed2fa26f389509a1d15 GIT binary patch literal 36816 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.trace b/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.trace new file mode 100644 index 0000000..4568320 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_3.trace @@ -0,0 +1 @@ +2143617200443064964 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.ilean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.ilean new file mode 100644 index 0000000..cb2073d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.succ":{"usages":[[45,18,45,22],[45,27,45,31]],"definition":null},"c:MyNat.add_zero":{"usages":[[52,11,52,19]],"definition":null},"c:MyNat.add_succ":{"usages":[[49,11,49,19]],"definition":null},"c:MyNat":{"usages":[[45,9,45,10]],"definition":null}},"module":"NNG.Levels.Tutorial.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.olean b/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..a179d639f459a12b7407bbc9b90eed176605c386 GIT binary patch literal 34680 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 Vzq?Bke2w_4LLl}5(#ll({|B_$=-dDR literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.trace b/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.trace new file mode 100644 index 0000000..03fc4ca --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/Tutorial/Level_4.trace @@ -0,0 +1 @@ +7407492338022565581 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Metadata.ilean b/server/nng/build/lib/NNG/Metadata.ilean new file mode 100644 index 0000000..36ba107 --- /dev/null +++ b/server/nng/build/lib/NNG/Metadata.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Metadata"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Metadata.olean b/server/nng/build/lib/NNG/Metadata.olean new file mode 100644 index 0000000000000000000000000000000000000000..cf8ed32839272725d87a57847b3e04e3692268f2 GIT binary patch literal 13712 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 Y81oqG4f&d+^ityaIjo0fOy+gtAI3|{00000 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Metadata.trace b/server/nng/build/lib/NNG/Metadata.trace new file mode 100644 index 0000000..0a81af6 --- /dev/null +++ b/server/nng/build/lib/NNG/Metadata.trace @@ -0,0 +1 @@ +10126315224814379241 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Modifications/Tactics.ilean b/server/nng/build/lib/NNG/Modifications/Tactics.ilean new file mode 100644 index 0000000..68608ba --- /dev/null +++ b/server/nng/build/lib/NNG/Modifications/Tactics.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:liftM":{"usages":[[65,12,65,17]],"definition":null},"c:_private.Lean.Elab.Tactic.Induction.0.Lean.Elab.Tactic.getElimNameInfo":{"usages":[[71,13,71,28]],"definition":null},"c:_private.Lean.Elab.Tactic.Induction.0.Lean.Elab.Tactic.generalizeVars":{"usages":[[71,47,71,61]],"definition":null},"c:_private.Lean.Elab.Tactic.Induction.0.Lean.Elab.Tactic.generalizeTargets":{"usages":[[71,29,71,46]],"definition":null},"c:_private.Lean.Elab.Tactic.Induction.0.Lean.Elab.Tactic.ElimApp.getAltNumFields":{"usages":[[52,13,52,28],[59,20,59,35]],"definition":null},"c:Unit.unit":{"usages":[[63,61,63,63]],"definition":null},"c:Pure.pure":{"usages":[[63,56,63,60],[69,2,69,6],[124,64,124,68]],"definition":null},"c:Option.some":{"usages":[[63,8,63,12]],"definition":null},"c:MyNat.zero":{"usages":[[42,4,42,8]],"definition":null},"c:MyNat.succ":{"usages":[[40,40,40,44],[43,4,43,8]],"definition":null},"c:MyNat.rfl":{"usages":[[123,9,123,18]],"definition":[121,16,121,19]},"c:MyNat.rewriteSeq":{"usages":[[21,9,21,25]],"definition":[19,16,19,26]},"c:MyNat.rec'":{"usages":[],"definition":[39,4,39,8]},"c:MyNat.induction":{"usages":[],"definition":[80,14,80,36]},"c:MyNat.evalRfl":{"usages":[],"definition":[123,24,123,31]},"c:MyNat.evalRewriteSeq":{"usages":[],"definition":[21,31,21,45]},"c:MyNat":{"usages":[[39,14,39,15],[40,17,40,18],[40,54,40,55]],"definition":null},"c:List.splitAtD":{"usages":[[60,39,60,47]],"definition":null},"c:List.map":{"usages":[[62,55,62,58]],"definition":null},"c:List":{"usages":[[56,18,56,22]],"definition":null},"c:Lean.withRef":{"usages":[[94,19,94,26]],"definition":null},"c:Lean.binderIdent":{"usages":[[81,30,81,41]],"definition":null},"c:Lean.Unhygienic.run":{"usages":[[60,59,60,73]],"definition":null},"c:Lean.TSyntax.raw":{"usages":[[83,38,83,39]],"definition":null},"c:Lean.Syntax.getSepArgs":{"usages":[[83,40,83,50]],"definition":null},"c:Lean.Syntax.getArgs":{"usages":[[56,44,56,51]],"definition":null},"c:Lean.Syntax":{"usages":[[53,82,53,88],[56,23,56,29]],"definition":null},"c:Lean.RBTree.toArray":{"usages":[[93,51,93,58]],"definition":null},"c:Lean.Parser.checkColGt":{"usages":[[81,24,81,29]],"definition":null},"c:Lean.Parser.Tactic.rwRuleSeq":{"usages":[[19,43,19,52]],"definition":null},"c:Lean.Parser.Tactic.location":{"usages":[[19,54,19,62]],"definition":null},"c:Lean.Parser.Tactic.config":{"usages":[[19,34,19,40]],"definition":null},"c:Lean.Parser.Tactic.casesTarget":{"usages":[[80,57,80,68]],"definition":null},"c:Lean.Parser.Tactic.ElimApp.evalNames":{"usages":[[98,21,98,38]],"definition":[53,4,53,21]},"c:Lean.Parser.Category.tactic":{"usages":[[19,67,19,73],[82,6,82,12],[121,29,121,35]],"definition":null},"c:Lean.Meta.withReducible":{"usages":[[124,34,124,47]],"definition":null},"c:Lean.Meta.throwTacticEx":{"usages":[[28,7,28,20]],"definition":null},"c:Lean.Meta.sortFVarIds":{"usages":[[93,37,93,48]],"definition":null},"c:Lean.Meta.mkGeneralizationForbiddenSet":{"usages":[[91,22,91,50]],"definition":null},"c:Lean.Meta.getFVarSetToGeneralize":{"usages":[[92,18,92,40]],"definition":null},"c:Lean.Meta.getElimInfo":{"usages":[[86,19,86,30]],"definition":null},"c:Lean.Meta.addImplicitTargets":{"usages":[[87,18,87,36]],"definition":null},"c:Lean.Meta.FVarSubst.apply":{"usages":[[67,30,67,35]],"definition":null},"c:Lean.Meta.ElimInfo.motivePos":{"usages":[[96,47,96,56]],"definition":null},"c:Lean.Meta.ElimInfo":{"usages":[[53,34,53,42]],"definition":null},"c:Lean.Meta.Cases.unifyEqs?":{"usages":[[63,26,63,41]],"definition":null},"c:Lean.MVarId.withContext":{"usages":[[67,8,67,19],[85,4,85,15],[90,6,90,17]],"definition":null},"c:Lean.MVarId.tryClear":{"usages":[[65,38,65,46]],"definition":null},"c:Lean.MVarId.revert":{"usages":[[93,27,93,33]],"definition":null},"c:Lean.MVarId.refl":{"usages":[[124,58,124,62]],"definition":null},"c:Lean.MVarId.introNP":{"usages":[[64,19,64,26]],"definition":null},"c:Lean.MVarId.introN":{"usages":[[62,23,62,29]],"definition":null},"c:Lean.MVarId.getTag":{"usages":[[94,75,94,81]],"definition":null},"c:Lean.MVarId.assign":{"usages":[[97,8,97,14]],"definition":null},"c:Lean.MVarId":{"usages":[[55,21,55,27]],"definition":null},"c:Lean.FVarId":{"usages":[[54,57,54,63]],"definition":null},"c:Lean.Expr.mvarId!":{"usages":[[96,59,96,66]],"definition":null},"c:Lean.Expr.getAppArgs":{"usages":[[95,37,95,47]],"definition":null},"c:Lean.Expr.fvarId!":{"usages":[[89,40,89,47]],"definition":null},"c:Lean.Expr.fvar":{"usages":[[67,39,67,44]],"definition":null},"c:Lean.Expr.addLocalVarInfoForBinderIdent":{"usages":[[67,51,67,80]],"definition":null},"c:Lean.Elab.Term.TermElabM":{"usages":[[55,4,55,13]],"definition":null},"c:Lean.Elab.Tactic.withRWRulesSeq":{"usages":[[24,2,24,16]],"definition":null},"c:Lean.Elab.Tactic.withLocation":{"usages":[[25,4,25,16]],"definition":null},"c:Lean.Elab.Tactic.throwNoGoalsToBeSolved":{"usages":[[84,35,84,57]],"definition":null},"c:Lean.Elab.Tactic.setGoals":{"usages":[[100,6,100,14]],"definition":null},"c:Lean.Elab.Tactic.rewriteTarget":{"usages":[[27,7,27,20]],"definition":null},"c:Lean.Elab.Tactic.rewriteLocalDecl":{"usages":[[26,7,26,23]],"definition":null},"c:Lean.Elab.Tactic.liftMetaTactic":{"usages":[[124,2,124,16]],"definition":null},"c:Lean.Elab.Tactic.getUnsolvedGoals":{"usages":[[84,16,84,32]],"definition":null},"c:Lean.Elab.Tactic.getNameOfIdent'":{"usages":[[62,60,62,75]],"definition":null},"c:Lean.Elab.Tactic.expandOptLocation":{"usages":[[23,15,23,32]],"definition":null},"c:Lean.Elab.Tactic.evalInduction.checkTargets":{"usages":[[88,4,88,30]],"definition":null},"c:Lean.Elab.Tactic.evalInduction":{"usages":[[71,65,71,78]],"definition":null},"c:Lean.Elab.Tactic.evalCases":{"usages":[[52,32,52,41]],"definition":null},"c:Lean.Elab.Tactic.elabRewriteConfig":{"usages":[[22,12,22,29]],"definition":null},"c:Lean.Elab.Tactic.elabCasesTargets":{"usages":[[83,16,83,32]],"definition":null},"c:Lean.Elab.Tactic.Tactic":{"usages":[[21,48,21,54],[123,34,123,40]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.setMotiveArg":{"usages":[[96,6,96,26]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.mkElimApp":{"usages":[[94,35,94,52]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.evalAlts.go":{"usages":[[52,42,52,61]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Result.others":{"usages":[[100,38,100,44]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Result.elimApp":{"usages":[[95,29,95,36],[97,22,97,29]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Result.alts":{"usages":[[98,55,98,59]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Alt.name":{"usages":[[58,8,58,12]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Alt.mvarId":{"usages":[[58,25,58,31]],"definition":null},"c:Lean.Elab.Tactic.ElimApp.Alt":{"usages":[[53,58,53,69]],"definition":null},"c:Array.toList":{"usages":[[56,55,56,61],[100,46,100,52]],"definition":null},"c:Array.size":{"usages":[[99,35,99,39]],"definition":null},"c:Array.push":{"usages":[[68,25,68,29]],"definition":null},"c:Array.map":{"usages":[[89,33,89,36]],"definition":null},"c:Array.foldlM":{"usages":[[65,28,65,34]],"definition":null},"c:Array":{"usages":[[53,52,53,57],[54,51,54,56],[55,15,55,20]],"definition":null}},"module":"NNG.Modifications.Tactics"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Modifications/Tactics.olean b/server/nng/build/lib/NNG/Modifications/Tactics.olean new file mode 100644 index 0000000000000000000000000000000000000000..2ed7adb2c1785f65bb7ab6e029805927a6b0d942 GIT binary patch literal 589856 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
    (y{T)rHB&2a9YmHNx6i^fPF3-Z?wJ#Y*3 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

    ~W|z-Gc^=R9 zMF0JJkc3Ay7ja?vm)}aQ84R4pBi_H}c*cOA0lAH)jZe|ogg*XD^~KkHqDu++pHIKv zHOM3wB$xN8S*{&&Ge)s(!OSu31me(W8j^`VvHVX#XrE3xB z@0od7&4MI68h9q`II-uKs9@keyA|(4hy_0t{9T1>Eeo-*MIxngyx+_I^8R-M%6Ds7 zC@d6uxHQ?z`y5<9Q>%A)rq&Av;Tb4z$92iHl{I<>0Vln@@5_3#z;_^Be`!Rt&cqtC z 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 T8?UlIj>`-~Z}2#u<6`*#LQKzY literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Modifications/Tactics.trace b/server/nng/build/lib/NNG/Modifications/Tactics.trace new file mode 100644 index 0000000..b8a6417 --- /dev/null +++ b/server/nng/build/lib/NNG/Modifications/Tactics.trace @@ -0,0 +1 @@ +14754082556322596060 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Addition.ilean b/server/nng/build/lib/NNG/MyNat/Addition.ilean new file mode 100644 index 0000000..871f7fa --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Addition.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.zero":{"usages":[[7,7,7,8]],"definition":null},"c:MyNat.succ":{"usages":[[8,7,8,17],[8,23,8,33],[22,38,22,42],[22,48,22,52]],"definition":null},"c:MyNat.instAddMyNat":{"usages":[],"definition":[10,0,10,8]},"c:MyNat.add_zero":{"usages":[],"definition":[17,8,17,16]},"c:MyNat.add_succ":{"usages":[],"definition":[22,8,22,16]},"c:MyNat.add":{"usages":[[11,9,11,18]],"definition":[6,4,6,7]},"c:MyNat":{"usages":[[6,10,6,15],[6,18,6,23],[6,26,6,31],[10,15,10,20],[17,22,17,27],[22,24,22,29]],"definition":null},"c:Add.add":{"usages":[[11,2,11,5]],"definition":null},"c:Add":{"usages":[[10,11,10,14]],"definition":null}},"module":"NNG.MyNat.Addition"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Addition.olean b/server/nng/build/lib/NNG/MyNat/Addition.olean new file mode 100644 index 0000000000000000000000000000000000000000..8bd7dc58da0dc60d9fdc96df296feb5cb6cc9aef GIT binary patch literal 32560 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/MyNat/Definition.trace b/server/nng/build/lib/NNG/MyNat/Definition.trace new file mode 100644 index 0000000..78e3290 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Definition.trace @@ -0,0 +1 @@ +6972496789146285202 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Multiplication.ilean b/server/nng/build/lib/NNG/MyNat/Multiplication.ilean new file mode 100644 index 0000000..7338002 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Multiplication.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.zero":{"usages":[[7,7,7,8]],"definition":null},"c:MyNat.succ":{"usages":[[15,36,15,40]],"definition":null},"c:MyNat.mul_zero":{"usages":[],"definition":[13,6,13,14]},"c:MyNat.mul_succ":{"usages":[],"definition":[15,6,15,14]},"c:MyNat.mul":{"usages":[[11,9,11,18]],"definition":[6,4,6,7]},"c:MyNat.instMulMyNat":{"usages":[],"definition":[10,0,10,8]},"c:MyNat":{"usages":[[6,10,6,15],[6,18,6,23],[6,26,6,31],[10,15,10,20],[13,20,13,25],[15,22,15,27]],"definition":null},"c:Mul.mul":{"usages":[[11,2,11,5]],"definition":null},"c:Mul":{"usages":[[10,11,10,14]],"definition":null}},"module":"NNG.MyNat.Multiplication"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Multiplication.olean b/server/nng/build/lib/NNG/MyNat/Multiplication.olean new file mode 100644 index 0000000000000000000000000000000000000000..ff3bb8b68c93ec3f4eaa74082c02e00b0b560c05 GIT binary patch literal 33232 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/MyNat/Multiplication.trace b/server/nng/build/lib/NNG/MyNat/Multiplication.trace new file mode 100644 index 0000000..a9ec026 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Multiplication.trace @@ -0,0 +1 @@ +2052634667963101258 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Addition.ilean b/server/nng/build/lib/NNG/MyNat/Theorems/Addition.ilean new file mode 100644 index 0000000..b6b1277 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Theorems/Addition.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:MyNat.zero_add":{"usages":[[36,8,36,16]],"definition":[5,8,5,22]},"c:MyNat.succ_add":{"usages":[[41,8,41,16]],"definition":[24,8,24,22]},"c:MyNat.succ":{"usages":[[24,35,24,39],[24,48,24,52],[44,43,44,47]],"definition":null},"c:MyNat.one_eq_succ_zero":{"usages":[],"definition":[44,8,44,30]},"c:MyNat.add_zero":{"usages":[[7,8,7,16],[15,8,15,16],[16,8,16,16],[26,8,26,16],[27,8,27,16],[37,8,37,16]],"definition":null},"c:MyNat.add_succ":{"usages":[[9,8,9,16],[18,8,18,16],[19,8,19,16],[20,8,20,16],[29,8,29,16],[31,8,31,16],[39,8,39,16]],"definition":null},"c:MyNat.add_comm":{"usages":[],"definition":[34,8,34,22]},"c:MyNat.add_assoc":{"usages":[],"definition":[13,8,13,23]},"c:MyNat":{"usages":[[5,28,5,29],[13,33,13,34],[24,30,24,31],[34,30,34,31],[44,38,44,39]],"definition":null}},"module":"NNG.MyNat.Theorems.Addition"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Addition.olean b/server/nng/build/lib/NNG/MyNat/Theorems/Addition.olean new file mode 100644 index 0000000000000000000000000000000000000000..d44df58a3f0c7e6acb11259908740b33bec4d6ed GIT binary patch literal 39432 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Addition.trace b/server/nng/build/lib/NNG/MyNat/Theorems/Addition.trace new file mode 100644 index 0000000..bfa62e3 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Theorems/Addition.trace @@ -0,0 +1 @@ +3227530040224467366 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.ilean b/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.ilean new file mode 100644 index 0000000..163a9b6 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:not_iff_imp_false":{"usages":[],"definition":[0,8,0,25]},"c:Bool.false":{"usages":[[0,49,0,54]],"definition":null}},"module":"NNG.MyNat.Theorems.Proposition"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.olean b/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.olean new file mode 100644 index 0000000000000000000000000000000000000000..c520fbe6ad2ece8b8f58dc1458d95a3d5e11b440 GIT binary patch literal 15608 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.trace b/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.trace new file mode 100644 index 0000000..3b33097 --- /dev/null +++ b/server/nng/build/lib/NNG/MyNat/Theorems/Proposition.trace @@ -0,0 +1 @@ +483796173031302994 \ No newline at end of file
  • literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition.trace b/server/nng/build/lib/NNG/Levels/AdvAddition.trace new file mode 100644 index 0000000..9116234 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition.trace @@ -0,0 +1 @@ +7852774950450280612 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.ilean new file mode 100644 index 0000000..e9fa163 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:not_false_iff":{"usages":[[17,75,17,88]],"definition":null},"c:ne_eq":{"usages":[[17,68,17,73]],"definition":null},"c:imp_self":{"usages":[[15,88,15,96]],"definition":null},"c:MyNat.zero_ne_succ":{"usages":[],"definition":[17,8,17,26]},"c:MyNat.zero":{"usages":[[17,37,17,41]],"definition":null},"c:MyNat.succ_inj":{"usages":[[22,10,22,18]],"definition":[15,8,15,22]},"c:MyNat.succ.injEq":{"usages":[[15,76,15,86]],"definition":null},"c:MyNat.succ":{"usages":[[15,35,15,39],[15,44,15,48],[17,44,17,48],[21,20,21,24],[21,29,21,33]],"definition":null},"c:MyNat":{"usages":[[15,30,15,31],[17,32,17,33],[21,11,21,12]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_1"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.olean new file mode 100644 index 0000000000000000000000000000000000000000..d9d3960b1f8ae6ccbcb514f632596302837ac61d GIT binary patch literal 28448 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.trace new file mode 100644 index 0000000..d0094f7 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_1.trace @@ -0,0 +1 @@ +9336372057508599589 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.ilean new file mode 100644 index 0000000..2423540 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_10"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_10.olean new file mode 100644 index 0000000000000000000000000000000000000000..83529805b39ed7b2dd85f346d36ef0abe438bd27 GIT binary patch literal 17368 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 b%mW|f=9Ni_M^gf<{CPo6J4$p1<-+KX*SqK3 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 YgB+b*+TVk4e>C@pc>J(`GV#9TpH&ifEdT%j literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.trace new file mode 100644 index 0000000..15d3040 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_12.trace @@ -0,0 +1 @@ +5389173862524826914 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.ilean new file mode 100644 index 0000000..cd9ce1e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_13"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_13.olean new file mode 100644 index 0000000000000000000000000000000000000000..320431397f1e85c07e59fe8afa628440dd7ad98a GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.trace new file mode 100644 index 0000000..dfa5b14 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_2.trace @@ -0,0 +1 @@ +3507750203879559481 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.ilean new file mode 100644 index 0000000..3e7a817 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..6b13a3a2ba7087b2d2f8a7d5a15117895768ee8d GIT binary patch literal 17360 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 z%0DPS-|7#ilwN)V%UOBw`DI-cJxQUeEgwH{FR@VEyj*XL8~PcD{f(2mu04hNeynD>)6Ts;@4F4nTKbT_rYQO# zABgorY&2|z7HzlTj?6Nd7nsLQBc*>Y6wNuX`tWRDCt)%(~Eb{e{QmO z`v}kznO?^9+tV_)mF_)zmgp333)7AMV>|*ekBIkw+WmDndD#xcxs2s??7OSieUDDo z#wY2ijiLwn3dFv{;qv5LUG1l@J}xaR_tNZHt!GzuT?W4r5@lSBej$H=$RoG-9+P$@ zO(%HKX(R`Q^ufP8mb)&k^0%3vju}EceJeK-#Sv2Kezf_QB{L>>T<4^wmpNwNd? zA+4-0Wz`kWU$SDiwml`f`9|q?1Jf^6w*I_e#*Xkjn9OuzTo4B!)~EcSQ+zR2yyI}T z{fI&zj}XhN&s*ESdzVygTS4)t{)2jasw3#K`l9M-VtM1|?c8TOn)V{%9zVMMeny;u z9XQ$FqX+k?{$Anl|vZ zJ;#E?MD%p7Z)W>`b4*>i^q+O>V0R(Yjd=pSK-e#?62$ivBMm1#h;J3kbE-dlK5X)T z!xAJjwpvFTQNl|d3@(fix&Ch2d@(I;-WV%5?`#6kI(#PvphFb@Ec|8B7_rQ?TB z+%HFZ6}hf>S?;jqBbOK5-}PqbtB#@%>m?9+#dVQO`@*GapS;ANko?2AZ(_M0m2P!y zJ6iHJ^qFpMe;lBnfNlLH&gX^|Q{P_}mN&n0;LN+(J@x0ZJF>EnU>z$GKM`4VjzD%vIdsr`6hUISwP zN%xNO{1m9j2lE{edF*tH-}Py)*V;VN_g8$9jMLu+ z&8l4ckM~DIPcqjV=K+;PlFd+Ko==tBIlyaRVZLZjZQW zF3`SE9iHR#dYW0@wVk&AG_bttAJAjEwf(%ncn4ygu?EGep}+Jn_+w#t&SNipwR+Kw z;d!kziXQj@gg@eyg7sqgP|Nbp&j{Vq=d3%tFKv#Z2m4VV@Pv{djWo+T~yNt1c_Y;YX^}KJ(W31(UX*y#g@87*ZKBp**6?`5vG1l@qIG3@K&-;mt z^?Xkf&-Xvoe1DeA*vR*Wg^VqH|LSE_7{xYD`~9(*v4-#C(;1Way+abek7?ldQYJwe$TDoeK^1OR~Re!dk_hXbpxe6$&94~Vts#!-59<7pV|vd7~BBjrEZ z)lQIdPhY>Qv3AGqEyP3gCa%ZtW%~W{-k{pHeUi$kYfJ0CCBcdKSMbd<9E!E1(B@5oA@ONzi0|VQ#j&75&ngLw~5~~ZXMXLcGsvpZB8J%WwMN)nepT2u0G(LU0y^o#C)N6xgIhJ zslTz00^+Ps!c@IBysQczJ2k+}+l*TA}&{sh8EnSpA2gyf%#82UTDCqfm t{r)Ql5)b*2#Pw)HNd18v2IewfE8A0{vrGFu2;^{m6ZaqXPbS`%{0s1;03-ka literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.trace new file mode 100644 index 0000000..410d78c --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_3.trace @@ -0,0 +1 @@ +18314890376638277065 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.ilean new file mode 100644 index 0000000..e2bbb14 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_4"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.olean new file mode 100644 index 0000000000000000000000000000000000000000..48d1e852d8029c10b829bff21bcf5dfaef7cf79b GIT binary patch literal 17360 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.trace new file mode 100644 index 0000000..16e6312 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_4.trace @@ -0,0 +1 @@ +2092365143561121648 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.ilean new file mode 100644 index 0000000..3ab7757 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_5"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.olean new file mode 100644 index 0000000000000000000000000000000000000000..7df77525ddb330178388117216f5cb54855625de GIT binary patch literal 17360 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.trace new file mode 100644 index 0000000..ff557f6 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_5.trace @@ -0,0 +1 @@ +17123810049702200014 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.ilean new file mode 100644 index 0000000..083387d --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_6"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_6.olean new file mode 100644 index 0000000000000000000000000000000000000000..76fa3bad7fab2c0a192ae10d16150f86b629a039 GIT binary patch literal 17360 zcmbtb33yahmVRLk0b?OsfhYxt1{a9n5?LfH*(5+g5(r>RDpfC)B9*G5mRQ(GXA~vv zMxa3>juIG`h^PTY(rQl!86es&85$)DLTm;N3K|hHY%=$}d;ZGHBgN=9_sf^R-aY4@ z?Vh{7Dz96$c?w)^b+9ao()4)z5Jjn+EKw09Mo~@?8jGku-JL6eas2G@x?P^ +|h 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.trace new file mode 100644 index 0000000..2d90327 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_7.trace @@ -0,0 +1 @@ +13172030794097753806 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.ilean new file mode 100644 index 0000000..2b8dbbd --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_8"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.olean new file mode 100644 index 0000000000000000000000000000000000000000..7130733c420443d2d5cce188864b0fc63925761d GIT binary patch literal 17360 zcmb_j33yahmVRL;U<|Sq2vTekTp)tBkwwCiO#&1ofdICoQuR_PQmHCxiG__!Mp4pk z1R6BrD1mW_h#F8Nt@d<~0ix}ap;4nC#AeW-pb-(nCVkJl=dZkaq?lp8xnI8g_3k#tRe4;h)m`9pse@%v6#J%}+Z3g8szgPU7)3cvXe^@sOgF9s#`3e<<8rzKlLG-? zYb)aK$dAAd{G2Jc!AX3b`2pC8pR=vDfYT-)h!5?7?U^qtVCPSYVpiJ42wtt!uz!i= zJC|+v#KU%*0 z;sc_aly*uo)6Gn$da}O@eGml*fBj3{+18*83E2nvA(nG{(bMVo9sI{gYD@AfxgP#g zJ;}d{K8OPBE*}+p&^yywtoprHo8|*m>-99Sye*GCbnm=p&rT#d>FLr=#=)ou{SQPQ z*a}r!QI6YL;wK5R==CJCyvIMXeEYl-a1jUT@kY@DxxlV0Q`3{Z)Ejn2)a&(BvAjVu z*WPfv_vB5`(-1|^H7pm{gP+xq*X6W119PoD|Ez+HfU(CdqDFXQy%-1e)6cgs0P zbn+{m>qXy$i}-v7{Q^WB?H=0{m*}YM!s0N$UQa2@TXpMm6L+K?A4E)~r#gzBc$NaZ znxBL2pkK95_Bn#ZsyiS%ORuMi#%~PPq)S>Ns=*4n@JtOp_TT4`bR;J*Qw@*=*=5i=q#C0K|B*s|A^Aaj})vYoOOt%kr96_NthbmvR7l zny*w3_fs@I2_0pe;@plS_v~w!0X?}~Zx~Ofk>9`&^Tjh(v3*I5_1r&&j4hnk<%|i8 zwLGp#Kjj_f1t9XzAF$Jutol+y;dxmfw-&ZzZ_>u+*YtQvH{R+nz6AiIz^K;%!3+pUV6@mqaMv(zQ29$T5R02{J?x) z$M*j2j&kp*HGQ=Chv?1lgE98V^&d6<{?k`T0@33;OF#3NzP2>>v!Wj}ml2)fkjQl7 zd=LMDh=bEzBF3G^w{(#h@gzhP(j$D*N+HYhKdij6;f({ssFL(lMA3u%2O=JsYKiJv zl%&a|c%i?6n0F@IOD5ax&VbY7)_Cb3@k0(U9AA>lT|s0XJH;$e55$H8cuV?z8T%l+F z=`%zpJA2ayQGm!dHDoRJx>WNxbHEoAFwva9RC3C8qODedpy`q1BR)XvduA-1X~n?O z$04_?j6>61M-HyuQmL_1KbLa7UZ1FsscfTO%cAX zOS5^1;2sh?&*O91%|mnpXGp9z+RRC@+0KB-r6EINV?AEgZPq$JHa5c@@OkV(v7z<2 zV+Bq8Wd*DOl~&+b!E6>qpMRnv;B%HZt*+SEsUEk@74(N&!goTm(q3t1zlU>2+^p*m zJstIka)+d_wh^cJx6MAj}yjtF`}n zyN5CZ^b>=gKA7o1qLbZqY!B+I_!;tuPvm#ICay1Kq^QK42K0J36^dzQRm_B3qPr=vz z;<{7P+sDA)T;@w)KB8aF4|mX|t<}&Yc(qc&a!liHIlShR-DQ&As;8Fe`uRn)y`*0o znJ>gha>yR^BM|*yS8c8=r$e*ha(q)gVl(QtYkU-66U(<;E#vrEy|dd_Nv}2&1JOfV zpTO8hec;@Vo=fIPdaGX*Ojm${f$|-GMnjTA_F{boBEMs?0Tp~9v3tWg2=loTFYPuy zH?SQ>gdH_Z&*S+3?OS-gZeS$)#JG-u-UQYsYz`Ok`83WmK+ylMSZUC6rER=Z1I%T*l-E86{N-E^dxEqL=^M~p~*GT`7FT|gubW%c`7l?xqp}(BlLl4?j>FOyi;0HEF(xZ-dhgkS= zG}8B{si(AiTkIc)fA_=0vCyB)^(_YZ*mnZ4|Gd{}cc_6ZPta#m=co>+Kj4ele`4MN zVjY;LwIi)E&oF;iv;LE#7nl9%!c1+aPIfnNeTebb@7J%GFy;pBoJ0N4!u9%o5V1Pb zQ>svaxF->}2tH|p(Q0WA^dFT zI@xVzy3uaL1&Dc!;xxx=6Gq!qd(fx51&P#`3%NZXn>8%^^HtDSj(Wp=Vqanq1&Dar zJan9)ou;@>vK3{DghKi%6epbffSC5hdd2OeT>7t%htfyJ#p5XL{`1s&E9i+_U&nTu zR=?GE{)vnAM5lOJm~M>M0AdgYc&&U?i29G?*n(aX5r%$WV*>Sd=MnzV-K zWPcUthP=Q%A25y@h*IqI`<-sbG>@${lw>c?hd|`Tj8=XrK>XLoHQprc?w6CD@NTc) zwEGaECv$xx+ovx3Vd>nJ7w#Y-WOp9Zjrjn*K;)&m#GTz|Ald>! zpEbN|y!`$$#bwQhgZh4HVLNaAwdMW0`@Xw@c!+N9C;hHtdfZoQ+g&&Me4df6#ai22^{hQ+3&OcV{Gz;(&ezqQ7Z8hudkZK&1Wk zY{$f7jz>C-eO60z@=xh6{i|U5g}V>^b>Re?7EQ9>%ygsu*#7{rubh`kmdc`!UoOir z^}F$J@158c&ihj6=lIS3?YFGw-i=Qo38cR=ihlSHL>z1$w}b9B^`n*S!1!ulc~vum zb?2sAcR^2=Yh@gaenKt~_bh&Kd0w^iKR>L((7yiEh8 zzXfGaPuRBoTm}5JaJ|t_>}!C~E5D)(<{z9Rw{AbxJtl7R_oR>LwXCm< z@rz#j_dHp$b}sB`jA9S;1L1!_dk@>DIT71Lk^f#X0O(cYCBYF2X+A{W0&y=hJLnNtZjlSNK3^Kyj=1|Xw%A7g zK^s;?j~^uMuVVV{gRYvK#vaAodNJ zQ)h-}P~w9>K-^Ezd@tVa`zY=xWIy)1wQT3KUFqG5%T|>T57C>szJl>+<}Y`2>~fQK zO{)2Cmi`wqy=2rE*SgkjT0`wM|Cw&|A9)Q#UKIr0+AcmTDDvFrR9kl=vj4ybL>}h2 zeX7+~NSnebKC4^g0559nM?Bk6$++i%l_}4}jLPIgywz0q#u8xZ!B-EFN?h+h-S>u~>+Pd3k9Hv)Q0L!^C1 zJ@5~Rye#mzBF<wm58@oDdHxrOEr z->=rN-JzF)YajgJ1}%Iw9J%CpyI= zf$7G4z{};Flp=cTddZXs3LKiU)Yz_ zvE0MQANt|(|9V@SOvo=~c-#F9e}M3-*lP26+VBhObP~(^d|7+Xd)aS21iuQS=+PEN z!34aH8i-O{Bxd-0xd%!0_=>Fo;b|Ls(XW*(|NU>5?NC1Zxrt{`?&vv-)Fp*aR~Y>TyM;ip~N5xaEN@2@Ke0&5O2uDOfP0lqp!rS*I&kZ zQb&K1;hT3;3em~m`Y8GlUm)Tvj`*rWyq>?DZoS?vBc$K+cMeM#uy3$-{X}}xx!&kE z<_RF?3-4uo)$1!|xwp-2H#p!*sVxs*{Ne6{&{KAWdc?OW z#L-{ea758l%kmCZpZ6Y4eS9VKG`FFL{A^DQqQpqh{?mJwgptyJ)El3Pk=knur}&KV zg!;ksK@_y7&m_0hAh(d8jqNMAKADkaMZN!Y(f2iyh)a$a+>hgZMDUim_dWG%zP9F4 zzbH3I{~B2SKuhmo^DO=LQhTlcnO+;I|C0OlWaguG!q=$lKD|$yV|6?9`zU>Wgjh}| z|G{G;-63sSB0H+MKG&cJ`3=N8ZCB~!AO^SY5{2~Op0JVSH@2Pc z$ZsIlZ<|M*CS0PKnM7!X^xz&Ko#nZE`TeCO{k8oG`4ftw2mKGkyzF!rsJ`r}Y2q7I z{yCWu>a=*nZy?5H)>1K}W@vk@@E1b$_BF8`3%`2l;?3^oj*G2J-d;d}z@ObtXS_PE2BdL$qFH!sWCn6|6eZPOj^5HHEExI+2)R)099 z^z!Rj&g#Q2EbqK^$Mulk5=DMLVh{zWU6hGu@qI(9_(~fh899+^Eo9u#?}<0d`0Yyy zRc`zE!9NfS`Q_z$W8BcsKUgN&hg9n?_0hUM!k>Xzkg%65*eP>y7^5ya2?xL5;ks(;`Xp2l#;CZz~SO z-$`q!h&PF{;QTOy{NXx%yqeg~Ne{pMhl$OLrW1>nH>0IrHB2wwyWsgL-kl>sPh@%- z)9*^l+)=v!{CT2Nye&*O`j7Dl#5^M2|7rKv;pAmI5a%+M*S`0j9``>sMH`=_rzVOX zM* z6w(L(@>uSMw2I$meL8k9@sNKNQS{+F2*kQA@(ALU%jLsV-9eJq}WP@P(^Z z?$x%ZL^t0e{jO*F)ynpt7tY)jo(GeeZj1}!0L1!~A9RW@#)@|w&ek7M=;IM$d3AZ~ z`*!V=Is);ixWbz&xkXy9Y;H3PB`q^_(8v> zvz)IF`k!om)T5<4`RV0)+}rrJ)Oe-&c$@ob({Rl`PMx{_y$GDgTxaJ@r?phxTJLtn?~_ zB*>!ox67^4-|FK}-aK&4vc<$f<1>ltjs9RB03!e0VqZ$f51+VSj`S*WUGcKqp({qM zD0-mtZO~U0MIY8nAoPmsBA51sOVvJQsX-z6hjHJ?az85F?%Hv@o(bJ0Q zhu6CN#|K?9p{G2G9`q|PoL8Ql5GV zusQRcE@wbXE5B3~)`#(##Bv|~azt?2b@Dhw@%Kj2hxh>zN1IE$KoH}`_&yVQs#sn{ z)3>h<`)p@98A5s*qUgbV2Sgq_-QstB+UvDekM#W&pCse-mjSaY*8lzeG0>CD^~QMs z`3giFt$2@V@QLK<^EbqD5A-{`y1r(!6Z)#7=tJCqh@aadZkh|UFI0!;IK7@GmUlyk zoj>(oRrz=5G2PL2USPZfvCde7V%5-JdKmn%usr997r$D&_?GazRvJYQ`~boq@k+sZ zxqPT$c^7Af?(22l9p0BVMbU%(C=hue=9z%@)-@cp$o?^plkw>}YSZAjlyx5=ZWgXL z?jNW3 zM8-Pax8*U`@V+#iv4QvRULc=S6vlEs51JTj_#B+eSi$H0M8-P4CyD3#pDMmTOJ;1~ zd&5G;X1;&*GAfK^xQAw}=KJ_`#w334ki_p}>iNBtiP6IQK?}c^Ea&&L3Zs|bb1Qfs z&hPyd#&Z51L;_=Nf7##3jHUhLbE!#UU0;b^7`=Vub9HZt$&6*aX%O~2>V5RIA;KH-bh(Ol4ObSpY^R8uC{bN{nx|9q504C<&5c_inc5F z_tx&2$UkM0^gjf9dyM~_#Z&u^W~L`I{kuDlJSFVY3el69Zf5%6m-cpot>g#xZ$PYv zbgv^W4xM)Ge7r>8t(x7?QOfcMts7poD=U2-DJHvXxE_3`wycF{qIYaC*mW`OgOlJT zdW(VHboSXI*iG^q*&oE^zt`;llk{5C-!Um!#tm_KBYxmGz5HCJBQDv=4;<9V?-(-B z2fe)7guWJX&S1X)#Qw`uut*$P#P@+0sY@2=e;g*`63)jOmcMt^6NN7inWSCkkzdVR z4_ga5jDKG5SNvq@R|WH3I8-ngV~^sN$aE9a2OU`aA;u`tElkhj_};W<;9lHG(eIdy z;~jd)2BMd9doN=pk6)t4D>3b=xt^Yd50~7-*Z&W6=;!uPzh8o%!Vw>e@GtzkP5hp5 zd;j|Ndq(GJa{|#VQ)K+ij2}OL{UPU^RYfF2%omE6>mien`WyQwAnuRxV?8~;-i|7k z_sGLXx^69V@V-7qX^5f+eFa3{(nSe$kbLAv{8Y||g6?nB9lWkT@sJ-$T#q({)E~%U dU@r5uus!8EyR_efKn~Y8a{pofWa53vKLIR{(ZT=# literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.trace new file mode 100644 index 0000000..c4f1af7 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_8.trace @@ -0,0 +1 @@ +10314181165617171139 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.ilean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.ilean new file mode 100644 index 0000000..19ae684 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvAddition.Level_9"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.olean b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.olean new file mode 100644 index 0000000000000000000000000000000000000000..4041be7578c8c871668fc5835bcded04c0f8e500 GIT binary patch literal 17360 zcmb_j33yahmVRLk0b`J@K$HSRg9}8^Hf$1>Y!X625(uD@O4UoHNTsT%B^HWIMp4pk z1R6BrD1mW_2pUi%t@d<~0ivy#p+Tb{#AeW-pb-(nqRc(-p1<<)NHOg)mti z+3vaPtMa&1tGmGIQU}YTDDUk(JylUEr$|&piBgm^gvKK3&vxfZU<^OIJuas^Fewo5 zwYDPu&in}M#LpRm8=S<~l^=jz_&M8Z3pj1^f%woK*pd0N0(SnSC}yQYl;G7$4f~f+ zzGKO{KhFPxDv936_2rDy*AFZ_Su!gXbR|m0qmb#{HclM9Wl@<5x|!*TO!uF^;RnkX zpMOYnlhQ#+V!D~>R8RIt(+5$2@YlcCoox-ukdS?lA7VLo6g``E|Dk^jr?w=&lI!6= z)sy@y=z}Q09`aGK2fdlrV%6`p+B6@iTCb;pz;F- z=;T)#*NeUh7xDQl`UQwM+C8?(F40lhg~efhy`EB*x8k-JCTveVF^HH*Pjv)6aV!OR zB|itxSt~FiSI1q6zg^zy?0;3bm+xV5kydlJ{bxT@!?nwgY$@m-{!?NN1!CZaC}KFcLnibJq9AbGc!}e^7Q^$qGdd1 zJ(IL{#lLUeLrg>uaeX}Fv+G^!7rpydI_MQ#-@qk%h81x#Z*E2oyb)jd~ zJ=%IkcJ?7gQGm!dHDoRJx>WO6bHEoAFu|O^SaQlZh_+e*f~H53kN5zw@0q?h(~5zm zk3()Z8Hc93jviXMsZwL7elF#Dy*^PNRoPCxnA`PiTE8LBfaq_r$MB>JPiakq?Rt9} zS$^P=U3;Cg@BNZ^$ey?uX=gptxjrg^>-7etDP5HW=1VisYYg^dyZ~VnA;lB%10uhu zm%yvHzl!yJXFdDqu0uWML(ZR>8Cb*5&SI~}7ch%79Wh-ESnbw;HAY`Y-8KRvBPJ$Q zEY0R2f_q5J9FNasHxJPboFOsVXfuzA$#w=rE)5wH6XWr!ZnM_;F)``xfX`zOiVdyD z9V2MsFDqaTsI&sd2xhY=`ur0W0iUzPX?4ZKO!2sFuAo2M6223fm5xd?`#p?1;uc+p z=;^2*8G(-WK$0J?bW-Aa$o@xtb9ea+dCb=_f%)p0UT^4s;uEURcAyWU0AbEpS*`uo z+dY&Spr07@^ubIA5}oX>V|!3v#m|sOd?LR)G;w_?Bh?F$XJ8*N?h5I5Zd<;y*oOcy z4+q2+HOs4FiYKv}|Hx+`@;Y1f6>Ch)hj|x>dBr03qbi@Zgq;z`NrpJ?L7sk`)UzKc zJF=D@pHlx4@esX*>#GjmN`9&bbW^PKzm)0IHg0&V?4$F?Ku=`4h3V6m{uq4y zFRnW!y<-&o&1JrL<|F#${BQ?d+FA`gf>$dQEXOqV)+4Jv*;OX#t$J#iuAg5-+e`Yj zk@-T5B!}!lKLXJYcGc#}aym2{F2^^;BQ~RMyT(WHHL-lll`@W>);qg@nYg)`7>FL? z`gq2^>O<$Z_gXYd(p&wiV7dYn43zKiGZK; zxqWC&qOY^v1J3VRN{M&u4I+0fPR2#Y%&|e^wqDN9!cw zS<7;$UO(=zZ;5~6>7@q?9fd?sP&zB#o^9ib_yBX6F6DKM0)IKz!%m`$&;Rf7sWs?< zzJC_UE`59&b^cI&=ql+y@`d;ll`cw%^8#@&BJ`JYd+0&CDqTIr1^mFqw)BYO-60l! z9F6q-Y3e2I-Wv1AVc&i~VKnq7aea$HKK7kJ>_6{w+8t^j%M_0K@ z0I?3t(b|z#nP-^4t6Bf4kqgWI^lPTJQzyF{xIV=A%Xe#+jURQRcFv)GXyJN&KZsbJ z#drkbo3GcarS`K~Ysg;GSIG57eSL{R6d>Yd^Vro%+78O% z^OQL4`U5N3iTD5!r!3W1g7uQ(fH*a<{_{~!44r>E>j3E_y3$A5Tgh}KKIYhz9{>6j z(aCNz(~Wi`E43q1PnSIBPg0l}Xo4v4lu z&}R+r8ZW=UOmTG-CperfsO?tbsBBOaog`%Ay;m>&D(>JHbAJarf7NldR` z`h5*EpZamyqUl7}{Aaq+f6N;|%pWwKg8|i^;#6IB-Q5||8@R&n-)#7-^_HQ{n-Biv9FwyLYB&+k6$j! zG4;RcZ||Sn8P5As=;!#&{Oz}_7v76YCJCg!GJ<~i4@4Yn9=C(;Hua;G?7;YHV0l%U z!MgL)tUIA6`f3>mqo0rq#662&Tpk$IX!!y?Ni1*W)=}#gu1M9+E98$if*#}n5c%L! zZ9$*k> z8RO@@_wRnXWc6&=(-^@X=m*08fc74?U31#Zhj^d5{_A5oZn#2O|HyVgS&q#!G@D6w-W%yanQ3W@gYMuH4!#*!p~FWIJLXOy6W1 z{(v^Dh#ogc+F!-=UGu-Fi`{%oyVsz6N?^Lte#}Ea%okp(-#^{zwmNhhSh5@Y1t9hf z8B;RDGbr)FA0X~0XucP3_k9$16tW-t-CDMD>dv(8#bql>h==ISTwlR>EaT@fouhBo zu1Pij&C>rurk9NP{A$!N3gN9%vCFJ;`)-+NW_#(&YK6{5Fry@m1gsg3cDx32y(wWm0nhPLlN&R@X3 z)Ib!g*PG)OUm_55xoTXj$uIZ~M7~U=h0f!nrA7)8|A`;{2t@oWJ~a?nZ1HLDaJhx% z58toWu-&0of~z0?@J20sL~r8yGR7H8e_8V5!0x9>1kt0flm1$mK5k3Ow(EOkoFF>I zBcAETe87AMguQn1%P?u{_2jX<1I|vPJB<6=N$4q$pa<&$5bJ|@lPy;3OH`3K%`far z>R9fP6OVlVZ|?G1H4#)95R)>-Cqh zo|KWFr2FRFoJ@4`w?2Y?#21J-izB}35U=Mir(3T#`UdIu+#S~?58O9cyM7|QXo}!uMy?!e7 z=c&s!dq@WPWsYxud|*BTVqPm2FFswWxOUKOoJkM%CAloG;`F9RFMfabA?PXloqEK# zDa6rV+;BwDQ_J!WRbTKPNqKTP^fb4lhy3hF45CCy(EihVmiXb)f7BbFiILiC3#a&u z@r3%p^g$G~r_Us})F8KzpN;J+xIT%IWktOIbkX-UwA&XsUT{B-_YuKcXW#$KFZtS< zOZ}qUDE(_-`G*did-Ar;IpO`Tnd!A{^503k z{d|Z0K&;<3k2+PjL^Csq&?x_@ z8&&>U8Ew>2ZbjTLWGxmmYPz=93V$I~Z(kGJG5^a~F5cpP;TSnUbkof;4%JNWv!wi; zRd0;^hUjE}BGZlY9nL2}ZGseSiaqY|r5?%0{>{sB)~D|5efu=WyO3Y;JLTtF{o$0- z%dclSE04UiwCk4b*F%0w1o{1mK@=eFgT?m^t>Py2?kKLfG9adOwSr%>OIRV;VfukX(Nc0-evKBTWPf4O^i_ z+ikepW|_g7yac)rCUe#%lqp<62Z5MJ#QQ(({yLnzYzN|8#_~G$+1>NOCnjs-ll0U?(1Uyh zV&CC#dGf8U_S07%mu8lGW%kUL3oE-Wg5HkUv1=kz0I^NxPD!6TIj&l7m9} z;9nlgU6)$%+l&LF2NMtZR}n!U&VxX#+aix3UYie*2SDV*6x~6R?7)3U3+qc>b@9M0AsQRw3lVtI9W zYx{NUlA>)ZC>~Y6Q;$z|1YK5NL_LixZ~WX{2W=-(UqRgCMz!D1h%>MQM>~C1IPBW^ zLBFQ4oUab~pKgBKqoq6f>E(Ld+xRxsd^dc;QLW#JUe5GFzMpxzY}kUL&d-JSBh?Y? z!#n}Rd=Yf#dqReZEK1B57=J*l=Q+ebOZAJnKJ1v@ZqsNPpU{ES0e9{@86+m6r*VA~ z+xMGe>dGbms9i^N>c2v!8}kHufv{g(C5Z1Uwl$peAik9>X@+0e=VmJdDkzf%wG z$EI89RR&3rMelF)ZPMTB6HniA&8j5}iG%z}v{?<&qbr zdVMu4H*QnW4UaF(NhMj-Z_VxK)5in%fs03M_a)fURkVx$L;LZ-yavSno9-Ru{by_N z^?LGH-qcR7NB_r%(HYQF9zhTK6&TJdPkWk3n#?Qoa~;byjcqF0zHV9genh#WeZP=T zK}Z*|z5`A(NJprw^xstW7F_)KKEkAHDPaO$=48kFMiji3+l10s$#mw167#*OiP zCiGOXyo#o8HedJYj&d@D^fW}!gZU1KJa)Rp@A|aYYpovX`ztO{#_2BuXI8BJ`v;?- zCyDEg^8oS{h&WpD9@F3x$w6W4tj|^L&%W7{^%2^KT+!9j`yRjLp1$ zmoe7!ej)=M;spoX>+M#u`2c=Q39Cc|U=%j_*n0`2MGg z@6VDL8~EO^kg=KXU%iY9V;SzD8LRm|K8-Pv-#aAo` z&ox~oS{T#1$mhH$iIjU{o{qx(n#lcdp>cro3J~X=$sUgjjFkUqS2ID%J$Li&hMJvw zwh|A~8@V38m+AZS`vYsbEh=StC*@Ar4s!C2PJEkaR7CquXb*Z%({W6F!v3hR{i?74j?3AeZU|Iig=awIJ*l@!^~S#Caom5lNDzjsL7~#W1y{+nK)}Ar8%dt}kay z>r%8$d9aUm&qV$y6Q%zl*xPg5XDpuDcQ!LUiRs_odGr}!pH_&T#B?*$2fwnX3v4An zuzv$$J*0abadGIhYvX3=r zbsqWE%=NIfpwqY)^?t=ol73Y%->-)Y24n0|+!B~>V)~$i3qQgbCAx*_c^u!HcVDvy zcM$YDCgXUA9kI-9|gqyF@CJ4 z=hxd&#qu6|^k}y&We(ogM=1>v^q{YR=v%rdfew<7{D_;v`B2c~&ALO^4j>-#Ba!RT ihLHLLISkBYz81EpTxXZ|dl1Os`bO?Q?4L}$FZmzFclbd7 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.trace b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.trace new file mode 100644 index 0000000..e3e3b96 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvAddition/Level_9.trace @@ -0,0 +1 @@ +8205318715931175597 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication.ilean b/server/nng/build/lib/NNG/Levels/AdvMultiplication.ilean new file mode 100644 index 0000000..34737bf --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvMultiplication.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.AdvMultiplication"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication.olean b/server/nng/build/lib/NNG/Levels/AdvMultiplication.olean new file mode 100644 index 0000000000000000000000000000000000000000..28f757e2f44b101c7e25defffa01aeca6cfb0d9f GIT binary patch literal 18504 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 Xj?OOa_aIy!&GljKKkT0@yf67b3+^zz literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.trace b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.trace new file mode 100644 index 0000000..fcd4fe6 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_1.trace @@ -0,0 +1 @@ +5496292641504121726 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.ilean b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.ilean new file mode 100644 index 0000000..fc7bd0e --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvMultiplication.Level_2"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.olean b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.olean new file mode 100644 index 0000000000000000000000000000000000000000..51c66e362085ecdb09a40f05486d184b896a9568 GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.trace b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.trace new file mode 100644 index 0000000..b982607 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_2.trace @@ -0,0 +1 @@ +3065456568864785697 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.ilean b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.ilean new file mode 100644 index 0000000..da0b92f --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.ilean @@ -0,0 +1 @@ +{"version":1,"references":{"c:Bool.true":{"usages":[[17,6,17,10]],"definition":null}},"module":"NNG.Levels.AdvMultiplication.Level_3"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.olean b/server/nng/build/lib/NNG/Levels/AdvMultiplication/Level_3.olean new file mode 100644 index 0000000000000000000000000000000000000000..ba6e67b3e3a8dba7db6a45dcff8d1d53916adebc GIT binary patch literal 17368 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 literal 0 HcmV?d00001 diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.trace b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.trace new file mode 100644 index 0000000..1fa48a1 --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_1.trace @@ -0,0 +1 @@ +13140666477521992594 \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.ilean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.ilean new file mode 100644 index 0000000..16fdfad --- /dev/null +++ b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.ilean @@ -0,0 +1 @@ +{"version":1,"references":{},"module":"NNG.Levels.AdvProposition.Level_10"} \ No newline at end of file diff --git a/server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.olean b/server/nng/build/lib/NNG/Levels/AdvProposition/Level_10.olean new file mode 100644 index 0000000000000000000000000000000000000000..32789a4a9f955286d1e95eeec9a072feec2ec887 GIT binary patch literal 24736 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%0AJ0Ai5yq| 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