diff --git a/.i18n/de/Game.json b/.i18n/de/Game.json new file mode 100644 index 00000000..762c162a --- /dev/null +++ b/.i18n/de/Game.json @@ -0,0 +1,696 @@ +{"≤ World": "Ungleichungs-Welt", + "≠": "≠", + "§0.": "§0.", + "§0, with notation §1, is the usual\n product of natural numbers. Internally it is\n via two axioms:\n\n * §2\n\n * §3\n\nOther theorems about naturals, such as §4,\nare proved by induction from these two basic theorems.": + "§0, mit der Notation §1, ist das übliche\n Produkt natürlicher Zahlen. Intern wird es\n über zwei Axiome definiert:\n\n * §2\n\n * §3\n\nWeitere Sätze über natürliche Zahlen, wie etwa §4,\nwerden durch Induktion aus diesen beiden grundlegenden Sätzen bewiesen.", + "§0, with notation §1, is the usual\n exponentiation of natural numbers. Internally it is\n defined via two axioms:\n\n * §2\n\n * §3\n\nNote in particular that §4.": + "§0, mit der Notation §1, ist die übliche\n Potenzierung natürlicher Zahlen. Intern ist sie\n über zwei Axiome definiert:\n\n * §2\n\n * §3\n\nBeachte insbesondere, dass §4 gilt.", + "§0, with notation §1, is\nthe usual sum of natural numbers. Internally it is defined\nvia the following two hypotheses:\n\n* §2\n\n* §3\n\nOther theorems about naturals, such as §4, are proved\nby induction using these two basic theorems.": + "§0, mit der Notation §1, ist\ndie übliche Summe natürlicher Zahlen. Intern ist sie\nüber die folgenden zwei Annahmen definiert:\n\n* §2\n\n* §3\n\nAndere Sätze über natürliche Zahlen, wie etwa §4, werden\nmit Induktion aus diesen beiden grundlegenden Sätzen bewiesen.", + "§0 will do this.": "§0 erledigt das.", + "§0 will change §1 into §2.": "§0 wird §1 zu §2 ändern.", + "§0 says that §1.\n\nNote that this is not quite true by definition: §2 is\ndefined to be §3 so it's §4, and to prove\nthat this is equal to §5 you need to use induction somewhere.": + "§0 besagt, dass §1 gilt.\n\nBeachte, dass dies nicht ganz per Definition wahr ist: §2 ist\nper Definition §3, also §4, und um zu beweisen,\ndass dies gleich §5 ist, musst du irgendwo Induktion verwenden.", + "§0 says that §1.": "§0 besagt, dass §1 gilt.", + "§0 practice.": "Übung zu §0.", + "§0 is the theorem that §1.\nYou can prove it by induction on §2 or you can deduce it from §3.": + "§0 ist der Satz, dass §1 gilt.\nDu kannst ihn durch Induktion über §2 beweisen oder ihn aus §3 herleiten.", + "§0 is the theorem that §1\nTwo ways to do it spring to mind; I'll mention them when you've solved it.": + "§0 ist der Satz, dass §1\nMir fallen zwei Wege ein, dies zu beweisen; ich erwähne sie, wenn du das Level gelöst hast.", + "§0 is the theorem that §1": "§0 ist der Satz, dass §1 gilt", + "§0 is the statement that §1": "§0 ist die Aussage, dass §1 gilt", + "§0 is the proof §1.": "§0 ist der Beweis §1.", + "§0 is the proof that §1.\n\nNote: §2 is a §3 lemma.": + "§0 ist der Beweis dafür, dass §1 gilt.\n\nBeachte: §2 ist ein §3-Lemma.", + "§0 is the proof that §1.\n\nIt could be deduced from §2 and §3, however this argument\nwould be circular because the proof of §4 uses §5.": + "§0 ist der Beweis dafür, dass §1 gilt.\n\nEr ließe sich aus §2 und §3 herleiten, allerdings wäre dieses Argument\nzirkulär, weil der Beweis von §4 selbst §5 verwendet.", + "§0 is the proof that §1.\n\nIn Lean, §2 is *defined to mean* §3. Hence\n§4 is really a proof of §5.\nHere §6 is a generic false statement. This means that\nyou can §7 if §8 is a proof of §9.": + "§0 ist der Beweis dafür, dass §1 gilt.\n\nIn Lean ist §2 *per Definition* §3. Daher\nist §4 in Wirklichkeit ein Beweis von §5.\nDabei ist §6 eine generische falsche Aussage. Das bedeutet, dass\ndu §7 anwenden kannst, wenn §8 ein Beweis von §9 ist.", + "§0 is the proof that §1.": "§0 ist der Beweis dafür, dass §1 gilt.", + "§0 is the proof that multiplication is commutative. More precisely,\n§1 is the proof that §2.": + "§0 ist der Beweis dafür, dass die Multiplikation kommutativ ist. Genauer gesagt\nist §1 der Beweis dafür, dass §2 gilt.", + "§0 is the proof of §1.\n\n§2 is a §3 lemma, because replacing §4 by §5\nis almost always what you want to do if you're simplifying an expression.": + "§0 ist der Beweis von §1.\n\n§2 ist ein §3-Lemma, denn das Ersetzen von §4 durch §5\nist fast immer das, was du tun möchtest, wenn du einen Ausdruck vereinfachst.", + "§0 is the proof of §1.": "§0 ist der Beweis von §1.", + "§0 is the number after the number after §1.": + "§0 ist die Zahl nach der Zahl nach §1.", + "§0 is the natural numbers, just called \\\\\"numbers\\\\\" in this game. It's\ndefined via two rules:\n\n* §1 (zero is a number)\n* §2 (the successor of a number is a number)\n\n## Game Implementation\n\n*The game uses its own copy of the natural numbers, called §3 with notation §4.\nIt is distinct from the Lean natural numbers §5, which should hopefully\nnever leak into the natural number game.*": + "§0 sind die natürlichen Zahlen, in diesem Spiel einfach „Zahlen“ genannt. Sie sind\nüber zwei Regeln definiert:\n\n* §1 (Null ist eine Zahl)\n* §2 (der Nachfolger einer Zahl ist eine Zahl)\n\n## Umsetzung im Spiel\n\n*Das Spiel verwendet seine eigene Kopie der natürlichen Zahlen, genannt §3 mit der Notation §4.\nSie unterscheidet sich von den natürlichen Zahlen §5 aus Lean, die sich hoffentlich\nnirgends in die Zahlenspiele eingeschmuggelt haben.*", + "§0 is one of the two axioms\ndefining exponentiation in this game.": + "§0 ist eines der beiden Axiome,\ndie in diesem Spiel die Potenzierung definieren.", + "§0 is one of the\ntwo axioms defining exponentiation in this game.": + "§0 ist eines der\nbeiden Axiome, die die Potenzierung in diesem Spiel definieren.", + "§0 is just as fiddly to prove by induction; but there's a trick\nwhich avoids it. Can you spot it?": + "§0 ist per Induktion genauso knifflig zu beweisen; aber es gibt einen Trick,\nder das umgeht. Kannst du ihn entdecken?", + "§0 is good enough to solve this goal.": + "§0 genügt, um dieses Ziel zu erreichen.", + "§0 is an ancient magic spell, believed to be the origin of the\nmodern word §1. The game won't complain - or notice - if you\nprove anything with §2.": + "§0 ist ein uralter Zauberspruch, von dem man glaubt, dass er der Ursprung des\nmodernen Wortes §1 ist. Das Spiel wird sich nicht beschweren – und es nicht\neinmal bemerken –, wenn du irgendetwas mit §2 beweist.", + "§0 is a proof that §1. But if your goal\nis §2 then §3 will not\nwork! Because the goal means §4 so there\nis no §5 term *directly* in the goal.\n\nUse associativity and commutativity to prove §6.\nYou don't need induction. §7 moves brackets around,\nand §8 moves variables around.\n\nRemember that you can do more targeted rewrites by\nadding explicit variables as inputs to theorems. For example §9\nwill only do rewrites of the form §10, and §11\nwill only do rewrites of the form §12.": + "§0 ist ein Beweis dafür, dass §1 gilt. Aber wenn dein Ziel\n§2 ist, dann wird §3 nicht\nfunktionieren! Denn das Ziel bedeutet §4, also gibt es\nkeinen §5-Term *direkt* im Ziel.\n\nVerwende Assoziativität und Kommutativität, um §6 zu beweisen.\nDu brauchst keine Induktion. §7 bewegt Klammern,\nund §8 bewegt Variablen.\n\nDenk daran, dass du gezieltere `rw`-Schritte machen kannst, indem du\nexplizite Variablen als Argumente für Sätze angibst. Zum Beispiel wird §9\nnur `rw`-Schritte der Form §10 durchführen, und §11\nwird nur `rw`-Schritte der Form §12 durchführen.", + "§0 is a proof that §1.\n\nNote that when Lean says §2 it means §3.\n\nNote that §4 cannot be proved by \\\\\"pure thought\\\\\":\nfor example subtraction is not associative, as §5 is not\nequal to §6.": + "§0 ist ein Beweis dafür, dass §1 gilt.\n\nBeachte: Wenn Lean §2 sagt, ist damit §3 gemeint.\n\nBeachte, dass §4 nicht durch „reines Nachdenken“ bewiesen werden kann:\nZum Beispiel ist die Subtraktion nicht assoziativ, da §5 nicht\ngleich §6 ist.", + "§0 is a proof that §1.\n\nIt's one way of saying that a divisor of a positive number\nhas to be at most that number.": + "§0 ist ein Beweis dafür, dass §1 gilt.\n\nDas ist eine Art zu sagen, dass ein Teiler einer positiven Zahl\nhöchstens so groß wie die Zahl sein kann.", + "§0 is a proof that §1.\n\n## Summary\n\n§2 is really a function, which\neats a number, and returns a proof of a theorem\nabout that number. For example §3 is\na proof that §4.\n\nThe §5 tactic will accept §6\nand will try to figure out which number you omitted\nto input.\n\n## Details\n\nA mathematician sometimes thinks of §7\nas \\\\\"one thing\\\\\", namely a proof of §8.\nThis is just another way of saying that it's a function which\ncan eat any number n and will return a proof that §9.": + "§0 ist ein Beweis dafür, dass §1 gilt.\n\n## Zusammenfassung\n\n§2 ist eigentlich eine Funktion, die\neine Zahl nimmt und einen Beweis eines Satzes\nüber diese Zahl zurück gibt. Zum Beispiel ist §3\nein Beweis dafür, dass §4 gilt.\n\nDie Taktik §5 akzeptiert §6\nund versucht herauszufinden, welche Zahl du\nausgelassen hast.\n\n## Details\n\nEine Mathematikerin stellt sich §7\nmanchmal als „ein Ding“ vor, nämlich als Beweis von §8.\nDas ist nur eine andere Art zu sagen, dass es eine Funktion ist, die\neine beliebige Zahl n frisst und einen Beweis dafür zurück gibt, dass §9 gilt.", + "§0 is a proof that §1.": "§0 ist ein Beweis dafür, dass §1 gilt.", + "§0 is a proof that §1 or §2.": + "§0 ist ein Beweis dafür, dass §1 oder §2 gilt.", + "§0 is a proof that §1\n\nIn Lean, §2 means §3, so this result gets displayed\nas §4.": + "§0 ist ein Beweis dafür, dass §1 gilt\n\nIn Lean steht §2 für §3, deshalb wird dieses Resultat\nals §4 angezeigt.", + "§0 is a proof that §1": "§0 ist ein Beweis dafür, dass §1 gilt", + "§0 is a proof that if §1 then §2.": + "§0 ist ein Beweis dafür, dass §2 gilt, wenn §1 gilt.", + "§0 is a proof that if §1 then §2 or §3.": + "§0 ist ein Beweis dafür, dass aus §1 folgt, dass §2 oder §3 gilt.", + "§0 is a proof that if §1 then §2 or §3 or §4.": + "§0 ist ein Beweis dafür, dass aus §1 folgt, dass §2 oder §3 oder §4 gilt.", + "§0 is a proof that if §1 and §2 then §3.\nMore precisely, it is a proof that §4. In words,\nIf §5 then (pause) if §6 then §7.\n\n## A note on associativity\n\nIn Lean, §8 means §9, because §10 is left associative. However\n§11 is right associative. This means that §12 in Lean means\nexactly that §13 is transitive. This is different to how mathematicians use\n§14; for them, this usually means that §15\nand §16.": + "§0 ist ein Beweis dafür, dass §3 gilt, wenn §1 und §2 gelten.\nGenauer gesagt ist es ein Beweis dafür, dass §4 gilt. In Worten:\nWenn §5, dann (Pause) wenn §6, dann §7.\n\n## Eine Anmerkung zur Assoziativität\n\nIn Lean bedeutet §8 gerade §9, weil §10 linksassoziativ ist. §11\nist hingegen rechtsassoziativ. Das bedeutet, dass §12 in Lean\ngenau bedeutet, dass §13 transitiv ist. Das unterscheidet sich davon, wie Mathematikerinnen\n§14 verwenden; für sie bedeutet das üblicherweise, dass §15\nund §16 gelten.", + "§0 is a proof that if §1 and §2 then §3.": + "§0 ist ein Beweis dafür, dass aus §1 und §2 die Aussage §3 folgt.", + "§0 is a proof of §1.\n\nThe reason for the name is that this lemma is \"reflexivity of §2\"": + "§0 ist ein Beweis für §1.\n\nDer Grund für den Namen ist, dass dieses Lemma die „Reflexivität von §2“ ist.", + "§0 is a proof of §1.": "§0 ist ein Beweis von §1.", + "§0 is a proof of §1 so that was what got rewritten.\nYou can now change §2 to §3 with §4 or §5. You\ncan usually stick to §6 unless you need real precision.": + "§0 ist ein Beweis von §1, also wurde genau das umgeschrieben.\nDu kannst nun §2 mit §4 oder §5 zu §3 ändern.\nNormalerweise kommst du mit §6 aus, außer du brauchst echte Präzision.", + "§0 is a proof of the implication §1.": + "§0 ist ein Beweis der Implikation §1.", + "§0 is a proof\nthat §1. Note that in Lean §2 prints\nas §3, because the notation for addition is defined to be left\nassociative.": + "§0 ist ein Beweis\ndafür, dass §1 gilt. Beachte, dass §2 in Lean\nals §3 dargestellt wird, weil die Notation für die Addition als\nlinksassoziativ definiert ist.", + "§0 is I think quicker than §1.": "§0 ist, denke ich, schneller als §1.", + "§0 is *notation* for §1. This \"backwards E\"\nmeans \"there exists\". So §2 means that there exists\na number §3 such that §4. This definition works\nbecause there are no negative numbers in this game.\n\nTo *prove* an \"exists\" statement, use the §5 tactic.\nLet's see an example.": + "§0 ist die *Notation* für §1. Dieses „rückwärts geschriebene E“\nbedeutet „es existiert“. Also besagt §2, dass eine Zahl\n§3 existiert, sodass §4 gilt. Diese Definition funktioniert,\nweil es in diesem Spiel keine negativen Zahlen gibt.\n\nUm eine „Existenz“-Aussage zu *beweisen*, verwende die Taktik §5.\nSehen wir uns ein Beispiel an.", + "§0 is *notation* for §1.\n\nThe reason this is mathematically\nvalid is that if §2 is a true-false statement then §3\nis the logical opposite of §4. Indeed §5 is false,\nand §6 is true!\n\nThe upshot of this is that you can treat §7 in exactly\nthe same way as you treat any implication §8. For example,\nif your *goal* is of the form §9 then you can make progress\nwith §10, and if you have a hypothesis §11 of the\nform §12 then you can §13 if §14 is a proof\nof §15.": + "§0 ist *Notation* für §1.\n\nDer Grund, warum das mathematisch\ngültig ist: Wenn §2 eine Wahr-Falsch-Aussage ist, dann ist §3\ndas logische Gegenteil von §4. Tatsächlich ist §5 falsch\nund §6 wahr!\n\nDas Fazit daraus ist, dass du §7 genau\nso behandeln kannst wie jede Implikation §8. Wenn\nzum Beispiel dein *Ziel* die Form §9 hat, dann kommst du\nmit §10 weiter, und wenn du eine Annahme §11 der\nForm §12 hast, dann kannst du §13 anwenden, falls §14 ein Beweis\nvon §15 ist.", + "§0 is *notation* for §1.\n\nBecause this game doesn't have negative numbers, this definition\nis mathematically valid.\n\nThis means that if you have a goal of the form §2 you can\nmake progress with the §3 tactic, and if you have a hypothesis\n§4, you can make progress with §5.": + "§0 ist eine *Notation* für §1.\n\nDa es in diesem Spiel keine negativen Zahlen gibt, ist diese Definition\nmathematisch korrekt.\n\nDas bedeutet, dass du bei einem Ziel der Form §2 mit der Taktik §3\nvorankommst, und wenn du eine Annahme\n§4 hast, mit §5.", + "§0": "§0", + "zero_pow_zero": "zero_pow_zero", + "zero_pow_succ": "zero_pow_succ", + "zero_ne_succ": "zero_ne_succ", + "zero_mul": "zero_mul", + "zero_add": "zero_add", + "x ≤ y or y ≤ x": "x ≤ y oder y ≤ x", + "x ≤ y and y ≤ z implies x ≤ z": "aus x ≤ y und y ≤ z folgt x ≤ z", + "x ≤ y and y ≤ x implies x = y": "x ≤ y und y ≤ x impliziert x = y", + "x ≤ succ x": "x ≤ succ x", + "x ≤ 1": "x ≤ 1", + "x ≤ 0 → x = 0": "x ≤ 0 → x = 0", + "two_mul": "two_mul", + "try rewriting §0.": "versuche, mit §0 umzuschreiben.", + "the simplest approach": "der einfachste Ansatz", + "the rw tactic": "die rw-Taktik", + "succ_mul": "succ_mul", + "succ_inj : the successor function is injective": + "succ_inj : die Nachfolgerfunktion ist injektiv", + "succ_add": "succ_add", + "succ x ≤ succ y → x ≤ y": "succ x ≤ succ y → x ≤ y", + "rewriting backwards": "rückwärts umschreiben", + "pred": "pred", + "pow_two": "pow_two", + "pow_pow": "pow_pow", + "pow_one": "pow_one", + "pow_add": "pow_add", + "one_pow": "one_pow", + "one_mul": "one_mul", + "one_le_of_ne_zero": "one_le_of_ne_zero", + "mul_right_eq_self": "mul_right_eq_self", + "mul_right_eq_one": "mul_right_eq_one", + "mul_pow": "mul_pow", + "mul_one": "mul_one", + "mul_ne_zero": "mul_ne_zero", + "mul_left_ne_zero": "mul_left_ne_zero", + "mul_left_cancel": "mul_left_cancel", + "mul_le_mul_right": "mul_le_mul_right", + "mul_eq_zero": "mul_eq_zero", + "mul_comm": "mul_comm", + "mul_assoc": "mul_assoc", + "mul_add": "mul_add", + "making life simple": "sich das Leben einfach machen", + "making life easier": "sich das Leben leichter machen", + "level completed! 🎉": "Level abgeschlossen! 🎉", + "level completed with warnings… 🎭": "Level mit Warnungen abgeschlossen… 🎭", + "le_two": "le_two", + "le_mul_right": "le_mul_right", + "is_zero": "is_zero", + "intro practice": "Einführungs-Übung", + "intro": "intro", + "intermediate goal solved! 🎉": "Zwischenziel erreicht! 🎉", + "eq_succ_of_ne_zero": "eq_succ_of_ne_zero", + "decide again": "noch einmal „decide“ anwenden", + "decide": "decide", + "add_succ": "add_succ", + "add_sq": "add_sq", + "add_right_eq_zero": "add_right_eq_zero", + "add_right_eq_self": "add_right_eq_self", + "add_right_comm": "add_right_comm", + "add_right_cancel": "add_right_cancel", + "add_mul": "add_mul", + "add_left_eq_zero": "add_left_eq_zero", + "add_left_eq_self": "add_left_eq_self", + "add_left_comm": "add_left_comm", + "add_left_cancel": "add_left_cancel", + "add_comm (level boss)": "add_comm (Hauptgegner)", + "add_assoc (associativity of addition)": + "add_assoc (Assoziativität der Addition)", + "[final boss music]": "[melodramatische Musik]", + "[dramatic music]. Now are you ready to face the first boss of the game?": + "[dramatische Musik]. Bist du nun bereit, dich dem ersten Endgegner des Spiels zu stellen?", + "[boss battle music]\n\nLook in your inventory to see the proofs you have available.\nThese should be enough.": + "[Trompeten und Pauken]\n\nSchau in deinem Inventar nach, welche Beweise dir zur Verfügung stehen.\nDiese sollten ausreichen.", + "You've now seen all the tactics you need to beat the final boss of the game.\nYou can begin the journey towards this boss by entering Multiplication World.\n\nOr you can go off the beaten track and learn some new tactics in Implication\nWorld. These tactics let you prove more facts about addition, such as\nhow to deduce §0 from §1.\n\nClick \"Home\" and make your choice.": + "Du hast jetzt alle Taktiken gesehen, die du brauchst, um den Endgegner des Spiels zu besiegen.\nDu kannst die Reise zu diesem Gegner beginnen, indem du die Multiplikations-Welt betrittst.\n\nOder du verlässt den ausgetretenen Pfad und lernst einige neue Taktiken in der\nImplikations-Welt. Mit diesen Taktiken kannst du mehr Fakten über die Addition beweisen,\nzum Beispiel, wie man §0 aus §1 herleitet.\n\nKlicke auf „Home“ und triff deine Wahl.", + "You want to use §0, which you already\nproved, but you'll have to start with §1 your hypothesis.": + "Du möchtest das Lemma §0 verwenden, das du bereits\nbewiesen hast, aber du musst damit beginnen, §1 auf deine Annahme anzuwenden.", + "You still don't know which way to go, so do §0.": + "Du weißt immer noch nicht, welchen Weg du einschlagen sollst, also führe §0 aus.", + "You now know enough tactics to prove §0! Let's begin the journey.": + "Du kennst jetzt genug Taktiken, um §0 zu beweisen! Beginnen wir die Reise.", + "You might want to think about whether induction\non §0 or §1 is the best idea.": + "Du solltest vielleicht darüber nachdenken, ob Induktion\nüber §0 oder über §1 die beste Idee ist.", + "You can use §0 to rewrite at §1 instead\nof at the goal.": + "Du kannst §0 verwenden, um in §1 anstatt\nim Ziel umzuschreiben.", + "You can start a proof by induction on §0 by typing:\n§1.": + "Einen Beweis durch Induktion über §0 kannst du beginnen, indem du Folgendes tippst:\n§1.", + "You can read more about the §0 tactic by clicking\non it in the top right.": + "Mehr über die Taktik §0 erfährst du, indem du\noben rechts darauf klickst.", + "You can put a §0 in front of any theorem provided to §1 to rewrite\nthe other way around. Look at the docs for §2 for an explanation. Type §3 with §4.": + "Du kannst ein §0 vor jeden Satz setzen, den du an §1 übergibst, um in die andere\nRichtung umzuschreiben. Schau dir für eine Erklärung die Dokumentation zu §2 an. Tippe §3 mit §4.", + "You can prove §0 in at least three ways.\nEither by induction, or by using §1, or\nby using commutativity. Which do you think is quickest?": + "Du kannst §0 auf mindestens drei Arten beweisen.\nEntweder per Induktion, oder mit §1, oder\nmithilfe der Kommutativität. Was denkst du, welche Art ist die schnellste?", + "You can probably take it from here.": + "Den Rest schaffst du wahrscheinlich allein.", + "You can now §0": "Du kannst nun §0 ausführen", + "You can now finish with §0.": + "Jetzt kannst du den Beweis mit §0 abschließen.", + "You can make your own tactics in Lean.\nThis code here\n§0\nwas used to create a new tactic §1, which runs\n§2.\nTry running §3 to solve this level!": + "Du kannst in Lean deine eigenen Taktiken erstellen.\nDieser Code hier\n§0\nwurde benutzt, um eine neue Taktik §1 zu erstellen, die\n§2 ausführt.\nVersuche, §3 auszuführen, um dieses Level zu lösen!", + "You can just mimic the previous proof to do this one -- or you can figure out a way\nof using it.": + "Du kannst einfach den vorherigen Beweis nachahmen, um diesen hier zu führen – oder du findest einen Weg,\nihn zu benutzen.", + "You can do induction on any of the three variables. Some choices\nare harder to push through than others. Can you do the inductive step in\n5 rewrites only?": + "Du kannst über jede der drei Variablen Induktion führen. Je nach gewählter Variable ist\nder Beweis einfacher oder schwieriger. Schaffst du den Induktionsschritt mit\nnur 5 `rw`-Schritten?", + "Why did we not just define §0 to be §1? Because we have not\neven *defined* addition yet! We'll do that in the next level.": + "Warum haben wir §0 nicht einfach als §1 definiert? Weil wir die\nAddition noch nicht einmal *definiert* haben! Das machen wir im nächsten Level.", + "What do you think of this two-liner:\n§0\n\n§1 doesn't just take hypotheses, it will eat any proof which exists\nin the system.": + "Was hältst du von diesem Zweizeiler:\n§0\n\n§1 nimmt nicht nur Annahmen, sondern akzeptiert jeden Beweis, der\nim System existiert.", + "Well done! You now have enough tools to tackle the main boss of this world.": + "Gut gemacht! Du hast jetzt genug Werkzeuge, um dem Hauptgegner dieser Welt entgegenzutreten.", + "Well done!": "Gut gemacht!", + "Welcome to tutorial world! In this world we learn the basics\nof proving theorems. The boss level of this world\nis the theorem §0.\n\nYou prove theorems by solving puzzles using tools called *tactics*.\nThe aim is to prove the theorem by applying tactics\nin the right order.\n\nLet's learn some basic tactics. Click on \"Start\" below\nto begin your quest.": + "Willkommen in der Tutorial-Welt! In dieser Welt lernen wir die Grundlagen\ndes Beweisens von Sätzen. Der Endgegner dieser Welt\nist der Satz §0.\n\nDu beweist Sätze, indem du Rätsel mit Werkzeugen namens *Taktiken* löst.\nDas Ziel ist es, den Satz zu beweisen, indem man Taktiken\nin der richtigen Reihenfolge anwendet.\n\nLernen wir also ein paar grundlegende Taktiken kennen. Klicke unten auf „Start“,\num deine Reise zu beginnen.", + "Welcome to Addition World! In this world we'll learn the §0 tactic.\nThis will enable us to defeat the boss level of this world, namely §1.\n\nThe tactics §2, §3 and §4 are the only tactics you'll need to\nbeat all the levels in Addition World, Multiplication World, and Power World.\nPower World contains the final boss of the game.\n\nThere are plenty more tactics in this game, but you'll only need to know them if you\nwant to explore the game further (for example if you decide to 100%\nthe game).": + "Willkommen in der Additions-Welt! In dieser Welt lernen wir die Taktik §0 kennen.\nDamit können wir den Hauptgegner dieser Welt besiegen, nämlich §1.\n\nDie Taktiken §2, §3 und §4 sind die einzigen Taktiken, die du brauchst, um\nalle Level in der Additions-Welt, der Multiplikations-Welt und der Potenz-Welt zu schaffen.\nDie Potenz-Welt enthält den Endgegner in diesem Spiel.\n\nEs gibt in diesem Spiel noch viele weitere Taktiken, aber du musst sie nur kennen, wenn du\ndas Spiel ausgiebiger erkunden möchtest (zum Beispiel, wenn du dich entscheidest, das Spiel mit einem Score von 100%\nabzuschließen).", + "We've seen §0, the proof that if §1 then §2.\nNow we'll prove that if §3 then §4 or §5.": + "Wir haben §0 gesehen, den Beweis dafür, dass aus §1 die Aussage §2 folgt.\nJetzt beweisen wir, dass aus §3 folgt, dass §4 oder §5 gilt.", + "We've proved that §0; in Implication World we'll learn\nhow to prove §1.\n\nIn Addition World we proved *equalities* like §2.\nIn this second tutorial world we'll learn some new tactics,\nenabling us to prove *implications*\nlike §3\n\nWe'll also learn two new fundamental facts about\nnatural numbers, which Peano introduced as axioms.\n\nClick on \"Start\" to proceed.": + "Wir haben bewiesen, dass §0 gilt; in der Implikations-Welt lernen wir,\nwie man §1 beweist.\n\nIn der Additions-Welt haben wir *Gleichheiten* wie §2 bewiesen.\nIn dieser zweiten Tutorial-Welt lernen wir einige neue Taktiken kennen,\nmit denen wir *Implikationen*\nwie §3 beweisen können\n\nAußerdem lernen wir zwei neue grundlegende Fakten über\nnatürliche Zahlen kennen, die Peano als Axiome eingeführt hat.\n\nKlicke auf „Start“, um fortzufahren.", + "We've proved that §0 implies §1. The last two levels\nin this world will prove which numbers are §2 and §3.\nThis lemma will be helpful for them.": + "Wir haben bewiesen, dass §0 die Aussage §1 impliziert. Die letzten beiden Level\nin dieser Welt werden beweisen, welche Zahlen §2 und §3 sind.\nDieses Lemma wird dabei helfen.", + "We've just seen that §0, but if §1\nis a successor, then §2. We prove that here.": + "Wir haben gerade gesehen, dass §0 gilt, aber wenn §1\nein Nachfolger ist, dann gilt §2. Das beweisen wir hier.", + "We've been adding up two numbers; in this level we will add up three.\n\n What does §0 *mean*? It could either mean §1, or it\n could mean §2. In Lean, §3 means §4.\n\n But why do we care which one it means; §5 and §6 are *equal*!\n\n That's true, but we didn't prove it yet. Let's prove it now by induction.": + "Wir haben bisher zwei Zahlen addiert; in diesem Level addieren wir drei.\n\n Was *bedeutet* §0? Es könnte entweder §1 oder §2\n bedeuten. In Lean steht §3 für §4.\n\n Aber warum ist es uns wichtig, was von beiden gemeint ist; §5 und §6 sind doch *gleich*!\n\n Das stimmt, aber wir haben es noch nicht bewiesen. Beweisen wir es jetzt per Induktion.", + "We're going to change that §0 into §1. Start by changing it into\n§2 by executing §3.": + "Wir werden dieses §0 in §1 umwandeln. Beginne damit, es in §2 umzuwandeln,\nindem du §3 ausführst.", + "We'll need this lemma to prove that two is prime!\n\nYou'll need to know that §0 is right associative. This means that\n§1 actually means §2.\nThis affects how §3 and §4 work.": + "Wir werden dieses Lemma brauchen, um zu beweisen, dass zwei eine Primzahl ist!\n\nDu musst wissen, dass §0 rechtsassoziativ ist. Das bedeutet, dass\n§1 eigentlich für §2 steht.\nDas beeinflusst, wie §3 und §4 funktionieren.", + "We'd like to prove §0 but right now\nwe can't even *state* it\nbecause we haven't yet defined addition.\n\n## Defining addition.\n\nHow are we going to add §1 to an arbitrary number §2? Well,\nthere are only two ways to make numbers in this game: §3\nand successors. So to define §4 we will need\nto know what §5 is and what §6 is.\nLet's start with adding §7.\n\n### Adding 0\n\nTo make addition agree with our intuition, we should *define* §8\nto be §9. More generally, we should define §10 to be §11 for\nany number §12. The name of this proof in Lean is §13.\nFor example §14 is a proof of §15,\n§16 is a proof of §17, and §18 is a proof\nof §19.\n\nWe write §20, so §21.": + "Wir würden gerne die Gleichung §0 beweisen, aber im Moment\nkönnen wir sie nicht einmal *formulieren*,\nweil wir Addition noch nicht definiert haben.\n\n## Definition der Addition\n\nWie addieren wir §1 zu einer beliebigen Zahl §2? Nun,\nes gibt in diesem Spiel nur zwei Arten, Zahlen zu erzeugen: §3\nund Nachfolger. Um also §4 zu definieren, müssen wir\nwissen, was §5 ist und was §6 ist.\nBeginnen wir mit der Addition von §7.\n\n### Addition von 0\n\nDamit die Addition mit unserer Intuition übereinstimmt, sollten wir §8\nals §9 *definieren*. Allgemeiner sollten wir §10 als §11 definieren, für jede Zahl §12. Der Name dieses Beweises in Lean ist §13.\nZum Beispiel ist §14 ein Beweis von §15,\n§16 ist ein Beweis von §17 und §18 ist ein Beweis\nvon §19.\n\nWir schreiben §20, also `Beweis : Aussage`.", + "We want to use §0, but we need a hypothesis §1\nwhich we don't have. Yet. Execute §2 (you can type §3 with §4).\nYou'll be asked to\nprove it, and then you'll have a new hypothesis which you can apply\n§5 to.": + "Wir wollen §0 verwenden, aber dazu brauchen wir eine Annahme §1,\ndie wir nicht haben. Noch nicht. Führe §2 aus (du kannst §3 mit §4 tippen).\nDu wirst aufgefordert, sie zu\nbeweisen, und danach hast du eine neue Annahme, auf die du\n§5 anwenden kannst.", + "We want to reduce this to a hypothesis §0 and a goal §1,\nwhich is logically equivalent but much easier to prove. Remember that §2\nis notation for §3. Click on §4 if you need hints.": + "Wir wollen diese Aufgabe auf eine Annahme §0 und ein Ziel §1 zurückführen,\nwas logisch äquivalent, aber viel einfacher zu beweisen ist. Denk daran, dass §2\neine Notation für §3 ist. Klicke auf „Mehr Hilfe“, wenn du Hinweise brauchst.", + "We still can't prove §0 because we have not talked about the\ndefinition of §1. In Lean, §2 is *notation* for §3.\nHere §4 is a generic false proposition, and §5 is Lean's notation\nfor \"implies\". In logic we learn\nthat §6 is false, but §7 is true. Hence\n§8 is the logical opposite of §9.\n\nEven though §10 does not look like an implication,\nyou should treat it as an implication. The next two levels will show you how.\n\n§11 is a goal which you cannot deduce from a consistent set of assumptions!\nSo if your goal is §12 then you had better hope that your hypotheses\nare contradictory, which they are in this level.": + "Wir können §0 immer noch nicht beweisen, weil wir noch nicht über die\nDefinition von §1 gesprochen haben. In Lean ist §2 die *Notation* für §3.\nHier ist §4 eine generische falsche Aussage und §5 ist Leans Notation\nfür „impliziert“. In der Logik lernen wir,\ndass §6 falsch, §7 aber wahr ist. Daher ist\n§8 das logische Gegenteil von §9.\n\nAuch wenn §10 nicht wie eine Implikation aussieht,\nsolltest du es wie eine Implikation behandeln. Die nächsten beiden Level zeigen dir, wie.\n\n§11 ist ein Ziel, das du nicht aus einer widerspruchsfreien Menge von Annahmen herleiten kannst!\nWenn dein Ziel also §12 ist, dann solltest du besser hoffen, dass deine Annahmen\nwidersprüchlich sind, was sie in diesem Level auch sind.", + "We now start work on an algorithm to do addition more efficiently. Recall that\nwe defined addition by recursion, saying what it did on §0 and successors.\nIt is an axiom of Lean that recursion is a valid\nway to define functions from types such as the naturals.\n\nLet's define a new function §1 from the naturals to the naturals, which\nattempts to subtract 1 from the input. The definition is this:\n\n§2\n\nWe cannot subtract one from 0, so we just return a junk value. As well as this\ndefinition, we also create a new lemma §3, which says that §4.\nLet's use this lemma to prove §5, the theorem which\nPeano assumed as an axiom and which we have already used extensively without justification.": + "Wir beginnen nun mit der Arbeit an einem Algorithmus, der die Addition effizienter\ndurchführt. Erinnere dich daran, dass wir die Addition durch Rekursion definiert\nhaben, indem wir festgelegt haben, was sie mit §0 und Nachfolgern macht.\nEs ist ein Axiom von Lean, dass Rekursion eine gültige\nMethode ist, um Funktionen von Typen wie den natürlichen Zahlen zu definieren.\n\nDefinieren wir eine neue Funktion §1 von den natürlichen Zahlen in die natürlichen\nZahlen, die versucht, 1 von ihrem Argument abzuziehen. Die Definition lautet:\n\n§2\n\nWir können nicht Eins von 0 abziehen, deshalb geben wir einfach einen Unsinnswert\nzurück. Zusätzlich zu dieser Definition erstellen wir auch ein neues Lemma §3, das\nbesagt, dass §4 gilt. Verwenden wir dieses Lemma, um §5 zu beweisen, den Satz, den\nPeano als Axiom angenommen hat und den wir bereits ausgiebig ohne Begründung verwendet haben.", + "We now have enough to state a mathematically accurate, but slightly\nclunky, version of Fermat's Last Theorem.\n\nFermat's Last Theorem states that if §0 and §1 then §2.\nIf you didn't do inequality world yet then we can't talk about §3,\nso we have to resort to the hack of using §4 for §5,\nwhich guarantees it's big enough. Similarly instead of §6 we\nuse §7.\n\nThis level looks superficially like other levels we have seen,\nbut the shortest solution known to humans would translate into\nmany millions of lines of Lean code. The author of this game,\nKevin Buzzard, is working on translating the proof by Wiles\nand Taylor into Lean, although this task will take many years.\n\n## CONGRATULATIONS!\n\nYou've finished the main quest of the natural number game!\nIf you would like to learn more about how to use Lean to\nprove theorems in mathematics, then take a look\nat [Mathematics In Lean](https://leanprover-community.github.io/mathematics_in_lean/),\nan interactive textbook which you can read in your browser,\nand which explains how to work with many more mathematical concepts in Lean.": + "Wir haben jetzt genug, um eine mathematisch korrekte, aber etwas\numständliche Version von Fermats letztem Satz zu formulieren.\n\nFermats letzter Satz besagt, dass §2 gilt, wenn §0 und §1 gelten.\nWenn du die Ungleichungs-Welt noch nicht gemacht hast, dann können wir nicht über §3 sprechen,\nalso müssen wir zum Trick greifen, §4 für §5 zu verwenden,\nwas garantiert, dass die Zahl groß genug ist. Ähnlich verwenden wir statt §6 einfach §7.\n\nDieses Level sieht oberflächlich aus wie andere Level, die wir gesehen haben,\naber die kürzeste den Menschen bekannte Lösung würde sich in\nviele Millionen Zeilen Lean-Code übersetzen lassen. Der Autor dieses Spiels,\nKevin Buzzard, arbeitet daran, den Beweis von Wiles\nund Taylor in Lean zu übersetzen, auch wenn diese Aufgabe viele Jahre dauern wird.\n\n## GLÜCKWUNSCH!\n\nDu hast den Hauptstrang der Zahlenspiele abgeschlossen!\nWenn du mehr darüber erfahren möchtest, wie man mit Lean\nSätze in der Mathematik beweist, dann wirf einen Blick\nauf [Mathematics In Lean](https://leanprover-community.github.io/mathematics_in_lean/),\nein interaktives Lehrbuch, das du in deinem Browser lesen kannst\nund das erklärt, wie man mit vielen weiteren mathematischen Konzepten in Lean arbeitet.", + "We now have enough to prove that multiplication is associative,\nthe boss level of multiplication world. Good luck!": + "Wir haben jetzt genug, um zu beweisen, dass die Multiplikation assoziativ ist –\nder Endgegner der Multiplikations-Welt. Viel Glück!", + "We know §0 is a proof of §1 -- but what\nif we have a hypothesis §2? It's the wrong way around!\n\nThe §3 tactic changes a goal §4 to §5, and a goal §6\nto §7. And §8\ndoes the same for a hypothesis §9. We've proved §10 and called\nthe proof §11; now try proving §12.": + "Wir wissen, dass §0 ein Beweis von §1 ist – aber was,\nwenn wir eine Annahme §2 haben? Sie ist falsch herum!\n\nDie Taktik §3 ändert ein Ziel §4 zu §5 und ein Ziel §6\nzu §7. Und §8\nmacht dasselbe für eine Annahme §9. Wir haben §10 bewiesen und den\nBeweis §11 genannt; versuche nun, §12 zu beweisen.", + "We have seen how to §0 theorems and assumptions\nof the form §1. But what if our *goal* is of the form §2?\nTo prove this goal, we need to know how to say \"let's assume §3 and deduce §4\".\nIn Lean, we do this with the §5 tactic.": + "Wir haben gesehen, wie man mit §0 Sätze und Annahmen\nder Form §1 anwendet. Aber was, wenn unser *Ziel* die Form §2 hat?\nUm dieses Ziel zu beweisen, müssen wir wissen, wie man sagt „nehmen wir also §3 an und leiten daraus wir §4 ab“.\nDas machen wir in Lean mit der Taktik §5.", + "We gave a pretty unsatisfactory proof of §0 earlier on; now give a nicer one.": + "Wir haben vorhin einen ziemlich unbefriedigenden Beweis von §0 gegeben; liefere nun einen schöneren.", + "We don't know whether to go left or right yet. So start with §0.": + "Wir wissen noch nicht, ob wir nach links oder rechts gehen sollten. Beginne also mit §0.", + "We define a function §0 thus:\n\n§1\n\nWe also create two lemmas, §2 and §3, saying that §4\nand §5. Let's use these lemmas to prove §6, Peano's\nLast Axiom. Actually, we have been using §7 before, but it's handy to have\nthis opposite version too, which can be proved in the same way. Note: you can\ncheat here by using §8 but the point of this world is to show\nyou how to *prove* results like that.\n\nIf you can turn your goal into §9, then the §10 tactic will solve it.": + "Wir definieren eine Funktion §0 so:\n\n§1\n\nWir erstellen außerdem zwei Lemmata, §2 und §3, die besagen, dass §4\nund §5 gelten. Verwenden wir diese Lemmata, um §6 zu beweisen, Peanos\nletztes Axiom. Tatsächlich haben wir §7 schon vorher verwendet, aber es ist praktisch,\nauch diese entgegengesetzte Version zu haben, die sich auf die gleiche Weise beweisen\nlässt. Hinweis: Du kannst hier schummeln, indem du §8 verwendest, aber der Sinn dieser\nWelt ist es, dir zu zeigen, wie man solche Ergebnisse *beweist*.\n\nWenn du dein Ziel in §9 umwandeln kannst, dann kannst du es mit der Taktik §10 erreichen.", + "Very well done.\n\nA passing mathematician remarks that with you've just proved that §0 is totally\nordered.\n\nThe final few levels in this world are much easier.": + "Sehr gut gemacht.\n\nEine vorbeikommende Mathematikerin bemerkt, dass du gerade bewiesen hast, dass §0 total\ngeordnet ist.\n\nDie letzten paar Level in dieser Welt sind viel einfacher.", + "Use §0.": "Verwende §0.", + "Use §0 and remember that §1 will solve a goal\nif there are hypotheses §2 and §3.": + "Verwende §0 und denke daran, dass §1 ein Ziel erreichen kann,\nwenn es die Annahmen §2 und §3 gibt.", + "Use the previous lemma with §0.": "Benutze das vorherige Lemma mit §0.", + "Tutorial World": "Tutorial-Welt", + "Try §0.": "Probiers mal mit §0.", + "Try §0 to change §1 into §2.": "Versuche, §1 in §2 umzuwandeln mit §0.", + "Totality of §0 is the boss level of this world, and it's coming up next. It says that\nif §1 and §2 are naturals then either §3 or §4.\nBut we haven't talked about §5 at all. Here's a run-through.\n\n1) The notation for \"or\" is §6. You won't need to type it, but you can\ntype it with §7.\n\n2) If you have an \"or\" statement in the *goal*, then two tactics make\nprogress: §8 and §9. But don't choose a direction unless your\nhypotheses guarantee that it's the correct one.\n\n3) If you have an \"or\" statement as a *hypothesis* §10, then\n§11 will create two goals, one where you went left,\nand the other where you went right.": + "Dass §0 eine Totalordnung ist, ist der Hauptgegner dieser Welt und kommt als Nächstes. Die Aussage ist also,\ndass für natürliche Zahlen §1 und §2 notwendigerweise §3 oder §4 gilt.\nAber über §5 haben wir noch gar nicht gesprochen. Hier ist eine Übersicht.\n\n1) Die Notation für „oder“ ist §6. Du wirst sie nicht tippen müssen, aber du kannst\nsie mit §7 tippen.\n\n2) Wenn du eine „oder“-Aussage im *Ziel* hast, dann bringen dich zwei Taktiken\nvoran: §8 und §9. Aber wähle keine Richtung, solange deine\nAnnahmen nicht garantieren, dass es die richtige ist.\n\n3) Wenn du eine „oder“-Aussage als *Annahme* §10 hast, dann\nerzeugt §11 zwei Ziele, eines, in dem du nach links gegangen bist,\nund das andere, in dem du nach rechts gegangen bist.", + "To solve this level, you need to §0 a number §1 such that §2.": + "Um dieses Level zu lösen, musst du mit §0 eine Zahl §1 angeben, sodass §2 gilt.", + "Those of you interested in speedrunning the game may want to know\nthat §0 will do both rewrites at once.": + "Wer von euch an einem Speedrun des Spiels interessiert ist, möchte vielleicht wissen,\ndass §0 beide `rw`-Schritte auf einmal erledigt.", + "This world introduces exponentiation. If you want to define §0\nthen, as always, you will need to know what §1 is, and\nwhat §2 is, given only §3.\n\nYou can probably guess the names of the general theorems:\n\n * §4\n * §5\n\nUsing only these, can you get past the final boss level?\n\nThe levels in this world were designed by Sian Carey, a UROP student\nat Imperial College London, funded by a Mary Lister McCammon Fellowship\nin the summer of 2019. Thanks to Sian and also thanks to Imperial\nCollege for funding her.": + "Diese Welt führt die Potenzierung ein. Wenn du §0 definieren möchtest,\ndann musst du wie immer wissen, was §1 ist, und\nwas §2 ist, wenn nur §3 gegeben ist.\n\nDie Namen der allgemeinen Sätze kannst du wahrscheinlich erraten:\n\n * §4\n * §5\n\nKannst du nur mit diesen den Endgegner des Spiels bezwingen?\n\nDie Level in dieser Welt wurden von Sian Carey entworfen, einer UROP-Studentin\nam Imperial College London, finanziert durch ein Mary-Lister-McCammon-Stipendium\nim Sommer 2019. Danke an Sian und auch danke an das Imperial\nCollege für die Finanzierung.", + "This time, use the §0 tactic.": "Verwende diesmal die Taktik §0.", + "This level proves §0, the multiplicative analogue of Advanced Addition\nWorld's §1. The strategy is to prove that §2 and then use the\nlemma §3 from §4 world.\n\nWe'll prove it using a new and very useful tactic called §5.": + "Dieses Level beweist §0, das multiplikative Gegenstück zu §1 aus der\nFortgeschrittenen Additions-Welt. Die Strategie besteht darin, zu beweisen, dass §2 gilt,\nund dann das Lemma §3 aus der §4-Welt zu verwenden.\n\nWir beweisen es mit einer neuen und sehr nützlichen Taktik namens §5.", + "This level proves that if §0 then §1 or §2. It is\nlogically equivalent to the last level, so there is a very short proof.": + "Dieses Level beweist, dass aus §0 folgt, dass §1 oder §2 gilt. Es ist\nlogisch äquivalent zum vorherigen Level, also gibt es einen sehr kurzen Beweis.", + "This level proves that if §0 and §1 then §2. One strategy\nis to write both §3 and §4 as §5 of something, deduce that §6 is\nalso §7 of something, and then §8.": + "Dieses Level beweist, dass aus §0 und §1 die Aussage §2 folgt. Eine Strategie\nbesteht darin, sowohl §3 als auch §4 als §5 von etwas zu schreiben, daraus zu\nfolgern, dass §6 ebenfalls §7 von etwas ist, und dann §8 anzuwenden.", + "This level is more important than you think; it plays\na useful role when battling a big boss later on.": + "Dieses Level ist wichtiger, als du denkst; es wird nützlich sein,\nwenn du später gegen große Gegner kämpfst.", + "This level asks you to prove *antisymmetry* of §0.\nIn other words, if §1 and §2 then §3.\nIt's the trickiest one so far. Good luck!": + "In diesem Level sollst du die *Antisymmetrie* von §0 beweisen.\nMit anderen Worten: Wenn §1 und §2, dann §3.\nEs ist das kniffligste bisher. Viel Glück!", + "This lemma would have been easy if we had known that §0. That theorem\n is called §1 and it is *true*, but unfortunately its proof *uses* both\n §2 and §3!\n\n Let's continue on our journey to §4, the proof of §5.": + "Dieses Lemma wäre einfach gewesen, wenn wir gewusst hätten, dass §0 gilt. Dieser Satz\n heißt §1 und er ist *wahr*, aber leider *verwendet* sein Beweis sowohl\n §2 als auch §3!\n\n Setzen wir unsere Reise zu §4 fort, dem Beweis von §5.", + "This is I think the toughest level yet. Tips: if §0 is a number\nthen §1 will split into cases §2 and §3.\nAnd don't go left or right until your hypotheses guarantee that\nyou can prove the resulting goal!\n\nI've left hidden hints; if you need them, retry from the beginning\nand click on \"Show more help!\"": + "Das ist meiner Meinung nach das bisher schwierigste Level. Tipps: Wenn §0 eine Zahl\nist, dann teilt §1 in die Fälle §2 und §3 auf.\nUnd geh nicht nach links oder rechts, bevor deine Annahmen garantieren, dass\ndu das entstehende Ziel beweisen kannst!\n\nIch habe versteckte Hinweise hinterlassen; wenn du sie brauchst, beginne von vorn\nund klicke auf „Mehr Hilfe“.", + "The §0 tactic.": "Die Taktik §0.", + "The §0 tactic": "Die Taktik §0", + "The way to start this proof is §0.": "Diesen Beweis beginnst du mit §0.", + "The rfl tactic": "Die rfl-Taktik", + "The reason §0 is because §1.\nSo you should start this proof with §2.": + "Der Grund dafür, dass §0 gilt, ist §1.\nDeswegen solltest du diesen Beweis mit §2 beginnen.", + "The previous lemma can be used to prove this one.": + "Das vorige Lemma kann verwendet werden, um dieses zu beweisen.", + "The next result we'll need in §0 World is that if §1 then §2 and §3.\nLet's prove one of these facts in this level, and the other in the next.\n\n## A new tactic: §4\n\nThe §5 tactic will split an object or hypothesis up into the possible ways\nthat it could have been created.\n\nFor example, sometimes you want to deal with the two cases §6 and §7 separately,\nbut don't need the inductive hypothesis §8 that comes with §9.\nIn this situation you can use §10 instead. There are two ways to make\na number: it's either zero or a successor. So you will end up with two goals, one\nwith §11 and one with §12.\n\nAnother example: if you have a hypothesis §13 then you are done, because a false statement implies\nany statement. Here §14 will close the goal, because there are *no* ways to\nmake a proof of §15! So you will end up with no goals, meaning you have proved everything.": + "Das nächste Resultat, das wir in der Ungleichungs-Welt brauchen, ist, dass aus §1\nsowohl §2 als auch §3 folgt.\nBeweisen wir eine dieser Tatsachen in diesem Level und die andere im nächsten.\n\n## Eine neue Taktik: §4\n\nDie Taktik §5 zerlegt ein Objekt oder eine Annahme danach, wie\nes beziehungsweise sie erzeugt worden sein könnte.\n\nZum Beispiel möchtest du manchmal die beiden Fälle §6 und §7 getrennt behandeln,\nbrauchst aber die Induktionsvoraussetzung §8 nicht, die mit §9 einhergeht.\nIn dieser Situation kannst du stattdessen §10 verwenden. Es gibt zwei Arten, eine\nZahl zu erzeugen: Sie ist entweder null oder ein Nachfolger. Du erhältst also zwei Ziele, eines\nmit §11 und eines mit §12.\n\nEin weiteres Beispiel: Wenn du eine Annahme §13 hast, dann bist du fertig, denn eine falsche Aussage impliziert\njede Aussage. Hier erreicht §14 das Ziel, weil es *keine* Möglichkeiten gibt,\neinen Beweis von §15 zu erzeugen! Du hast also keine Ziele, was bedeutet, dass du alles bewiesen hast.", + "The music gets ever more dramatic, as we explore\nthe interplay between exponentiation and multiplication.\n\nIf you're having trouble exchanging the right §0\nbecause §1 swaps the wrong multiplication,\nthen read the documentation of §2 for tips on how to fix this.": + "Die Musik wird immer dramatischer, während wir das Zusammenspiel\nzwischen Potenzierung und Multiplikation erkunden.\n\nWenn du Schwierigkeiten hast, die richtigen §0 zu vertauschen,\nweil §1 an der falschen Multiplikation ansetzt,\ndann lies die Dokumentation von §2 für Tipps, wie du das beheben kannst.", + "The music dies down. Is that it?\n\nCourse it isn't, you can\nclearly see that there are two levels left.\n\nA passing mathematician says that mathematicians don't have a name\nfor the structure you just constructed. You feel cheated.\n\nSuddenly the music starts up again. This really is the final boss.": + "Die Musik verklingt. War das schon alles?\n\nNatürlich nicht, du kannst\ndeutlich sehen, dass noch zwei Level übrig sind.\n\nEine vorbeikommende Mathematikerin sagt, dass Mathematikerinnen keinen Namen\nfür die Struktur haben, die du gerade konstruiert hast. Du fühlst dich betrogen.\n\nPlötzlich setzt die Musik wieder ein. Das ist wirklich der Endgegner.", + "The lemma proved in the final level of this world will be helpful\nin Divisibility World.": + "Das Lemma, das im letzten Level dieser Welt bewiesen wird, wird\nin der Teilbarkeits-Welt hilfreich sein.", + "The inductive hypothesis §0 is \"For all natural numbers §1, §2\".\nYou can §3 it §4 any hypothesis of the form §5.": + "Die Induktionsvoraussetzung §0 lautet „Für alle natürlichen Zahlen §1 gilt §2“.\nDu kannst sie mit §3 §4 auf jede Annahme der Form §5 anwenden.", + "The goal in this level is one of our hypotheses. Solve the goal by executing §0.": + "Das Ziel in diesem Level ist eine unserer Annahmen. Erreiche das Ziel mit §0.", + "The first sub-boss of Multiplication World is §0.\n\nWhen you've proved this theorem we will have \"spare\" proofs\nsuch as §1, which is now easily deducible from §2.\nBut we'll keep hold of these proofs anyway, because it's convenient\nto have exactly the right tool for a job.": + "Der erste Zwischengegner der Multiplikations-Welt ist §0.\n\nWenn du diesen Satz bewiesen hast, werden wir „überzählige“ Beweise haben\nwie §1, der sich nun leicht aus §2 herleiten lässt.\nAber wir behalten diese Beweise trotzdem, denn es ist praktisch,\ngenau das richtige Werkzeug für eine Aufgabe zu haben.", + "The classical introduction game for Lean.": + "Das klassische Einführungsspiel für Lean.", + "Start with §0. This will change §1 to §2.": + "Beginne mit §0. Dies wird §1 zu §2 ändern.", + "Start with §0.": "Beginne mit §0.", + "Start with §0, to change the goal into its\ncontrapositive, namely a hypothesis of §1 and a goal of §2.": + "Beginne mit §0, um das Ziel in seine\nKontraposition umzuwandeln, nämlich in eine Annahme §1 und ein Ziel §2.", + "Start with §0 to push all the brackets to the right.": + "Beginne mit §0, um alle Klammern nach rechts zu schieben.", + "Start with §0 to do a case split on §1 and §2.": + "Beginne mit §0, um eine Fallunterscheidung nach §1 und §2 zu machen.", + "Start with §0 to begin to break §1 down into its definition.": + "Beginne mit §0, um §1 in seine Definition zu zerlegen.", + "Start with §0 to assume the hypothesis.": + "Beginne mit §0, um die Annahme anzunehmen.", + "Start with §0 to assume the hypothesis and call its proof §1.": + "Beginne mit §0, um die Annahme anzunehmen und ihren Beweis §1 zu nennen.", + "Start with §0 to apply §1 to the *goal*.": + "Beginne mit §0, um §1 auf das *Ziel* anzuwenden.", + "Start with §0 and §1": "Beginne mit §0 und §1", + "Start with §0 and take it from there.": + "Beginne mit §0 und mach von dort aus weiter.", + "Start with §0 (remembering that §1 is just notation\nfor §2).": + "Beginne mit §0 (denk daran, dass §1 nur eine Notation\nfür §2 ist).", + "Start with induction on §0.": "Beginne mit Induktion über §0.", + "Start by unravelling the §0.": "Beginne damit, §0 zu entpacken.", + "Split into cases §0 and §1 with §2.": + "Teile mit §2 in die Fälle §0 und §1 auf.", + "Solve this level in one line with §0": + "Löse dieses Level in einer Zeile mit §0", + "So that's the algorithm: now let's use automation to perform it\nautomatically.": + "Das ist also der Algorithmus: Nutzen wir nun Automatisierung, um ihn automatisch\nauszuführen.", + "Similarly we have §0\nbut we're going to need §1 (guess what it says -- maybe you\nare getting the hang of Lean's naming conventions).\n\nThe last level from addition world might help you in this level.\nIf you can't remember what it is, you can go back to the\nhome screen by clicking the house icon and then taking a look.\nYou won't lose any progress.": + "Analog haben wir §0,\naber wir werden §1 brauchen (rate mal, was es besagt – vielleicht bekommst\ndu langsam ein Gefühl für Leans Namenskonventionen).\n\nDas letzte Level aus der Additions-Welt könnte dir in diesem Level helfen.\nFalls du dich nicht mehr erinnerst, was es ist, kannst du über einen Klick auf\ndas Haus-Symbol zum Startbildschirm zurückkehren und es dir ansehen.\nDu verlierst dabei deinen Fortschritt nicht.", + "See the new \"*\" tab in your lemmas, containing §0 and §1.\nRight now these are the only facts we know about multiplication.\nLet's prove nine more.\n\nLet's start with a warm-up: no induction needed for this one,\nbecause we know §2 is a successor.": + "Sieh dir den neuen „*“-Reiter bei deinen Sätzen an. Er enthält §0 und §1.\nIm Moment sind das die einzigen Fakten, die wir über die Multiplikation kennen.\nLass uns neun weitere beweisen.\n\nBeginnen wir mit einer Aufwärmübung: Für diese ist keine Induktion nötig,\nweil wir wissen, dass §2 ein Nachfolger ist.", + "See if you can take it from here. Look at the new lemmas and tactic\navailable on the right.": + "Schau, ob du ab hier selbst weiterkommst. Sieh dir die neuen Sätze und die neue\nverfügbare Taktik rechts an.", + "Remember, §0 is *notation* for §1.": + "Denk daran: §0 ist eine *Notation* für §1.", + "Remember that §0 is a proof of §1. Try\n§2ing §3 either §4 or directly to the goal.": + "Denk daran, dass §0 ein Beweis von §1 ist. Versuche, §3 mit der §2-Taktik\nanzuwenden, entweder §4 oder direkt auf das Ziel.", + "Remember that when Lean writes §0, it means §1.\nIf you are not sure where the brackets are in an expression, just hover\nyour cursor over it and look at what gets highlighted. For example,\nhover over both §2 symbols on the left hand side of the goal and\nyou'll see where the invisible brackets are.": + "Denk daran: Wenn Lean §0 schreibt, steht das für §1.\nWenn du dir nicht sicher bist, wo in einem Ausdruck die Klammern sind, bewege einfach\ndeinen Cursor darüber und schau, was hervorgehoben wird. Bewege zum Beispiel\nden Cursor über beide §2-Symbole auf der linken Seite des Ziels, und\ndu wirst sehen, wo die unsichtbaren Klammern sind.", + "Reduce to the previous lemma with §0": + "Führe es mit §0 auf das vorige Lemma zurück", + "Ready for the boss level of this world?": + "Bereit für den Hauptgegner dieser Welt?", + "Proofs like §0 and §1 are very tedious to do by hand.\nIn Algorithm World we learn how to get the computer to do them for us.\n\nClick on \"Start\" to proceed.": + "Beweise wie §0 und §1 sind von Hand sehr mühsam.\nIn der Algorithmen-Welt lernen wir, wie wir den Computer dazu bringen, sie für uns zu erledigen.\n\nKlicke auf „Start“, um fortzufahren.", + "Precision rewriting": "Präzises Umschreiben", + "Power World": "Potenz-Welt", + "Our next goal is \"left and right distributivity\",\nmeaning §0 and §1. Rather than\nthese slightly pompous names, the name of the proofs\nin Lean are descriptive. Let's start with\n§2, the proof of §3.\nNote that the left hand side contains a multiplication\nand then an addition.": + "Unser nächstes Ziel ist die „links- und rechtsseitige Distributivität“,\ndas heißt §0 und §1. Statt\ndieser etwas hochtrabenden Namen sind die Namen der Beweise\nin Lean beschreibend. Fangen wir mit\n§2 an, dem Beweis von §3.\nBeachte, dass die linke Seite eine Multiplikation\nund dann eine Addition enthält.", + "Our first challenge is §0,\nand we want to prove it by induction. The zero\ncase will need §1 (which we have)\nand §2 (which we don't), so let's\nstart with this.": + "Unsere erste Herausforderung ist §0,\nund wir wollen sie durch Induktion beweisen. Der Fall\nNull benötigt §1 (das wir haben)\nund §2 (das wir nicht haben), also fangen wir\nmit Letzterem an.", + "One of the best named levels in the game, a savage §0\nsub-boss appears as the music reaches a frenzy. What\nelse could there be to prove about powers after this?": + "In einem der am besten benannten Level des Spiels taucht ein wilder §0-Zwischengegner\nauf, während die Musik ihren Höhepunkt erreicht. Was\nkönnte es danach noch über Potenzen zu beweisen geben?", + "One day this game will have a Prime Number World, with a final boss\nof proving that §0 is prime.\nTo do this, we will have to rule out things like §1.\nWe will do this by proving that any factor of §2 is at most §3,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using §4, §5 and\n§6.": + "Eines Tages wird dieses Spiel eine Primzahlen-Welt haben, mit einem Endgegner,\nbei dem zu beweisen ist, dass §0 eine Primzahl ist.\nDazu müssen wir Dinge wie $2 = 37 × 42$ ausschließen.\nDas machen wir, indem wir beweisen, dass jeder Faktor von §2 höchstens §3 ist,\nwozu wir dieses Lemma verwenden werden. Der Beweis, den ich im Sinn habe, formt die Annahme\nmit Hilfe von §4, §5 und §6 um, bis sie zum Ziel wird.", + "On the set of natural numbers, addition is commutative.\nIn other words, if §0 and §1 are arbitrary natural numbers, then\n§2.": + "Auf der Menge der natürlichen Zahlen ist die Addition kommutativ.\nMit anderen Worten: Wenn §0 und §1 beliebige natürliche Zahlen sind, dann gilt\n§2.", + "On the set of natural numbers, addition is associative.\nIn other words, if §0 and §1 are arbitrary natural numbers, we have\n§2": + "Auf der Menge der natürlichen Zahlen ist die Addition assoziativ.\nMit anderen Worten: Wenn §0 und §1 beliebige natürliche Zahlen sind, gilt\n§2", + "Oh no! On the way to §0, a wild §1 appears. §2\nis the proof that §3 for §4 and §5 numbers.\nThis result is what's standing in the way of §6. Again\nwe have the problem that we are adding §7 to things, so we need\nto use induction to split into the cases where §8 and §9 is a successor.": + "Oh nein! Auf dem Weg zu §0 taucht ein wildes §1 auf. §2\nist der Beweis dafür, dass §3 für Zahlen §4 und §5 gilt.\nDieses Ergebnis steht §6 im Weg. Wieder\nhaben wir das Problem, dass wir §7 zu Dingen addieren, also müssen wir\nInduktion verwenden, um in die Fälle aufzuteilen, in denen §8 gilt\nbeziehungsweise §9 ein Nachfolger ist.", + "Numbers": "Zahlen", + "Now §0.": "Jetzt §0.", + "Now §0 will work.": "Jetzt funktioniert §0.", + "Now §0 will change §1 into §2.": "§0 wird nun §1 in §2 umwandeln.", + "Now §0 to cancel the §1s.": "Verwende nun §0, um die §1 wegzukürzen.", + "Now §0 then §1 works, but §2 is quicker.": + "§0 und dann §1 funktioniert zwar, aber §2 ist schneller.", + "Now §0 so you can §1.": "Jetzt §0, sodass du §1 anwenden kannst.", + "Now §0 is the quickest way to\nchange §1 to §2.": + "Jetzt ist §0 der schnellste Weg, um\n§1 zu §2 zu ändern.", + "Now §0 is a proof that §1, and §2 has vanished. Similarly, you can destruct\n§3 into its parts with §4.": + "Jetzt ist §0 ein Beweis dafür, dass §1 gilt, und §2 ist verschwunden. Genauso kannst du auch\n§3 mit §4 in seine Teile zerlegen.", + "Now §0 finishes the job.": "Jetzt bringt §0 die Sache zu Ende.", + "Now §0 and you can probably take it from here.": + "Wende jetzt §0 an, und den Rest schaffst du wahrscheinlich allein.", + "Now §0 and deal with the two\ncases separately.": + "Nun §0 und behandle die beiden\nFälle getrennt.", + "Now you need to figure out which number to §0. See if you can take it from here.": + "Jetzt musst du herausfinden, welche Zahl du mit §0 angeben sollst. Schau, ob du von hier aus selbst weiterkommst.", + "Now you have two goals. Once you proved the first, you will jump to the second one.\nThis first goal is the base case §0.\n\nRecall that you can rewrite the proof of any lemma which is visible\nin your inventory, or of any assumption displayed above the goal,\nas long as it is of the form §1.": + "Jetzt hast du zwei Ziele. Sobald du das erste bewiesen hast, springst du zum zweiten.\nDieses erste Ziel ist der Induktionsanfang §0.\n\nDenk daran, dass du mit dem Beweis jedes Lemmas umschreiben kannst, das in\ndeinem Inventar sichtbar ist, und mit dem Beweis jeder Annahme, die über dem Ziel angezeigt wird,\nsolange sie die Form §1 hat.", + "Now you could finish with §0 then §1, but §2\ndoes it in one line.": + "Jetzt könntest du mit §0 und dann §1 abschließen, aber §2\nschafft es in einer Zeile.", + "Now you can §0.": "Jetzt kannst du §0 verwenden.", + "Now you can §0": "Jetzt kannst du §0 anwenden", + "Now we can prove the §0 statement by proving the statement on the right,\nso use the §1 tactic.": + "Jetzt können wir die Aussage §0 beweisen, indem wir die Aussage auf der rechten Seite beweisen,\nalso verwende die Taktik §1.", + "Now use §0 to switch §1 and §2 on the left\nhand side.": + "Verwende nun §0, um §1 und §2 auf der linken\nSeite zu vertauschen.", + "Now the goal can be deduced from §0 by pure logic, so use the §1\ntactic.": + "Jetzt lässt sich das Ziel allein mit Logik aus §0 herleiten, benutze also die Taktik §1.", + "Now take apart the existence statement with §0.": + "Zerlege nun die Existenzaussage mit §0.", + "Now rewrite §0 backwards to make the goal\nequal to the hypothesis.": + "Schreibe nun mit §0 rückwärts um, damit das Ziel\nsich der Annahme angleicht.", + "Now rewrite §0 backwards at §1\nto get the right hand side.": + "Schreibe nun §0 rückwärts an §1 um,\num die rechte Seite zu erhalten.", + "Now let's §0 our new theorem. Execute §1\nto change §2 to a proof of §3.": + "Nun wollen wir unseren neuen Satz mit §0 anwenden. Führe §1 aus,\num §2 in einen Beweis von §3 umzuwandeln.", + "Now for the second goal. Here you have the induction hypothesis\n§0, and you need to prove that §1.": + "Nun zum zweiten Ziel. Hier hast du die Induktionsvoraussetzung\n§0 und musst beweisen, dass §1 gilt.", + "Now finish using the §0 tactic.": "Die Taktik §0 bringt dich nun ans Ziel.", + "Now finish the job with §0.": "Du erreichst das Ziel nun mittels §0.", + "Now finish in one line.": "Schließe den Beweis nun in einer Zeile ab.", + "Now change §0 to §1 in §2.": "Ändere nun §0 zu §1 in §2.", + "Note: this lemma will be useful for the final boss!": + "Hinweis: Dieses Lemma wird für den Endgegner nützlich sein!", + "Note that §0 means §1. Put your cursor\non any §2 in the goal or assumptions to see what exactly it's eating.": + "Beachte, dass §0 für §1 steht. Setze deinen Cursor\nauf ein beliebiges §2 im Ziel oder in den Annahmen, um zu sehen, worauf genau es angewendet wird.", + "Note that you can do §0\nand then §1 to solve this level in two lines.": + "Beachte, dass du §0\nund dann §1 ausführen kannst, um dieses Level in zwei Zeilen zu lösen.", + "Nice! You've proved §0!\nLet's now prove Peano's other axiom, that successors can't be §1.": + "Super! Du hast §0 bewiesen!\nBeweisen wir nun Peanos anderes Axiom, dass Nachfolger nicht §1 sein können.", + "Nice!\n\nThe next step in the development of order theory is to develop\nthe theory of the interplay between §0 and multiplication.\nIf you've already done Multiplication World, you're now ready for\nAdvanced Multiplication World. Click on \"Home\" to access it.": + "Super!\n\nDer nächste Schritt in der Entwicklung der Ordnungstheorie besteht darin,\ndie Theorie des Zusammenspiels zwischen §0 und Multiplikation zu entwickeln.\nWenn du die Multiplikations-Welt bereits abgeschlossen hast, bist du jetzt bereit für\ndie Fortgeschrittene Multiplikations-Welt. Klicke auf „Home“, um sie zu öffnen.", + "Nice!": "Super!", + "Next turn §0 into §1 with §2.": "Verwandle als Nächstes §0 mittels §2 in §1.", + "Natural Number Game": "Zahlenspiele", + "My proof:\n§0": "Mein Beweis:\n§0", + "Multiplication usually makes a number bigger, but multiplication by zero can make\nit smaller. Thus many lemmas about inequalities and multiplication need the\nhypothesis §0. Here is a key lemma that enables us to use this hypothesis.\nTo help us with the proof, we can use the §1 tactic. Click on the tactic's name\non the right to see what it does.": + "Multiplikation macht eine Zahl normalerweise größer, aber Multiplikation mit null kann sie\nkleiner machen. Deshalb brauchen viele Lemmata über Ungleichungen und Multiplikation die\nAnnahme §0. Hier ist ein zentrales Lemma, welches uns erlaubt, diese Annahme zu verwenden.\nAls Hilfe für den Beweis können wir die Taktik §1 verwenden. Klicke rechts auf den Namen der Taktik,\num zu sehen, was sie tut.", + "Multiplication is distributive over addition.\nIn other words, for all natural numbers §0, §1 and §2, we have\n§3.": + "Die Multiplikation ist linksseitig distributiv über der Addition.\nMit anderen Worten, für alle natürlichen Zahlen §0, §1 und §2 gilt\n§3.", + "Multiplication is distributive over addition on the left.\nIn other words, for all natural numbers §0, §1 and §2, we have\n§3.": + "Die Multiplikation ist linksseitig distributiv über der Addition.\nMit anderen Worten, für alle natürlichen Zahlen §0, §1 und §2 gilt\n§3.", + "Multiplication is commutative.": "Die Multiplikation ist kommutativ.", + "Multiplication is associative.\nIn other words, for all natural numbers §0, §1 and §2, we have\n§3.": + "Die Multiplikation ist assoziativ.\nMit anderen Worten: Für alle natürlichen Zahlen §0, §1 und §2 gilt\n§3.", + "Multiplication distributes\nover addition on the left.\n\n§0 is the proof that §1.": + "Die Multiplikation ist von links distributiv über der Addition.\n\n§0 ist der Beweis dafür, dass §1 gilt.", + "Multiplication World": "Multiplikations-Welt", + "Mathematicians sometimes debate what §0 is;\nthe answer depends, of course, on your definitions. In this\ngame, §1. See if you can prove it.\n\nCheck out the *Pow* tab in your list of theorems\nto see the new proofs which are available.": + "Mathematikerinnen streiten manchmal darüber, was §0 ist;\ndie Antwort hängt natürlich von deinen Definitionen ab. In diesem\nSpiel gilt §1. Versuche, es zu beweisen.\n\nSieh dir den *Pow*-Reiter in deiner Liste der „Sätze“ an,\num die neuen verfügbaren Beweise zu sehen.", + "Mathematicians sometimes argue that §0 is also\na good convention. But it is not a good convention in this\ngame; all the later levels come out beautifully with the\nconvention that §1.": + "Mathematikerinnen argumentieren manchmal, dass §0 ebenfalls\neine gute Konvention ist. Aber in diesem Spiel ist sie keine gute Konvention;\nalle späteren Level gehen wunderbar auf mit der Konvention, dass §1 gilt.", + "Many people find §0 easy, but some find §1 confusing.\nIf you find it confusing, then just argue forwards.\n\nYou can read more about the §2 tactic in its documentation, which you can view by\nclicking on the tactic in the list on the right.": + "Viele finden §0 einfach, aber manche finden §1 verwirrend.\nWenn es dir verwirrend vorkommt, dann argumentiere einfach vorwärts.\n\nMehr über die Taktik §2 kannst du in ihrer Dokumentation lesen, die du sehen kannst,\nindem du in der Liste rechts auf die Taktik klickst.", + "Let's warm up with an easy one, which works even if §0.": + "Wärmen wir uns mit einer leichten Aufgabe auf, die sogar dann funktioniert, wenn §0 gilt.", + "Let's see if you can use the tactics we've learnt to prove §0.\nTry this one by yourself; if you need help then click on \"Show more help!\".": + "Mal sehen, ob du die Taktiken, die wir gelernt haben, verwenden kannst, um §0 zu beweisen.\nVersuche diese Aufgabe selbst; wenn du Hilfe brauchst, dann klicke auf „Mehr Hilfe“.", + "Let's now move on to a more efficient approach to questions\ninvolving numerals, such as §0.": + "Wenden wir uns nun einem effizienteren Ansatz für Fragestellungen\nmit Zahlen wie, zum Beispiel, §0 zu.", + "Let's now make our own tactic to do this.": + "Lass uns jetzt unsere eigene Taktik dafür schreiben.", + "Let's now learn about Peano's second axiom for addition, §0.": + "Lass uns nun Peanos zweites Axiom für die Addition kennenlernen, §0.", + "Let's now begin our approach to the final boss,\nby proving some more subtle facts about powers.": + "Beginnen wir nun unseren Weg zum Endgegner des Spiels,\nindem wir einige subtilere Tatsachen über Potenzen beweisen.", + "Let's first get §0 into the form §1 so we can\napply §2. First execute §3\nto change the 4 on the right hand side.": + "Bringen wir zunächst §0 in die Form §1, damit wir\n§2 anwenden können. Führe zuerst §3 aus,\num die 4 auf der rechten Seite zu ändern.", + "Lean's simplifier, §0, is \"§1 on steroids\". It will rewrite every lemma\ntagged with §2 and every lemma fed to it by the user, as much as it can.\n\nThis level is not a level which you want to solve by hand.\nGet the simplifier to solve it for you.": + "Leans Vereinfacher, §0, ist „§1 auf Steroiden“. Er schreibt jedes Lemma,\ndas mit §2 markiert ist, und jedes Lemma, das ihm von der Nutzerin gegeben wird,\nso weit um, wie er kann.\n\nDieses Level willst du nicht von Hand lösen.\nLass es dir von dem Vereinfacher lösen.", + "It's all over! You have proved a theorem which has tripped up\nschoolkids for generations (some of them think §0:\nthis is \"the freshman's dream\").\n\nHow many rewrites did you use? I can do it in 12.\n\nBut wait! This boss is stirring...and mutating into a second more powerful form!": + "Es ist geschafft! Du hast einen Satz bewiesen, über den\nSchulkinder seit Generationen stolpern (manche von ihnen glauben §0:\ndas ist „der Traum des Erstsemesters“).\n\nWie viele `rw`-Schritte hast du gebraucht? Ich schaffe es in 12.\n\nAber halt! Dieser Endgegner regt sich … und verwandelt sich in eine zweite, mächtigere Form!", + "It's \"intuitively obvious\" that there are no numbers less than zero,\nbut to prove it you will need a result which you showed in advanced\naddition world.": + "Es ist „intuitiv offensichtlich“, dass es keine Zahlen kleiner als null gibt,\naber um es zu beweisen, brauchst du ein Resultat, das du in der Fortgeschrittenen\nAdditions-Welt gezeigt hast.", + "Induction on §0 or §1 -- it's all the same in this one.": + "Induktion über §0 oder §1 – in diesem Fall macht es keinen Unterschied.", + "Induction on §0 is the most troublesome, then §1,\nand §2 is the easiest.": + "Induktion über §0 ist am mühsamsten, dann kommt §1,\nund §2 ist am einfachsten.", + "In this world we'll learn how to prove theorems of the form §0.\nIn other words, how to prove theorems of the form \"if §1 is true, then §2 is true.\"\nTo do that we need to learn some more tactics.\n\nThe §3 tactic can be used to close a goal which is exactly one of\nthe hypotheses. It takes the name of the hypothesis as argument: §4.": + "In dieser Welt lernen wir, wie man Sätze der Form §0 beweist.\nMit anderen Worten, wie man Sätze der Form „wenn §1 wahr ist, dann ist §2 wahr“ beweist.\nDazu müssen wir noch einige weitere Taktiken lernen.\n\nDie Taktik §3 kann verwendet werden, um ein Ziel zu erreichen, das\ngenau eine der Annahmen ist. Sie nimmt den Namen der Annahme als Argument: §4.", + "In this world we define §0 and prove standard facts\nabout it, such as \"if §1 and §2 then §3.\"\n\nThe definition of §4 is \"there exists a number §5\nsuch that §6. \" So we're going to have to learn\na tactic to prove \"exists\" theorems, and another one\nto use \"exists\" hypotheses.\n\nClick on \"Start\" to proceed.": + "In dieser Welt definieren wir §0 und beweisen grundlegende Tatsachen darüber,\netwa „wenn §1 und §2, dann §3“.\n\nDie Definition von §4 lautet „es gibt eine Zahl §5, sodass §6“. Wir müssen also\neine Taktik lernen, um „es gibt“-Sätze zu beweisen, und eine weitere,\num „es gibt“-Annahmen zu benutzen.\n\nKlicke auf „Start“, um fortzufahren.", + "In this world I will mostly leave you on your own.\n\n§0 is the theorem that §1.": + "In dieser Welt überlasse ich dich größtenteils dir selbst.\n\n§0 ist der Satz, dass §1 gilt.", + "In this level, we see inequalities as *hypotheses*. We have not seen this before.\nThe §0 tactic can be used to take §1 apart.": + "In diesem Level betrachten wir Ungleichungen als *Annahmen*. Das haben wir vorher noch nicht gesehen.\nMit der Taktik §0 kann man §1 in Fälle zerlegen.", + "In this level, the hypothesis §0 is an *implication*. It says\nthat *if* §1 *then* §2. We can use this\nhypothesis with the §3 tactic. Remember you can click on\n§4 or any other tactic on the right to see a detailed explanation\nof what it does, with examples.": + "In diesem Level ist die Annahme §0 eine *Implikation*. Sie besagt,\ndass *wenn* §1, *dann* §2. Wir können diese\nAnnahme mit der Taktik §3 verwenden. Denk daran, dass du auf\n§4 oder jede andere Taktik rechts klicken kannst, um eine ausführliche Erklärung\ndessen, was sie tut, mit Beispielen zu sehen.", + "In this level we're going to prove that §0, where §1 is a secret natural number.\n\nWait, don't we already know that? No! We know that §2, but that's §3.\nThis is §4, which is different.\n\nThe difficulty with proving §5 is that we do not have a *formula* for\n§6 in general, we can only use §7 and §8 once\nwe know whether §9 is §10 or a successor. The §11 tactic splits into these two cases.\n\nThe base case will require us to prove §12, and the inductive step\nwill ask us to show that if §13 then §14. Because\n§15 and successor are the only way to make numbers, this will cover all the cases.\n\nSee if you can do your first induction proof in Lean.\n\n(By the way, if you are still in the \"Editor mode\" from the last world, you can swap\nback to \"Typewriter mode\" by clicking the §16 button in the top right.)": + "In diesem Level werden wir beweisen, dass §0 gilt, wobei §1 eine geheime natürliche Zahl ist.\n\nMoment, wissen wir das nicht bereits? Nein! Wir wissen, dass §2 gilt, aber das ist §3.\nHier geht es um §4, was etwas anderes ist.\n\nDie Schwierigkeit beim Beweis von §5 besteht darin, dass wir im Allgemeinen keine\n*Formel* für §6 haben; wir können §7 und §8 erst benutzen, sobald\nwir wissen, ob §9 gleich §10 oder ein Nachfolger ist. Die §11-Taktik teilt das Problem\nin diese beiden Fälle auf.\n\nDer Induktionsanfang wird von uns verlangen, §12 zu beweisen, und der Induktionsschritt\nwird uns auffordern zu zeigen, dass aus §13 auch §14 folgt. Weil\n§15 und Nachfolger die einzigen Möglichkeiten sind, Zahlen zu erzeugen, deckt dies alle Fälle ab.\n\nVersuche, deinen ersten Induktionsbeweis in Lean zu führen.\n\n(Übrigens: Wenn du aus der letzten Welt noch im „Editor-Modus“ bist, kannst du\nzurück in den „Schreibmaschinen-Modus“ wechseln, indem du oben rechts auf die Schaltfläche §16 klickst.)", + "In this level we prove that if §0 and §1 then §2. It is tricky, for\nseveral reasons. One of these is that\nwe need to introduce a new idea: we will need to understand the concept of\nmathematical induction a little better.\n\nStarting with §3 is too naive, because in the inductive step\nthe hypothesis is §4 but what we know is §5,\nso the induction hypothesis does not apply!\n\nAssume §6 is fixed. The actual statement we want to prove by induction on §7 is\n\"for all §8, if §9 then §10\". This *can* be proved by induction,\nbecause we now have the flexibility to change §11.": + "In diesem Level beweisen wir, dass aus §0 und §1 die Aussage §2 folgt. Das ist knifflig,\nund zwar aus mehreren Gründen. Einer davon ist, dass\nwir eine neue Idee einführen müssen: Wir müssen das Konzept der\nmathematischen Induktion etwas besser verstehen.\n\nMit §3 zu beginnen ist zu naiv, denn im Induktionsschritt\nlautet die Annahme §4, aber was wir wissen, ist §5,\nsodass die Induktionsvoraussetzung nicht anwendbar ist!\n\nNehmen wir an, §6 sei fest. Die eigentliche Aussage, die wir per Induktion über §7 beweisen wollen, lautet\n„für alle §8 gilt, wenn §9, dann §10“. Diese *lässt* sich per Induktion beweisen,\nweil wir nun die Freiheit haben, §11 zu ändern.", + "In this level the *goal* is §0 but to help us we\nhave an *assumption* §1 saying that §2. Check that you can see §3 in\nyour list of assumptions. Lean thinks of §4 as being a secret proof of the\nassumption, rather like §5 is a secret number.\n\nBefore we can use §6, we have to \"substitute in for §7\".\nWe do this in Lean by *rewriting* the goal with §8,\nusing the §9 tactic.": + "In diesem Level ist das *Ziel* §0, aber zur Hilfe haben wir\neine *Annahme* §1, die besagt, dass §2 gilt. Überprüfe, dass du §3 in\ndeiner Liste der Annahmen sehen kannst. Lean betrachtet §4 als einen geheimen\nBeweis der Annahme, ähnlich wie §5 eine geheime Zahl ist.\n\nBevor wir §6 verwenden können, müssen wir „für §7 einsetzen“.\nDas machen wir in Lean, indem wir das Ziel mit §8 *umschreiben*,\nmit der Taktik §9 („rewrite“).", + "In this game you recreate the natural numbers §0 from the Peano axioms,\nlearning the basics about theorem proving in Lean.\n\nThis is a good first introduction to Lean!": + "In diesem Spiel baust du die natürlichen Zahlen §0 aus den Peano-Axiomen neu auf\nund lernst dabei die Grundlagen des Beweisens von Sätzen in Lean.\n\nDas ist eine gute erste Einführung in Lean!", + "In the next level, we'll do the same proof but backwards.": + "Im nächsten Level führen wir denselben Beweis, aber rückwärts.", + "In the last level, we manipulated the hypothesis §0\n until it became the goal §1. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The §2 tactic can do this too.\n Again I will walk you through this one (assuming you're in\n \"Typewriter mode\").": + "Im letzten Level haben wir die Annahme §0\n umgeformt, bis sie zum Ziel §1 wurde. In diesem Level formen wir\n das Ziel um, bis es zu unserer Annahme wird! Mit anderen Worten\n werden wir „rückwärts argumentieren“. Die Taktik §2 kann das auch.\n Ich führe dich wieder durch dieses Level (vorausgesetzt, du bist im\n „Schreibmaschinen-Modus“).", + "In the \"base case\" we have a hypothesis §0, and you can deduce anything\nfrom a false statement. The §1 tactic will close this goal.": + "Im „Induktionsanfang“ haben wir eine Annahme §0, und aus einer falschen Aussage\nkann man alles herleiten. Die Taktik §1 wird dieses Ziel erreichen.", + "In some later worlds, we're going to see some much nastier levels,\nlike §0.\nBrackets need to be moved around, and variables need to be swapped.\n\nIn this level, §1,\nlet's forget about the brackets and just think about\nthe variable order.\nTo turn §2 into §3 we need to swap §4 and §5,\nand then swap §6 and §7. But this is easier than you\nthink with §8.": + "In einigen späteren Welten werden wir viel fiesere Level sehen,\nwie §0.\nKlammern müssen verschoben und Variablen vertauscht werden.\n\nIn diesem Level, §1,\nvergessen wir die Klammern und denken einfach über\ndie Reihenfolge der Variablen nach.\nUm §2 in §3 zu verwandeln, müssen wir §4 und §5 vertauschen\nund danach §6 und §7 vertauschen. Aber das ist einfacher, als du\ndenkst, mit §8.", + "In order to use the tactic §0 you can enter it in the text box\nunder the goal and hit \"Execute\".": + "Um die Taktik §0 zu verwenden, kannst du sie in das Textfeld\nunter dem Ziel eingeben und auf „Ausführen“ drücken.", + "In Advanced Addition World we will prove some basic\naddition facts such as §0. The theorems\nproved in this world will be used to build\na theory of inequalities in §1 World.\n\nClick on \"Start\" to proceed.": + "In der Fortgeschrittenen Additions-Welt werden wir einige grundlegende\nFakten über die Addition beweisen, etwa §0. Die in dieser Welt\nbewiesenen Sätze werden wir verwenden, um in der §1-Welt\neine Theorie der Ungleichungen aufzubauen.\n\nKlicke auf „Start“, um fortzufahren.", + "Implication World": "Implikations-Welt", + "Implementing the algorithm for equality of naturals, and the proof that it is correct,\nlooks like this:\n\n§0\n\nThis Lean code is a formally verified algorithm for deciding equality\nbetween two naturals. I've typed it in already, behind the scenes.\nBecause the algorithm is formally verified to be correct, we can\nuse it in Lean proofs. You can run the algorithm with the §1 tactic.": + "Die Implementierung des Algorithmus für die Gleichheit natürlicher Zahlen und der Beweis, dass dieser korrekt ist,\nsehen wie folgt aus:\n\n§0\n\nDieser Lean-Code ist ein formal verifizierter Algorithmus, um die Gleichheit\nzwischen zwei natürlichen Zahlen zu entscheiden. Ich habe ihn bereits hinter den Kulissen eingetippt.\nDa der Algorithmus formal als korrekt verifiziert ist, können wir\nihn in Lean-Beweisen verwenden. Du kannst den Algorithmus mit der Taktik §1 ausführen.", + "If §0, §1 and §2 are numbers, we have\n§3": + "Wenn §0, §1 und §2 Zahlen sind, gilt\n§3", + "If §0, then §1.": "Wenn §0, dann §1.", + "If §0 then §1.": "Wenn §0, dann §1.", + "If §0 then §1 or §2 or §3.": "Wenn §0, dann §1 oder §2 oder §3.", + "If §0 then either §1 or §2.": "Wenn §0 gilt, dann gilt entweder §1 oder §2.", + "If §0 or §1, then §2 or §3.": "Wenn §0 oder §1, dann §2 oder §3.", + "If §0 is a proof of §1 then §2 will\nturn §3s into §4s. But what if we want to\nturn §5s into §6s? To tell the §7 tactic\nwe want this, we use a left arrow §8. Type\n§9 and then hit the space bar to get this arrow.\n\nLet's prove that §10 is the number after the number\nafter §11 again, this time by changing §12\ninto §13.": + "Wenn §0 ein Beweis von §1 ist, dann verwandelt §2 alle §3 in §4. Aber\nwas, wenn wir §5 in §6 verwandeln wollen? Um der §7-Taktik\nmitzuteilen, dass wir das wollen, verwenden wir einen Linkspfeil §8. Tippe\n§9 und drücke dann die Leertaste, um diesen Pfeil zu erhalten.\n\nBeweisen wir noch einmal, dass §10 die Zahl nach der Zahl\nnach §11 ist, diesmal indem wir §12\nin §13 verwandeln.", + "If §0 is a number, then §1.": "Wenn §0 eine Zahl ist, dann gilt §1.", + "If §0 are numbers, then §1.": "Wenn §0 Zahlen sind, dann gilt §1.", + "If §0 are arbitrary natural numbers, we have\n§1.": + "Wenn §0 beliebige natürliche Zahlen sind, gilt\n§1.", + "If §0 and §1, then §2.": "Wenn §0 und §1, dann §2.", + "If §0 and §1 then we can deduce a contradiction.": + "Wenn §0 und §1, dann können wir einen Widerspruch herleiten.", + "If §0 and §1 are numbers, then §2 is a proof\nthat §3 implies §4. Click on this theorem in the *Peano*\ntab for more information.\n\nPeano had this theorem as an axiom, but in Algorithm World\nwe will show how to prove it in Lean. Right now let's just assume it,\nand let's prove §5 using it. Again, we will proceed\nby manipulating our hypothesis until it becomes the goal. I will\nwalk you through this level.": + "Wenn §0 und §1 Zahlen sind, dann ist §2 ein Beweis\ndafür, dass §3 die Gleichung §4 impliziert. Klicke im Reiter *Peano*\nauf diesen Satz, um mehr zu erfahren.\n\nBei Peano war dieser Satz ein Axiom, aber in der Algorithmen-Welt\nzeigen wir, wie man ihn in Lean beweist. Im Moment nehmen wir ihn einfach an\nund wollen mit seiner Hilfe §5 beweisen. Wieder gehen wir vor,\nindem wir unsere Annahme so lange umformen, bis sie zum Ziel wird. Ich\nwerde dich durch dieses Level führen.", + "If §0 and §1 are numbers, then either §2 or §3.": + "Wenn §0 und §1 Zahlen sind, dann gilt §2 oder §3.", + "If §0 and §1 are natural numbers, and §2, then §3.": + "Wenn §0 und §1 natürliche Zahlen sind und §2 gilt, dann folgt §3.", + "If §0 and §1 are arbitrary natural numbers, we have\n§2.": + "Wenn §0 und §1 beliebige natürliche Zahlen sind, gilt\n§2.", + "If §0 and §1 are arbitrary natural numbers, then §2": + "Wenn §0 und §1 beliebige natürliche Zahlen sind, dann gilt §2", + "If §0 and we know that §1 then we can deduce §2.": + "Wenn §0 gilt und wir wissen, dass §1 gilt, dann können wir §2 folgern.", + "If you §0 the wrong number, you get stuck with a goal you can't prove.\nWhat number will you §1 here?": + "Wenn du §0 mit der falschen Zahl aufrufst, bleibst du bei einem Ziel hängen,\ndas du nicht beweisen kannst. Welche Zahl wirst du hier mit §1 benutzen?", + "If you have completed Algorithm World then you can use the §0 tactic\nhere. If not then I'll talk you through a manual approach.": + "Wenn du die Algorithmen-Welt abgeschlossen hast, dann kannst du hier die Taktik §0\nverwenden. Falls nicht, führe ich dich durch einen manuellen Ansatz.", + "If the goal is not *exactly* a hypothesis, we can sometimes\nuse rewrites to fix things up.": + "Wenn das Ziel nicht *genau* eine Annahme ist, können wir\nmanchmal mit `rw`-Schritten nachhelfen.", + "How should we define §0? Just like addition, we need to give definitions\nwhen §1 and when §2 is a successor.\n\nThe zero case is easy: we define §3 to be §4. Now say we know\n§5. What should §6 be? Well, that's §7 §8s,\nso it should be §9.\n\nHere are the definitions in Lean.\n\n * §10\n * §11\n\nIn this world, we must not only prove facts about multiplication like §12,\nwe must also prove facts about how multiplication interacts with addition, like §13.\nLet's get started.": + "Wie sollten wir §0 definieren? Genau wie bei der Addition müssen wir Definitionen\nangeben, für den Fall, dass §1 gilt, und für den Fall, dass §2 ein Nachfolger ist.\n\nDer Null-Fall ist einfach: Wir definieren §3 als §4. Nehmen wir nun an, wir wissen\n§5. Was sollte §6 sein? Nun, das sind §7 Kopien von §8,\nalso sollte es §9 sein.\n\nHier sind die Definitionen in Lean.\n\n * §10\n * §11\n\nIn dieser Welt müssen wir nicht nur Fakten über die Multiplikation wie §12 beweisen,\nsondern auch Fakten darüber, wie die Multiplikation mit der Addition zusammenwirkt, wie §13.\nFangen wir an.", + "How about this for a proof:\n§0": "Wie wäre es mit diesem Beweis:\n§0", + "How about this for a proof:\n\n§0\n\nThat's the end of Advanced Addition World! You'll need these theorems\nfor the next world, §1 World. Click on \"Home\" to access it.": + "Wie wäre es mit diesem Beweis:\n\n§0\n\nDas war das Ende der Fortgeschrittenen Additions-Welt! Du wirst diese Sätze\nfür die nächste Welt, die §1-Welt, brauchen. Klicke auf „Home“, um sie zu erreichen.", + "Here's what I was thinking of:\n§0": "Folgendes hatte ich mir überlegt:\n§0", + "Here's the short proof:\n§0\nThis works because, given §1,\nthe argument is reduced to pure logic.": + "Hier ist der kurze Beweis:\n§0\nDas funktioniert, weil sich das Argument, wenn §1 gegeben ist,\nauf reine Logik reduziert.", + "Here's my solution:\n§0\n\nInducting on §1 or §2 also works, but might take longer.": + "Hier ist meine Lösung:\n§0\n\nInduktion über §1 oder §2 funktioniert auch, könnte aber länger dauern.", + "Here's my solution:\n§0": "Hier ist meine Lösung:\n§0", + "Here's my proof:\n§0\n\nIf you solved this level then you should be fine with the next level!": + "Hier ist mein Beweis:\n§0\n\nWenn du dieses Level gelöst hast, dann kommst du auch mit dem nächsten Level gut zurecht!", + "Here's my proof:\n§0\n\nEven though Lean is a theorem prover, right now it's pretty clear that we have not\ndeveloped enough material to make it an adequate calculator. In Algorithm\nWorld, a more computer-sciency world, we will develop machinery which makes\nquestions like this much easier, and goals like §1 feasible.\nAlternatively you can do more mathematics in Advanced Addition World, where we prove\nthe lemmas needed to get a working theory of inequalities. Click \"Home\" and\ndecide your route.": + "Hier ist mein Beweis:\n§0\n\nAuch wenn Lean ein Beweisassistent ist, ist im Moment ziemlich klar, dass wir noch nicht\ngenug Material entwickelt haben, um ihn zu einem brauchbaren Taschenrechner zu machen.\nIn der Algorithmen-Welt, einer eher Informatik-lastigen Welt, werden wir Maschinerie entwickeln, die\nFragen wie diese viel einfacher und Ziele wie §1 erreichbar macht.\nAlternativ kannst du mehr Mathematik in der Fortgeschrittenen Additions-Welt betreiben, wo wir\ndie Lemmata beweisen, die man für eine funktionierende Theorie der Ungleichungen braucht.\nKlicke auf „Home“ und entscheide dich für einen Weg.", + "Here's my proof:\n§0\n\nA passing mathematician remarks that with antisymmetry as well,\nyou have proved that §1 is a *partial order* on §2.\n\nThe boss level of this world is to prove\nthat §3 is a total order. Let's learn two more easy tactics\nfirst.": + "Hier ist mein Beweis:\n§0\n\nEine vorbeikommende Mathematikerin bemerkt, dass du nun auch mit der Antisymmetrie\nbewiesen hast, dass §1 eine *Halbordnung* auf §2 ist.\n\nDer Hauptgegner dieser Welt fordert einen Beweis,\ndass §3 eine Totalordnung ist. Lass uns zuvor noch zwei weitere einfache Taktiken kennen\nlernen.", + "Here's my proof:\n§0": "Hier ist mein Beweis:\n§0", + "Here's a two-liner:\n§0\n\nThis works because §1 is a proof of §2.": + "Hier ist ein Zweizeiler:\n§0\n\nDas funktioniert, weil §1 ein Beweis von §2 ist.", + "Here's a two-line proof:\n§0": "Hier ist ein zweizeiliger Beweis:\n§0", + "Here's a proof using §0:\n§1\n\nand here's an even shorter one using the same idea:\n§2\n\nAlternatively you can just prove it by induction on §3:\n\n§4": + "Hier ist ein Beweis mit §0:\n§1\n\nund hier ist ein noch kürzerer, der dieselbe Idee verwendet:\n§2\n\nAlternativ kannst du es einfach per Induktion über §3 beweisen:\n\n§4", + "Here's a completely backwards proof:\n§0": + "Hier ist ein komplett rückwärts geführter Beweis:\n§0", + "Here we want to deal with the cases §0 and §1 separately,\nso start with §2.": + "Hier wollen wir die Fälle §0 und §1 getrennt behandeln,\nalso beginne mit §2.", + "Here we begin to\ndevelop an algorithm which, given two naturals §0 and §1, returns the answer\nto \"does §2?\"\n\nHere is the algorithm. First note that §3 and §4 are numbers, and hence\nare either §5 or successors.\n\n*) If §6 and §7 are both §8, return \"yes\".\n\n*) If one is §9 and the other is §10, return \"no\".\n\n*) If §11 and §12, then return the answer to \"does §13?\"\n\nOur job now is to *prove* that this algorithm always gives the correct answer. The proof that\n§14 is §15. The proof that §16 is §17, and the proof\nthat §18 is §19. The proof that if §20 then\n§21 is §22 and then §23. This level is a proof of the one\nremaining job we have to do: if §24 then §25.": + "Hier beginnen wir,\neinen Algorithmus zu entwickeln, der zu zwei natürlichen Zahlen §0 und §1 die Antwort\nauf die Frage „gilt §2?“ liefert.\n\nHier ist der Algorithmus. Beachte zunächst, dass §3 und §4 Zahlen sind und daher\nentweder §5 oder Nachfolger sind.\n\n*) Wenn §6 und §7 beide §8 sind, gib „ja“ zurück.\n\n*) Wenn die eine §9 und die andere §10 ist, gib „nein“ zurück.\n\n*) Wenn §11 und §12, dann gib die Antwort auf „gilt §13?“ zurück.\n\nUnsere Aufgabe ist es nun, zu *beweisen*, dass dieser Algorithmus immer die richtige Antwort liefert. Der Beweis\ndafür, dass §14 gilt, ist §15. Der Beweis dafür, dass §16 gilt, ist §17, und der Beweis\ndafür, dass §18 gilt, ist §19. Der Beweis dafür, dass aus §20 die Aussage\n§21 folgt, ist §22 und dann §23. Dieses Level ist ein Beweis der einen\nverbleibenden Aufgabe: wenn §24, dann §25.", + "Here is an example proof of 2+2=4 showing off various techniques.\n\n§0\n\nOptional extra: you can run this proof yourself. Switch the game into \"Editor mode\" by clicking\non the §1 button in the top right. You can now see your proof\nwritten as several lines of code. Move your cursor between lines to see\nthe goal state at any point. Now cut and paste your code elsewhere if you\nwant to save it, and paste the above proof in instead. Move your cursor\naround to investigate. When you've finished, click the §2 button in the top right to\nmove back into \"Typewriter mode\".\n\nYou have finished tutorial world!\nClick \"Home\" to go back to the\noverworld, and select Addition World, where you will learn\nabout the §3 tactic.": + "Hier ist ein Beispielbeweis für 2+2=4, der verschiedene Techniken vorführt.\n\n§0\n\nOptionaler Zusatz: Du kannst diesen Beweis selbst ausführen. Schalte das Spiel in den „Editor-Modus“, indem du\noben rechts auf die Schaltfläche §1 klickst. Du kannst nun deinen Beweis\nals mehrere Codezeilen aufgeschrieben sehen. Bewege deinen Cursor zwischen den Zeilen, um\nden Beweisstand an jeder Stelle zu sehen. Schneide nun deinen Code aus und füge ihn woanders ein, wenn du\nihn speichern willst, und füge stattdessen den obigen Beweis ein. Bewege deinen Cursor,\n um alles zu erkunden. Wenn du fertig bist, klicke oben rechts auf die Schaltfläche §2, um\nin den „Schreibmaschinen-Modus“ zurückzukehren.\n\nDu hast die Tutorial-Welt abgeschlossen!\nKlicke auf „Home“, um zur\nHauptwelt zurückzukehren, und wähle die Additions-Welt, wo du\ndie Taktik §3 kennenlernst.", + "Having to rearrange variables manually using commutativity and\nassociativity is very tedious. We start by reminding you of this. §0\nis a key component in the first algorithm which we'll explain, but we need\nto prove it manually.\n\nRemember that you can do precision commutativity rewriting\nwith things like §1. And remember that\n§2 means §3.": + "Variablen von Hand mit Kommutativität und Assoziativität umzuordnen, ist\nsehr mühsam. Wir beginnen damit, dich daran zu erinnern. Das Lemma §0\nist ein zentraler Bestandteil des ersten Algorithmus, den wir erklären werden,\naber wir müssen es von Hand beweisen.\n\nDenk daran, dass du mit Dingen wie §1 präzise mit Kommutativität\numschreiben kannst. Und denk daran, dass\n§2 für §3 steht.", + "Good luck!\n\n One last hint. If §0 then §1 will change *all* §2s into §3s.\n If you only want to change one of them, say the 3rd one, then use\n §4.": + "Viel Erfolg!\n\n Ein letzter Tipp. Wenn §0, dann ändert §1 *alle* §2 in §3.\n Wenn du nur eines davon ändern möchtest, sagen wir das dritte, dann verwende\n §4.", + "For any natural number §0, we have §1.": + "Für jede natürliche Zahl §0 gilt §1.", + "For all numbers §0, §1.": "Für alle Zahlen §0 gilt §1.", + "For all numbers §0 and §1, we have\n§2": "Für alle Zahlen §0 und §1 gilt\n§2", + "For all naturals §0, §1.": "Für alle natürlichen Zahlen §0 gilt §1.", + "For all naturals §0, §1, §2, we have §3.": + "Für alle natürlichen Zahlen §0, §1, §2 gilt §3.", + "For all naturals §0 §1 §2 and §3, we have\n§4": + "Für alle natürlichen Zahlen §0, §1, §2 und §3 gilt\n§4", + "For all natural numbers §0, we have §1.": + "Für alle natürlichen Zahlen §0 gilt §1.", + "For all natural numbers §0, we have\n§1.": + "Für alle natürlichen Zahlen §0 gilt\n§1.", + "For all natural numbers §0 and §1, we have\n§2.": + "Für alle natürlichen Zahlen §0 und §1 gilt\n§2.", + "First execute §0 to replace the §1 with §2.": + "Führe zuerst §0 aus, um §1 durch §2 zu ersetzen.", + "Finally use a targeted §0 to switch §1 and §2.": + "Verwende schließlich ein gezieltes §0, um §1 und §2 zu vertauschen.", + "Fermat's Last Theorem": "Fermats letzter Satz", + "Every number in Lean is either §0 or a successor. We know how to add §1,\nbut we need to figure out how to add successors. Let's say we already know\nthat §2. What should the answer to §3 be? Well,\n§4 is one bigger than §5, so §6 should be §7,\nthe number one bigger than §8. More generally §9 should\nbe §10. Let's add this as a lemma.\n\n* §11\n\nIf you ever see §12 in your goal, §13 is\nnormally a good idea.\n\nLet's now prove that §14. Figure out how to get §15 into\nthe picture, and then §16. Switch between the §17 (addition) and\n§18 (numerals) tabs under \"Theorems\" on the right to\nsee which proofs you can rewrite.": + "Jede Zahl in Lean ist entweder §0 oder ein Nachfolger. Wir wissen, wie man §1 addiert,\naber wir müssen herausfinden, wie man Nachfolger addiert. Nehmen wir an, wir wissen\nbereits, dass §2 gilt. Was sollte das Ergebnis von §3 sein? Nun,\n§4 ist um eins größer als §5, also sollte §6 gleich §7 sein,\ndie Zahl, die um eins größer als §8 ist. Allgemeiner sollte §9\ngleich §10 sein. Fügen wir dies also als Lemma („kleinen Satz“) hinzu.\n\n* §11\n\nWenn du §12 in deinem Ziel siehst, ist §13\nnormalerweise eine gute Idee.\n\nBeweisen wir nun, dass §14 gilt. Finde heraus, wie du §15 ins\nSpiel bringst, und wende dann §16 an. Wechsle zwischen den Reitern §17 (Addition) und\n§18 (Zahlen) unter „Sätze“ rechts, um zu\nsehen, welche Beweise du zum Umschreiben verwenden kannst.", + "Do that again!\n\n§0 tries to fill in\nthe arguments to §1 (finding §2) then it replaces all occurrences of\n§3 it finds. Therefore, it did not rewrite §4, yet.": + "Mach das noch einmal!\n\nDer Ausdruck §0 versucht, die Argumente für §1 auszufüllen (und findet §2), dann ersetzt es alle\nVorkommen von §3, die es findet. Deswegen hat es §4 noch nicht umgeschrieben.", + "Did you use induction on §0?\nHere's a two-line proof of §1 which uses §2.\nIf you want to inspect it, you can go into \"Editor mode\" by clicking §3 in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click §4 to get\nback to \"Typewriter mode\".\n§5": + "Hast du Induktion über §0 verwendet?\nHier ist ein zweizeiliger Beweis von §1, der §2 verwendet.\nWenn du ihn untersuchen möchtest, kannst du in den „Editor-Modus“ wechseln, indem du oben rechts auf §3 klickst,\nund dann den Beweis einfach kopieren und einfügen und deinen Cursor darin bewegen,\num die Annahmen und das Ziel an jeder beliebigen Stelle zu sehen\n(auch wenn du auf diese Weise deinen eigenen Beweis verlierst). Klicke auf §4, um\nzum „Schreibmaschinen-Modus“ zurückzukehren.\n§5", + "Dealing with §0": "Umgang mit §0", + "Congratulations! You've finished Algorithm World. These algorithms\nwill be helpful for you in Even-Odd World (when someone gets around to\nimplementing it).": + "Glückwunsch! Du hast die Algorithmen-Welt abgeschlossen. Diese Algorithmen\nwerden dir in der Gerade/Ungerade-Welt helfen (sobald jemand dazu kommt,\nsie zu implementieren).", + "Congratulations! You have proved Fermat's Last Theorem!\n\nEither that, or you used magic...": + "Glückwunsch! Du hast Fermats letzten Satz bewiesen!\n\nEntweder das, oder du hast gezaubert …", + "Congratulations! You completed your first verified proof!\n\nRemember that §0 is a *tactic*. If you ever want information about the §1 tactic,\nyou can click on §2 in the list of tactics on the right.\n\nNow click on \"Next\" to learn about the §3 tactic.": + "Glückwunsch! Du hast deinen ersten verifizierten Beweis abgeschlossen!\n\nDenk daran, dass §0 eine *Taktik* ist. Wenn du jemals Informationen über die Taktik §1 möchtest,\nkannst du in der Liste der Taktiken rechts auf §2 klicken.\n\nKlicke nun auf „Weiter“, um die Taktik §3 kennenzulernen.", + "Concretely: §0.": "Konkret: §0.", + "Can you take it from here? Click on \"Show more help!\" if you need a hint.": + "Kommst du ab hier alleine weiter? Klicke auf „Mehr Hilfe“, wenn du einen Tipp brauchst.", + "Can you take it from here? (note: if you try §0 again, it will\ntake you back to where you started!)": + "Kommst du ab hier alleine weiter? (Hinweis: Wenn du §0 noch einmal versuchst,\nlandest du wieder am Anfang!)", + "Can you take it from here?": "Kommst du ab hier alleine weiter?", + "Can you now change the goal into §0?": + "Kannst du das Ziel jetzt in §0 umwandeln?", + "At this point you see the term §0, so you can use the\ninduction hypothesis with §1.": + "An dieser Stelle siehst du den Term §0, also kannst du die\nInduktionsvoraussetzung mit §1 verwenden.", + "Assuming §0, we have §1.": "Unter der Annahme §0 gilt §1.", + "Assuming §0 and §1, we have §2.": "Unter den Annahmen §0 und §1 gilt §2.", + "As warm-up for §0 let's prove §1. To do this we need to\nintroduce Peano's last axiom §2, a proof that §3.\nTo learn about this result, click on it in the list of lemmas on the right.": + "Zum Aufwärmen für §0 beweisen wir §1. Dazu müssen wir\nPeanos letztes Axiom §2 einführen, einen Beweis dafür, dass §3 gilt.\nUm mehr über dieses Resultat zu erfahren, klicke rechts in der Liste der Sätze darauf.", + "Arguing backwards": "Rückwärts argumentieren", + "Applying a proof of §0 to the *goal* changes §1 to §2.\nNow try §3 to make the goal more like the hypothesis.": + "Wendet man einen Beweis von §0 auf das *Ziel* an, ändert sich §1 zu §2.\nVersuche nun §3, um das Ziel der Annahme ähnlicher zu machen.", + "And now §0": "Und jetzt §0", + "And now we've deduced what we wanted to prove: the goal is one of our assumptions.\nFinish the level with §0.": + "Und jetzt haben wir hergeleitet, was wir beweisen wollten: Das Ziel ist eine unserer Annahmen.\nSchließe das Level mit §0 ab.", + "And finally §0.": "Und schließlich §0.", + "An algorithm for equality": "Ein Algorithmus für Gleichheit", + "Although §0 in this game, §1 if §2, i.e., if\n§3 is a successor.": + "Obwohl in diesem Spiel §0 gilt, gilt §1, falls §2, d.h. falls\n§3 ein Nachfolger ist.", + "Algorithm World": "Algorithmen-Welt", + "Advanced Multiplication World": "Fortgeschrittene Multiplikations-Welt", + "Advanced Addition World": "Fortgeschrittene Additions-Welt", + "Advanced *Addition* World proved various implications\ninvolving addition, such as §0 and §1.\nThese lemmas were used to prove basic facts about ≤ in ≤ World.\n\nIn Advanced Multiplication World we prove analogous\nfacts about multiplication, such as §2, and\n§3 (assuming §4 in the latter result). This will prepare\nus for Divisibility World.\n\nMultiplication World is more complex than Addition World. In the same\nway, Advanced Multiplication world is more complex than Advanced Addition\nWorld. One reason for this is that certain intermediate results are only\ntrue under the additional hypothesis that one of the variables is non-zero.\nThis causes some unexpected extra twists.": + "In der Fortgeschrittenen *Additions*-Welt haben wir verschiedene Implikationen bewiesen,\ndie die Addition betreffen, zum Beispiel §0 und §1.\nDiese Lemmata wurden verwendet, um grundlegende Fakten über ≤ in der Ungleichungs-Welt zu beweisen.\n\nIn der Fortgeschrittenen Multiplikations-Welt beweisen wir analoge\nFakten über die Multiplikation, zum Beispiel §2 und\n§3 (wobei wir für das letzte Resultat §4 annehmen). Das bereitet\nuns auf die Teilbarkeits-Welt vor.\n\nDie Multiplikations-Welt ist komplexer als die Additions-Welt. Genauso\nist die Fortgeschrittene Multiplikations-Welt komplexer als die Fortgeschrittene\nAdditions-Welt. Ein Grund dafür ist, dass bestimmte Zwischenresultate nur\nunter der zusätzlichen Annahme wahr sind, dass eine der Variablen ungleich null ist.\nDas führt zu einigen unerwarteten zusätzlichen Wendungen.", + "Addition World": "Additions-Welt", + "Adding zero": "Null addieren", + "A two-line proof is\n\n§0\n\nWe now have all the tools necessary to set up the basic theory of divisibility of naturals.": + "Ein zweizeiliger Beweis ist\n\n§0\n\nWir haben nun alle Werkzeuge, die wir brauchen, um die grundlegende Theorie der Teilbarkeit natürlicher Zahlen aufzubauen.", + "A proof that §0.": "Ein Beweis dafür, dass §0 gilt.", + "A passing mathematician remarks that with reflexivity and transitivity out of the way,\nyou have proved that §0 is a *preorder* on §1.": + "Eine vorbeikommende Mathematikerin bemerkt, dass du, nachdem Reflexivität und Transitivität erledigt sind,\nbewiesen hast, dass §0 eine *Präordnung* auf §1 ist.", + "A passing mathematician notes that you've proved\nthat the natural numbers are a commutative semiring.\n\nIf you want to begin your journey to the final boss, head for Power World.": + "Eine vorbeikommende Mathematikerin bemerkt, dass du bewiesen hast,\ndass die natürlichen Zahlen einen kommutativen Halbring sind.\n\nWenn du deine Reise zum Endgegner des Spiels beginnen willst, mach dich auf zur Potenz-Welt.", + "A passing mathematician congratulates you on proving that naturals\nare an additive commutative monoid.\n\nLet's practice using §0 and §1 in one more level,\nbefore we leave addition world.": + "Eine vorbeikommende Mathematikerin gratuliert dir dazu, bewiesen zu haben, dass die natürlichen Zahlen\nein additives kommutatives Monoid bilden.\n\nLass uns die Verwendung von §0 und §1 in einem weiteren Level üben,\nbevor wir die Additions-Welt verlassen.", + "2+2=4": "2+2=4", + "2 + 2 ≠ 5 is boring to prove in full, given only the tools we have currently.\nTo make it a bit less painful, I have unfolded all of the numerals for you.\nSee if you can use §0 and §1 to prove this.": + "2 + 2 ≠ 5 vollständig zu beweisen ist langweilig, wenn man nur die Werkzeuge hat, die wir momentan haben.\nUm es etwas weniger schmerzhaft zu machen, habe ich alle Zahlen bereits für dich aufgefaltet.\nSchau, ob du §0 und §1 benutzen kannst, um das Ziel zu beweisen.", + "2 + 2 ≠ 5": "2 + 2 ≠ 5", + "1 ≠ 0": "1 ≠ 0", + "0 ≤ x": "0 ≤ x", + "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": + "*Spielversion: 4.3*\n\n*Neueste Ergänzungen: Fehlerbehebungen*\n\n## Fortschritt speichern\n\nDas Spiel speichert deinen Fortschritt im lokalen Speicher deines Browsers.\nWenn du diesen löschst, geht dein Fortschritt verloren!\n\nWarnung: In den meisten Browsern werden beim Löschen von Cookies auch die lokalen\nSpeicherdaten (oder „lokale Websitedaten“) gelöscht. Lade deinen Spielfortschritt vorher unbedingt herunter!\n\n## Mitwirkende\n\n* **Autoren:** Kevin Buzzard, Jon Eugster\n* **Ursprüngliche Lean3-Version:** Kevin Buzzard, Mohammad Pedramfar\n* **Spiel-Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Zusätzliche Level:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Deutsche Übersetzung:** Leonid Ryvkin, Marcus Zibrowius\n* **Weiterer Dank:** allen studentischen Beta-Testerinnen, allen Schulen,\ndie Kevin zu einem Vortrag eingeladen haben, und allen Schulkindern, die ihm Fragen\ngestellt haben.\n\n## Ressourcen\n\n* Das [Lean-Zulip-Chat](https://leanprover.zulipchat.com/)-Forum\n* [Ursprüngliche Lean3-Version](https://github.com/ImperialCollegeLondon/natural_number_game/) (wird nicht mehr aktualisiert)\n\n## Probleme?\n\nBitte stelle alle Fragen zu diesem Spiel im\n[Lean-Zulip-Chat](https://leanprover.zulipchat.com/)-Forum, zum Beispiel im\nStream „New Members“. Die Community hilft dir gerne. Beachte, dass\nder Lean-Zulip-Chat ein professionelles Forschungsforum ist.\nBitte benutze dort deinen vollständigen echten Namen, bleib beim Thema und sei nett. Wenn du\netwas weniger Formelles suchst (z. B. wenn du Memes zu den Zahlenspielen\nposten willst), dann schau im [Lean-Discord](https://discord.gg/WZ9bs9UCvx) vorbei.\n\nAlternativ kannst du, wenn du auf Probleme / Fehler stößt, auch GitHub-Issues öffnen:\n\n* Für Probleme mit der Spiel-Engine öffne bitte ein\n[Issue im lean4game](https://github.com/leanprover-community/lean4game/issues)-Repo.\n* Für Probleme mit dem Inhalt des Spiels öffne bitte ein\n[Issue im NNG](https://github.com/hhu-adam/NNG4/issues)-Repo.", + "## The birth of number.\n\nNumbers in Lean are defined by two rules.\n\n* §0 is a number.\n* If §1 is a number, then the *successor* §2 of §3 is a number.\n\nThe successor of §4 means the number after §5. Let's learn to\ncount, and name a few small numbers.\n\n## Counting to four.\n\n§6 is a number, so §7 is a number. Let's call this new number §8.\nSimilarly let's define §9, §10 and §11.\nThis gives us plenty of numbers to be getting along with.\n\nThe *proof* that §12 is called §13.\nCheck out the \"012\" tab in the list of lemmas on the right\nfor this and other proofs.\n\nLet's prove that §14 is the number after the number after zero.": + "## Die Geburt der Zahlen.\n\nZahlen werden in Lean durch zwei Regeln definiert.\n\n* §0 ist eine Zahl.\n* Wenn §1 eine Zahl ist, dann ist der *Nachfolger* („successor“) §2 von §3 eine Zahl.\n\nDer Nachfolger von §4 ist die Zahl nach §5. Lass uns zählen lernen\nund ein paar kleine Zahlen benennen.\n\n## Zählen bis vier.\n\n§6 ist eine Zahl, also ist §7 eine Zahl. Nennen wir diese neue Zahl §8.\nEbenso definieren wir §9, §10 und §11.\nDas gibt uns reichlich Zahlen, mit denen wir arbeiten können.\n\nDer *Beweis*, dass §12 gilt, heißt §13.\nSieh dir für diesen und andere Beweise den Reiter „012“ in der Liste der Sätze rechts an.\n\nLass uns beweisen, dass §14 die Zahl nach der Zahl nach Null ist.", + "## Summary\n\n§0 repeatedly applies the tactic §1\nto the goal. You don't need to use this\ntactic, it just speeds things up sometimes.\n\n## Example\n\n§2 will turn the goal\n§3\ninto the goal\n§4.\n\"\n\nTacticDoc nth_rewrite \"\n## Summary\n\nIf §5 and there are several §6s in the goal, then\n§7 will just change the third §8 to a §9.\n\n## Example\n\nIf the goal is §10 then §11\nwill change the goal to §12. In contrast, §13\nwill change the goal to §14.": + "## Zusammenfassung\n\n§0 wendet die Taktik §1 wiederholt\nauf das Ziel an. Du musst diese\nTaktik nicht benutzen, sie beschleunigt die Dinge nur manchmal.\n\n## Beispiel\n\n§2 verwandelt das Ziel\n§3\nin das Ziel\n§4.\n„\n\nTacticDoc nth_rewrite “\n## Zusammenfassung\n\nWenn §5 und es mehrere §6 im Ziel gibt, dann\nändert §7 nur das dritte §8 zu einem §9.\n\n## Beispiel\n\nWenn das Ziel §10 ist, dann ändert §11\ndas Ziel zu §12. Im Gegensatz dazu ändert §13\ndas Ziel zu §14.", + "## Summary\n\n§0 repeatedly applies the tactic §1\nto the goal. You don't need to use this\ntactic, it just speeds things up sometimes.\n\n## Example\n\n§2 will turn the goal\n§3\ninto the goal\n§4.": + "## Zusammenfassung\n\n§0 wendet die Taktik §1 wiederholt\nauf das Ziel an. Du musst diese Taktik nicht\nverwenden, sie beschleunigt die Sache manchmal einfach.\n\n## Beispiel\n\n§2 verwandelt das Ziel\n§3\nin das Ziel\n§4.", + "## Summary\n\n§0 proves goals of the form §1.\n\nIn other words, the §2 tactic will close any goal of the\nform §3 if §4 and §5 are *identical*.\n\n§6 is short for \\\\\"reflexivity (of equality)\\\\\".\n\n## Example:\n\nIf the goal looks like this:\n\n§7\n\nthen §8 will close it. But if it looks like §9 then §10 won't work, because even\nthough §11 and §12 are always equal as *numbers*, they are not equal as *terms*.\nThe only term which is identical to §13 is §14.\n\n## Details\n\n§15 is short for \\\\\"reflexivity of equality\\\\\".\n\n## Game Implementation\n\n*Note that our §16 is weaker than the version used in core Lean and §17,\nfor pedagogical purposes; mathematicians do not distinguish between propositional\nand definitional equality because they think about definitions in a different way\nto type theorists (§18 and §19 are both \\\\\"facts\\\\\" as far\nas mathematicians are concerned, and who cares what the definition of addition is).*": + "## Zusammenfassung\n\n§0 beweist Ziele der Form §1.\n\nMit anderen Worten: Die Taktik §2 erreicht jedes Ziel der\nForm §3, wenn §4 und §5 *identisch* sind.\n\n§6 ist die Abkürzung für „Reflexivität (der Gleichheit)“.\n\n## Beispiel:\n\nWenn das Ziel so aussieht:\n\n§7\n\ndann erreichst du es mit §8. Aber wenn es wie §9 aussieht, dann funktioniert §10 nicht, denn obwohl\n§11 und §12 als *Zahlen* immer gleich sind, sind sie als *Terme* nicht gleich.\nDer einzige Term, der identisch mit §13 ist, ist §14.\n\n## Details\n\n§15 ist die Abkürzung für „Reflexivität der Gleichheit“.\n\n## Spielimplementierung\n\n*Beachte, dass unser §16 aus didaktischen Gründen schwächer ist als die Version in\nCore-Lean und §17; Mathematikerinnen unterscheiden nicht zwischen propositionaler\nund definitorischer Gleichheit, weil sie anders über Definitionen nachdenken als\nTyptheoretikerinnen (§18 und §19 sind für Mathematikerinnen beides „Fakten“,\nund wen kümmert es, wie die Definition der Addition lautet).*", + "## Summary\n\nThe §0 tactic will change a goal or hypothesis of\nthe form §1 to §2. It will also work on §3\nand on §4.\n\n### Example\n\nIf the goal is §5 then §6 will change it to §7.\n\n### Example\n\nIf §8 then §9 will change §10 to §11.": + "## Zusammenfassung\n\nDie Taktik §0 ändert ein Ziel oder eine Annahme der\nForm §1 zu §2. Sie funktioniert auch bei §3\nund bei §4.\n\n### Beispiel\n\nWenn das Ziel §5 ist, dann ändert §6 es zu §7.\n\n### Beispiel\n\nWenn §8, dann ändert §9 den Ausdruck §10 zu §11.", + "## Summary\n\nThe §0 tactic makes progress with goals which claim something *exists*.\nIf the goal claims that some §1 exists with some property, and you know\nthat §2 will work, then §3 will make progress.\n\nBecause §4 is notation for \\\\\"there exists §5 such that §6\\\\\",\nyou can make progress on goals of the form §7 by §8ing the\nnumber which is morally §9 (i.e. §10)\n\nAny of the following examples is possible assuming the type of the argument passed to the §11 function is accurate:\n\n- §12\n- §13\n- §14": + "## Zusammenfassung\n\nDie Taktik §0 macht Fortschritte bei Zielen, die behaupten, dass etwas *existiert*.\nWenn das Ziel behauptet, dass ein §1 mit einer bestimmten Eigenschaft existiert, und du weißt,\ndass §2 funktioniert, dann macht §3 Fortschritte.\n\nDa §4 eine Notation ist für „es existiert ein §5, sodass §6“ gilt,\nkannst du bei Zielen der Form §7 Fortschritte machen, indem du §8 auf die\nZahl anwendest, die im Grunde §9 ist (d. h. §10)\n\nJedes der folgenden Beispiele ist möglich, sofern der Typ des Arguments, das an die Funktion §11 übergeben wird, korrekt ist:\n\n- §12\n- §13\n- §14", + "## Summary\n\nIf §0 is an object, and the goal mentions §1, then §2\nattempts to prove the goal by induction on §3, with the inductive\nvariable in the successor case being §4, and the inductive hypothesis being §5.\n\n### Example:\nIf the goal is\n§6\n\nthen\n\n§7\n\nwill turn it into two goals. The first is §8;\nthe second has an assumption §9 and goal\n§10.\n\nNote that you must prove the first\ngoal before you can access the second one.": + "## Zusammenfassung\n\nWenn §0 ein Objekt ist und das Ziel §1 enthält, dann versucht §2,\ndas Ziel per Induktion über §3 zu beweisen, wobei die Induktionsvariable\nim Nachfolgerfall §4 ist und die Induktionsvoraussetzung §5 lautet.\n\n### Beispiel:\nWenn das Ziel\n§6\n\nlautet, dann verwandelt\n\n§7\n\nes in zwei Ziele. Das erste ist §8;\ndas zweite hat eine Annahme §9 und das Ziel\n§10.\n\nBeachte, dass du das erste\nZiel beweisen musst, bevor du auf das zweite zugreifen kannst.", + "## Summary\n\nIf §0 is a proof that §1, and §2 is a proof of §3,\nthen §4 will change §5 to a proof of §6. The idea is that if\nyou know §7 is true, then you can deduce from §8 that §9 is true.\n\nIf the *goal* is §10, then §11 will \\\\\"argue backwards\\\\\" and change the\ngoal to §12. The idea here is that if you want to prove §13, then by §14\nit suffices to prove §15, so you can reduce the goal to proving §16.\n\n### Example:\n\n§17 is a proof that §18.\n\nSo if you have a hypothesis §19\nthen §20 will change §21 to §22.\nYou could write §23\nbut Lean is smart enough to figure out the inputs to §24.\n\n### Example\n\nIf the goal is §25, then §26 will turn the\ngoal into §27.": + "## Zusammenfassung\n\nWenn §0 ein Beweis dafür ist, dass §1 gilt, und §2 ein Beweis von §3 ist,\ndann macht §4 aus §5 einen Beweis von §6. Die Idee ist: Wenn\ndu weißt, dass §7 wahr ist, dann kannst du aus §8 folgern, dass §9 wahr ist.\n\nWenn das *Ziel* §10 ist, dann wird §11 „rückwärts argumentieren“ und das\nZiel zu §12 ändern. Die Idee dabei ist: Wenn du §13 beweisen willst, dann genügt es nach §14,\n§15 zu beweisen, sodass du das Ziel darauf reduzieren kannst, §16 zu beweisen.\n\n### Beispiel:\n\n§17 ist ein Beweis dafür, dass §18 gilt.\n\nWenn du also eine Annahme §19 hast,\ndann verwandelt §20 die Annahme §21 in §22.\nDu könntest §23 schreiben,\naber Lean ist schlau genug, um die Argumente für §24 selbst herauszufinden.\n\n### Beispiel\n\nWenn das Ziel §25 ist, dann macht §26 aus dem\nZiel §27.", + "## Summary\n\nIf §0 is a proof of an equality §1, then §2 will change\nall §3s in the goal to §4s. It's the way to \\\\\"substitute in\\\\\".\n\n## Variants\n\n* §5 (changes §6s to §7s; get the back arrow by typing §8 or §9.)\n\n* §10 (a sequence of rewrites)\n\n* §11 (changes §12s to §13s in hypothesis §14)\n\n* §15 (changes §16s to §17s in two hypotheses and the goal;\nget the §18 symbol with §19.)\n\n* §20 will keep changing §21 to §22\nuntil there are no more matches for §23.\n\n* §24 will change only the second §25 in the goal to §26.\n\n### Example:\n\nIf you have the assumption §27 and your goal is\n§28\n\nthen\n\n§29\n\nwill change the goal into §30, and then\n\n§31\n\nwill change the goal into §32, which\ncan be solved with §33.\n\n### Example:\n\nYou can use §34 to change a hypothesis as well.\nFor example, if you have two hypotheses\n§35\nthen §36 will turn §37 into §38.\n\n## Common errors\n\n* You need the square brackets. §39 is never correct.\n\n* If §40 is not a *proof* of an *equality* (a statement of the form §41),\nfor example if §42 is a function or an implication,\nthen §43 is not the tactic you want to use. For example,\n§44 is never correct: §45 is the theorem *statement*,\nnot the proof. If §46 is the proof, then §47 will work.\n\n## Details\n\nThe §48 tactic is a way to do \\\\\"substituting in\\\\\". There\nare two distinct situations where you can use this tactic.\n\n1) Basic usage: if §49 is an assumption or\nthe proof of a theorem, and if the goal contains one or more §50s, then §51\nwill change them all to §52s. The tactic will error\nif there are no §53s in the goal.\n\n2) Advanced usage: Assumptions coming from theorem proofs\noften have missing pieces. For example §54\nis a proof that §55 because §56 really is a function,\nand §57 is the input. In this situation §58 will look through the goal\nfor any subterm of the form §59, and the moment it\nfinds one it fixes §60 to be §61 then changes all §62s to §63s.\n\nExercise: think about why §64 changes the term\n§65 to\n§66\n\nIf you can't remember the name of the proof of an equality, look it up in\nthe list of lemmas on the right.\n\n## Targeted usage\n\nIf your goal is §67 and you want to rewrite §68\nto §69, then §70 will not work because Lean finds another\naddition first and swaps those inputs instead. Use §71 to\nguarantee that Lean rewrites §72 to §73. This works because\n§74 is a proof that §75, §76 is a proof\nthat §77, and §78 is a proof that §79.\n\nIf §80 then §81 will turn all §82s into §83s.\nIf you only want to change the 37th occurrence of §84\nto §85 then do §86.": + "## Zusammenfassung\n\nWenn §0 ein Beweis einer Gleichheit §1 ist, dann ersetzt §2\nalle §3 im Ziel durch §4. So „setzt man ein“.\n\n## Varianten\n\n* §5 (ändert §6 zu §7; den Rückwärtspfeil bekommst du, indem du §8 oder §9 tippst.)\n\n* §10 (eine Folge von `rw`-Schritten)\n\n* §11 (ändert §12 zu §13 in der Annahme §14)\n\n* §15 (ändert §16 zu §17 in zwei Annahmen und im Ziel;\ndas Symbol §18 bekommst du mit §19.)\n\n* §20 ändert wiederholt §21 zu §22,\nbis §23 nicht mehr vorkommt.\n\n* §24 ändert nur das zweite §25 im Ziel zu §26.\n\n### Beispiel:\n\nWenn du die Annahme §27 hast und dein Ziel\n§28\n\nist, dann ändert\n\n§29\n\ndas Ziel zu §30, und dann ändert\n\n§31\n\ndas Ziel zu §32, was\nmit §33 erreicht werden kann.\n\n### Beispiel:\n\nDu kannst §34 auch verwenden, um eine Annahme zu ändern.\nWenn du zum Beispiel zwei Annahmen\n§35\nhast, dann wandelt §36 die Annahme §37 in §38 um.\n\n## Häufige Fehler\n\n* Du brauchst die eckigen Klammern. §39 ist niemals korrekt.\n\n* Wenn §40 kein *Beweis* einer *Gleichheit* ist (eine Aussage der Form §41),\nzum Beispiel wenn §42 eine Funktion oder eine Implikation ist,\ndann ist §43 nicht die Taktik, die du verwenden willst. Zum Beispiel\nist §44 niemals korrekt: §45 ist die *Aussage* des Satzes,\nnicht der Beweis. Wenn §46 der Beweis ist, dann funktioniert §47.\n\n## Details\n\nDie Taktik §48 ist eine Möglichkeit, „einzusetzen“. Es\ngibt zwei verschiedene Situationen, in denen du diese Taktik verwenden kannst.\n\n1) Grundlegende Verwendung: Wenn §49 eine Annahme oder\nder Beweis eines Satzes ist und das Ziel ein oder mehrere §50 enthält, dann\nwird §51 sie alle in §52 ändern. Die Taktik gibt einen Fehler aus,\nwenn es keine §53 im Ziel gibt.\n\n2) Fortgeschrittene Verwendung: Annahmen, die aus Beweisen von Sätzen stammen,\nhaben oft fehlende Teile. Zum Beispiel ist §54\nein Beweis dafür, dass §55 gilt, weil §56 wirklich eine Funktion\nund §57 ihr Argument ist. In dieser Situation durchsucht §58 das Ziel\nnach einem beliebigen Teilterm der Form §59, und sobald es\neinen findet, legt es §60 als §61 fest und ändert dann alle §62 in §63.\n\nÜbung: Überlege, warum §64 den Term\n§65 in\n§66 ändert\n\nWenn du dir den Namen des Beweises einer Gleichheit nicht merken kannst, dann schlage ihn\nin der Liste der Sätze rechts nach.\n\n## Gezielte Verwendung\n\nWenn dein Ziel §67 ist und du §68\nzu §69 umschreiben willst, dann wird §70 nicht funktionieren, weil Lean zuerst eine andere\nAddition findet und stattdessen deren Argumente vertauscht. Verwende §71, um\nzu garantieren, dass Lean §72 zu §73 umschreibt. Das funktioniert, weil\n§74 ein Beweis dafür ist, dass §75 gilt, §76 ein Beweis dafür ist,\ndass §77 gilt, und §78 ein Beweis dafür ist, dass §79 gilt.\n\nWenn du §80 hast, dann verwandelt §81 alle §82 in §83.\nWenn du nur das 37. Vorkommen von §84\nzu §85 ändern willst, dann führe §86 aus.", + "## Summary\n\nIf §0 is a number, then §1 will break the goal into two goals,\none with §2 and the other with §3.\n\nIf §4 is a proof (for example a hypothesis), then §5 will break the\nproof up into the pieces used to prove it.\n\n## Example\n\nIf §6 is a number, then §7 will break the goal into two goals,\none with §8 replaced by 0 and the other with §9 replaced by §10. This\ncorresponds to the mathematical idea that every natural number is either §11\nor a successor.\n\n## Example\n\nIf §12 is a hypothesis, then §13 will turn one goal\ninto two goals, one with a hypothesis §14 and the other with a\nhypothesis §15.\n\n## Example\n\nIf §16 is a hypothesis, then §17 will turn one goal into no goals,\nbecause there are no ways to make a proof of §18! And if you have no goals left,\nyou have finished the level.\n\n## Example\n\nIf §19 is a hypothesis, then §20 will create a new number §21\nand a proof §22. This is because the *definition* of §23 is\n§24.": + "## Zusammenfassung\n\nWenn §0 eine Zahl ist, dann zerlegt §1 das Ziel in zwei Ziele,\neines mit §2 und das andere mit §3.\n\nWenn §4 ein Beweis ist (zum Beispiel eine Annahme), dann zerlegt ihn §5 in seine Bestandteile.\n\n## Beispiel\n\nWenn §6 eine Zahl ist, dann zerlegt §7 das Ziel in zwei Ziele,\neines, in dem §8 durch 0 ersetzt ist, und das andere, in dem §9 durch §10 ersetzt ist. Das\nentspricht der mathematischen Idee, dass jede natürliche Zahl entweder §11\noder ein Nachfolger ist.\n\n## Beispiel\n\nWenn §12 eine Annahme ist, dann macht §13 aus einem Ziel\nzwei Ziele, eines mit einer Annahme §14 und das andere mit einer\nAnnahme §15.\n\n## Beispiel\n\nWenn §16 eine Annahme ist, dann macht §17 aus einem Ziel gar kein Ziel mehr,\ndenn es gibt keine Möglichkeit, einen Beweis von §18 zu erzeugen! Und wenn du keine Ziele mehr übrig hast,\nhast du das Level abgeschlossen.\n\n## Beispiel\n\nWenn §19 eine Annahme ist, dann erzeugt §20 eine neue Zahl §21\nund einen Beweis §22. Das liegt daran, dass die *Definition* von §23 gerade\n§24 ist.", + "## Summary\n\nIf §0 and there are several §1s in the goal, then\n§2 will just change the third §3 to a §4.\n\n## Example\n\nIf the goal is §5 then §6\nwill change the goal to §7. In contrast, §8\nwill change the goal to §9.": + "## Zusammenfassung\n\nWenn §0 gilt und im Ziel mehrere §1 vorkommen, dann\nändert §2 nur das dritte §3 in ein §4.\n\n## Beispiel\n\nWenn das Ziel §5 ist, dann ändert §6\ndas Ziel in §7. Im Gegensatz dazu ändert §8\ndas Ziel in §9.", + "## Summary\n\nIf the goal is §0, then §1 will introduce §2 as a hypothesis,\nand change the goal to §3. Mathematically, it says that to prove §4,\nwe can assume §5 and then prove §6.\n\n### Example:\n\nIf your goal is §7 (the way Lean writes §8)\nthen §9 will give you a hypothesis §10 named §11, and the goal\nwill change to §12.": + "## Zusammenfassung\n\nWenn das Ziel §0 ist, dann führt §1 als Annahme §2 ein\nund ändert das Ziel zu §3. Mathematisch bedeutet es, dass wir, um §4 zu beweisen,\n§5 annehmen und dann §6 beweisen können.\n\n### Beispiel:\n\nWenn dein Ziel §7 ist (Lean schreibt dafür §8),\ndann gibt dir §9 eine Annahme §10 namens §11, und das Ziel\nwird sich zu §12 ändern.", + "## Summary\n\nIf the goal is a statement §0, then §1 will close the goal if §2 is a proof of §3.\n\n### Example\n\nIf the goal is §4 and you have a hypothesis §5\nthen §6 will solve the goal.\n\n### Example\n\nIf the goal is §7 then §8 will close the goal.\n\n### Exact needs to be exactly right\n\nNote that §9 will *not work* in the previous example;\nfor §10 to work, §11 has to be *exactly* a proof of the goal.\n§12 is a proof of §13 or, if you like,\na proof of §14 where §15 needs to be supplied by the user.\nThis is in contrast to §16 and §17, which will \\\\\"guess the inputs\\\\\"\nif necessary. If the goal is §18 then §19\nand §20 will both change the goal to §21,\nbecause §22 guesses the input to the function §23.": + "## Zusammenfassung\n\nWenn das Ziel eine Aussage §0 ist, dann erreicht §1 das Ziel, falls §2 ein Beweis von §3 ist.\n\n### Beispiel\n\nWenn das Ziel §4 ist und du eine Annahme §5 hast,\ndann erreicht §6 das Ziel.\n\n### Beispiel\n\nDu erreichst das Ziel §7 mit §8.\n\n### `exact` heißt exakt\n\nBeachte, dass §9 im vorherigen Beispiel *nicht funktioniert*;\ndamit §10 funktioniert, muss §11 *exakt* ein Beweis des Ziels sein.\n§12 ist ein Beweis von §13 oder, wenn du magst,\nein Beweis von §14, wobei §15 von der Nutzerin angegeben werden muss.\nDies steht im Gegensatz zu §16 und §17, die die „Argumente erraten“,\nfalls nötig. Wenn das Ziel §18 ist, dann ändern §19\nund §20 beide das Ziel zu §21,\nweil §22 das Argument für die Funktion §23 errät.", + "## Precision rewriting\n\nIn the last level, there was §0 and §1,\nand §2 changed the first one it saw,\nwhich was §3. Let's learn how to tell Lean\nto change §4 first by giving §5 an\nexplicit input.": + "## Präzises Umschreiben\n\nIm letzten Level gab es §0 und §1,\nund §2 hat das erste davon geändert, dem es begegnet ist,\nnämlich §3. Lass uns lernen, wie man Lean sagt,\ndass es zuerst §4 ändern soll, indem man §5 ein\nexplizites Argument gibt.", + "# Welcome to the Natural Number Game\n#### An introduction to mathematical proof.\n\nIn this game, we will build the basic theory of the natural\nnumbers §0 from scratch. Our first goal is to prove\nthat §1. Next we'll prove that §2.\nAnd at the end we'll see if we can prove Fermat's Last Theorem.\nWe'll do this by solving levels of a computer puzzle game called Lean.\n\n# Read this.\n\nLearning how to use an interactive theorem prover takes time.\nTests show that the people who get the most out of this game are\nthose who read the help texts like this one.\n\nTo start, click on \"Tutorial World\".\n\nNote: this is a new Lean 4 version of the game containing several\nworlds which were not present in the old Lean 3 version. More new worlds\nsuch as Strong Induction World, Even/Odd World and Prime Number World\nare in development; if you want to see their state or even help out, checkout\nout the [issues in the github repo](https://github.com/leanprover-community/NNG4/issues).\n\n## More\n\nClick on the three lines in the top right and select \"Game Info\" for resources,\nlinks, and ways to interact with the Lean community.": + "# Willkommen bei den Zahlenspielen!\n#### Eine Einführung in mathematische Beweise.\n\nIn diesem Spiel entwickeln wir von Grund auf die elementare Theorie der natürlichen\nZahlen §0. Unser erstes Ziel ist es, zu beweisen,\ndass §1 gilt. Als Nächstes beweisen wir, dass §2 gilt.\nUnd am Ende schauen wir, ob wir Fermats letzten Satz beweisen können.\nDas machen wir, indem wir Level eines Computer-Rätselspiels namens Lean lösen.\n\n# Lesen hilft.\n\nZu lernen, wie man einen interaktiven Beweisassistenten benutzt, braucht Zeit.\nUntersuchungen zeigen, dass diejenigen am meisten von diesem Spiel profitieren,\ndie Hilfetexte wie diesen hier lesen.\n\nKlicke zum Starten auf „Tutorial-Welt“.\n\nBeachte: Dies ist eine neue Lean-4-Version des Spiels mit mehreren\nWelten, die es in der alten Lean-3-Version nicht gab. Weitere neue Welten,\nz. B. eine Starke-Induktions-Welt, eine Gerade/Ungerade-Welt und eine Primzahlen-Welt\nsind in Entwicklung. Wenn du ihren Fortschritt sehen oder sogar bei ihrer Entwicklung mithelfen möchtest, schau dir\ndie [Issues im GitHub-Repository](https://github.com/leanprover-community/NNG4/issues) an.\n\n## Mehr\n\nKlicke oben rechts auf die drei Striche und wähle „Spielinfo“ für Ressourcen,\nLinks und Möglichkeiten, mit der Lean-Community zu interagieren.", + "# Summary\nThe §0 tactic changes a goal of §1 into a goal of §2.\nUse it when your hypotheses guarantee that the reason that §3\nis true is because in fact §4 is true.\n\nInternally this tactic is just §5ing a theorem\nsaying that §6\n\nNote that this tactic can turn a solvable goal into an unsolvable\none.": + "# Zusammenfassung\nDie Taktik §0 verwandelt ein Ziel §1 in §2.\nBenutze sie, wenn deine Annahmen garantieren, dass §3\nnur deshalb wahr ist, weil in Wirklichkeit §4 wahr ist.\n\nIntern wendet diese Taktik im Grunde nur §5 auf einen Satz an,\nder besagt, dass §6\n\nBeachte, dass diese Taktik ein beweisbares Ziel in ein unbeweisbares\nverwandeln kann.", + "# Summary\n\n§0 will solve the goal §1.": + "# Zusammenfassung\n\n§0 erreicht das Ziel §1.", + "# Summary\n\n§0 will attempt to solve a goal if it can find an algorithm which it\ncan run to solve it.\n\n## Example\n\nA term of type §1 is an algorithm to decide whether two naturals\nare equal or different. Hence, once this term is made and made into an §2,\nthe §3 tactic can use it to solve goals of the form §4 or §5.": + "# Zusammenfassung\n\nDie Taktik §0 versucht, ein Ziel zu erreichen, sofern sie einen geeigneten Algorithmus findet, den sie\ndazu ausführen kann.\n\n## Beispiel\n\nEin Term vom Typ §1 ist ein Algorithmus, der entscheidet, ob zwei natürliche\nZahlen gleich oder verschieden sind. Sobald solch ein Term definiert und als §2 registriert\nwurde, kann die Taktik §3 ihn benutzen, um Ziele der Form §4 oder §5 zu erreichen.", + "# Summary\n\nThe §0 tactic will solve any goal which can be solved purely by logic (that is, by\ntruth tables).\n\n## Details\n\n§1 *does not do magic*! It doesn't know *anything* about addition or multiplication,\nit doesn't even know §2. The only things that §3 knows about numbers\nare firstly that §4 and secondly that §5, §6, §7 and so on.\nWhat §8's strength is, is *logic*. If you have a hypothesis §9\nand another hypothesis §10 and your goal is §11 then §12 will\nsolve this goal, because to solve that goal you don't need to know any facts\nabout inequalities or addition, all you need to know is the rules of logic.\n\n## Example\n\nIf you have §13 as a hypothesis, then §14 will solve\nthe goal. This is because a false hypothesis implies any hypothesis.\n\n## Example\n\nIf your goal is §15, then §16 will solve the goal.\n\n## Example\n\nIf you have two hypotheses §17 and §18 then §19 will\nsolve the goal because it can prove §20 from your hypotheses, and thus\nprove the goal (as §21 implies anything).\n\n## Example\n\nIf you have one hypothesis §22 then §23 will solve the goal because\n§24 is smart enough to know that §25 is true, which gives the contradiction we seek.\n\n## Example\n\nIf you have a hypothesis §26 then §27 will solve the goal, because\n§28 knows §29 and this is enough to prove §30, which implies any goal.\n\n## Example\n\nIf you have a hypothesis of the form §31 and your goal is §32, then\n§33 will solve the goal, because the goal is logically equivalent to the hypothesis.\nIf you switch the goal and hypothesis in this example, §34 would solve it too.": + "# Zusammenfassung\n\nDie Taktik §0 erreicht jedes Ziel, das sich rein logisch folgern lässt (also mit\nWahrheitstafeln).\n\n## Details\n\n§1 *kann nicht zaubern*! Es weiß *nichts* über Addition oder Multiplikation,\nes kennt nicht einmal §2. Das Einzige, was §3 über Zahlen weiß, ist\nerstens, dass §4 gilt, und zweitens, dass §5, §6, §7 und so weiter gelten.\nDie Stärke von §8 ist die *Logik*. Wenn du eine Annahme §9\nund eine weitere Annahme §10 hast, dann erreichst du das Ziel §11 mit §12,\ndenn um dorthin zu gelangen, musst du nichts\nüber Ungleichungen oder Addition wissen – du musst nur die Regeln der Logik beherrschen.\n\n## Beispiel\n\nWenn du §13 als Annahme hast, erreichst du jedes Ziel mit §14.\nDas liegt daran, dass eine falsche Annahme jede Annahme impliziert.\n\n## Beispiel\n\nWenn §15 dein Ziel ist, erreichst du es mit §16.\n\n## Beispiel\n\nWenn du zwei Annahmen §17 und §18 hast, dann erreichst du mit §19\njedes Ziel, denn diese Taktik kann §20 aus deinen Annahmen und damit\ndas Ziel beweisen (da §21 alles impliziert).\n\n## Beispiel\n\nWenn du eine Annahme §22 hast, dann erreichst du mit §23 jedes Ziel, denn\n§24 ist schlau genug, um zu wissen, dass §25 wahr ist, was den gesuchten Widerspruch liefert.\n\n## Beispiel\n\nWenn du eine Annahme §26 hast, dann erreichst du mit §27 jedes Ziel, denn\n§28 kennt §29, und das genügt, um §30 zu beweisen, welches jedes Ziel impliziert.\n\n## Beispiel\n\nWenn du eine Annahme der Form §31 hast und dein Ziel §32 ist, dann\nerreichst du mit §33 das Ziel, denn das Ziel ist logisch äquivalent zur Annahme.\nWenn du in diesem Beispiel Ziel und Annahme vertauschst, würde §34 das Ziel ebenfalls erreichen.", + "# Summary\n\nThe §0 tactic can be used to add new hypotheses to a level, but of course\nyou have to prove them.\n\n\n## Example\n\nThe simplest usage is like this. If you have §1 in your context and you execute\n\n§2\n\nthen you will get a new goal §3 to prove, and after you've proved\nit you will have a new hypothesis §4 in your original goal.\n\n## Example\n\nIf you already have a proof of what you want to §5, you\ncan just create it immediately. For example, if you have §6 and §7\nnumber objects, then\n\n§8\n\nwill directly add a new hypothesis §9\nto the context, because you just supplied the proof of it (§10).\n\n## Example\n\nIf you have a proof to hand, then you don't even need to state what you\nare proving. For example\n\n§11\n\nwill add §12 as a hypothesis.": + "# Zusammenfassung\n\nDie §0-Taktik kann verwendet werden, um einem Level neue Annahmen\nhinzuzufügen, aber natürlich musst du diese dann beweisen.\n\n\n## Beispiel\n\nDie einfachste Verwendung sieht so aus. Wenn du §1 in deinem Kontext hast und\n\n§2\n\nausführst, musst du ein neues Ziel §3 beweisen, und nachdem du es\nbewiesen hast, hast du eine neue Annahme §4 in deinem ursprünglichen Ziel.\n\n## Beispiel\n\nWenn du bereits einen Beweis dessen hast, was du mittels §5 als Annahme\nhinzufügen möchtest, kannst du sie einfach sofort erzeugen.\nWenn du zum Beispiel §6 und §7 als Zahl-Objekte hast, dann fügt\n\n§8\n\ndirekt eine neue Annahme §9\nzum Kontext hinzu, weil du gerade den Beweis für sie geliefert hast (§10).\n\n## Beispiel\n\nWenn du einen Beweis parat hast, musst du nicht einmal angeben, was du\nbeweist. Zum Beispiel fügt\n\n§11\n\n§12 als Annahme hinzu.", + "# Summary\n\nIf you have a hypothesis\n\n§0\n\nand goal\n\n§1\n\nthen §2 replaces the set-up with its so-called \\\\\"contrapositive\\\\\":\na hypothesis\n\n§3\n\nand goal\n\n§4.": + "# Zusammenfassung\n\nWenn du eine Annahme\n\n§0\n\nund ein Ziel\n\n§1\n\nhast, dann ersetzt §2 den Aufbau durch seine sogenannte „Kontraposition“:\neine Annahme\n\n§3\n\nund ein Ziel\n\n§4.", + "# Statement\n\nIf §0 and §1 are numbers, then\n§2 is the proof that\n§3.\n\n## More technical details\n\nThere are other ways to think about §4.\n\nYou can think about §5 itself as a function which takes two\nnumbers §6 and §7 as input, and outputs a proof of\n§8.\n\nYou can think of §9 itself as a proof; it is the proof\nthat §10 is an injective function. In other words,\n§11 is a proof of\n§12.\n\n§13 was postulated as an axiom by Peano, but\nin Lean it can be proved using §14, a mathematically\npathological function.": + "# Aussage\n\nWenn §0 und §1 Zahlen sind, dann\nist §2 der Beweis dafür, dass\n§3 gilt.\n\n## Weitere technische Details\n\nEs gibt andere Möglichkeiten, über §4 nachzudenken.\n\nDu kannst dir §5 selbst als eine Funktion vorstellen, die zwei\nZahlen §6 und §7 als Argumente erwartet und einen Beweis für\n§8 liefert.\n\nDu kannst dir §9 selbst als einen Beweis vorstellen; es ist der Beweis\ndafür, dass §10 eine injektive Funktion ist. Mit anderen Worten:\n§11 ist ein Beweis von\n§12.\n\n§13 wurde von Peano als Axiom postuliert, aber\nin Lean kann es mithilfe von §14 bewiesen werden, einer mathematisch\npathologischen Funktion.", + "# Read this first\n\nEach level in this game involves proving a mathematical theorem (the \"Goal\").\nThe goal will be a statement about *numbers*. Some numbers in this game have known values.\nThose numbers have names like §0. Other numbers will be secret. They're called things\nlike §1 and §2. We know §3 is a number, we just don't know which one.\n\nIn this first level we're going to prove the theorem that §4.\nYou can see §5 in the *Objects* below, which means that §6 and §7\nare numbers.\n\nWe solve goals in Lean using *Tactics*, and the first tactic we're\ngoing to learn is called §8, which proves all theorems of the form §9.\n\nProve that §10 by executing the §11 tactic.": + "# Lies zuerst das hier\n\nIn jedem Level dieses Spiels geht es darum, einen mathematischen Satz zu beweisen (das „Ziel“ oder „Beweisziel“).\nDas Ziel ist eine Aussage über *Zahlen*. Einige Zahlen in diesem Spiel haben bekannte Werte.\nDiese Zahlen haben Namen wie §0. Andere Zahlen sind geheim. Sie heißen zum Beispiel\n§1 und §2. Wir wissen, dass §3 eine Zahl ist, wir wissen nur nicht, welche.\n\nIn diesem ersten Level werden wir den Satz beweisen, dass §4 gilt.\nDu kannst §5 unten bei den *Objekten* sehen, was bedeutet, dass §6 und §7\nZahlen sind.\n\nWir erreichen Ziele in Lean mithilfe von *Taktiken*, und die erste Taktik, die wir\nlernen werden, heißt §8. Sie beweist alle Sätze der Form §9.\n\nBeweise, dass §10 gilt, indem du die Taktik §11 ausführst.", + "# Overview\n\nOur home-made tactic §0 will solve arbitrary goals of\nthe form §1.": + "# Überblick\n\nUnsere selbstgebaute Taktik §0 erreicht beliebige Ziele\nder Form §1.", + "# Overview\n\nLean's simplifier, §0, will rewrite every lemma\ntagged with §1 and every lemma fed to it by the user, as much as it can.\nFurthermore, it will attempt to order variables into an internal order if fed\nlemmas such as §2, so that it does not go into an infinite loop.": + "# Überblick\n\nLeans Vereinfacher §0 schreibt mittels jedem mit §1\nmarkierten Lemma sowie jedem von der Nutzerin übergebenen Lemma so weit um, wie es geht.\nAußerdem versucht er, Variablen in eine interne Reihenfolge zu bringen, wenn ihm\nLemmata wie §2 übergeben werden, damit er nicht in eine Endlosschleife gerät."} \ No newline at end of file diff --git a/.i18n/de/Game.po b/.i18n/de/Game.po new file mode 100644 index 00000000..3668e01f --- /dev/null +++ b/.i18n/de/Game.po @@ -0,0 +1,6818 @@ +# SPDX-FileCopyrightText: 2026 leo +msgid "" +msgstr "" +"Project-Id-Version: Game v4.23.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-09-11\n" +"PO-Revision-Date: 2026-10-05 18:31+0200\n" +"Last-Translator: leo \n" +"Language-Team: English \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.9\n" + +#: Game.Levels.LessOrEqual.L10le_one +msgid "x ≤ 1" +msgstr "x ≤ 1" + +#. §0: `tauto` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "§0 is good enough to solve this goal." +msgstr "§0 genügt, um dieses Ziel zu erreichen." + +#: Game.Levels.Multiplication.L09mul_assoc +msgid "mul_assoc" +msgstr "mul_assoc" + +#. §0: $a$ +#. §1: $b$ +#. §2: `succ_inj a b` +#. §3: $ (\\operatorname{succ}(a) = \\operatorname{succ}(b)) \\implies a=b$ +#. §4: `succ_inj` +#. §5: `succ_inj` +#. §6: $$a$$ +#. §7: $$b$$ +#. §8: $ ( \\operatorname{succ}(a) = \\operatorname{succ}(b)) \\implies a=b$ +#. §9: `succ_inj` +#. §10: `succ` +#. §11: `succ_inj` +#. §12: $\\forall a, b \\in \\mathbb{N}, ( \\operatorname{succ}(a) = \\operatorname{succ}(b)) \\implies a=b$ +#. §13: `succ_inj` +#. §14: `pred` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"# Statement\n" +"\n" +"If §0 and §1 are numbers, then\n" +"§2 is the proof that\n" +"§3.\n" +"\n" +"## More technical details\n" +"\n" +"There are other ways to think about §4.\n" +"\n" +"You can think about §5 itself as a function which takes two\n" +"numbers §6 and §7 as input, and outputs a proof of\n" +"§8.\n" +"\n" +"You can think of §9 itself as a proof; it is the proof\n" +"that §10 is an injective function. In other words,\n" +"§11 is a proof of\n" +"§12.\n" +"\n" +"§13 was postulated as an axiom by Peano, but\n" +"in Lean it can be proved using §14, a mathematically\n" +"pathological function." +msgstr "" +"# Aussage\n" +"\n" +"Wenn §0 und §1 Zahlen sind, dann\n" +"ist §2 der Beweis dafür, dass\n" +"§3 gilt.\n" +"\n" +"## Weitere technische Details\n" +"\n" +"Es gibt andere Möglichkeiten, über §4 nachzudenken.\n" +"\n" +"Du kannst dir §5 selbst als eine Funktion vorstellen, die zwei\n" +"Zahlen §6 und §7 als Argumente erwartet und einen Beweis für\n" +"§8 liefert.\n" +"\n" +"Du kannst dir §9 selbst als einen Beweis vorstellen; es ist der Beweis\n" +"dafür, dass §10 eine injektive Funktion ist. Mit anderen Worten:\n" +"§11 ist ein Beweis von\n" +"§12.\n" +"\n" +"§13 wurde von Peano als Axiom postuliert, aber\n" +"in Lean kann es mithilfe von §14 bewiesen werden, einer mathematisch\n" +"pathologischen Funktion." + +#. §0: $a, b$ +#. §1: $ \\operatorname{succ}(a) + b = \\operatorname{succ}(a + b)$ +#: Game.Levels.Addition.L02succ_add +msgid "" +"For all natural numbers §0, we have\n" +"§1." +msgstr "" +"Für alle natürlichen Zahlen §0 gilt\n" +"§1." + +#. §0: `h` +#. §1: `X = Y` +#. §2: `rw [h]` +#. §3: `X` +#. §4: `Y` +#. §5: `Y` +#. §6: `X` +#. §7: `rw` +#. §8: `←` +#. §9: `\\l` +#. §10: $2$ +#. §11: $0$ +#. §12: `succ (succ 0)` +#. §13: `2` +#: Game.Levels.Tutorial.L04rw_backwards +msgid "" +"If §0 is a proof of §1 then §2 will\n" +"turn §3s into §4s. But what if we want to\n" +"turn §5s into §6s? To tell the §7 tactic\n" +"we want this, we use a left arrow §8. Type\n" +"§9 and then hit the space bar to get this arrow.\n" +"\n" +"Let's prove that §10 is the number after the number\n" +"after §11 again, this time by changing §12\n" +"into §13." +msgstr "" +"Wenn §0 ein Beweis von §1 ist, dann verwandelt §2 alle §3 in §4. Aber\n" +"was, wenn wir §5 in §6 verwandeln wollen? Um der §7-Taktik\n" +"mitzuteilen, dass wir das wollen, verwenden wir einen Linkspfeil §8. Tippe\n" +"§9 und drücke dann die Leertaste, um diesen Pfeil zu erhalten.\n" +"\n" +"Beweisen wir noch einmal, dass §10 die Zahl nach der Zahl\n" +"nach §11 ist, diesmal indem wir §12\n" +"in §13 verwandeln." + +#. §0: `have` +#. §1: `a` +#. §2: `have ha : a = 0` +#. §3: `a = 0` +#. §4: `ha : a = 0` +#. §5: `have` +#. §6: `a` +#. §7: `b` +#. §8: `have h2 : succ a = succ b → a = b := succ_inj a b` +#. §9: `h2 : succ a = succ b → a = b` +#. §10: `succ_inj a b` +#. §11: `have h2 := succ_inj a b` +#. §12: `h2 : succ a = succ b → a = b` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "" +"# Summary\n" +"\n" +"The §0 tactic can be used to add new hypotheses to a level, but of course\n" +"you have to prove them.\n" +"\n" +"\n" +"## Example\n" +"\n" +"The simplest usage is like this. If you have §1 in your context and you " +"execute\n" +"\n" +"§2\n" +"\n" +"then you will get a new goal §3 to prove, and after you've proved\n" +"it you will have a new hypothesis §4 in your original goal.\n" +"\n" +"## Example\n" +"\n" +"If you already have a proof of what you want to §5, you\n" +"can just create it immediately. For example, if you have §6 and §7\n" +"number objects, then\n" +"\n" +"§8\n" +"\n" +"will directly add a new hypothesis §9\n" +"to the context, because you just supplied the proof of it (§10).\n" +"\n" +"## Example\n" +"\n" +"If you have a proof to hand, then you don't even need to state what you\n" +"are proving. For example\n" +"\n" +"§11\n" +"\n" +"will add §12 as a hypothesis." +msgstr "" +"# Zusammenfassung\n" +"\n" +"Die §0-Taktik kann verwendet werden, um einem Level neue Annahmen\n" +"hinzuzufügen, aber natürlich musst du diese dann beweisen.\n" +"\n" +"\n" +"## Beispiel\n" +"\n" +"Die einfachste Verwendung sieht so aus. Wenn du §1 in deinem Kontext hast " +"und\n" +"\n" +"§2\n" +"\n" +"ausführst, musst du ein neues Ziel §3 beweisen, und nachdem du es\n" +"bewiesen hast, hast du eine neue Annahme §4 in deinem ursprünglichen Ziel.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du bereits einen Beweis dessen hast, was du mittels §5 als Annahme\n" +"hinzufügen möchtest, kannst du sie einfach sofort erzeugen.\n" +"Wenn du zum Beispiel §6 und §7 als Zahl-Objekte hast, dann fügt\n" +"\n" +"§8\n" +"\n" +"direkt eine neue Annahme §9\n" +"zum Kontext hinzu, weil du gerade den Beweis für sie geliefert hast (§10).\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du einen Beweis parat hast, musst du nicht einmal angeben, was du\n" +"beweist. Zum Beispiel fügt\n" +"\n" +"§11\n" +"\n" +"§12 als Annahme hinzu." + +#. §0: `a + b + c` +#. §1: `(a + b) + c` +#. §2: `+` +#: Game.Levels.Addition.L04add_assoc +msgid "" +"Remember that when Lean writes §0, it means §1.\n" +"If you are not sure where the brackets are in an expression, just hover\n" +"your cursor over it and look at what gets highlighted. For example,\n" +"hover over both §2 symbols on the left hand side of the goal and\n" +"you'll see where the invisible brackets are." +msgstr "" +"Denk daran: Wenn Lean §0 schreibt, steht das für §1.\n" +"Wenn du dir nicht sicher bist, wo in einem Ausdruck die Klammern sind, " +"bewege einfach\n" +"deinen Cursor darüber und schau, was hervorgehoben wird. Bewege zum " +"Beispiel\n" +"den Cursor über beide §2-Symbole auf der linken Seite des Ziels, und\n" +"du wirst sehen, wo die unsichtbaren Klammern sind." + +#. §0: `rw [← one_eq_succ_zero]` +#. §1: `succ 0` +#. §2: `1` +#: Game.Levels.Tutorial.L04rw_backwards +msgid "Try §0 to change §1 into §2." +msgstr "Versuche, §1 in §2 umzuwandeln mit §0." + +#. §0: `1` +#: Game.Levels.Tutorial.L07add_succ +msgid "Start by unravelling the §0." +msgstr "Beginne damit, §0 zu entpacken." + +#: Game.Levels.Tutorial.L02rw +msgid "the rw tactic" +msgstr "die rw-Taktik" + +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +msgid "mul_left_ne_zero" +msgstr "mul_left_ne_zero" + +#: Game.Levels.AdvMultiplication.L07mul_ne_zero +msgid "mul_ne_zero" +msgstr "mul_ne_zero" + +# Theorem = Satz added here +#. §0: `2 + 2 = 4` +#: Game.Levels.Tutorial +msgid "" +"Welcome to tutorial world! In this world we learn the basics\n" +"of proving theorems. The boss level of this world\n" +"is the theorem §0.\n" +"\n" +"You prove theorems by solving puzzles using tools called *tactics*.\n" +"The aim is to prove the theorem by applying tactics\n" +"in the right order.\n" +"\n" +"Let's learn some basic tactics. Click on \"Start\" below\n" +"to begin your quest." +msgstr "" +"Willkommen in der Tutorial-Welt! In dieser Welt lernen wir die Grundlagen\n" +"des Beweisens von Sätzen. Der Endgegner dieser Welt\n" +"ist der Satz §0.\n" +"\n" +"Du beweist Sätze, indem du Rätsel mit Werkzeugen namens *Taktiken* löst.\n" +"Das Ziel ist es, den Satz zu beweisen, indem man Taktiken\n" +"in der richtigen Reihenfolge anwendet.\n" +"\n" +"Lernen wir also ein paar grundlegende Taktiken kennen. Klicke unten auf " +"„Start“,\n" +"um deine Reise zu beginnen." + +#: Game.Levels.AdvAddition.L02add_left_cancel +msgid "add_left_cancel" +msgstr "add_left_cancel" + +#: Game.Levels.LessOrEqual.L01le_refl +msgid "You can probably take it from here." +msgstr "Den Rest schaffst du wahrscheinlich allein." + +#: Game.Levels.Tutorial.L08twoaddtwo +msgid "2+2=4" +msgstr "2+2=4" + +#. §0: `x ≠ y` +#. §1: `x = y → False` +#: Game.Levels.Implication.L08ne +msgid "Remember, §0 is *notation* for §1." +msgstr "Denk daran: §0 ist eine *Notation* für §1." + +#. §0: `a * b = 0` +#. §1: `a = 0` +#. §2: `b = 0` +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "" +"This level proves that if §0 then §1 or §2. It is\n" +"logically equivalent to the last level, so there is a very short proof." +msgstr "" +"Dieses Level beweist, dass aus §0 folgt, dass §1 oder §2 gilt. Es ist\n" +"logisch äquivalent zum vorherigen Level, also gibt es einen sehr kurzen " +"Beweis." + +#. §0: $0+n=n$ +#. §1: $n$ +#. §2: $n+0=n$ +#. §3: `add_zero` +#. §4: `zero_add` +#. §5: `0 + n = n` +#. §6: `0 + n` +#. §7: `add_zero` +#. §8: `add_succ` +#. §9: `n` +#. §10: `0` +#. §11: `induction` +#. §12: `0 + 0 = 0` +#. §13: `0 + d = d` +#. §14: `0 + succ d = succ d` +#. §15: `0` +#. §16: `>_` +#: Game.Levels.Addition.L01zero_add +msgid "" +"In this level we're going to prove that §0, where §1 is a secret natural " +"number.\n" +"\n" +"Wait, don't we already know that? No! We know that §2, but that's §3.\n" +"This is §4, which is different.\n" +"\n" +"The difficulty with proving §5 is that we do not have a *formula* for\n" +"§6 in general, we can only use §7 and §8 once\n" +"we know whether §9 is §10 or a successor. The §11 tactic splits into these " +"two cases.\n" +"\n" +"The base case will require us to prove §12, and the inductive step\n" +"will ask us to show that if §13 then §14. Because\n" +"§15 and successor are the only way to make numbers, this will cover all the " +"cases.\n" +"\n" +"See if you can do your first induction proof in Lean.\n" +"\n" +"(By the way, if you are still in the \"Editor mode\" from the last world, " +"you can swap\n" +"back to \"Typewriter mode\" by clicking the §16 button in the top right.)" +msgstr "" +"In diesem Level werden wir beweisen, dass §0 gilt, wobei §1 eine geheime " +"natürliche Zahl ist.\n" +"\n" +"Moment, wissen wir das nicht bereits? Nein! Wir wissen, dass §2 gilt, aber " +"das ist §3.\n" +"Hier geht es um §4, was etwas anderes ist.\n" +"\n" +"Die Schwierigkeit beim Beweis von §5 besteht darin, dass wir im Allgemeinen " +"keine\n" +"*Formel* für §6 haben; wir können §7 und §8 erst benutzen, sobald\n" +"wir wissen, ob §9 gleich §10 oder ein Nachfolger ist. Die §11-Taktik teilt " +"das Problem\n" +"in diese beiden Fälle auf.\n" +"\n" +"Der Induktionsanfang wird von uns verlangen, §12 zu beweisen, und der " +"Induktionsschritt\n" +"wird uns auffordern zu zeigen, dass aus §13 auch §14 folgt. Weil\n" +"§15 und Nachfolger die einzigen Möglichkeiten sind, Zahlen zu erzeugen, " +"deckt dies alle Fälle ab.\n" +"\n" +"Versuche, deinen ersten Induktionsbeweis in Lean zu führen.\n" +"\n" +"(Übrigens: Wenn du aus der letzten Welt noch im „Editor-Modus“ bist, kannst " +"du\n" +"zurück in den „Schreibmaschinen-Modus“ wechseln, indem du oben rechts auf " +"die Schaltfläche §16 klickst.)" + +#. §0: `apply` +#. §1: `P → Q` +#. §2: `P → Q` +#. §3: `P` +#. §4: `Q` +#. §5: `intro` +#: Game.Levels.Implication.L06intro +msgid "" +"We have seen how to §0 theorems and assumptions\n" +"of the form §1. But what if our *goal* is of the form §2?\n" +"To prove this goal, we need to know how to say \"let's assume §3 and deduce " +"§4\".\n" +"In Lean, we do this with the §5 tactic." +msgstr "" +"Wir haben gesehen, wie man mit §0 Sätze und Annahmen\n" +"der Form §1 anwendet. Aber was, wenn unser *Ziel* die Form §2 hat?\n" +"Um dieses Ziel zu beweisen, müssen wir wissen, wie man sagt „nehmen wir also " +"§3 an und leiten daraus wir §4 ab“.\n" +"Das machen wir in Lean mit der Taktik §5." + +#. §0: `∨` +#. §1: `x = 0 ∨ x = 1 ∨ x = 2` +#. §2: `x = 0 ∨ (x = 1 ∨ x = 2)` +#. §3: `left` +#. §4: `right` +#: Game.Levels.LessOrEqual.L11le_two +msgid "" +"We'll need this lemma to prove that two is prime!\n" +"\n" +"You'll need to know that §0 is right associative. This means that\n" +"§1 actually means §2.\n" +"This affects how §3 and §4 work." +msgstr "" +"Wir werden dieses Lemma brauchen, um zu beweisen, dass zwei eine Primzahl " +"ist!\n" +"\n" +"Du musst wissen, dass §0 rechtsassoziativ ist. Das bedeutet, dass\n" +"§1 eigentlich für §2 steht.\n" +"Das beeinflusst, wie §3 und §4 funktionieren." + +#: Game.Levels.Power.L01zero_pow_zero +msgid "zero_pow_zero" +msgstr "zero_pow_zero" + +#. §0: `a` +#. §1: `b` +#: Game.Levels.Addition.L03add_comm +msgid "Induction on §0 or §1 -- it's all the same in this one." +msgstr "" +"Induktion über §0 oder §1 – in diesem Fall macht es keinen Unterschied." + +#. §0: `rw [zero_add] at «{h}»` +#. §1: `zero_add` +#. §2: `«{x}»` +#. §3: `0 + «{x}»` +#. §4: `0 + «{y}»` +#: Game.Levels.Implication.L02exact2 +msgid "" +"Do that again!\n" +"\n" +"§0 tries to fill in\n" +"the arguments to §1 (finding §2) then it replaces all occurrences of\n" +"§3 it finds. Therefore, it did not rewrite §4, yet." +msgstr "" +"Mach das noch einmal!\n" +"\n" +"Der Ausdruck §0 versucht, die Argumente für §1 auszufüllen (und findet §2), " +"dann ersetzt es alle\n" +"Vorkommen von §3, die es findet. Deswegen hat es §4 noch nicht umgeschrieben." + +#: Game.Levels.Power.L05pow_two +msgid "Note: this lemma will be useful for the final boss!" +msgstr "Hinweis: Dieses Lemma wird für den Endgegner nützlich sein!" + +#: Game.Levels.Implication.L06intro +msgid "intro" +msgstr "intro" + +#. §0: `apply eq_succ_of_ne_zero at ha` +#: Game.Levels.AdvMultiplication.L04one_le_of_ne_zero +msgid "Use the previous lemma with §0." +msgstr "Benutze das vorherige Lemma mit §0." + +#: Game.Levels.Multiplication.L09mul_assoc +msgid "" +"A passing mathematician notes that you've proved\n" +"that the natural numbers are a commutative semiring.\n" +"\n" +"If you want to begin your journey to the final boss, head for Power World." +msgstr "" +"Eine vorbeikommende Mathematikerin bemerkt, dass du bewiesen hast,\n" +"dass die natürlichen Zahlen einen kommutativen Halbring sind.\n" +"\n" +"Wenn du deine Reise zum Endgegner des Spiels beginnen willst, mach dich auf " +"zur Potenz-Welt." + +#. §0: `pow_pow` +#: Game.Levels.Power.L08pow_pow +msgid "" +"One of the best named levels in the game, a savage §0\n" +"sub-boss appears as the music reaches a frenzy. What\n" +"else could there be to prove about powers after this?" +msgstr "" +"In einem der am besten benannten Level des Spiels taucht ein wilder §0-" +"Zwischengegner\n" +"auf, während die Musik ihren Höhepunkt erreicht. Was\n" +"könnte es danach noch über Potenzen zu beweisen geben?" + +#. §0: $x \\leq 0$ +#. §1: $x=0$ +#: Game.Levels.LessOrEqual.L05le_zero +msgid "If §0, then §1." +msgstr "Wenn §0, dann §1." + +#. §0: `apply h` +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +msgid "Now §0 and you can probably take it from here." +msgstr "Wende jetzt §0 an, und den Rest schaffst du wahrscheinlich allein." + +#. §0: `mul_comm x y : x * y = y * x` +#. §1: `zero_mul` +#. §2: `mul_zero` +#: Game.Levels.Multiplication.L04mul_comm +msgid "" +"The first sub-boss of Multiplication World is §0.\n" +"\n" +"When you've proved this theorem we will have \"spare\" proofs\n" +"such as §1, which is now easily deducible from §2.\n" +"But we'll keep hold of these proofs anyway, because it's convenient\n" +"to have exactly the right tool for a job." +msgstr "" +"Der erste Zwischengegner der Multiplikations-Welt ist §0.\n" +"\n" +"Wenn du diesen Satz bewiesen hast, werden wir „überzählige“ Beweise haben\n" +"wie §1, der sich nun leicht aus §2 herleiten lässt.\n" +"Aber wir behalten diese Beweise trotzdem, denn es ist praktisch,\n" +"genau das richtige Werkzeug für eine Aufgabe zu haben." + +#. §0: `add_right_comm a b c` +#. §1: `(a + b) + c = (a + c) + b` +#. §2: `a + b + c` +#. §3: `(a + b) + c` +#. §4: `a + b + c = a + c + b` +#: Game.Levels.Addition.L05add_right_comm +msgid "" +"§0 is a proof that §1\n" +"\n" +"In Lean, §2 means §3, so this result gets displayed\n" +"as §4." +msgstr "" +"§0 ist ein Beweis dafür, dass §1 gilt\n" +"\n" +"In Lean steht §2 für §3, deshalb wird dieses Resultat\n" +"als §4 angezeigt." + +#: Game.Levels.Algorithm.L08decide +msgid "decide" +msgstr "decide" + +#. §0: `rw [zero_add] at «{h}»` +#. §1: `«{h}»` +#: Game.Levels.Implication.L02exact2 +msgid "" +"You can use §0 to rewrite at §1 instead\n" +"of at the goal." +msgstr "" +"Du kannst §0 verwenden, um in §1 anstatt\n" +"im Ziel umzuschreiben." + +#. §0: `repeat t` +#. §1: `t` +#. §2: `repeat rw [add_zero]` +#. §3: `a + 0 + (0 + (0 + 0)) = b + 0 + 0` +#. §4: `a = b` +#: Game.Levels.Tutorial.L05add_zero +msgid "" +"## Summary\n" +"\n" +"§0 repeatedly applies the tactic §1\n" +"to the goal. You don't need to use this\n" +"tactic, it just speeds things up sometimes.\n" +"\n" +"## Example\n" +"\n" +"§2 will turn the goal\n" +"§3\n" +"into the goal\n" +"§4." +msgstr "" +"## Zusammenfassung\n" +"\n" +"§0 wendet die Taktik §1 wiederholt\n" +"auf das Ziel an. Du musst diese Taktik nicht\n" +"verwenden, sie beschleunigt die Sache manchmal einfach.\n" +"\n" +"## Beispiel\n" +"\n" +"§2 verwandelt das Ziel\n" +"§3\n" +"in das Ziel\n" +"§4." + +#. §0: `x + 1 = 4` +#. §1: `x = 3` +#. §2: `apply` +#: Game.Levels.Implication.L05succ_inj2 +msgid "" +"In the last level, we manipulated the hypothesis §0\n" +" until it became the goal §1. In this level we'll manipulate\n" +" the goal until it becomes our hypothesis! In other words, we\n" +" will \"argue backwards\". The §2 tactic can do this too.\n" +" Again I will walk you through this one (assuming you're in\n" +" \"Typewriter mode\")." +msgstr "" +"Im letzten Level haben wir die Annahme §0\n" +" umgeformt, bis sie zum Ziel §1 wurde. In diesem Level formen wir\n" +" das Ziel um, bis es zu unserer Annahme wird! Mit anderen Worten\n" +" werden wir „rückwärts argumentieren“. Die Taktik §2 kann das auch.\n" +" Ich führe dich wieder durch dieses Level (vorausgesetzt, du bist im\n" +" „Schreibmaschinen-Modus“)." + +#: Game.Levels.Addition +msgid "Addition World" +msgstr "Additions-Welt" + +#. §0: `P` +#. §1: `exact h` +#. §2: `h` +#. §3: `P` +#. §4: `x = 37` +#. §5: `h : x = 37` +#. §6: `exact h` +#. §7: `x + 0 = x` +#. §8: `exact add_zero x` +#. §9: `exact add_zero` +#. §10: `exact h` +#. §11: `h` +#. §12: `add_zero` +#. §13: `∀ n, n + 0 = n` +#. §14: `? + 0 = ?` +#. §15: `?` +#. §16: `rw` +#. §17: `apply` +#. §18: `x + 0 = x` +#. §19: `rw [add_zero]` +#. §20: `rw [add_zero x]` +#. §21: `x = x` +#. §22: `rw` +#. §23: `add_zero` +#: Game.Levels.Implication.L01exact +msgid "" +"## Summary\n" +"\n" +"If the goal is a statement §0, then §1 will close the goal if §2 is a proof " +"of §3.\n" +"\n" +"### Example\n" +"\n" +"If the goal is §4 and you have a hypothesis §5\n" +"then §6 will solve the goal.\n" +"\n" +"### Example\n" +"\n" +"If the goal is §7 then §8 will close the goal.\n" +"\n" +"### Exact needs to be exactly right\n" +"\n" +"Note that §9 will *not work* in the previous example;\n" +"for §10 to work, §11 has to be *exactly* a proof of the goal.\n" +"§12 is a proof of §13 or, if you like,\n" +"a proof of §14 where §15 needs to be supplied by the user.\n" +"This is in contrast to §16 and §17, which will \\\\\"guess the inputs\\\\\"\n" +"if necessary. If the goal is §18 then §19\n" +"and §20 will both change the goal to §21,\n" +"because §22 guesses the input to the function §23." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn das Ziel eine Aussage §0 ist, dann erreicht §1 das Ziel, falls §2 ein " +"Beweis von §3 ist.\n" +"\n" +"### Beispiel\n" +"\n" +"Wenn das Ziel §4 ist und du eine Annahme §5 hast,\n" +"dann erreicht §6 das Ziel.\n" +"\n" +"### Beispiel\n" +"\n" +"Du erreichst das Ziel §7 mit §8.\n" +"\n" +"### `exact` heißt exakt\n" +"\n" +"Beachte, dass §9 im vorherigen Beispiel *nicht funktioniert*;\n" +"damit §10 funktioniert, muss §11 *exakt* ein Beweis des Ziels sein.\n" +"§12 ist ein Beweis von §13 oder, wenn du magst,\n" +"ein Beweis von §14, wobei §15 von der Nutzerin angegeben werden muss.\n" +"Dies steht im Gegensatz zu §16 und §17, die die „Argumente erraten“,\n" +"falls nötig. Wenn das Ziel §18 ist, dann ändern §19\n" +"und §20 beide das Ziel zu §21,\n" +"weil §22 das Argument für die Funktion §23 errät." + +#. §0: `apply succ_inj at h` +#. §1: `succ` +#: Game.Levels.Implication.L07intro2 +msgid "Now §0 to cancel the §1s." +msgstr "Verwende nun §0, um die §1 wegzukürzen." + +#. §0: `induction` +#. §1: `x + y = y + x` +#. §2: `rw` +#. §3: `rfl` +#. §4: `induction` +#: Game.Levels.Addition +msgid "" +"Welcome to Addition World! In this world we'll learn the §0 tactic.\n" +"This will enable us to defeat the boss level of this world, namely §1.\n" +"\n" +"The tactics §2, §3 and §4 are the only tactics you'll need to\n" +"beat all the levels in Addition World, Multiplication World, and Power " +"World.\n" +"Power World contains the final boss of the game.\n" +"\n" +"There are plenty more tactics in this game, but you'll only need to know " +"them if you\n" +"want to explore the game further (for example if you decide to 100%\n" +"the game)." +msgstr "" +"Willkommen in der Additions-Welt! In dieser Welt lernen wir die Taktik §0 " +"kennen.\n" +"Damit können wir den Hauptgegner dieser Welt besiegen, nämlich §1.\n" +"\n" +"Die Taktiken §2, §3 und §4 sind die einzigen Taktiken, die du brauchst, um\n" +"alle Level in der Additions-Welt, der Multiplikations-Welt und der Potenz-" +"Welt zu schaffen.\n" +"Die Potenz-Welt enthält den Endgegner in diesem Spiel.\n" +"\n" +"Es gibt in diesem Spiel noch viele weitere Taktiken, aber du musst sie nur " +"kennen, wenn du\n" +"das Spiel ausgiebiger erkunden möchtest (zum Beispiel, wenn du dich " +"entscheidest, das Spiel mit einem Score von 100%\n" +"abzuschließen)." + +#. §0: `(a + a + 1) + (b + b + 1) = (a + b + 1) + (a + b + 1)` +#. §1: `(a + b) + (c + d) = ((a + c) + d) + b` +#. §2: `a+b+c+d` +#. §3: `a+c+d+b` +#. §4: `b` +#. §5: `c` +#. §6: `b` +#. §7: `d` +#. §8: `add_left_comm` +#: Game.Levels.Algorithm.L02add_algo1 +msgid "" +"In some later worlds, we're going to see some much nastier levels,\n" +"like §0.\n" +"Brackets need to be moved around, and variables need to be swapped.\n" +"\n" +"In this level, §1,\n" +"let's forget about the brackets and just think about\n" +"the variable order.\n" +"To turn §2 into §3 we need to swap §4 and §5,\n" +"and then swap §6 and §7. But this is easier than you\n" +"think with §8." +msgstr "" +"In einigen späteren Welten werden wir viel fiesere Level sehen,\n" +"wie §0.\n" +"Klammern müssen verschoben und Variablen vertauscht werden.\n" +"\n" +"In diesem Level, §1,\n" +"vergessen wir die Klammern und denken einfach über\n" +"die Reihenfolge der Variablen nach.\n" +"Um §2 in §3 zu verwandeln, müssen wir §4 und §5 vertauschen\n" +"und danach §6 und §7 vertauschen. Aber das ist einfacher, als du\n" +"denkst, mit §8." + +#: Game.Levels.Algorithm.L01add_left_comm +msgid "add_left_comm" +msgstr "add_left_comm" + +#. §0: `symm` +#. §1: `X = Y` +#. §2: `Y = X` +#. §3: `X ≠ Y` +#. §4: `X ↔ Y` +#. §5: `2 + 2 = 4` +#. §6: `symm` +#. §7: `4 = 2 + 2` +#. §8: `h : 2 + 2 ≠ 5` +#. §9: `symm at h` +#. §10: `h` +#. §11: `5 ≠ 2 + 2` +#: Game.Levels.Implication.L10one_ne_zero +msgid "" +"## Summary\n" +"\n" +"The §0 tactic will change a goal or hypothesis of\n" +"the form §1 to §2. It will also work on §3\n" +"and on §4.\n" +"\n" +"### Example\n" +"\n" +"If the goal is §5 then §6 will change it to §7.\n" +"\n" +"### Example\n" +"\n" +"If §8 then §9 will change §10 to §11." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Die Taktik §0 ändert ein Ziel oder eine Annahme der\n" +"Form §1 zu §2. Sie funktioniert auch bei §3\n" +"und bei §4.\n" +"\n" +"### Beispiel\n" +"\n" +"Wenn das Ziel §5 ist, dann ändert §6 es zu §7.\n" +"\n" +"### Beispiel\n" +"\n" +"Wenn §8, dann ändert §9 den Ausdruck §10 zu §11." + +#. §0: $a$ +#. §1: $b$ +#. §2: $c$ +#. §3: $a(b + c) = ab + ac$ +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"Multiplication is distributive over addition on the left.\n" +"In other words, for all natural numbers §0, §1 and §2, we have\n" +"§3." +msgstr "" +"Die Multiplikation ist linksseitig distributiv über der Addition.\n" +"Mit anderen Worten, für alle natürlichen Zahlen §0, §1 und §2 gilt\n" +"§3." + +#. §0: `apply` +#: Game.Levels.Implication.L03apply +msgid "The §0 tactic." +msgstr "Die Taktik §0." + +#. §0: `exact h1` +#: Game.Levels.Implication.L01exact +msgid "" +"The goal in this level is one of our hypotheses. Solve the goal by executing " +"§0." +msgstr "" +"Das Ziel in diesem Level ist eine unserer Annahmen. Erreiche das Ziel mit §0." + +#. §0: `≤` +#. §1: `a + b = 0` +#. §2: `a = 0` +#. §3: `b = 0` +#. §4: `cases` +#. §5: `cases` +#. §6: `b = 0` +#. §7: `b = succ d` +#. §8: `hd` +#. §9: `induction b with d hd` +#. §10: `cases b with d` +#. §11: `b = 0` +#. §12: `b = succ d` +#. §13: `h : False` +#. §14: `cases h` +#. §15: `False` +#: Game.Levels.AdvAddition.L05add_right_eq_zero +msgid "" +"The next result we'll need in §0 World is that if §1 then §2 and §3.\n" +"Let's prove one of these facts in this level, and the other in the next.\n" +"\n" +"## A new tactic: §4\n" +"\n" +"The §5 tactic will split an object or hypothesis up into the possible ways\n" +"that it could have been created.\n" +"\n" +"For example, sometimes you want to deal with the two cases §6 and §7 " +"separately,\n" +"but don't need the inductive hypothesis §8 that comes with §9.\n" +"In this situation you can use §10 instead. There are two ways to make\n" +"a number: it's either zero or a successor. So you will end up with two " +"goals, one\n" +"with §11 and one with §12.\n" +"\n" +"Another example: if you have a hypothesis §13 then you are done, because a " +"false statement implies\n" +"any statement. Here §14 will close the goal, because there are *no* ways to\n" +"make a proof of §15! So you will end up with no goals, meaning you have " +"proved everything." +msgstr "" +"Das nächste Resultat, das wir in der Ungleichungs-Welt brauchen, ist, dass " +"aus §1\n" +"sowohl §2 als auch §3 folgt.\n" +"Beweisen wir eine dieser Tatsachen in diesem Level und die andere im " +"nächsten.\n" +"\n" +"## Eine neue Taktik: §4\n" +"\n" +"Die Taktik §5 zerlegt ein Objekt oder eine Annahme danach, wie\n" +"es beziehungsweise sie erzeugt worden sein könnte.\n" +"\n" +"Zum Beispiel möchtest du manchmal die beiden Fälle §6 und §7 getrennt " +"behandeln,\n" +"brauchst aber die Induktionsvoraussetzung §8 nicht, die mit §9 einhergeht.\n" +"In dieser Situation kannst du stattdessen §10 verwenden. Es gibt zwei Arten, " +"eine\n" +"Zahl zu erzeugen: Sie ist entweder null oder ein Nachfolger. Du erhältst " +"also zwei Ziele, eines\n" +"mit §11 und eines mit §12.\n" +"\n" +"Ein weiteres Beispiel: Wenn du eine Annahme §13 hast, dann bist du fertig, " +"denn eine falsche Aussage impliziert\n" +"jede Aussage. Hier erreicht §14 das Ziel, weil es *keine* Möglichkeiten " +"gibt,\n" +"einen Beweis von §15 zu erzeugen! Du hast also keine Ziele, was bedeutet, " +"dass du alles bewiesen hast." + +#. §0: `rfl` +#: Game.Levels.Tutorial.L01rfl +msgid "" +"In order to use the tactic §0 you can enter it in the text box\n" +"under the goal and hit \"Execute\"." +msgstr "" +"Um die Taktik §0 zu verwenden, kannst du sie in das Textfeld\n" +"unter dem Ziel eingeben und auf „Ausführen“ drücken." + +#. §0: $x=37$ +#. §1: $y=42$ +#. §2: $y=42$ +#. §3: $x=37$ +#: Game.Levels.LessOrEqual.L07or_symm +msgid "If §0 or §1, then §2 or §3." +msgstr "Wenn §0 oder §1, dann §2 oder §3." + +#: Game.Levels.Algorithm.L09decide2 +msgid "" +"Congratulations! You've finished Algorithm World. These algorithms\n" +"will be helpful for you in Even-Odd World (when someone gets around to\n" +"implementing it)." +msgstr "" +"Glückwunsch! Du hast die Algorithmen-Welt abgeschlossen. Diese Algorithmen\n" +"werden dir in der Gerade/Ungerade-Welt helfen (sobald jemand dazu kommt,\n" +"sie zu implementieren)." + +#. §0: `h : X = Y` +#. §1: `rw [h]` +#. §2: `X` +#. §3: `Y` +#. §4: `nth_rewrite 3 [h]` +#: Game.Levels.Tutorial.L08twoaddtwo +msgid "" +"Good luck!\n" +"\n" +" One last hint. If §0 then §1 will change *all* §2s into §3s.\n" +" If you only want to change one of them, say the 3rd one, then use\n" +" §4." +msgstr "" +"Viel Erfolg!\n" +"\n" +" Ein letzter Tipp. Wenn §0, dann ändert §1 *alle* §2 in §3.\n" +" Wenn du nur eines davon ändern möchtest, sagen wir das dritte, dann " +"verwende\n" +" §4." + +#. §0: `add_assoc` +#. §1: `add_comm` +#: Game.Levels.Addition.L04add_assoc +msgid "" +"A passing mathematician congratulates you on proving that naturals\n" +"are an additive commutative monoid.\n" +"\n" +"Let's practice using §0 and §1 in one more level,\n" +"before we leave addition world." +msgstr "" +"Eine vorbeikommende Mathematikerin gratuliert dir dazu, bewiesen zu haben, " +"dass die natürlichen Zahlen\n" +"ein additives kommutatives Monoid bilden.\n" +"\n" +"Lass uns die Verwendung von §0 und §1 in einem weiteren Level üben,\n" +"bevor wir die Additions-Welt verlassen." + +#: Game.Levels.Implication.L05succ_inj2 +msgid "Arguing backwards" +msgstr "Rückwärts argumentieren" + +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "mul_right_eq_one" +msgstr "mul_right_eq_one" + +#. §0: `add_sq a b` +#. §1: $(a+b)^2=a^2+b^2+2ab.$ +#: Game.Levels.Power.L09add_sq +msgid "§0 is the statement that §1" +msgstr "§0 ist die Aussage, dass §1 gilt" + +#. §0: $x=y$ +#. §1: $x \\neq y$ +#: Game.Levels.Implication.L08ne +msgid "If §0 and §1 then we can deduce a contradiction." +msgstr "Wenn §0 und §1, dann können wir einen Widerspruch herleiten." + +#. §0: `2 + 2 = 4` +#. §1: $37$ +#. §2: $x$ +#. §3: $0$ +#. §4: `37 + x` +#. §5: `37 + 0` +#. §6: `37 + succ x` +#. §7: `0` +#. §8: `37 + 0` +#. §9: `37` +#. §10: `a + 0` +#. §11: `a` +#. §12: `a` +#. §13: `add_zero a` +#. §14: `add_zero 37` +#. §15: `37 + 0 = 37` +#. §16: `add_zero x` +#. §17: `x + 0 = x` +#. §18: `add_zero` +#. §19: `? + 0 = ?` +#. §20: `add_zero x : x + 0 = x` +#. §21: `proof : statement` +#: Game.Levels.Tutorial.L05add_zero +msgid "" +"We'd like to prove §0 but right now\n" +"we can't even *state* it\n" +"because we haven't yet defined addition.\n" +"\n" +"## Defining addition.\n" +"\n" +"How are we going to add §1 to an arbitrary number §2? Well,\n" +"there are only two ways to make numbers in this game: §3\n" +"and successors. So to define §4 we will need\n" +"to know what §5 is and what §6 is.\n" +"Let's start with adding §7.\n" +"\n" +"### Adding 0\n" +"\n" +"To make addition agree with our intuition, we should *define* §8\n" +"to be §9. More generally, we should define §10 to be §11 for\n" +"any number §12. The name of this proof in Lean is §13.\n" +"For example §14 is a proof of §15,\n" +"§16 is a proof of §17, and §18 is a proof\n" +"of §19.\n" +"\n" +"We write §20, so §21." +msgstr "" +"Wir würden gerne die Gleichung §0 beweisen, aber im Moment\n" +"können wir sie nicht einmal *formulieren*,\n" +"weil wir Addition noch nicht definiert haben.\n" +"\n" +"## Definition der Addition\n" +"\n" +"Wie addieren wir §1 zu einer beliebigen Zahl §2? Nun,\n" +"es gibt in diesem Spiel nur zwei Arten, Zahlen zu erzeugen: §3\n" +"und Nachfolger. Um also §4 zu definieren, müssen wir\n" +"wissen, was §5 ist und was §6 ist.\n" +"Beginnen wir mit der Addition von §7.\n" +"\n" +"### Addition von 0\n" +"\n" +"Damit die Addition mit unserer Intuition übereinstimmt, sollten wir §8\n" +"als §9 *definieren*. Allgemeiner sollten wir §10 als §11 definieren, für " +"jede Zahl §12. Der Name dieses Beweises in Lean ist §13.\n" +"Zum Beispiel ist §14 ein Beweis von §15,\n" +"§16 ist ein Beweis von §17 und §18 ist ein Beweis\n" +"von §19.\n" +"\n" +"Wir schreiben §20, also `Beweis : Aussage`." + +#. §0: `t = 0` +#: Game.Levels.AdvMultiplication.L01mul_le_mul_right +msgid "Let's warm up with an easy one, which works even if §0." +msgstr "" +"Wärmen wir uns mit einer leichten Aufgabe auf, die sogar dann funktioniert, " +"wenn §0 gilt." + +#. §0: $x+1=y+1\\implies x=y$ +#: Game.Levels.Implication.L07intro2 +msgid "" +"Let's see if you can use the tactics we've learnt to prove §0.\n" +"Try this one by yourself; if you need help then click on \"Show more help!\"." +msgstr "" +"Mal sehen, ob du die Taktiken, die wir gelernt haben, verwenden kannst, um " +"§0 zu beweisen.\n" +"Versuche diese Aufgabe selbst; wenn du Hilfe brauchst, dann klicke auf „Mehr " +"Hilfe“." + +#. §0: `apply zero_ne_succ at h` +#: Game.Levels.Implication.L09zero_ne_succ +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "Now you can §0." +msgstr "Jetzt kannst du §0 verwenden." + +#. §0: `h2` +#. §1: `x = 37` +#. §2: `y = 42` +#. §3: `apply` +#. §4: `apply` +#: Game.Levels.Implication.L03apply +msgid "" +"In this level, the hypothesis §0 is an *implication*. It says\n" +"that *if* §1 *then* §2. We can use this\n" +"hypothesis with the §3 tactic. Remember you can click on\n" +"§4 or any other tactic on the right to see a detailed explanation\n" +"of what it does, with examples." +msgstr "" +"In diesem Level ist die Annahme §0 eine *Implikation*. Sie besagt,\n" +"dass *wenn* §1, *dann* §2. Wir können diese\n" +"Annahme mit der Taktik §3 verwenden. Denk daran, dass du auf\n" +"§4 oder jede andere Taktik rechts klicken kannst, um eine ausführliche " +"Erklärung\n" +"dessen, was sie tut, mit Beispielen zu sehen." + +#. §0: $37$ +#. §1: $x$ +#. §2: $q$ +#. §3: $x$ +#. §4: $37x + q = 37x + q$ +#. §5: `x q : ℕ` +#. §6: `x` +#. §7: `q` +#. §8: `rfl` +#. §9: $X = X$ +#. §10: $37x+q=37x+q$ +#. §11: `rfl` +#: Game.Levels.Tutorial.L01rfl +msgid "" +"# Read this first\n" +"\n" +"Each level in this game involves proving a mathematical theorem (the " +"\"Goal\").\n" +"The goal will be a statement about *numbers*. Some numbers in this game have " +"known values.\n" +"Those numbers have names like §0. Other numbers will be secret. They're " +"called things\n" +"like §1 and §2. We know §3 is a number, we just don't know which one.\n" +"\n" +"In this first level we're going to prove the theorem that §4.\n" +"You can see §5 in the *Objects* below, which means that §6 and §7\n" +"are numbers.\n" +"\n" +"We solve goals in Lean using *Tactics*, and the first tactic we're\n" +"going to learn is called §8, which proves all theorems of the form §9.\n" +"\n" +"Prove that §10 by executing the §11 tactic." +msgstr "" +"# Lies zuerst das hier\n" +"\n" +"In jedem Level dieses Spiels geht es darum, einen mathematischen Satz zu " +"beweisen (das „Ziel“ oder „Beweisziel“).\n" +"Das Ziel ist eine Aussage über *Zahlen*. Einige Zahlen in diesem Spiel haben " +"bekannte Werte.\n" +"Diese Zahlen haben Namen wie §0. Andere Zahlen sind geheim. Sie heißen zum " +"Beispiel\n" +"§1 und §2. Wir wissen, dass §3 eine Zahl ist, wir wissen nur nicht, welche.\n" +"\n" +"In diesem ersten Level werden wir den Satz beweisen, dass §4 gilt.\n" +"Du kannst §5 unten bei den *Objekten* sehen, was bedeutet, dass §6 und §7\n" +"Zahlen sind.\n" +"\n" +"Wir erreichen Ziele in Lean mithilfe von *Taktiken*, und die erste Taktik, " +"die wir\n" +"lernen werden, heißt §8. Sie beweist alle Sätze der Form §9.\n" +"\n" +"Beweise, dass §10 gilt, indem du die Taktik §11 ausführst." + +#. §0: ``` +#. repeat rw [zero_add] at h +#. exact h +#. ``` +#: Game.Levels.Implication.L02exact2 +msgid "" +"Here's a two-line proof:\n" +"§0" +msgstr "" +"Hier ist ein zweizeiliger Beweis:\n" +"§0" + +#. §0: `zero_add n` +#. §1: `0 + n = n` +#. §2: `zero_add` +#. §3: `simp` +#. §4: `0 + n` +#. §5: `n` +#: Game.Levels.Addition.L01zero_add +msgid "" +"§0 is the proof of §1.\n" +"\n" +"§2 is a §3 lemma, because replacing §4 by §5\n" +"is almost always what you want to do if you're simplifying an expression." +msgstr "" +"§0 ist der Beweis von §1.\n" +"\n" +"§2 ist ein §3-Lemma, denn das Ersetzen von §4 durch §5\n" +"ist fast immer das, was du tun möchtest, wenn du einen Ausdruck vereinfachst." + +#. §0: `a` +#. §1: `b` +#. §2: `succ_inj a b` +#. §3: `succ a = succ b` +#. §4: `a = b` +#. §5: $x+1=4 \\implies x=3$ +#: Game.Levels.Implication.L04succ_inj +msgid "" +"If §0 and §1 are numbers, then §2 is a proof\n" +"that §3 implies §4. Click on this theorem in the *Peano*\n" +"tab for more information.\n" +"\n" +"Peano had this theorem as an axiom, but in Algorithm World\n" +"we will show how to prove it in Lean. Right now let's just assume it,\n" +"and let's prove §5 using it. Again, we will proceed\n" +"by manipulating our hypothesis until it becomes the goal. I will\n" +"walk you through this level." +msgstr "" +"Wenn §0 und §1 Zahlen sind, dann ist §2 ein Beweis\n" +"dafür, dass §3 die Gleichung §4 impliziert. Klicke im Reiter *Peano*\n" +"auf diesen Satz, um mehr zu erfahren.\n" +"\n" +"Bei Peano war dieser Satz ein Axiom, aber in der Algorithmen-Welt\n" +"zeigen wir, wie man ihn in Lean beweist. Im Moment nehmen wir ihn einfach " +"an\n" +"und wollen mit seiner Hilfe §5 beweisen. Wieder gehen wir vor,\n" +"indem wir unsere Annahme so lange umformen, bis sie zum Ziel wird. Ich\n" +"werde dich durch dieses Level führen." + +#. §0: `2 + 2 ≠ 5` +#. §1: `0 ≠ 1` +#. §2: `zero_ne_succ n` +#. §3: `0 ≠ succ n` +#: Game.Levels.Implication.L09zero_ne_succ +msgid "" +"As warm-up for §0 let's prove §1. To do this we need to\n" +"introduce Peano's last axiom §2, a proof that §3.\n" +"To learn about this result, click on it in the list of lemmas on the right." +msgstr "" +"Zum Aufwärmen für §0 beweisen wir §1. Dazu müssen wir\n" +"Peanos letztes Axiom §2 einführen, einen Beweis dafür, dass §3 gilt.\n" +"Um mehr über dieses Resultat zu erfahren, klicke rechts in der Liste der " +"Sätze darauf." + +#. §0: $x+y=37$ +#. §1: $3x+z=42$ +#. §2: $x+y=37$ +#: Game.Levels.Implication.L01exact +msgid "Assuming §0 and §1, we have §2." +msgstr "Unter den Annahmen §0 und §1 gilt §2." + +#. §0: `a` +#. §1: `b` +#. §2: $a + b = b + a$ +#: Game.Levels.Addition.L03add_comm +msgid "" +"On the set of natural numbers, addition is commutative.\n" +"In other words, if §0 and §1 are arbitrary natural numbers, then\n" +"§2." +msgstr "" +"Auf der Menge der natürlichen Zahlen ist die Addition kommutativ.\n" +"Mit anderen Worten: Wenn §0 und §1 beliebige natürliche Zahlen sind, dann " +"gilt\n" +"§2." + +#. §0: `a * b = a * c` +#. §1: `a ≠ 0` +#. §2: `b = c` +#. §3: `induction b with d hd` +#. §4: `a * d = a * c → d = c` +#. §5: `a * succ d = a * c` +#. §6: `a ≠ 0` +#. §7: `b` +#. §8: `c` +#. §9: `a * b = a * c` +#. §10: `b = c` +#. §11: `c` +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "" +"In this level we prove that if §0 and §1 then §2. It is tricky, for\n" +"several reasons. One of these is that\n" +"we need to introduce a new idea: we will need to understand the concept of\n" +"mathematical induction a little better.\n" +"\n" +"Starting with §3 is too naive, because in the inductive step\n" +"the hypothesis is §4 but what we know is §5,\n" +"so the induction hypothesis does not apply!\n" +"\n" +"Assume §6 is fixed. The actual statement we want to prove by induction on §7 " +"is\n" +"\"for all §8, if §9 then §10\". This *can* be proved by induction,\n" +"because we now have the flexibility to change §11." +msgstr "" +"In diesem Level beweisen wir, dass aus §0 und §1 die Aussage §2 folgt. Das " +"ist knifflig,\n" +"und zwar aus mehreren Gründen. Einer davon ist, dass\n" +"wir eine neue Idee einführen müssen: Wir müssen das Konzept der\n" +"mathematischen Induktion etwas besser verstehen.\n" +"\n" +"Mit §3 zu beginnen ist zu naiv, denn im Induktionsschritt\n" +"lautet die Annahme §4, aber was wir wissen, ist §5,\n" +"sodass die Induktionsvoraussetzung nicht anwendbar ist!\n" +"\n" +"Nehmen wir an, §6 sei fest. Die eigentliche Aussage, die wir per Induktion " +"über §7 beweisen wollen, lautet\n" +"„für alle §8 gilt, wenn §9, dann §10“. Diese *lässt* sich per Induktion " +"beweisen,\n" +"weil wir nun die Freiheit haben, §11 zu ändern." + +#. §0: `h2` +#. §1: `tauto` +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "" +"Now the goal can be deduced from §0 by pure logic, so use the §1\n" +"tactic." +msgstr "" +"Jetzt lässt sich das Ziel allein mit Logik aus §0 herleiten, benutze also " +"die Taktik §1." + +#. §0: `rfl` +#: Game.Levels.Tutorial.L02rw +msgid "Now §0 will work." +msgstr "Jetzt funktioniert §0." + +#. §0: `le_zero x` +#. §1: `x ≤ 0 → x = 0` +#: Game.Levels.LessOrEqual.L05le_zero +msgid "§0 is a proof of the implication §1." +msgstr "§0 ist ein Beweis der Implikation §1." + +#: Game.Levels.Implication.L11two_add_two_ne_five +msgid "2 + 2 ≠ 5" +msgstr "2 + 2 ≠ 5" + +#. §0: `ℕ` +#. §1: `0 : ℕ` +#. §2: `succ (n : ℕ) : ℕ` +#. §3: `MyNat` +#. §4: `ℕ` +#. §5: `Nat` +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "" +"§0 is the natural numbers, just called \\\\\"numbers\\\\\" in this game. " +"It's\n" +"defined via two rules:\n" +"\n" +"* §1 (zero is a number)\n" +"* §2 (the successor of a number is a number)\n" +"\n" +"## Game Implementation\n" +"\n" +"*The game uses its own copy of the natural numbers, called §3 with notation " +"§4.\n" +"It is distinct from the Lean natural numbers §5, which should hopefully\n" +"never leak into the natural number game.*" +msgstr "" +"§0 sind die natürlichen Zahlen, in diesem Spiel einfach „Zahlen“ genannt. " +"Sie sind\n" +"über zwei Regeln definiert:\n" +"\n" +"* §1 (Null ist eine Zahl)\n" +"* §2 (der Nachfolger einer Zahl ist eine Zahl)\n" +"\n" +"## Umsetzung im Spiel\n" +"\n" +"*Das Spiel verwendet seine eigene Kopie der natürlichen Zahlen, genannt §3 " +"mit der Notation §4.\n" +"Sie unterscheidet sich von den natürlichen Zahlen §5 aus Lean, die sich " +"hoffentlich\n" +"nirgends in die Zahlenspiele eingeschmuggelt haben.*" + +#. §0: `a ≠ 0` +#. §1: `tauto` +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +msgid "" +"Multiplication usually makes a number bigger, but multiplication by zero can " +"make\n" +"it smaller. Thus many lemmas about inequalities and multiplication need the\n" +"hypothesis §0. Here is a key lemma that enables us to use this hypothesis.\n" +"To help us with the proof, we can use the §1 tactic. Click on the tactic's " +"name\n" +"on the right to see what it does." +msgstr "" +"Multiplikation macht eine Zahl normalerweise größer, aber Multiplikation mit " +"null kann sie\n" +"kleiner machen. Deshalb brauchen viele Lemmata über Ungleichungen und " +"Multiplikation die\n" +"Annahme §0. Hier ist ein zentrales Lemma, welches uns erlaubt, diese Annahme " +"zu verwenden.\n" +"Als Hilfe für den Beweis können wir die Taktik §1 verwenden. Klicke rechts " +"auf den Namen der Taktik,\n" +"um zu sehen, was sie tut." + +#. §0: `cases` +#. §1: `hxy` +#: Game.Levels.LessOrEqual.L04le_trans +msgid "" +"In this level, we see inequalities as *hypotheses*. We have not seen this " +"before.\n" +"The §0 tactic can be used to take §1 apart." +msgstr "" +"In diesem Level betrachten wir Ungleichungen als *Annahmen*. Das haben wir " +"vorher noch nicht gesehen.\n" +"Mit der Taktik §0 kann man §1 in Fälle zerlegen." + +#. §0: `a` +#. §1: `b` +#. §2: `a = b` +#. §3: `a` +#. §4: `b` +#. §5: `0` +#. §6: `a` +#. §7: `b` +#. §8: `0` +#. §9: `0` +#. §10: `succ n` +#. §11: `a = succ m` +#. §12: `b = succ n` +#. §13: `m = n` +#. §14: `0 = 0` +#. §15: `rfl` +#. §16: `0 ≠ succ n` +#. §17: `zero_ne_succ n` +#. §18: `succ m ≠ 0` +#. §19: `succ_ne_zero m` +#. §20: `h : m = n` +#. §21: `succ m = succ n` +#. §22: `rw [h]` +#. §23: `rfl` +#. §24: `a ≠ b` +#. §25: `succ a ≠ succ b` +#: Game.Levels.Algorithm.L07succ_ne_succ +msgid "" +"Here we begin to\n" +"develop an algorithm which, given two naturals §0 and §1, returns the " +"answer\n" +"to \"does §2?\"\n" +"\n" +"Here is the algorithm. First note that §3 and §4 are numbers, and hence\n" +"are either §5 or successors.\n" +"\n" +"*) If §6 and §7 are both §8, return \"yes\".\n" +"\n" +"*) If one is §9 and the other is §10, return \"no\".\n" +"\n" +"*) If §11 and §12, then return the answer to \"does §13?\"\n" +"\n" +"Our job now is to *prove* that this algorithm always gives the correct " +"answer. The proof that\n" +"§14 is §15. The proof that §16 is §17, and the proof\n" +"that §18 is §19. The proof that if §20 then\n" +"§21 is §22 and then §23. This level is a proof of the one\n" +"remaining job we have to do: if §24 then §25." +msgstr "" +"Hier beginnen wir,\n" +"einen Algorithmus zu entwickeln, der zu zwei natürlichen Zahlen §0 und §1 " +"die Antwort\n" +"auf die Frage „gilt §2?“ liefert.\n" +"\n" +"Hier ist der Algorithmus. Beachte zunächst, dass §3 und §4 Zahlen sind und " +"daher\n" +"entweder §5 oder Nachfolger sind.\n" +"\n" +"*) Wenn §6 und §7 beide §8 sind, gib „ja“ zurück.\n" +"\n" +"*) Wenn die eine §9 und die andere §10 ist, gib „nein“ zurück.\n" +"\n" +"*) Wenn §11 und §12, dann gib die Antwort auf „gilt §13?“ zurück.\n" +"\n" +"Unsere Aufgabe ist es nun, zu *beweisen*, dass dieser Algorithmus immer die " +"richtige Antwort liefert. Der Beweis\n" +"dafür, dass §14 gilt, ist §15. Der Beweis dafür, dass §16 gilt, ist §17, und " +"der Beweis\n" +"dafür, dass §18 gilt, ist §19. Der Beweis dafür, dass aus §20 die Aussage\n" +"§21 folgt, ist §22 und dann §23. Dieses Level ist ein Beweis der einen\n" +"verbleibenden Aufgabe: wenn §24, dann §25." + +#: Game.Levels.LessOrEqual.L06le_antisymm +msgid "x ≤ y and y ≤ x implies x = y" +msgstr "x ≤ y und y ≤ x impliziert x = y" + +#. §0: `left` +#. §1: `P ∨ Q` +#. §2: `P` +#. §3: `P ∨ Q` +#. §4: `P` +#. §5: `apply` +#. §6: $P \\implies P \\lor Q.$ +#: Game.Levels.LessOrEqual.L07or_symm +msgid "" +"# Summary\n" +"The §0 tactic changes a goal of §1 into a goal of §2.\n" +"Use it when your hypotheses guarantee that the reason that §3\n" +"is true is because in fact §4 is true.\n" +"\n" +"Internally this tactic is just §5ing a theorem\n" +"saying that §6\n" +"\n" +"Note that this tactic can turn a solvable goal into an unsolvable\n" +"one." +msgstr "" +"# Zusammenfassung\n" +"Die Taktik §0 verwandelt ein Ziel §1 in §2.\n" +"Benutze sie, wenn deine Annahmen garantieren, dass §3\n" +"nur deshalb wahr ist, weil in Wirklichkeit §4 wahr ist.\n" +"\n" +"Intern wendet diese Taktik im Grunde nur §5 auf einen Satz an,\n" +"der besagt, dass §6\n" +"\n" +"Beachte, dass diese Taktik ein beweisbares Ziel in ein unbeweisbares\n" +"verwandeln kann." + +#: Game.Levels.Multiplication +msgid "Multiplication World" +msgstr "Multiplikations-Welt" + +#. §0: `le_zero` +#. §1: `x ≤ 0` +#. §2: `x = 0` +#. §3: `x ≤ 1` +#. §4: `x = 0` +#. §5: `x = 1` +#: Game.Levels.LessOrEqual.L10le_one +msgid "" +"We've seen §0, the proof that if §1 then §2.\n" +"Now we'll prove that if §3 then §4 or §5." +msgstr "" +"Wir haben §0 gesehen, den Beweis dafür, dass aus §1 die Aussage §2 folgt.\n" +"Jetzt beweisen wir, dass aus §3 folgt, dass §4 oder §5 gilt." + +#. §0: $\\mathbb{N}$ +#: Game +msgid "" +"In this game you recreate the natural numbers §0 from the Peano axioms,\n" +"learning the basics about theorem proving in Lean.\n" +"\n" +"This is a good first introduction to Lean!" +msgstr "" +"In diesem Spiel baust du die natürlichen Zahlen §0 aus den Peano-Axiomen neu " +"auf\n" +"und lernst dabei die Grundlagen des Beweisens von Sätzen in Lean.\n" +"\n" +"Das ist eine gute erste Einführung in Lean!" + +#. §0: `y` +#. §1: `add_left_eq_self` +#. §2: `add_right_cancel` +#. §3: `` +#. §4: `>_` +#. §5: ``` +#. nth_rewrite 2 [← zero_add y] +#. exact add_right_cancel x 0 y +#. ``` +#: Game.Levels.AdvAddition.L03add_left_eq_self +msgid "" +"Did you use induction on §0?\n" +"Here's a two-line proof of §1 which uses §2.\n" +"If you want to inspect it, you can go into \"Editor mode\" by clicking §3 in " +"the top right\n" +"and then just cut and paste the proof and move your cursor around it\n" +"to see the hypotheses and goal at any given point\n" +"(although you'll lose your own proof this way). Click §4 to get\n" +"back to \"Typewriter mode\".\n" +"§5" +msgstr "" +"Hast du Induktion über §0 verwendet?\n" +"Hier ist ein zweizeiliger Beweis von §1, der §2 verwendet.\n" +"Wenn du ihn untersuchen möchtest, kannst du in den „Editor-Modus“ wechseln, " +"indem du oben rechts auf §3 klickst,\n" +"und dann den Beweis einfach kopieren und einfügen und deinen Cursor darin " +"bewegen,\n" +"um die Annahmen und das Ziel an jeder beliebigen Stelle zu sehen\n" +"(auch wenn du auf diese Weise deinen eigenen Beweis verlierst). Klicke auf " +"§4, um\n" +"zum „Schreibmaschinen-Modus“ zurückzukehren.\n" +"§5" + +#. §0: $x+1=4$ +#. §1: $x=3$ +#: Game.Levels.Implication.L04succ_inj Game.Levels.Implication.L05succ_inj2 +#: Game.Levels.Algorithm.L05pred Game.Levels.Algorithm.L07succ_ne_succ +#: Game.Levels.AdvAddition.L05add_right_eq_zero +#: Game.Levels.AdvAddition.L06add_left_eq_zero +#: Game.Levels.LessOrEqual.L09succ_le_succ +msgid "If §0 then §1." +msgstr "Wenn §0, dann §1." + +#. §0: $x+y+z$ +#. §1: $(x+y)+z$ +#. §2: $x+(y+z)$ +#. §3: $x+y+z$ +#. §4: $(x+y)+z$ +#. §5: $(x+y)+z$ +#. §6: $x+(y+z)$ +#: Game.Levels.Addition.L04add_assoc +msgid "" +"We've been adding up two numbers; in this level we will add up three.\n" +"\n" +" What does §0 *mean*? It could either mean §1, or it\n" +" could mean §2. In Lean, §3 means §4.\n" +"\n" +" But why do we care which one it means; §5 and §6 are *equal*!\n" +"\n" +" That's true, but we didn't prove it yet. Let's prove it now by induction." +msgstr "" +"Wir haben bisher zwei Zahlen addiert; in diesem Level addieren wir drei.\n" +"\n" +" Was *bedeutet* §0? Es könnte entweder §1 oder §2\n" +" bedeuten. In Lean steht §3 für §4.\n" +"\n" +" Aber warum ist es uns wichtig, was von beiden gemeint ist; §5 und §6 sind " +"doch *gleich*!\n" +"\n" +" Das stimmt, aber wir haben es noch nicht bewiesen. Beweisen wir es jetzt " +"per Induktion." + +#. §0: `add_left_eq_self` +#. §1: ``` +#. rw [add_comm] +#. intro h +#. apply add_left_eq_self at h +#. exact h +#. ``` +#. §2: ``` +#. rw [add_comm] +#. exact add_left_eq_self y x +#. ``` +#. §3: `x` +#. §4: ``` +#. induction x with d hd +#. intro h +#. rw [zero_add] at h +#. exact h +#. intro h +#. rw [succ_add] at h +#. apply succ_inj at h +#. apply hd at h +#. exact h +#. ``` +#: Game.Levels.AdvAddition.L04add_right_eq_self +msgid "" +"Here's a proof using §0:\n" +"§1\n" +"\n" +"and here's an even shorter one using the same idea:\n" +"§2\n" +"\n" +"Alternatively you can just prove it by induction on §3:\n" +"\n" +"§4" +msgstr "" +"Hier ist ein Beweis mit §0:\n" +"§1\n" +"\n" +"und hier ist ein noch kürzerer, der dieselbe Idee verwendet:\n" +"§2\n" +"\n" +"Alternativ kannst du es einfach per Induktion über §3 beweisen:\n" +"\n" +"§4" + +#. §0: `add_right_eq_zero` +#. §1: `symm at` +#: Game.Levels.LessOrEqual.L05le_zero +msgid "" +"You want to use §0, which you already\n" +"proved, but you'll have to start with §1 your hypothesis." +msgstr "" +"Du möchtest das Lemma §0 verwenden, das du bereits\n" +"bewiesen hast, aber du musst damit beginnen, §1 auf deine Annahme anzuwenden." + +#. §0: `1` +#. §1: `succ 0` +#. §2: `rw [one_eq_succ_zero]` +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "Next turn §0 into §1 with §2." +msgstr "Verwandle als Nächstes §0 mittels §2 in §1." + +#: Game.Levels.Implication.L07intro2 +msgid "intro practice" +msgstr "Einführungs-Übung" + +#. §0: `n : ℕ` +#. §1: `n` +#. §2: `induction n with d hd` +#. §3: `n` +#. §4: `d` +#. §5: `hd` +#. §6: ``` +#. 0 + n = n +#. ``` +#. §7: `induction n with d hd` +#. §8: `0 + 0 = 0` +#. §9: `hd : 0 + d = d` +#. §10: `0 + succ d = succ d` +#: Game.Levels.Addition.L01zero_add +msgid "" +"## Summary\n" +"\n" +"If §0 is an object, and the goal mentions §1, then §2\n" +"attempts to prove the goal by induction on §3, with the inductive\n" +"variable in the successor case being §4, and the inductive hypothesis being " +"§5.\n" +"\n" +"### Example:\n" +"If the goal is\n" +"§6\n" +"\n" +"then\n" +"\n" +"§7\n" +"\n" +"will turn it into two goals. The first is §8;\n" +"the second has an assumption §9 and goal\n" +"§10.\n" +"\n" +"Note that you must prove the first\n" +"goal before you can access the second one." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn §0 ein Objekt ist und das Ziel §1 enthält, dann versucht §2,\n" +"das Ziel per Induktion über §3 zu beweisen, wobei die Induktionsvariable\n" +"im Nachfolgerfall §4 ist und die Induktionsvoraussetzung §5 lautet.\n" +"\n" +"### Beispiel:\n" +"Wenn das Ziel\n" +"§6\n" +"\n" +"lautet, dann verwandelt\n" +"\n" +"§7\n" +"\n" +"es in zwei Ziele. Das erste ist §8;\n" +"das zweite hat eine Annahme §9 und das Ziel\n" +"§10.\n" +"\n" +"Beachte, dass du das erste\n" +"Ziel beweisen musst, bevor du auf das zweite zugreifen kannst." + +#: Game.Levels.Implication.L09zero_ne_succ +msgid "zero_ne_succ" +msgstr "zero_ne_succ" + +#. §0: $1\\times m=m$ +#. §1: `succ_mul` +#: Game.Levels.Multiplication.L05one_mul +msgid "" +"You can prove §0 in at least three ways.\n" +"Either by induction, or by using §1, or\n" +"by using commutativity. Which do you think is quickest?" +msgstr "" +"Du kannst §0 auf mindestens drei Arten beweisen.\n" +"Entweder per Induktion, oder mit §1, oder\n" +"mithilfe der Kommutativität. Was denkst du, welche Art ist die schnellste?" + +#. §0: `succ a + «{d}»` +#. §1: `(succ a) + «{d}»` +#. §2: `succ` +#: Game.Levels.Addition.L02succ_add +msgid "" +"Note that §0 means §1. Put your cursor\n" +"on any §2 in the goal or assumptions to see what exactly it's eating." +msgstr "" +"Beachte, dass §0 für §1 steht. Setze deinen Cursor\n" +"auf ein beliebiges §2 im Ziel oder in den Annahmen, um zu sehen, worauf " +"genau es angewendet wird." + +#. §0: `cases «{h}» with hx hy` +#: Game.Levels.LessOrEqual.L07or_symm +msgid "We don't know whether to go left or right yet. So start with §0." +msgstr "" +"Wir wissen noch nicht, ob wir nach links oder rechts gehen sollten. Beginne " +"also mit §0." + +#. §0: `False` +#. §1: `True` +#. §2: `is_zero (succ a)` +#. §3: `rw [← is_zero_succ a]` +#: Game.Levels.Algorithm.L06is_zero +msgid "" +"We're going to change that §0 into §1. Start by changing it into\n" +"§2 by executing §3." +msgstr "" +"Wir werden dieses §0 in §1 umwandeln. Beginne damit, es in §2 umzuwandeln,\n" +"indem du §3 ausführst." + +#. §0: `contrapose! h` +#: Game.Levels.Algorithm.L07succ_ne_succ +msgid "" +"Can you take it from here? (note: if you try §0 again, it will\n" +"take you back to where you started!)" +msgstr "" +"Kommst du ab hier alleine weiter? (Hinweis: Wenn du §0 noch einmal " +"versuchst,\n" +"landest du wieder am Anfang!)" + +#. §0: `pow_two a` +#. §1: `a ^ 2 = a * a` +#: Game.Levels.Power.L05pow_two +msgid "§0 says that §1." +msgstr "§0 besagt, dass §1 gilt." + +#: Game.Levels.Implication.L04succ_inj +msgid "In the next level, we'll do the same proof but backwards." +msgstr "Im nächsten Level führen wir denselben Beweis, aber rückwärts." + +#. §0: ``` +#. rw [mul_comm, mul_add] +#. repeat rw [mul_comm c] +#. rfl +#. ``` +#: Game.Levels.Multiplication.L08add_mul +#: Game.Levels.LessOrEqual.L09succ_le_succ +msgid "" +"Here's my proof:\n" +"§0" +msgstr "" +"Hier ist mein Beweis:\n" +"§0" + +#. §0: `exact` +#: Game.Levels.Implication.L03apply +msgid "Now finish using the §0 tactic." +msgstr "Die Taktik §0 bringt dich nun ans Ziel." + +#. §0: `37 ^ n` +#. §1: `37 ^ 0` +#. §2: `37 ^ (succ d)` +#. §3: `37 ^ d` +#. §4: `pow_zero (a : ℕ) : a ^ 0 = 1` +#. §5: `pow_succ (a b : ℕ) : a ^ succ b = a ^ b * a` +#: Game.Levels.Power +msgid "" +"This world introduces exponentiation. If you want to define §0\n" +"then, as always, you will need to know what §1 is, and\n" +"what §2 is, given only §3.\n" +"\n" +"You can probably guess the names of the general theorems:\n" +"\n" +" * §4\n" +" * §5\n" +"\n" +"Using only these, can you get past the final boss level?\n" +"\n" +"The levels in this world were designed by Sian Carey, a UROP student\n" +"at Imperial College London, funded by a Mary Lister McCammon Fellowship\n" +"in the summer of 2019. Thanks to Sian and also thanks to Imperial\n" +"College for funding her." +msgstr "" +"Diese Welt führt die Potenzierung ein. Wenn du §0 definieren möchtest,\n" +"dann musst du wie immer wissen, was §1 ist, und\n" +"was §2 ist, wenn nur §3 gegeben ist.\n" +"\n" +"Die Namen der allgemeinen Sätze kannst du wahrscheinlich erraten:\n" +"\n" +" * §4\n" +" * §5\n" +"\n" +"Kannst du nur mit diesen den Endgegner des Spiels bezwingen?\n" +"\n" +"Die Level in dieser Welt wurden von Sian Carey entworfen, einer UROP-" +"Studentin\n" +"am Imperial College London, finanziert durch ein Mary-Lister-McCammon-" +"Stipendium\n" +"im Sommer 2019. Danke an Sian und auch danke an das Imperial\n" +"College für die Finanzierung." + +#. §0: `h` +#. §1: `succ x = succ 3` +#. §2: `succ_inj` +#. §3: `rw [four_eq_succ_three] at h` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"Let's first get §0 into the form §1 so we can\n" +"apply §2. First execute §3\n" +"to change the 4 on the right hand side." +msgstr "" +"Bringen wir zunächst §0 in die Form §1, damit wir\n" +"§2 anwenden können. Führe zuerst §3 aus,\n" +"um die 4 auf der rechten Seite zu ändern." + +#. §0: `rw [← two_eq_succ_one]` +#. §1: `succ 1` +#. §2: `2` +#: Game.Levels.Tutorial.L04rw_backwards Game.Levels.Tutorial.L05add_zero +msgid "Now §0 will change §1 into §2." +msgstr "§0 wird nun §1 in §2 umwandeln." + +#. §0: ``` +#. intro h +#. apply succ_inj +#. repeat rw [succ_eq_add_one] +#. exact h +#. ``` +#: Game.Levels.Implication.L07intro2 +msgid "" +"Here's a completely backwards proof:\n" +"§0" +msgstr "" +"Hier ist ein komplett rückwärts geführter Beweis:\n" +"§0" + +#: Game.Levels.LessOrEqual.L05le_zero +msgid "x ≤ 0 → x = 0" +msgstr "x ≤ 0 → x = 0" + +#: Game.Levels.AdvAddition +msgid "Advanced Addition World" +msgstr "Fortgeschrittene Additions-Welt" + +#. §0: $x$ +#. §1: $q$ +#. §2: $37x+q=37x+q.$ +#: Game.Levels.Tutorial.L01rfl +msgid "If §0 and §1 are arbitrary natural numbers, then §2" +msgstr "Wenn §0 und §1 beliebige natürliche Zahlen sind, dann gilt §2" + +#. §0: `left` +#: Game.Levels.LessOrEqual.L07or_symm +msgid "This time, use the §0 tactic." +msgstr "Verwende diesmal die Taktik §0." + +#. §0: $(a+b)^2=a^2+b^2$ +#: Game.Levels.Power.L09add_sq +msgid "" +"It's all over! You have proved a theorem which has tripped up\n" +"schoolkids for generations (some of them think §0:\n" +"this is \"the freshman's dream\").\n" +"\n" +"How many rewrites did you use? I can do it in 12.\n" +"\n" +"But wait! This boss is stirring...and mutating into a second more powerful " +"form!" +msgstr "" +"Es ist geschafft! Du hast einen Satz bewiesen, über den\n" +"Schulkinder seit Generationen stolpern (manche von ihnen glauben §0:\n" +"das ist „der Traum des Erstsemesters“).\n" +"\n" +"Wie viele `rw`-Schritte hast du gebraucht? Ich schaffe es in 12.\n" +"\n" +"Aber halt! Dieser Endgegner regt sich … und verwandelt sich in eine zweite, " +"mächtigere Form!" + +#. §0: `one_mul m` +#. §1: `1 * m = m` +#: Game.Levels.Multiplication.L05one_mul +msgid "§0 is the proof §1." +msgstr "§0 ist der Beweis §1." + +#: Game.Levels.Algorithm.L03add_algo2 +msgid "making life simple" +msgstr "sich das Leben einfach machen" + +#. §0: `four_eq_succ_three` +#: Game.Levels.Implication.L05succ_inj2 +msgid "" +"Now rewrite §0 backwards to make the goal\n" +"equal to the hypothesis." +msgstr "" +"Schreibe nun mit §0 rückwärts um, damit das Ziel\n" +"sich der Annahme angleicht." + +#: Game.Levels.Addition.L04add_assoc +msgid "add_assoc (associativity of addition)" +msgstr "add_assoc (Assoziativität der Addition)" + +#. §0: `add_assoc a b c` +#. §1: `(a + b) + c = a + (b + c)` +#. §2: `(a + b) + c` +#. §3: `a + b + c` +#: Game.Levels.Addition.L04add_assoc +msgid "" +"§0 is a proof\n" +"that §1. Note that in Lean §2 prints\n" +"as §3, because the notation for addition is defined to be left\n" +"associative." +msgstr "" +"§0 ist ein Beweis\n" +"dafür, dass §1 gilt. Beachte, dass §2 in Lean\n" +"als §3 dargestellt wird, weil die Notation für die Addition als\n" +"linksassoziativ definiert ist." + +#. §0: `intro h` +#: Game.Levels.Implication.L07intro2 +msgid "Start with §0 to assume the hypothesis." +msgstr "Beginne mit §0, um die Annahme anzunehmen." + +#: Game.Levels.Multiplication.L04mul_comm +msgid "mul_comm" +msgstr "mul_comm" + +#. §0: `2 + 2 ≠ 5` +#: Game.Levels.Algorithm.L09decide2 +msgid "" +"We gave a pretty unsatisfactory proof of §0 earlier on; now give a nicer one." +msgstr "" +"Wir haben vorhin einen ziemlich unbefriedigenden Beweis von §0 gegeben; " +"liefere nun einen schöneren." + +#. §0: $n = 0$ +#. §1: `X = Y` +#: Game.Levels.Addition.L01zero_add +msgid "" +"Now you have two goals. Once you proved the first, you will jump to the " +"second one.\n" +"This first goal is the base case §0.\n" +"\n" +"Recall that you can rewrite the proof of any lemma which is visible\n" +"in your inventory, or of any assumption displayed above the goal,\n" +"as long as it is of the form §1." +msgstr "" +"Jetzt hast du zwei Ziele. Sobald du das erste bewiesen hast, springst du zum " +"zweiten.\n" +"Dieses erste Ziel ist der Induktionsanfang §0.\n" +"\n" +"Denk daran, dass du mit dem Beweis jedes Lemmas umschreiben kannst, das in\n" +"deinem Inventar sichtbar ist, und mit dem Beweis jeder Annahme, die über dem " +"Ziel angezeigt wird,\n" +"solange sie die Form §1 hat." + +#: Game.Levels.Addition.L02succ_add +msgid "" +"Well done! You now have enough tools to tackle the main boss of this world." +msgstr "" +"Gut gemacht! Du hast jetzt genug Werkzeuge, um dem Hauptgegner dieser Welt " +"entgegenzutreten." + +#. §0: `add_zero c` +#. §1: `c + 0 = c` +#. §2: `b + 0` +#. §3: `b` +#. §4: `rw [add_zero]` +#. §5: `rw [add_zero b]` +#. §6: `rw [add_zero]` +#: Game.Levels.Tutorial.L06add_zero2 +msgid "" +"§0 is a proof of §1 so that was what got rewritten.\n" +"You can now change §2 to §3 with §4 or §5. You\n" +"can usually stick to §6 unless you need real precision." +msgstr "" +"§0 ist ein Beweis von §1, also wurde genau das umgeschrieben.\n" +"Du kannst nun §2 mit §4 oder §5 zu §3 ändern.\n" +"Normalerweise kommst du mit §6 aus, außer du brauchst echte Präzision." + +#: Game.Levels.AdvAddition.L01add_right_cancel +msgid "add_right_cancel" +msgstr "add_right_cancel" + +#. §0: `succ_eq_add_one` +#. §1: `h` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"Now rewrite §0 backwards at §1\n" +"to get the right hand side." +msgstr "" +"Schreibe nun §0 rückwärts an §1 um,\n" +"um die rechte Seite zu erhalten." + +#. §0: `decide` +#: Game.Levels.Algorithm.L08decide +msgid "" +"You can read more about the §0 tactic by clicking\n" +"on it in the top right." +msgstr "" +"Mehr über die Taktik §0 erfährst du, indem du\n" +"oben rechts darauf klickst." + +#. §0: `a ≠ b` +#. §1: `(a = b) → False` +#. §2: `P` +#. §3: `P → False` +#. §4: `P` +#. §5: `True → False` +#. §6: `False → False` +#. §7: `a ≠ b` +#. §8: `P → Q` +#. §9: `a ≠ b` +#. §10: `intro h` +#. §11: `h` +#. §12: `a ≠ b` +#. §13: `apply h at h1` +#. §14: `h1` +#. §15: `a = b` +#: Game.Levels.Implication.L08ne +msgid "" +"§0 is *notation* for §1.\n" +"\n" +"The reason this is mathematically\n" +"valid is that if §2 is a true-false statement then §3\n" +"is the logical opposite of §4. Indeed §5 is false,\n" +"and §6 is true!\n" +"\n" +"The upshot of this is that you can treat §7 in exactly\n" +"the same way as you treat any implication §8. For example,\n" +"if your *goal* is of the form §9 then you can make progress\n" +"with §10, and if you have a hypothesis §11 of the\n" +"form §12 then you can §13 if §14 is a proof\n" +"of §15." +msgstr "" +"§0 ist *Notation* für §1.\n" +"\n" +"Der Grund, warum das mathematisch\n" +"gültig ist: Wenn §2 eine Wahr-Falsch-Aussage ist, dann ist §3\n" +"das logische Gegenteil von §4. Tatsächlich ist §5 falsch\n" +"und §6 wahr!\n" +"\n" +"Das Fazit daraus ist, dass du §7 genau\n" +"so behandeln kannst wie jede Implikation §8. Wenn\n" +"zum Beispiel dein *Ziel* die Form §9 hat, dann kommst du\n" +"mit §10 weiter, und wenn du eine Annahme §11 der\n" +"Form §12 hast, dann kannst du §13 anwenden, falls §14 ein Beweis\n" +"von §15 ist." + +#. §0: `mul_assoc a b c` +#. §1: `(a * b) * c = a * (b * c)` +#. §2: `a * b * c` +#. §3: `(a * b) * c` +#. §4: `(a * b) * c = a * (b * c)` +#. §5: `(6 - 2) - 1` +#. §6: `6 - (2 - 1)` +#: Game.Levels.Multiplication.L09mul_assoc +msgid "" +"§0 is a proof that §1.\n" +"\n" +"Note that when Lean says §2 it means §3.\n" +"\n" +"Note that §4 cannot be proved by \\\\\"pure thought\\\\\":\n" +"for example subtraction is not associative, as §5 is not\n" +"equal to §6." +msgstr "" +"§0 ist ein Beweis dafür, dass §1 gilt.\n" +"\n" +"Beachte: Wenn Lean §2 sagt, ist damit §3 gemeint.\n" +"\n" +"Beachte, dass §4 nicht durch „reines Nachdenken“ bewiesen werden kann:\n" +"Zum Beispiel ist die Subtraktion nicht assoziativ, da §5 nicht\n" +"gleich §6 ist." + +#: Game.Levels.AdvAddition.L03add_left_eq_self +msgid "add_left_eq_self" +msgstr "add_left_eq_self" + +#: GameServer.RpcHandlers +msgid "level completed with warnings… 🎭" +msgstr "Level mit Warnungen abgeschlossen… 🎭" + +#. §0: `h2` +#. §1: `x = y → False` +#. §2: `apply` +#. §3: `h2` +#. §4: `at h1` +#: Game.Levels.Implication.L08ne +msgid "" +"Remember that §0 is a proof of §1. Try\n" +"§2ing §3 either §4 or directly to the goal." +msgstr "" +"Denk daran, dass §0 ein Beweis von §1 ist. Versuche, §3 mit der §2-Taktik\n" +"anzuwenden, entweder §4 oder direkt auf das Ziel." + +#. §0: `apply mul_left_cancel at h` +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "You can now §0" +msgstr "Du kannst nun §0 ausführen" + +#. §0: `x * y = 1 → x = 1` +#. §1: `x + y = 0 → x = 0` +#. §2: `x ≤ 1` +#. §3: `le_one` +#. §4: `≤` +#. §5: `have` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "" +"This level proves §0, the multiplicative analogue of Advanced Addition\n" +"World's §1. The strategy is to prove that §2 and then use the\n" +"lemma §3 from §4 world.\n" +"\n" +"We'll prove it using a new and very useful tactic called §5." +msgstr "" +"Dieses Level beweist §0, das multiplikative Gegenstück zu §1 aus der\n" +"Fortgeschrittenen Additions-Welt. Die Strategie besteht darin, zu beweisen, " +"dass §2 gilt,\n" +"und dann das Lemma §3 aus der §4-Welt zu verwenden.\n" +"\n" +"Wir beweisen es mit einer neuen und sehr nützlichen Taktik namens §5." + +#: Game.Levels.Power.L06pow_add +msgid "pow_add" +msgstr "pow_add" + +#. §0: `rw [add_zero c]` +#: Game.Levels.Tutorial.L06add_zero2 Game.Levels.LessOrEqual.L08le_total +msgid "Try §0." +msgstr "Probiers mal mit §0." + +#. §0: `{0,1,2,3,4,...}` +#. §1: `2 + 2 = 4` +#. §2: `x + y = y + x` +#: Game +msgid "" +"# Welcome to the Natural Number Game\n" +"#### An introduction to mathematical proof.\n" +"\n" +"In this game, we will build the basic theory of the natural\n" +"numbers §0 from scratch. Our first goal is to prove\n" +"that §1. Next we'll prove that §2.\n" +"And at the end we'll see if we can prove Fermat's Last Theorem.\n" +"We'll do this by solving levels of a computer puzzle game called Lean.\n" +"\n" +"# Read this.\n" +"\n" +"Learning how to use an interactive theorem prover takes time.\n" +"Tests show that the people who get the most out of this game are\n" +"those who read the help texts like this one.\n" +"\n" +"To start, click on \"Tutorial World\".\n" +"\n" +"Note: this is a new Lean 4 version of the game containing several\n" +"worlds which were not present in the old Lean 3 version. More new worlds\n" +"such as Strong Induction World, Even/Odd World and Prime Number World\n" +"are in development; if you want to see their state or even help out, " +"checkout\n" +"out the [issues in the github repo](https://github.com/leanprover-community/" +"NNG4/issues).\n" +"\n" +"## More\n" +"\n" +"Click on the three lines in the top right and select \"Game Info\" for " +"resources,\n" +"links, and ways to interact with the Lean community." +msgstr "" +"# Willkommen bei den Zahlenspielen!\n" +"#### Eine Einführung in mathematische Beweise.\n" +"\n" +"In diesem Spiel entwickeln wir von Grund auf die elementare Theorie der " +"natürlichen\n" +"Zahlen §0. Unser erstes Ziel ist es, zu beweisen,\n" +"dass §1 gilt. Als Nächstes beweisen wir, dass §2 gilt.\n" +"Und am Ende schauen wir, ob wir Fermats letzten Satz beweisen können.\n" +"Das machen wir, indem wir Level eines Computer-Rätselspiels namens Lean " +"lösen.\n" +"\n" +"# Lesen hilft.\n" +"\n" +"Zu lernen, wie man einen interaktiven Beweisassistenten benutzt, braucht " +"Zeit.\n" +"Untersuchungen zeigen, dass diejenigen am meisten von diesem Spiel " +"profitieren,\n" +"die Hilfetexte wie diesen hier lesen.\n" +"\n" +"Klicke zum Starten auf „Tutorial-Welt“.\n" +"\n" +"Beachte: Dies ist eine neue Lean-4-Version des Spiels mit mehreren\n" +"Welten, die es in der alten Lean-3-Version nicht gab. Weitere neue Welten,\n" +"z. B. eine Starke-Induktions-Welt, eine Gerade/Ungerade-Welt und eine " +"Primzahlen-Welt\n" +"sind in Entwicklung. Wenn du ihren Fortschritt sehen oder sogar bei ihrer " +"Entwicklung mithelfen möchtest, schau dir\n" +"die [Issues im GitHub-Repository](https://github.com/leanprover-community/" +"NNG4/issues) an.\n" +"\n" +"## Mehr\n" +"\n" +"Klicke oben rechts auf die drei Striche und wähle „Spielinfo“ für " +"Ressourcen,\n" +"Links und Möglichkeiten, mit der Lean-Community zu interagieren." + +#. §0: $a$ +#. §1: $a ^ 1 = a$ +#: Game.Levels.Power.L03pow_one Game.Levels.Power.L04one_pow +#: Game.Levels.Power.L05pow_two +msgid "For all naturals §0, §1." +msgstr "Für alle natürlichen Zahlen §0 gilt §1." + +#. §0: `decide` +#. §1: `DecidableEq ℕ` +#. §2: `instance` +#. §3: `decide` +#. §4: `a = b` +#. §5: `a ≠ b` +#: Game.Levels.Algorithm.L08decide +msgid "" +"# Summary\n" +"\n" +"§0 will attempt to solve a goal if it can find an algorithm which it\n" +"can run to solve it.\n" +"\n" +"## Example\n" +"\n" +"A term of type §1 is an algorithm to decide whether two naturals\n" +"are equal or different. Hence, once this term is made and made into an §2,\n" +"the §3 tactic can use it to solve goals of the form §4 or §5." +msgstr "" +"# Zusammenfassung\n" +"\n" +"Die Taktik §0 versucht, ein Ziel zu erreichen, sofern sie einen geeigneten " +"Algorithmus findet, den sie\n" +"dazu ausführen kann.\n" +"\n" +"## Beispiel\n" +"\n" +"Ein Term vom Typ §1 ist ein Algorithmus, der entscheidet, ob zwei " +"natürliche\n" +"Zahlen gleich oder verschieden sind. Sobald solch ein Term definiert und als " +"§2 registriert\n" +"wurde, kann die Taktik §3 ihn benutzen, um Ziele der Form §4 oder §5 zu " +"erreichen." + +#. §0: `apply` +#. §1: `apply succ_inj at h` +#. §2: `h` +#. §3: `x = 3` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"Now let's §0 our new theorem. Execute §1\n" +"to change §2 to a proof of §3." +msgstr "" +"Nun wollen wir unseren neuen Satz mit §0 anwenden. Führe §1 aus,\n" +"um §2 in einen Beweis von §3 umzuwandeln." + +#. §0: `repeat t` +#. §1: `t` +#. §2: `repeat rw [add_zero]` +#. §3: `a + 0 + (0 + (0 + 0)) = b + 0 + 0` +#. §4: `a = b` +#. §5: `h : X = Y` +#. §6: `X` +#. §7: `nth_rewrite 3 [h]` +#. §8: `X` +#. §9: `Y` +#. §10: `2 + 2 = 4` +#. §11: `nth_rewrite 2 [two_eq_succ_one]` +#. §12: `2 + succ 1 = 4` +#. §13: `rw [two_eq_succ_one]` +#. §14: `succ 1 + succ 1 = 4` +#: Game.Levels.Tutorial.L02rw +msgid "" +"## Summary\n" +"\n" +"§0 repeatedly applies the tactic §1\n" +"to the goal. You don't need to use this\n" +"tactic, it just speeds things up sometimes.\n" +"\n" +"## Example\n" +"\n" +"§2 will turn the goal\n" +"§3\n" +"into the goal\n" +"§4.\n" +"\"\n" +"\n" +"TacticDoc nth_rewrite \"\n" +"## Summary\n" +"\n" +"If §5 and there are several §6s in the goal, then\n" +"§7 will just change the third §8 to a §9.\n" +"\n" +"## Example\n" +"\n" +"If the goal is §10 then §11\n" +"will change the goal to §12. In contrast, §13\n" +"will change the goal to §14." +msgstr "" +"## Zusammenfassung\n" +"\n" +"§0 wendet die Taktik §1 wiederholt\n" +"auf das Ziel an. Du musst diese\n" +"Taktik nicht benutzen, sie beschleunigt die Dinge nur manchmal.\n" +"\n" +"## Beispiel\n" +"\n" +"§2 verwandelt das Ziel\n" +"§3\n" +"in das Ziel\n" +"§4.\n" +"„\n" +"\n" +"TacticDoc nth_rewrite “\n" +"## Zusammenfassung\n" +"\n" +"Wenn §5 und es mehrere §6 im Ziel gibt, dann\n" +"ändert §7 nur das dritte §8 zu einem §9.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn das Ziel §10 ist, dann ändert §11\n" +"das Ziel zu §12. Im Gegensatz dazu ändert §13\n" +"das Ziel zu §14." + +#: Game.Levels.Tutorial.L01rfl +msgid "The rfl tactic" +msgstr "Die rfl-Taktik" + +#. §0: ``` +#. macro \"simp_add\" : tactic => `(tactic|( +#. simp only [add_assoc, add_left_comm, add_comm])) +#. ``` +#. §1: `simp_add` +#. §2: `simp only [add_assoc, add_left_comm, add_comm]` +#. §3: `simp_add` +#: Game.Levels.Algorithm.L04add_algo3 +msgid "" +"You can make your own tactics in Lean.\n" +"This code here\n" +"§0\n" +"was used to create a new tactic §1, which runs\n" +"§2.\n" +"Try running §3 to solve this level!" +msgstr "" +"Du kannst in Lean deine eigenen Taktiken erstellen.\n" +"Dieser Code hier\n" +"§0\n" +"wurde benutzt, um eine neue Taktik §1 zu erstellen, die\n" +"§2 ausführt.\n" +"Versuche, §3 auszuführen, um dieses Level zu lösen!" + +#. §0: $x \\leq 1$ +#. §1: $x = 0$ +#. §2: $x = 1$ +#: Game.Levels.LessOrEqual.L10le_one +msgid "If §0 then either §1 or §2." +msgstr "Wenn §0 gilt, dann gilt entweder §1 oder §2." + +#: Game.Levels.Addition.L02succ_add +msgid "succ_add" +msgstr "succ_add" + +#. §0: `add_comm` +#. §1: `b` +#. §2: `d` +#: Game.Levels.Algorithm.L02add_algo1 +msgid "Finally use a targeted §0 to switch §1 and §2." +msgstr "Verwende schließlich ein gezieltes §0, um §1 und §2 zu vertauschen." + +#. §0: `≤` +#: Game.Levels.LessOrEqual.L11le_two +msgid "" +"Nice!\n" +"\n" +"The next step in the development of order theory is to develop\n" +"the theory of the interplay between §0 and multiplication.\n" +"If you've already done Multiplication World, you're now ready for\n" +"Advanced Multiplication World. Click on \"Home\" to access it." +msgstr "" +"Super!\n" +"\n" +"Der nächste Schritt in der Entwicklung der Ordnungstheorie besteht darin,\n" +"die Theorie des Zusammenspiels zwischen §0 und Multiplikation zu " +"entwickeln.\n" +"Wenn du die Multiplikations-Welt bereits abgeschlossen hast, bist du jetzt " +"bereit für\n" +"die Fortgeschrittene Multiplikations-Welt. Klicke auf „Home“, um sie zu " +"öffnen." + +#. §0: `a` +#. §1: `b` +#. §2: `c` +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"Induction on §0 is the most troublesome, then §1,\n" +"and §2 is the easiest." +msgstr "" +"Induktion über §0 ist am mühsamsten, dann kommt §1,\n" +"und §2 ist am einfachsten." + +#. §0: $a+(b+0)+(c+0)=a+b+c.$ +#: Game.Levels.Tutorial.L05add_zero Game.Levels.Tutorial.L06add_zero2 +#: Game.Levels.Power.L01zero_pow_zero Game.Levels.Algorithm.L09decide2 +#: Game.Levels.AdvAddition.L03add_left_eq_self +msgid "§0" +msgstr "§0" + +#. §0: `zero_ne_succ` +#. §1: `succ_inj` +#: Game.Levels.Implication.L11two_add_two_ne_five +msgid "" +"2 + 2 ≠ 5 is boring to prove in full, given only the tools we have " +"currently.\n" +"To make it a bit less painful, I have unfolded all of the numerals for you.\n" +"See if you can use §0 and §1 to prove this." +msgstr "" +"2 + 2 ≠ 5 vollständig zu beweisen ist langweilig, wenn man nur die Werkzeuge " +"hat, die wir momentan haben.\n" +"Um es etwas weniger schmerzhaft zu machen, habe ich alle Zahlen bereits für " +"dich aufgefaltet.\n" +"Schau, ob du §0 und §1 benutzen kannst, um das Ziel zu beweisen." + +#. §0: $x$ +#. §1: $y$ +#. §2: $x \\leq y$ +#. §3: $y \\leq x$ +#: Game.Levels.LessOrEqual.L08le_total +msgid "If §0 and §1 are numbers, then either §2 or §3." +msgstr "Wenn §0 und §1 Zahlen sind, dann gilt §2 oder §3." + +#. §0: `a ≤ b` +#. §1: `a ≤ b` +#. §2: `b ≤ c` +#. §3: `a ≤ c` +#. §4: `a ≤ b` +#. §5: `c` +#. §6: `b = a + c` +#: Game.Levels.LessOrEqual +msgid "" +"In this world we define §0 and prove standard facts\n" +"about it, such as \"if §1 and §2 then §3.\"\n" +"\n" +"The definition of §4 is \"there exists a number §5\n" +"such that §6. \" So we're going to have to learn\n" +"a tactic to prove \"exists\" theorems, and another one\n" +"to use \"exists\" hypotheses.\n" +"\n" +"Click on \"Start\" to proceed." +msgstr "" +"In dieser Welt definieren wir §0 und beweisen grundlegende Tatsachen " +"darüber,\n" +"etwa „wenn §1 und §2, dann §3“.\n" +"\n" +"Die Definition von §4 lautet „es gibt eine Zahl §5, sodass §6“. Wir müssen " +"also\n" +"eine Taktik lernen, um „es gibt“-Sätze zu beweisen, und eine weitere,\n" +"um „es gibt“-Annahmen zu benutzen.\n" +"\n" +"Klicke auf „Start“, um fortzufahren." + +#. §0: $a$ +#. §1: $m$ +#. §2: $n$ +#. §3: $a^{m + n} = a ^ m a ^ n$ +#: Game.Levels.Power.L06pow_add Game.Levels.Power.L07mul_pow +#: Game.Levels.Power.L08pow_pow +msgid "For all naturals §0, §1, §2, we have §3." +msgstr "Für alle natürlichen Zahlen §0, §1, §2 gilt §3." + +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "mul_left_cancel" +msgstr "mul_left_cancel" + +#: Game.Levels.AdvAddition.L06add_left_eq_zero +msgid "" +"You can just mimic the previous proof to do this one -- or you can figure " +"out a way\n" +"of using it." +msgstr "" +"Du kannst einfach den vorherigen Beweis nachahmen, um diesen hier zu führen " +"– oder du findest einen Weg,\n" +"ihn zu benutzen." + +#. §0: `0` +#. §1: `n` +#. §2: `succ n` +#. §3: `n` +#. §4: `n` +#. §5: `n` +#. §6: `0` +#. §7: `succ 0` +#. §8: `1` +#. §9: `2 = succ 1` +#. §10: `3 = succ 2` +#. §11: `4 = succ 3` +#. §12: `2 = succ 1` +#. §13: `two_eq_succ_one` +#. §14: $2$ +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "" +"## The birth of number.\n" +"\n" +"Numbers in Lean are defined by two rules.\n" +"\n" +"* §0 is a number.\n" +"* If §1 is a number, then the *successor* §2 of §3 is a number.\n" +"\n" +"The successor of §4 means the number after §5. Let's learn to\n" +"count, and name a few small numbers.\n" +"\n" +"## Counting to four.\n" +"\n" +"§6 is a number, so §7 is a number. Let's call this new number §8.\n" +"Similarly let's define §9, §10 and §11.\n" +"This gives us plenty of numbers to be getting along with.\n" +"\n" +"The *proof* that §12 is called §13.\n" +"Check out the \"012\" tab in the list of lemmas on the right\n" +"for this and other proofs.\n" +"\n" +"Let's prove that §14 is the number after the number after zero." +msgstr "" +"## Die Geburt der Zahlen.\n" +"\n" +"Zahlen werden in Lean durch zwei Regeln definiert.\n" +"\n" +"* §0 ist eine Zahl.\n" +"* Wenn §1 eine Zahl ist, dann ist der *Nachfolger* („successor“) §2 von §3 " +"eine Zahl.\n" +"\n" +"Der Nachfolger von §4 ist die Zahl nach §5. Lass uns zählen lernen\n" +"und ein paar kleine Zahlen benennen.\n" +"\n" +"## Zählen bis vier.\n" +"\n" +"§6 ist eine Zahl, also ist §7 eine Zahl. Nennen wir diese neue Zahl §8.\n" +"Ebenso definieren wir §9, §10 und §11.\n" +"Das gibt uns reichlich Zahlen, mit denen wir arbeiten können.\n" +"\n" +"Der *Beweis*, dass §12 gilt, heißt §13.\n" +"Sieh dir für diesen und andere Beweise den Reiter „012“ in der Liste der " +"Sätze rechts an.\n" +"\n" +"Lass uns beweisen, dass §14 die Zahl nach der Zahl nach Null ist." + +#. §0: `rw [← succ_eq_add_one] at h` +#: Game.Levels.Implication.L04succ_inj +msgid "Concretely: §0." +msgstr "Konkret: §0." + +#. §0: `pow_zero a : a ^ 0 = 1` +#: Game.Levels.Power.L01zero_pow_zero +msgid "" +"§0 is one of the two axioms\n" +"defining exponentiation in this game." +msgstr "" +"§0 ist eines der beiden Axiome,\n" +"die in diesem Spiel die Potenzierung definieren." + +#. §0: $a, b$ +#. §1: $c$ +#. §2: $(a + b) + c = (a + c) + b$ +#: Game.Levels.Addition.L05add_right_comm +msgid "" +"If §0 and §1 are arbitrary natural numbers, we have\n" +"§2." +msgstr "" +"Wenn §0 und §1 beliebige natürliche Zahlen sind, gilt\n" +"§2." + +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "" +"The lemma proved in the final level of this world will be helpful\n" +"in Divisibility World." +msgstr "" +"Das Lemma, das im letzten Level dieser Welt bewiesen wird, wird\n" +"in der Teilbarkeits-Welt hilfreich sein." + +#. §0: `pow_one a` +#. §1: `a ^ 1 = a` +#. §2: `a ^ 1` +#. §3: `a ^ 0 * a` +#. §4: `1 * a` +#. §5: `a` +#: Game.Levels.Power.L03pow_one +msgid "" +"§0 says that §1.\n" +"\n" +"Note that this is not quite true by definition: §2 is\n" +"defined to be §3 so it's §4, and to prove\n" +"that this is equal to §5 you need to use induction somewhere." +msgstr "" +"§0 besagt, dass §1 gilt.\n" +"\n" +"Beachte, dass dies nicht ganz per Definition wahr ist: §2 ist\n" +"per Definition §3, also §4, und um zu beweisen,\n" +"dass dies gleich §5 ist, musst du irgendwo Induktion verwenden." + +#. §0: `add_right_eq_self x y` +#. §1: $x + y = x\\implies y=0.$ +#: Game.Levels.AdvAddition.L04add_right_eq_self +msgid "" +"§0 is the theorem that §1\n" +"Two ways to do it spring to mind; I'll mention them when you've solved it." +msgstr "" +"§0 ist der Satz, dass §1\n" +"Mir fallen zwei Wege ein, dies zu beweisen; ich erwähne sie, wenn du das " +"Level gelöst hast." + +#. §0: $2+2=4$ +#. §1: $a+b+c+d+e=e+d+c+b+a$ +#: Game.Levels.Algorithm +msgid "" +"Proofs like §0 and §1 are very tedious to do by hand.\n" +"In Algorithm World we learn how to get the computer to do them for us.\n" +"\n" +"Click on \"Start\" to proceed." +msgstr "" +"Beweise wie §0 und §1 sind von Hand sehr mühsam.\n" +"In der Algorithmen-Welt lernen wir, wie wir den Computer dazu bringen, sie " +"für uns zu erledigen.\n" +"\n" +"Klicke auf „Start“, um fortzufahren." + +#: Game.Levels.Implication.L02exact2 +msgid "" +"If the goal is not *exactly* a hypothesis, we can sometimes\n" +"use rewrites to fix things up." +msgstr "" +"Wenn das Ziel nicht *genau* eine Annahme ist, können wir\n" +"manchmal mit `rw`-Schritten nachhelfen." + +#: Game.Levels.Algorithm.L06is_zero +msgid "" +"See if you can take it from here. Look at the new lemmas and tactic\n" +"available on the right." +msgstr "" +"Schau, ob du ab hier selbst weiterkommst. Sieh dir die neuen Sätze und die " +"neue\n" +"verfügbare Taktik rechts an." + +#. §0: `rw [add_left_comm b c]` +#. §1: `b` +#. §2: `c` +#: Game.Levels.Algorithm.L02add_algo1 +msgid "" +"Now use §0 to switch §1 and §2 on the left\n" +"hand side." +msgstr "" +"Verwende nun §0, um §1 und §2 auf der linken\n" +"Seite zu vertauschen." + +#: Game.Levels.Implication +msgid "Implication World" +msgstr "Implikations-Welt" + +#. §0: `add_succ` +#: Game.Levels.Tutorial.L06add_zero2 +msgid "Let's now learn about Peano's second axiom for addition, §0." +msgstr "Lass uns nun Peanos zweites Axiom für die Addition kennenlernen, §0." + +#. §0: $a, b,\\ldots h$ +#. §1: $(d + f) + (h + (a + c)) + (g + e + b) = a + b + c + d + e + f + g + h$ +#: Game.Levels.Algorithm.L03add_algo2 Game.Levels.Algorithm.L04add_algo3 +msgid "" +"If §0 are arbitrary natural numbers, we have\n" +"§1." +msgstr "" +"Wenn §0 beliebige natürliche Zahlen sind, gilt\n" +"§1." + +#. §0: ``` +#. instance instDecidableEq : DecidableEq ℕ +#. | 0, 0 => isTrue <| by +#. show 0 = 0 +#. rfl +#. | succ m, 0 => isFalse <| by +#. show succ m ≠ 0 +#. exact succ_ne_zero m +#. | 0, succ n => isFalse <| by +#. show 0 ≠ succ n +#. exact zero_ne_succ n +#. | succ m, succ n => +#. match instDecidableEq m n with +#. | isTrue (h : m = n) => isTrue <| by +#. show succ m = succ n +#. rw [h] +#. rfl +#. | isFalse (h : m ≠ n) => isFalse <| by +#. show succ m ≠ succ n +#. exact succ_ne_succ m n h +#. ``` +#. §1: `decide` +#: Game.Levels.Algorithm.L08decide +msgid "" +"Implementing the algorithm for equality of naturals, and the proof that it " +"is correct,\n" +"looks like this:\n" +"\n" +"§0\n" +"\n" +"This Lean code is a formally verified algorithm for deciding equality\n" +"between two naturals. I've typed it in already, behind the scenes.\n" +"Because the algorithm is formally verified to be correct, we can\n" +"use it in Lean proofs. You can run the algorithm with the §1 tactic." +msgstr "" +"Die Implementierung des Algorithmus für die Gleichheit natürlicher Zahlen " +"und der Beweis, dass dieser korrekt ist,\n" +"sehen wie folgt aus:\n" +"\n" +"§0\n" +"\n" +"Dieser Lean-Code ist ein formal verifizierter Algorithmus, um die " +"Gleichheit\n" +"zwischen zwei natürlichen Zahlen zu entscheiden. Ich habe ihn bereits hinter " +"den Kulissen eingetippt.\n" +"Da der Algorithmus formal als korrekt verifiziert ist, können wir\n" +"ihn in Lean-Beweisen verwenden. Du kannst den Algorithmus mit der Taktik §1 " +"ausführen." + +#. §0: `P → Q` +#. §1: `intro h` +#. §2: `h : P` +#. §3: `Q` +#. §4: $P \\implies Q$ +#. §5: $P$ +#. §6: $Q$ +#. §7: `x + 1 = y + 1 → x = y` +#. §8: $x+1=y+1 \\implies x=y$ +#. §9: `intro h` +#. §10: $x+1=y+1$ +#. §11: `h` +#. §12: $x=y$ +#: Game.Levels.Implication.L06intro +msgid "" +"## Summary\n" +"\n" +"If the goal is §0, then §1 will introduce §2 as a hypothesis,\n" +"and change the goal to §3. Mathematically, it says that to prove §4,\n" +"we can assume §5 and then prove §6.\n" +"\n" +"### Example:\n" +"\n" +"If your goal is §7 (the way Lean writes §8)\n" +"then §9 will give you a hypothesis §10 named §11, and the goal\n" +"will change to §12." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn das Ziel §0 ist, dann führt §1 als Annahme §2 ein\n" +"und ändert das Ziel zu §3. Mathematisch bedeutet es, dass wir, um §4 zu " +"beweisen,\n" +"§5 annehmen und dann §6 beweisen können.\n" +"\n" +"### Beispiel:\n" +"\n" +"Wenn dein Ziel §7 ist (Lean schreibt dafür §8),\n" +"dann gibt dir §9 eine Annahme §10 namens §11, und das Ziel\n" +"wird sich zu §12 ändern." + +#. §0: `rw [add_zero]` +#. §1: `b + 0` +#. §2: `b` +#: Game.Levels.Tutorial.L05add_zero +msgid "§0 will change §1 into §2." +msgstr "§0 wird §1 zu §2 ändern." + +#. §0: `apply h2 at h1` +#. §1: `h1` +#. §2: `y = 42` +#: Game.Levels.Implication.L03apply +msgid "Start with §0. This will change §1 to §2." +msgstr "Beginne mit §0. Dies wird §1 zu §2 ändern." + +#: Game.Levels.Tutorial.L07add_succ +msgid "[dramatic music]. Now are you ready to face the first boss of the game?" +msgstr "" +"[dramatische Musik]. Bist du nun bereit, dich dem ersten Endgegner des " +"Spiels zu stellen?" + +#. §0: $x+y=x\\implies y=0$ +#. §1: `≤` +#: Game.Levels.AdvAddition +msgid "" +"In Advanced Addition World we will prove some basic\n" +"addition facts such as §0. The theorems\n" +"proved in this world will be used to build\n" +"a theory of inequalities in §1 World.\n" +"\n" +"Click on \"Start\" to proceed." +msgstr "" +"In der Fortgeschrittenen Additions-Welt werden wir einige grundlegende\n" +"Fakten über die Addition beweisen, etwa §0. Die in dieser Welt\n" +"bewiesenen Sätze werden wir verwenden, um in der §1-Welt\n" +"eine Theorie der Ungleichungen aufzubauen.\n" +"\n" +"Klicke auf „Start“, um fortzufahren." + +#. §0: `tauto` +#. §1: `tauto` +#. §2: `add_zero` +#. §3: `tauto` +#. §4: `a = a` +#. §5: `0 ≠ 1` +#. §6: `0 ≠ 2` +#. §7: `1 ≠ 2` +#. §8: `tauto` +#. §9: `x < 37` +#. §10: `x < 37 → y + z = 42` +#. §11: `y + z = 42` +#. §12: `tauto` +#. §13: `False` +#. §14: `tauto` +#. §15: `True` +#. §16: `tauto` +#. §17: `h1 : a = 37` +#. §18: `h2 : a ≠ 37` +#. §19: `tauto` +#. §20: `False` +#. §21: `False` +#. §22: `h : a ≠ a` +#. §23: `tauto` +#. §24: `tauto` +#. §25: `a = a` +#. §26: `h : 0 = 1` +#. §27: `tauto` +#. §28: `tauto` +#. §29: `0 ≠ 1` +#. §30: `False` +#. §31: `a = 0 → a * b = 0` +#. §32: `a * b ≠ 0 → a ≠ 0` +#. §33: `tauto` +#. §34: `tauto` +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +msgid "" +"# Summary\n" +"\n" +"The §0 tactic will solve any goal which can be solved purely by logic (that " +"is, by\n" +"truth tables).\n" +"\n" +"## Details\n" +"\n" +"§1 *does not do magic*! It doesn't know *anything* about addition or " +"multiplication,\n" +"it doesn't even know §2. The only things that §3 knows about numbers\n" +"are firstly that §4 and secondly that §5, §6, §7 and so on.\n" +"What §8's strength is, is *logic*. If you have a hypothesis §9\n" +"and another hypothesis §10 and your goal is §11 then §12 will\n" +"solve this goal, because to solve that goal you don't need to know any " +"facts\n" +"about inequalities or addition, all you need to know is the rules of logic.\n" +"\n" +"## Example\n" +"\n" +"If you have §13 as a hypothesis, then §14 will solve\n" +"the goal. This is because a false hypothesis implies any hypothesis.\n" +"\n" +"## Example\n" +"\n" +"If your goal is §15, then §16 will solve the goal.\n" +"\n" +"## Example\n" +"\n" +"If you have two hypotheses §17 and §18 then §19 will\n" +"solve the goal because it can prove §20 from your hypotheses, and thus\n" +"prove the goal (as §21 implies anything).\n" +"\n" +"## Example\n" +"\n" +"If you have one hypothesis §22 then §23 will solve the goal because\n" +"§24 is smart enough to know that §25 is true, which gives the contradiction " +"we seek.\n" +"\n" +"## Example\n" +"\n" +"If you have a hypothesis §26 then §27 will solve the goal, because\n" +"§28 knows §29 and this is enough to prove §30, which implies any goal.\n" +"\n" +"## Example\n" +"\n" +"If you have a hypothesis of the form §31 and your goal is §32, then\n" +"§33 will solve the goal, because the goal is logically equivalent to the " +"hypothesis.\n" +"If you switch the goal and hypothesis in this example, §34 would solve it " +"too." +msgstr "" +"# Zusammenfassung\n" +"\n" +"Die Taktik §0 erreicht jedes Ziel, das sich rein logisch folgern lässt (also " +"mit\n" +"Wahrheitstafeln).\n" +"\n" +"## Details\n" +"\n" +"§1 *kann nicht zaubern*! Es weiß *nichts* über Addition oder " +"Multiplikation,\n" +"es kennt nicht einmal §2. Das Einzige, was §3 über Zahlen weiß, ist\n" +"erstens, dass §4 gilt, und zweitens, dass §5, §6, §7 und so weiter gelten.\n" +"Die Stärke von §8 ist die *Logik*. Wenn du eine Annahme §9\n" +"und eine weitere Annahme §10 hast, dann erreichst du das Ziel §11 mit §12,\n" +"denn um dorthin zu gelangen, musst du nichts\n" +"über Ungleichungen oder Addition wissen – du musst nur die Regeln der Logik " +"beherrschen.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du §13 als Annahme hast, erreichst du jedes Ziel mit §14.\n" +"Das liegt daran, dass eine falsche Annahme jede Annahme impliziert.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn §15 dein Ziel ist, erreichst du es mit §16.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du zwei Annahmen §17 und §18 hast, dann erreichst du mit §19\n" +"jedes Ziel, denn diese Taktik kann §20 aus deinen Annahmen und damit\n" +"das Ziel beweisen (da §21 alles impliziert).\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du eine Annahme §22 hast, dann erreichst du mit §23 jedes Ziel, denn\n" +"§24 ist schlau genug, um zu wissen, dass §25 wahr ist, was den gesuchten " +"Widerspruch liefert.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du eine Annahme §26 hast, dann erreichst du mit §27 jedes Ziel, denn\n" +"§28 kennt §29, und das genügt, um §30 zu beweisen, welches jedes Ziel " +"impliziert.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn du eine Annahme der Form §31 hast und dein Ziel §32 ist, dann\n" +"erreichst du mit §33 das Ziel, denn das Ziel ist logisch äquivalent zur " +"Annahme.\n" +"Wenn du in diesem Beispiel Ziel und Annahme vertauschst, würde §34 das Ziel " +"ebenfalls erreichen." + +#. §0: `rfl` +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "Now finish the job with §0." +msgstr "Du erreichst das Ziel nun mittels §0." + +#. §0: `nth_rewrite 2 [← mul_one a] at h` +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "Reduce to the previous lemma with §0" +msgstr "Führe es mit §0 auf das vorige Lemma zurück" + +#. §0: `le_mul_right a b` +#. §1: `a * b ≠ 0 → a ≤ a * b` +#: Game.Levels.AdvMultiplication.L05le_mul_right +msgid "" +"§0 is a proof that §1.\n" +"\n" +"It's one way of saying that a divisor of a positive number\n" +"has to be at most that number." +msgstr "" +"§0 ist ein Beweis dafür, dass §1 gilt.\n" +"\n" +"Das ist eine Art zu sagen, dass ein Teiler einer positiven Zahl\n" +"höchstens so groß wie die Zahl sein kann." + +#. §0: $m$ +#. §1: $0 ^{\\operatorname{succ} (m)} = 0$ +#: Game.Levels.Power.L02zero_pow_succ +msgid "For all numbers §0, §1." +msgstr "Für alle Zahlen §0 gilt §1." + +#. §0: `n` +#: Game.Levels.AdvAddition.L01add_right_cancel +msgid "Start with induction on §0." +msgstr "Beginne mit Induktion über §0." + +#: Game.Levels.LessOrEqual.L08le_total +msgid "x ≤ y or y ≤ x" +msgstr "x ≤ y oder y ≤ x" + +#. §0: `use` +#. §1: `c` +#. §2: `x = 0 + c` +#: Game.Levels.LessOrEqual.L02zero_le +msgid "To solve this level, you need to §0 a number §1 such that §2." +msgstr "" +"Um dieses Level zu lösen, musst du mit §0 eine Zahl §1 angeben, sodass §2 " +"gilt." + +#. §0: `le_mul_right` +#. §1: `x * y ≠ 0` +#. §2: `have h2 : x * y ≠ 0` +#. §3: `≠` +#. §4: `\\ne` +#. §5: `le_mul_right` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "" +"We want to use §0, but we need a hypothesis §1\n" +"which we don't have. Yet. Execute §2 (you can type §3 with §4).\n" +"You'll be asked to\n" +"prove it, and then you'll have a new hypothesis which you can apply\n" +"§5 to." +msgstr "" +"Wir wollen §0 verwenden, aber dazu brauchen wir eine Annahme §1,\n" +"die wir nicht haben. Noch nicht. Führe §2 aus (du kannst §3 mit §4 tippen).\n" +"Du wirst aufgefordert, sie zu\n" +"beweisen, und danach hast du eine neue Annahme, auf die du\n" +"§5 anwenden kannst." + +#. §0: $x=37$ +#. §1: $x=37\\implies y=42$ +#. §2: $y=42$ +#: Game.Levels.Implication.L03apply +msgid "If §0 and we know that §1 then we can deduce §2." +msgstr "Wenn §0 gilt und wir wissen, dass §1 gilt, dann können wir §2 folgern." + +#. §0: `rfl` +#. §1: `X = X` +#. §2: `rfl` +#. §3: `A = B` +#. §4: `A` +#. §5: `B` +#. §6: `rfl` +#. §7: ``` +#. x + 37 = x + 37 +#. ``` +#. §8: `rfl` +#. §9: `0 + x = x` +#. §10: `rfl` +#. §11: $0+x$ +#. §12: $x$ +#. §13: `0 + x` +#. §14: `0 + x` +#. §15: `rfl` +#. §16: `rfl` +#. §17: `mathlib` +#. §18: `zero_add` +#. §19: `add_zero` +#: Game.Levels.Tutorial.L01rfl +msgid "" +"## Summary\n" +"\n" +"§0 proves goals of the form §1.\n" +"\n" +"In other words, the §2 tactic will close any goal of the\n" +"form §3 if §4 and §5 are *identical*.\n" +"\n" +"§6 is short for \\\\\"reflexivity (of equality)\\\\\".\n" +"\n" +"## Example:\n" +"\n" +"If the goal looks like this:\n" +"\n" +"§7\n" +"\n" +"then §8 will close it. But if it looks like §9 then §10 won't work, because " +"even\n" +"though §11 and §12 are always equal as *numbers*, they are not equal as " +"*terms*.\n" +"The only term which is identical to §13 is §14.\n" +"\n" +"## Details\n" +"\n" +"§15 is short for \\\\\"reflexivity of equality\\\\\".\n" +"\n" +"## Game Implementation\n" +"\n" +"*Note that our §16 is weaker than the version used in core Lean and §17,\n" +"for pedagogical purposes; mathematicians do not distinguish between " +"propositional\n" +"and definitional equality because they think about definitions in a " +"different way\n" +"to type theorists (§18 and §19 are both \\\\\"facts\\\\\" as far\n" +"as mathematicians are concerned, and who cares what the definition of " +"addition is).*" +msgstr "" +"## Zusammenfassung\n" +"\n" +"§0 beweist Ziele der Form §1.\n" +"\n" +"Mit anderen Worten: Die Taktik §2 erreicht jedes Ziel der\n" +"Form §3, wenn §4 und §5 *identisch* sind.\n" +"\n" +"§6 ist die Abkürzung für „Reflexivität (der Gleichheit)“.\n" +"\n" +"## Beispiel:\n" +"\n" +"Wenn das Ziel so aussieht:\n" +"\n" +"§7\n" +"\n" +"dann erreichst du es mit §8. Aber wenn es wie §9 aussieht, dann funktioniert " +"§10 nicht, denn obwohl\n" +"§11 und §12 als *Zahlen* immer gleich sind, sind sie als *Terme* nicht " +"gleich.\n" +"Der einzige Term, der identisch mit §13 ist, ist §14.\n" +"\n" +"## Details\n" +"\n" +"§15 ist die Abkürzung für „Reflexivität der Gleichheit“.\n" +"\n" +"## Spielimplementierung\n" +"\n" +"*Beachte, dass unser §16 aus didaktischen Gründen schwächer ist als die " +"Version in\n" +"Core-Lean und §17; Mathematikerinnen unterscheiden nicht zwischen " +"propositionaler\n" +"und definitorischer Gleichheit, weil sie anders über Definitionen nachdenken " +"als\n" +"Typtheoretikerinnen (§18 und §19 sind für Mathematikerinnen beides " +"„Fakten“,\n" +"und wen kümmert es, wie die Definition der Addition lautet).*" + +# Hier Übersetzernamen? +#: Game +msgid "" +"*Game version: 4.3*\n" +"\n" +"*Recent additions: bug fixes*\n" +"\n" +"## Progress saving\n" +"\n" +"The game stores your progress in your local browser storage.\n" +"If you delete it, your progress will be lost!\n" +"\n" +"Warning: In most browsers, deleting cookies will also clear the local " +"storage\n" +"(or \"local site data\"). Make sure to download your game progress first!\n" +"\n" +"## Credits\n" +"\n" +"* **Creators:** Kevin Buzzard, Jon Eugster\n" +"* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n" +"* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n" +"* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n" +"* **Additional thanks:** All the student beta testers, all the schools\n" +"who invited Kevin to speak, and all the schoolkids who asked him questions\n" +"about the material.\n" +"\n" +"## Resources\n" +"\n" +"* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n" +"* [Original Lean3 version](https://github.com/ImperialCollegeLondon/" +"natural_number_game/) (no longer maintained)\n" +"\n" +"## Problems?\n" +"\n" +"Please ask any questions about this game in the\n" +"[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\n" +"the stream \"New Members\". The community will happily help. Note that\n" +"the Lean Zulip chat is a professional research forum.\n" +"Please use your full real name there, stay on topic, and be nice. If you're\n" +"looking for somewhere less formal (e.g. you want to post natural number\n" +"game memes) then head on over to the [Lean Discord](https://discord.gg/" +"WZ9bs9UCvx).\n" +"\n" +"Alternatively, if you experience issues / bugs you can also open github " +"issues:\n" +"\n" +"* For issues with the game engine, please open an\n" +"[issue at the lean4game](https://github.com/leanprover-community/lean4game/" +"issues) repo.\n" +"* For issues about the game's content, please open an\n" +"[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo." +msgstr "" +"*Spielversion: 4.3*\n" +"\n" +"*Neueste Ergänzungen: Fehlerbehebungen*\n" +"\n" +"## Fortschritt speichern\n" +"\n" +"Das Spiel speichert deinen Fortschritt im lokalen Speicher deines Browsers.\n" +"Wenn du diesen löschst, geht dein Fortschritt verloren!\n" +"\n" +"Warnung: In den meisten Browsern werden beim Löschen von Cookies auch die " +"lokalen\n" +"Speicherdaten (oder „lokale Websitedaten“) gelöscht. Lade deinen " +"Spielfortschritt vorher unbedingt herunter!\n" +"\n" +"## Mitwirkende\n" +"\n" +"* **Autoren:** Kevin Buzzard, Jon Eugster\n" +"* **Ursprüngliche Lean3-Version:** Kevin Buzzard, Mohammad Pedramfar\n" +"* **Spiel-Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n" +"* **Zusätzliche Level:** Sian Carey, Ivan Farabella, Archie Browne\n" +"* **Deutsche Übersetzung:** Leonid Ryvkin, Marcus Zibrowius\n" +"* **Weiterer Dank:** allen studentischen Beta-Testerinnen, allen Schulen,\n" +"die Kevin zu einem Vortrag eingeladen haben, und allen Schulkindern, die ihm " +"Fragen\n" +"gestellt haben.\n" +"\n" +"## Ressourcen\n" +"\n" +"* Das [Lean-Zulip-Chat](https://leanprover.zulipchat.com/)-Forum\n" +"* [Ursprüngliche Lean3-Version](https://github.com/ImperialCollegeLondon/" +"natural_number_game/) (wird nicht mehr aktualisiert)\n" +"\n" +"## Probleme?\n" +"\n" +"Bitte stelle alle Fragen zu diesem Spiel im\n" +"[Lean-Zulip-Chat](https://leanprover.zulipchat.com/)-Forum, zum Beispiel im\n" +"Stream „New Members“. Die Community hilft dir gerne. Beachte, dass\n" +"der Lean-Zulip-Chat ein professionelles Forschungsforum ist.\n" +"Bitte benutze dort deinen vollständigen echten Namen, bleib beim Thema und " +"sei nett. Wenn du\n" +"etwas weniger Formelles suchst (z. B. wenn du Memes zu den Zahlenspielen\n" +"posten willst), dann schau im [Lean-Discord](https://discord.gg/WZ9bs9UCvx) " +"vorbei.\n" +"\n" +"Alternativ kannst du, wenn du auf Probleme / Fehler stößt, auch GitHub-" +"Issues öffnen:\n" +"\n" +"* Für Probleme mit der Spiel-Engine öffne bitte ein\n" +"[Issue im lean4game](https://github.com/leanprover-community/lean4game/" +"issues)-Repo.\n" +"* Für Probleme mit dem Inhalt des Spiels öffne bitte ein\n" +"[Issue im NNG](https://github.com/hhu-adam/NNG4/issues)-Repo." + +# removed §4 because it needs to be translated +#. §0: `b = 0` +#. §1: `a * b = 0` +#. §2: `X ≠ 0` +#. §3: `X = 0 → False` +#. §4: `Show more help!` +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +msgid "" +"We want to reduce this to a hypothesis §0 and a goal §1,\n" +"which is logically equivalent but much easier to prove. Remember that §2\n" +"is notation for §3. Click on §4 if you need hints." +msgstr "" +"Wir wollen diese Aufgabe auf eine Annahme §0 und ein Ziel §1 zurückführen,\n" +"was logisch äquivalent, aber viel einfacher zu beweisen ist. Denk daran, " +"dass §2\n" +"eine Notation für §3 ist. Klicke auf „Mehr Hilfe“, wenn du Hinweise brauchst." + +#. §0: `repeat rw [add_zero]` +#: Game.Levels.Tutorial.L05add_zero +msgid "" +"Those of you interested in speedrunning the game may want to know\n" +"that §0 will do both rewrites at once." +msgstr "" +"Wer von euch an einem Speedrun des Spiels interessiert ist, möchte " +"vielleicht wissen,\n" +"dass §0 beide `rw`-Schritte auf einmal erledigt." + +# added clarification linking lemma and theorem +#. §0: $0$ +#. §1: $0$ +#. §2: `37 + d = q` +#. §3: `37 + succ d` +#. §4: `succ d` +#. §5: `d` +#. §6: `37 + succ d` +#. §7: `succ q` +#. §8: `q` +#. §9: `x + succ d` +#. §10: `succ (x + d)` +#. §11: `add_succ x d : x + succ d = succ (x + d)` +#. §12: `... + succ ...` +#. §13: `rw [add_succ]` +#. §14: `succ n = n + 1` +#. §15: `+ succ` +#. §16: `rw [add_succ]` +#. §17: `+` +#. §18: `012` +#: Game.Levels.Tutorial.L07add_succ +msgid "" +"Every number in Lean is either §0 or a successor. We know how to add §1,\n" +"but we need to figure out how to add successors. Let's say we already know\n" +"that §2. What should the answer to §3 be? Well,\n" +"§4 is one bigger than §5, so §6 should be §7,\n" +"the number one bigger than §8. More generally §9 should\n" +"be §10. Let's add this as a lemma.\n" +"\n" +"* §11\n" +"\n" +"If you ever see §12 in your goal, §13 is\n" +"normally a good idea.\n" +"\n" +"Let's now prove that §14. Figure out how to get §15 into\n" +"the picture, and then §16. Switch between the §17 (addition) and\n" +"§18 (numerals) tabs under \"Theorems\" on the right to\n" +"see which proofs you can rewrite." +msgstr "" +"Jede Zahl in Lean ist entweder §0 oder ein Nachfolger. Wir wissen, wie man " +"§1 addiert,\n" +"aber wir müssen herausfinden, wie man Nachfolger addiert. Nehmen wir an, wir " +"wissen\n" +"bereits, dass §2 gilt. Was sollte das Ergebnis von §3 sein? Nun,\n" +"§4 ist um eins größer als §5, also sollte §6 gleich §7 sein,\n" +"die Zahl, die um eins größer als §8 ist. Allgemeiner sollte §9\n" +"gleich §10 sein. Fügen wir dies also als Lemma („kleinen Satz“) hinzu.\n" +"\n" +"* §11\n" +"\n" +"Wenn du §12 in deinem Ziel siehst, ist §13\n" +"normalerweise eine gute Idee.\n" +"\n" +"Beweisen wir nun, dass §14 gilt. Finde heraus, wie du §15 ins\n" +"Spiel bringst, und wende dann §16 an. Wechsle zwischen den Reitern §17 " +"(Addition) und\n" +"§18 (Zahlen) unter „Sätze“ rechts, um zu\n" +"sehen, welche Beweise du zum Umschreiben verwenden kannst." + +#. §0: `trivial` +#. §1: `True` +#: Game.Levels.Algorithm.L06is_zero +msgid "" +"# Summary\n" +"\n" +"§0 will solve the goal §1." +msgstr "" +"# Zusammenfassung\n" +"\n" +"§0 erreicht das Ziel §1." + +#. §0: $0^0=1$ +#. §1: $0^n=0$ +#. §2: $n>0$ +#. §3: $n$ +#: Game.Levels.Power.L02zero_pow_succ +msgid "" +"Although §0 in this game, §1 if §2, i.e., if\n" +"§3 is a successor." +msgstr "" +"Obwohl in diesem Spiel §0 gilt, gilt §1, falls §2, d.h. falls\n" +"§3 ein Nachfolger ist." + +#. §0: `b = 0` +#. §1: `b ≠ 0` +#. §2: `cases b with d` +#: Game.Levels.AdvAddition.L05add_right_eq_zero +msgid "" +"Here we want to deal with the cases §0 and §1 separately,\n" +"so start with §2." +msgstr "" +"Hier wollen wir die Fälle §0 und §1 getrennt behandeln,\n" +"also beginne mit §2." + +#. §0: `hd` +#. §1: `c` +#. §2: `a * d = a * c → d = c` +#. §3: `apply` +#. §4: `at` +#. §5: `a * d = a * ?` +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "" +"The inductive hypothesis §0 is \"For all natural numbers §1, §2\".\n" +"You can §3 it §4 any hypothesis of the form §5." +msgstr "" +"Die Induktionsvoraussetzung §0 lautet „Für alle natürlichen Zahlen §1 gilt " +"§2“.\n" +"Du kannst sie mit §3 §4 auf jede Annahme der Form §5 anwenden." + +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"You can do induction on any of the three variables. Some choices\n" +"are harder to push through than others. Can you do the inductive step in\n" +"5 rewrites only?" +msgstr "" +"Du kannst über jede der drei Variablen Induktion führen. Je nach gewählter " +"Variable ist\n" +"der Beweis einfacher oder schwieriger. Schaffst du den Induktionsschritt " +"mit\n" +"nur 5 `rw`-Schritten?" + +#. §0: `0 + «{d}»` +#. §1: `rw [«{hd}»]` +#: Game.Levels.Addition.L01zero_add +msgid "" +"At this point you see the term §0, so you can use the\n" +"induction hypothesis with §1." +msgstr "" +"An dieser Stelle siehst du den Term §0, also kannst du die\n" +"Induktionsvoraussetzung mit §1 verwenden." + +#. §0: `0 ^ 0` +#. §1: `0 ^ 0 = 1` +#: Game.Levels.Power.L01zero_pow_zero +msgid "" +"Mathematicians sometimes debate what §0 is;\n" +"the answer depends, of course, on your definitions. In this\n" +"game, §1. See if you can prove it.\n" +"\n" +"Check out the *Pow* tab in your list of theorems\n" +"to see the new proofs which are available." +msgstr "" +"Mathematikerinnen streiten manchmal darüber, was §0 ist;\n" +"die Antwort hängt natürlich von deinen Definitionen ab. In diesem\n" +"Spiel gilt §1. Versuche, es zu beweisen.\n" +"\n" +"Sieh dir den *Pow*-Reiter in deiner Liste der „Sätze“ an,\n" +"um die neuen verfügbaren Beweise zu sehen." + +#. §0: `1` +#. §1: `succ 0` +#. §2: `h` +#: Game.Levels.Implication.L09zero_ne_succ +msgid "Now change §0 to §1 in §2." +msgstr "Ändere nun §0 zu §1 in §2." + +#. §0: `apply t at h` +#. §1: `apply t` +#. §2: `apply` +#: Game.Levels.Implication.L05succ_inj2 +msgid "" +"Many people find §0 easy, but some find §1 confusing.\n" +"If you find it confusing, then just argue forwards.\n" +"\n" +"You can read more about the §2 tactic in its documentation, which you can " +"view by\n" +"clicking on the tactic in the list on the right." +msgstr "" +"Viele finden §0 einfach, aber manche finden §1 verwirrend.\n" +"Wenn es dir verwirrend vorkommt, dann argumentiere einfach vorwärts.\n" +"\n" +"Mehr über die Taktik §2 kannst du in ihrer Dokumentation lesen, die du sehen " +"kannst,\n" +"indem du in der Liste rechts auf die Taktik klickst." + +# Full stop after formula 1 does not work well with German sentence-building +#. §0: $2$ +#. §1: $2 = 37 × 42$ +#. §2: $2$ +#. §3: $2$ +#. §4: `mul_left_ne_zero` +#. §5: `one_le_of_ne_zero` +#. §6: `mul_le_mul_right` +#: Game.Levels.AdvMultiplication.L05le_mul_right +msgid "" +"One day this game will have a Prime Number World, with a final boss\n" +"of proving that §0 is prime.\n" +"To do this, we will have to rule out things like §1.\n" +"We will do this by proving that any factor of §2 is at most §3,\n" +"which we will do using this lemma. The proof I have in mind manipulates the " +"hypothesis\n" +"until it becomes the goal, using §4, §5 and\n" +"§6." +msgstr "" +"Eines Tages wird dieses Spiel eine Primzahlen-Welt haben, mit einem " +"Endgegner,\n" +"bei dem zu beweisen ist, dass §0 eine Primzahl ist.\n" +"Dazu müssen wir Dinge wie $2 = 37 × 42$ ausschließen.\n" +"Das machen wir, indem wir beweisen, dass jeder Faktor von §2 höchstens §3 " +"ist,\n" +"wozu wir dieses Lemma verwenden werden. Der Beweis, den ich im Sinn habe, " +"formt die Annahme\n" +"mit Hilfe von §4, §5 und §6 um, bis sie zum Ziel wird." + +#: Game.Levels.Algorithm.L03add_algo2 +msgid "Let's now make our own tactic to do this." +msgstr "Lass uns jetzt unsere eigene Taktik dafür schreiben." + +#. §0: `h` +#. §1: `X = Y` +#. §2: `rw [h]` +#. §3: `X` +#. §4: `Y` +#. §5: `rw [← h]` +#. §6: `Y` +#. §7: `X` +#. §8: `\\left ` +#. §9: `\\l` +#. §10: `rw [h1, h2]` +#. §11: `rw [h] at h2` +#. §12: `X` +#. §13: `Y` +#. §14: `h2` +#. §15: `rw [h] at h1 h2 ⊢` +#. §16: `X` +#. §17: `Y` +#. §18: `⊢` +#. §19: `\\|-` +#. §20: `repeat rw [add_zero]` +#. §21: `? + 0` +#. §22: `?` +#. §23: `? + 0` +#. §24: `nth_rewrite 2 [h]` +#. §25: `X` +#. §26: `Y` +#. §27: `h : x = y + y` +#. §28: ``` +#. succ (x + 0) = succ (y + y) +#. ``` +#. §29: `rw [add_zero]` +#. §30: `succ x = succ (y + y)` +#. §31: `rw [h]` +#. §32: `succ (y + y) = succ (y + y)` +#. §33: `rfl` +#. §34: `rw` +#. §35: ``` +#. h1 : x = y + 3 +#. h2 : 2 * y = x +#. ``` +#. §36: `rw [h1] at h2` +#. §37: `h2` +#. §38: `h2 : 2 * y = y + 3` +#. §39: `rw h` +#. §40: `h` +#. §41: `A = B` +#. §42: `h` +#. §43: `rw` +#. §44: `rw [P = Q]` +#. §45: `P = Q` +#. §46: `h : P = Q` +#. §47: `rw [h]` +#. §48: `rw` +#. §49: `h : A = B` +#. §50: `A` +#. §51: `rw [h]` +#. §52: `B` +#. §53: `A` +#. §54: `add_zero` +#. §55: `? + 0 = ?` +#. §56: `add_zero` +#. §57: `?` +#. §58: `rw` +#. §59: `x + 0` +#. §60: `?` +#. §61: `x` +#. §62: `x + 0` +#. §63: `x` +#. §64: `rw [add_zero]` +#. §65: `(0 + 0) + (x + 0) + (0 + 0) + (x + 0)` +#. §66: `0 + (x + 0) + 0 + (x + 0)` +#. §67: `b + c + a = b + (a + c)` +#. §68: `a + c` +#. §69: `c + a` +#. §70: `rw [add_comm]` +#. §71: `rw [add_comm a c]` +#. §72: `a + c` +#. §73: `c + a` +#. §74: `add_comm` +#. §75: `?1 + ?2 = ?2 + ?1` +#. §76: `add_comm a` +#. §77: `a + ? = ? + a` +#. §78: `add_comm a c` +#. §79: `a + c = c + a` +#. §80: `h : X = Y` +#. §81: `rw [h]` +#. §82: `X` +#. §83: `Y` +#. §84: `X` +#. §85: `Y` +#. §86: `nth_rewrite 37 [h]` +#: Game.Levels.Tutorial.L02rw +msgid "" +"## Summary\n" +"\n" +"If §0 is a proof of an equality §1, then §2 will change\n" +"all §3s in the goal to §4s. It's the way to \\\\\"substitute in\\\\\".\n" +"\n" +"## Variants\n" +"\n" +"* §5 (changes §6s to §7s; get the back arrow by typing §8 or §9.)\n" +"\n" +"* §10 (a sequence of rewrites)\n" +"\n" +"* §11 (changes §12s to §13s in hypothesis §14)\n" +"\n" +"* §15 (changes §16s to §17s in two hypotheses and the goal;\n" +"get the §18 symbol with §19.)\n" +"\n" +"* §20 will keep changing §21 to §22\n" +"until there are no more matches for §23.\n" +"\n" +"* §24 will change only the second §25 in the goal to §26.\n" +"\n" +"### Example:\n" +"\n" +"If you have the assumption §27 and your goal is\n" +"§28\n" +"\n" +"then\n" +"\n" +"§29\n" +"\n" +"will change the goal into §30, and then\n" +"\n" +"§31\n" +"\n" +"will change the goal into §32, which\n" +"can be solved with §33.\n" +"\n" +"### Example:\n" +"\n" +"You can use §34 to change a hypothesis as well.\n" +"For example, if you have two hypotheses\n" +"§35\n" +"then §36 will turn §37 into §38.\n" +"\n" +"## Common errors\n" +"\n" +"* You need the square brackets. §39 is never correct.\n" +"\n" +"* If §40 is not a *proof* of an *equality* (a statement of the form §41),\n" +"for example if §42 is a function or an implication,\n" +"then §43 is not the tactic you want to use. For example,\n" +"§44 is never correct: §45 is the theorem *statement*,\n" +"not the proof. If §46 is the proof, then §47 will work.\n" +"\n" +"## Details\n" +"\n" +"The §48 tactic is a way to do \\\\\"substituting in\\\\\". There\n" +"are two distinct situations where you can use this tactic.\n" +"\n" +"1) Basic usage: if §49 is an assumption or\n" +"the proof of a theorem, and if the goal contains one or more §50s, then §51\n" +"will change them all to §52s. The tactic will error\n" +"if there are no §53s in the goal.\n" +"\n" +"2) Advanced usage: Assumptions coming from theorem proofs\n" +"often have missing pieces. For example §54\n" +"is a proof that §55 because §56 really is a function,\n" +"and §57 is the input. In this situation §58 will look through the goal\n" +"for any subterm of the form §59, and the moment it\n" +"finds one it fixes §60 to be §61 then changes all §62s to §63s.\n" +"\n" +"Exercise: think about why §64 changes the term\n" +"§65 to\n" +"§66\n" +"\n" +"If you can't remember the name of the proof of an equality, look it up in\n" +"the list of lemmas on the right.\n" +"\n" +"## Targeted usage\n" +"\n" +"If your goal is §67 and you want to rewrite §68\n" +"to §69, then §70 will not work because Lean finds another\n" +"addition first and swaps those inputs instead. Use §71 to\n" +"guarantee that Lean rewrites §72 to §73. This works because\n" +"§74 is a proof that §75, §76 is a proof\n" +"that §77, and §78 is a proof that §79.\n" +"\n" +"If §80 then §81 will turn all §82s into §83s.\n" +"If you only want to change the 37th occurrence of §84\n" +"to §85 then do §86." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn §0 ein Beweis einer Gleichheit §1 ist, dann ersetzt §2\n" +"alle §3 im Ziel durch §4. So „setzt man ein“.\n" +"\n" +"## Varianten\n" +"\n" +"* §5 (ändert §6 zu §7; den Rückwärtspfeil bekommst du, indem du §8 oder §9 " +"tippst.)\n" +"\n" +"* §10 (eine Folge von `rw`-Schritten)\n" +"\n" +"* §11 (ändert §12 zu §13 in der Annahme §14)\n" +"\n" +"* §15 (ändert §16 zu §17 in zwei Annahmen und im Ziel;\n" +"das Symbol §18 bekommst du mit §19.)\n" +"\n" +"* §20 ändert wiederholt §21 zu §22,\n" +"bis §23 nicht mehr vorkommt.\n" +"\n" +"* §24 ändert nur das zweite §25 im Ziel zu §26.\n" +"\n" +"### Beispiel:\n" +"\n" +"Wenn du die Annahme §27 hast und dein Ziel\n" +"§28\n" +"\n" +"ist, dann ändert\n" +"\n" +"§29\n" +"\n" +"das Ziel zu §30, und dann ändert\n" +"\n" +"§31\n" +"\n" +"das Ziel zu §32, was\n" +"mit §33 erreicht werden kann.\n" +"\n" +"### Beispiel:\n" +"\n" +"Du kannst §34 auch verwenden, um eine Annahme zu ändern.\n" +"Wenn du zum Beispiel zwei Annahmen\n" +"§35\n" +"hast, dann wandelt §36 die Annahme §37 in §38 um.\n" +"\n" +"## Häufige Fehler\n" +"\n" +"* Du brauchst die eckigen Klammern. §39 ist niemals korrekt.\n" +"\n" +"* Wenn §40 kein *Beweis* einer *Gleichheit* ist (eine Aussage der Form " +"§41),\n" +"zum Beispiel wenn §42 eine Funktion oder eine Implikation ist,\n" +"dann ist §43 nicht die Taktik, die du verwenden willst. Zum Beispiel\n" +"ist §44 niemals korrekt: §45 ist die *Aussage* des Satzes,\n" +"nicht der Beweis. Wenn §46 der Beweis ist, dann funktioniert §47.\n" +"\n" +"## Details\n" +"\n" +"Die Taktik §48 ist eine Möglichkeit, „einzusetzen“. Es\n" +"gibt zwei verschiedene Situationen, in denen du diese Taktik verwenden " +"kannst.\n" +"\n" +"1) Grundlegende Verwendung: Wenn §49 eine Annahme oder\n" +"der Beweis eines Satzes ist und das Ziel ein oder mehrere §50 enthält, dann\n" +"wird §51 sie alle in §52 ändern. Die Taktik gibt einen Fehler aus,\n" +"wenn es keine §53 im Ziel gibt.\n" +"\n" +"2) Fortgeschrittene Verwendung: Annahmen, die aus Beweisen von Sätzen " +"stammen,\n" +"haben oft fehlende Teile. Zum Beispiel ist §54\n" +"ein Beweis dafür, dass §55 gilt, weil §56 wirklich eine Funktion\n" +"und §57 ihr Argument ist. In dieser Situation durchsucht §58 das Ziel\n" +"nach einem beliebigen Teilterm der Form §59, und sobald es\n" +"einen findet, legt es §60 als §61 fest und ändert dann alle §62 in §63.\n" +"\n" +"Übung: Überlege, warum §64 den Term\n" +"§65 in\n" +"§66 ändert\n" +"\n" +"Wenn du dir den Namen des Beweises einer Gleichheit nicht merken kannst, " +"dann schlage ihn\n" +"in der Liste der Sätze rechts nach.\n" +"\n" +"## Gezielte Verwendung\n" +"\n" +"Wenn dein Ziel §67 ist und du §68\n" +"zu §69 umschreiben willst, dann wird §70 nicht funktionieren, weil Lean " +"zuerst eine andere\n" +"Addition findet und stattdessen deren Argumente vertauscht. Verwende §71, " +"um\n" +"zu garantieren, dass Lean §72 zu §73 umschreibt. Das funktioniert, weil\n" +"§74 ein Beweis dafür ist, dass §75 gilt, §76 ein Beweis dafür ist,\n" +"dass §77 gilt, und §78 ein Beweis dafür ist, dass §79 gilt.\n" +"\n" +"Wenn du §80 hast, dann verwandelt §81 alle §82 in §83.\n" +"Wenn du nur das 37. Vorkommen von §84\n" +"zu §85 ändern willst, dann führe §86 aus." + +#: Game.Levels.AdvAddition.L06add_left_eq_zero +msgid "add_left_eq_zero" +msgstr "add_left_eq_zero" + +#. §0: `rw [add_succ]` +#: Game.Levels.Tutorial.L07add_succ Game.Levels.Tutorial.L08twoaddtwo +msgid "Now you can §0" +msgstr "Jetzt kannst du §0 anwenden" + +#. §0: `←` +#. §1: `rw` +#. §2: `rw` +#. §3: `←` +#. §4: `\\l` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"You can put a §0 in front of any theorem provided to §1 to rewrite\n" +"the other way around. Look at the docs for §2 for an explanation. Type §3 " +"with §4." +msgstr "" +"Du kannst ein §0 vor jeden Satz setzen, den du an §1 übergibst, um in die " +"andere\n" +"Richtung umzuschreiben. Schau dir für eine Erklärung die Dokumentation zu §2 " +"an. Tippe §3 mit §4." + +#. §0: `exact h` +#: Game.Levels.Implication.L05succ_inj2 +msgid "You can now finish with §0." +msgstr "Jetzt kannst du den Beweis mit §0 abschließen." + +#: Game +msgid "Natural Number Game" +msgstr "Zahlenspiele" + +#. §0: `n` +#. §1: `cases n with d` +#. §2: `n = 0` +#. §3: `n = succ d` +#. §4: `h` +#. §5: `cases h with...` +#. §6: `n : ℕ` +#. §7: `cases n with d` +#. §8: `n` +#. §9: `n` +#. §10: `succ d` +#. §11: `0` +#. §12: `h : P ∨ Q` +#. §13: `cases h with hp hq` +#. §14: `hp : P` +#. §15: `hq : Q` +#. §16: `h : False` +#. §17: `cases h` +#. §18: `False` +#. §19: `h : a ≤ b` +#. §20: `cases h with c hc` +#. §21: `c` +#. §22: `hc : b = a + c` +#. §23: `a ≤ b` +#. §24: `∃ c, b = a + c` +#: Game.Levels.AdvAddition.L05add_right_eq_zero +msgid "" +"## Summary\n" +"\n" +"If §0 is a number, then §1 will break the goal into two goals,\n" +"one with §2 and the other with §3.\n" +"\n" +"If §4 is a proof (for example a hypothesis), then §5 will break the\n" +"proof up into the pieces used to prove it.\n" +"\n" +"## Example\n" +"\n" +"If §6 is a number, then §7 will break the goal into two goals,\n" +"one with §8 replaced by 0 and the other with §9 replaced by §10. This\n" +"corresponds to the mathematical idea that every natural number is either " +"§11\n" +"or a successor.\n" +"\n" +"## Example\n" +"\n" +"If §12 is a hypothesis, then §13 will turn one goal\n" +"into two goals, one with a hypothesis §14 and the other with a\n" +"hypothesis §15.\n" +"\n" +"## Example\n" +"\n" +"If §16 is a hypothesis, then §17 will turn one goal into no goals,\n" +"because there are no ways to make a proof of §18! And if you have no goals " +"left,\n" +"you have finished the level.\n" +"\n" +"## Example\n" +"\n" +"If §19 is a hypothesis, then §20 will create a new number §21\n" +"and a proof §22. This is because the *definition* of §23 is\n" +"§24." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn §0 eine Zahl ist, dann zerlegt §1 das Ziel in zwei Ziele,\n" +"eines mit §2 und das andere mit §3.\n" +"\n" +"Wenn §4 ein Beweis ist (zum Beispiel eine Annahme), dann zerlegt ihn §5 in " +"seine Bestandteile.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn §6 eine Zahl ist, dann zerlegt §7 das Ziel in zwei Ziele,\n" +"eines, in dem §8 durch 0 ersetzt ist, und das andere, in dem §9 durch §10 " +"ersetzt ist. Das\n" +"entspricht der mathematischen Idee, dass jede natürliche Zahl entweder §11\n" +"oder ein Nachfolger ist.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn §12 eine Annahme ist, dann macht §13 aus einem Ziel\n" +"zwei Ziele, eines mit einer Annahme §14 und das andere mit einer\n" +"Annahme §15.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn §16 eine Annahme ist, dann macht §17 aus einem Ziel gar kein Ziel " +"mehr,\n" +"denn es gibt keine Möglichkeit, einen Beweis von §18 zu erzeugen! Und wenn " +"du keine Ziele mehr übrig hast,\n" +"hast du das Level abgeschlossen.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn §19 eine Annahme ist, dann erzeugt §20 eine neue Zahl §21\n" +"und einen Beweis §22. Das liegt daran, dass die *Definition* von §23 gerade\n" +"§24 ist." + +#. §0: `«{ha}»` +#. §1: `«{y}» = «{x}» + «{a}»` +#. §2: `hxy` +#. §3: `«{hyz}»` +#. §4: `cases «{hyz}» with b hb` +#: Game.Levels.LessOrEqual.L04le_trans +msgid "" +"Now §0 is a proof that §1, and §2 has vanished. Similarly, you can destruct\n" +"§3 into its parts with §4." +msgstr "" +"Jetzt ist §0 ein Beweis dafür, dass §1 gilt, und §2 ist verschwunden. " +"Genauso kannst du auch\n" +"§3 mit §4 in seine Teile zerlegen." + +#: Game.Levels.Implication.L04succ_inj +msgid "succ_inj : the successor function is injective" +msgstr "succ_inj : die Nachfolgerfunktion ist injektiv" + +#. §0: `b + 0` +#. §1: `c + 0` +#. §2: `rw [add_zero]` +#. §3: `b + 0` +#. §4: `c + 0` +#. §5: `add_zero` +#: Game.Levels.Tutorial.L06add_zero2 +msgid "" +"## Precision rewriting\n" +"\n" +"In the last level, there was §0 and §1,\n" +"and §2 changed the first one it saw,\n" +"which was §3. Let's learn how to tell Lean\n" +"to change §4 first by giving §5 an\n" +"explicit input." +msgstr "" +"## Präzises Umschreiben\n" +"\n" +"Im letzten Level gab es §0 und §1,\n" +"und §2 hat das erste davon geändert, dem es begegnet ist,\n" +"nämlich §3. Lass uns lernen, wie man Lean sagt,\n" +"dass es zuerst §4 ändern soll, indem man §5 ein\n" +"explizites Argument gibt." + +#. §0: `a ≤ b` +#. §1: `∃ c, b = a + c` +#. §2: `a ≤ b` +#. §3: `use` +#. §4: `h : a ≤ b` +#. §5: `cases h with c hc` +#: Game.Levels.LessOrEqual.L01le_refl +msgid "" +"§0 is *notation* for §1.\n" +"\n" +"Because this game doesn't have negative numbers, this definition\n" +"is mathematically valid.\n" +"\n" +"This means that if you have a goal of the form §2 you can\n" +"make progress with the §3 tactic, and if you have a hypothesis\n" +"§4, you can make progress with §5." +msgstr "" +"§0 ist eine *Notation* für §1.\n" +"\n" +"Da es in diesem Spiel keine negativen Zahlen gibt, ist diese Definition\n" +"mathematisch korrekt.\n" +"\n" +"Das bedeutet, dass du bei einem Ziel der Form §2 mit der Taktik §3\n" +"vorankommst, und wenn du eine Annahme\n" +"§4 hast, mit §5." + +#. §0: `exact h` +#: Game.Levels.Implication.L06intro +msgid "Now §0 finishes the job." +msgstr "Jetzt bringt §0 die Sache zu Ende." + +#. §0: `«{x}» ≤ «{x}»` +#. §1: `«{x}» = «{x}» + 0` +#. §2: `use 0` +#: Game.Levels.LessOrEqual.L01le_refl +msgid "" +"The reason §0 is because §1.\n" +"So you should start this proof with §2." +msgstr "" +"Der Grund dafür, dass §0 gilt, ist §1.\n" +"Deswegen solltest du diesen Beweis mit §2 beginnen." + +#. §0: $x \\leq y$ +#. §1: $y \\leq z$ +#. §2: $x \\leq z$ +#: Game.Levels.LessOrEqual.L04le_trans Game.Levels.LessOrEqual.L06le_antisymm +msgid "If §0 and §1, then §2." +msgstr "Wenn §0 und §1, dann §2." + +#. §0: ``` +#. apply mul_left_ne_zero at h +#. apply one_le_of_ne_zero at h +#. apply mul_le_mul_right 1 b a at h +#. rw [one_mul, mul_comm] at h +#. exact h +#. ``` +#: Game.Levels.AdvMultiplication.L05le_mul_right +msgid "" +"Here's what I was thinking of:\n" +"§0" +msgstr "" +"Folgendes hatte ich mir überlegt:\n" +"§0" + +#. §0: `nth_rewrite 2 [two_eq_succ_one]` +#. §1: `rw [two_eq_succ_one]` +#: Game.Levels.Tutorial.L08twoaddtwo +msgid "§0 is I think quicker than §1." +msgstr "§0 ist, denke ich, schneller als §1." + +#: GameServer.RpcHandlers +msgid "intermediate goal solved! 🎉" +msgstr "Zwischenziel erreicht! 🎉" + +#. §0: $a, b$ +#. §1: $c$ +#. §2: $ (a + b) + c = a + (b + c). $ +#: Game.Levels.Addition.L04add_assoc +msgid "" +"On the set of natural numbers, addition is associative.\n" +"In other words, if §0 and §1 are arbitrary natural numbers, we have\n" +"§2" +msgstr "" +"Auf der Menge der natürlichen Zahlen ist die Addition assoziativ.\n" +"Mit anderen Worten: Wenn §0 und §1 beliebige natürliche Zahlen sind, gilt\n" +"§2" + +#. §0: `use` +#: Game.Levels.LessOrEqual.L04le_trans +msgid "" +"Now you need to figure out which number to §0. See if you can take it from " +"here." +msgstr "" +"Jetzt musst du herausfinden, welche Zahl du mit §0 angeben sollst. Schau, ob " +"du von hier aus selbst weiterkommst." + +#. §0: `t : P → Q` +#. §1: $P \\implies Q$ +#. §2: `h : P` +#. §3: `P` +#. §4: `apply t at h` +#. §5: `h` +#. §6: `Q` +#. §7: `P` +#. §8: `t` +#. §9: `Q` +#. §10: `Q` +#. §11: `apply t` +#. §12: `P` +#. §13: `Q` +#. §14: `t` +#. §15: `P` +#. §16: `P` +#. §17: `succ_inj x y` +#. §18: `succ x = succ y → x = y` +#. §19: `h : succ (a + 37) = succ (b + 42)` +#. §20: `apply succ_inj at h` +#. §21: `h` +#. §22: `a + 37 = b + 42` +#. §23: `apply succ_inj (a + 37) (b + 42) at h` +#. §24: `succ_inj` +#. §25: `a * b = 7` +#. §26: `apply succ_inj` +#. §27: `succ (a * b) = succ 7` +#: Game.Levels.Implication.L03apply +msgid "" +"## Summary\n" +"\n" +"If §0 is a proof that §1, and §2 is a proof of §3,\n" +"then §4 will change §5 to a proof of §6. The idea is that if\n" +"you know §7 is true, then you can deduce from §8 that §9 is true.\n" +"\n" +"If the *goal* is §10, then §11 will \\\\\"argue backwards\\\\\" and change " +"the\n" +"goal to §12. The idea here is that if you want to prove §13, then by §14\n" +"it suffices to prove §15, so you can reduce the goal to proving §16.\n" +"\n" +"### Example:\n" +"\n" +"§17 is a proof that §18.\n" +"\n" +"So if you have a hypothesis §19\n" +"then §20 will change §21 to §22.\n" +"You could write §23\n" +"but Lean is smart enough to figure out the inputs to §24.\n" +"\n" +"### Example\n" +"\n" +"If the goal is §25, then §26 will turn the\n" +"goal into §27." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn §0 ein Beweis dafür ist, dass §1 gilt, und §2 ein Beweis von §3 ist,\n" +"dann macht §4 aus §5 einen Beweis von §6. Die Idee ist: Wenn\n" +"du weißt, dass §7 wahr ist, dann kannst du aus §8 folgern, dass §9 wahr " +"ist.\n" +"\n" +"Wenn das *Ziel* §10 ist, dann wird §11 „rückwärts argumentieren“ und das\n" +"Ziel zu §12 ändern. Die Idee dabei ist: Wenn du §13 beweisen willst, dann " +"genügt es nach §14,\n" +"§15 zu beweisen, sodass du das Ziel darauf reduzieren kannst, §16 zu " +"beweisen.\n" +"\n" +"### Beispiel:\n" +"\n" +"§17 ist ein Beweis dafür, dass §18 gilt.\n" +"\n" +"Wenn du also eine Annahme §19 hast,\n" +"dann verwandelt §20 die Annahme §21 in §22.\n" +"Du könntest §23 schreiben,\n" +"aber Lean ist schlau genug, um die Argumente für §24 selbst herauszufinden.\n" +"\n" +"### Beispiel\n" +"\n" +"Wenn das Ziel §25 ist, dann macht §26 aus dem\n" +"Ziel §27." + +#. §0: `cases «{h2}» with e he` +#: Game.Levels.LessOrEqual.L08le_total +msgid "Now §0." +msgstr "Jetzt §0." + +#. §0: `add_mul` +#: Game.Levels.Multiplication.L08add_mul +msgid "" +"§0 is just as fiddly to prove by induction; but there's a trick\n" +"which avoids it. Can you spot it?" +msgstr "" +"§0 ist per Induktion genauso knifflig zu beweisen; aber es gibt einen " +"Trick,\n" +"der das umgeht. Kannst du ihn entdecken?" + +#. §0: `repeat rw [← succ_eq_add_one] at h` +#. §1: `h` +#. §2: `succ x = succ y` +#: Game.Levels.Implication.L07intro2 +msgid "" +"Now §0 is the quickest way to\n" +"change §1 to §2." +msgstr "" +"Jetzt ist §0 der schnellste Weg, um\n" +"§1 zu §2 zu ändern." + +#. §0: ``` +#. use 1 +#. exact succ_eq_add_one x +#. ``` +#. §1: `succ_eq_add_one x` +#. §2: `succ x = x + 1` +#: Game.Levels.LessOrEqual.L03le_succ_self +msgid "" +"Here's a two-liner:\n" +"§0\n" +"\n" +"This works because §1 is a proof of §2." +msgstr "" +"Hier ist ein Zweizeiler:\n" +"§0\n" +"\n" +"Das funktioniert, weil §1 ein Beweis von §2 ist." + +#. §0: `intro h` +#. §1: `X ≠ Y` +#. §2: `X = Y → False` +#: Game.Levels.Algorithm.L06is_zero +msgid "" +"Start with §0 (remembering that §1 is just notation\n" +"for §2)." +msgstr "" +"Beginne mit §0 (denk daran, dass §1 nur eine Notation\n" +"für §2 ist)." + +#. §0: `n` +#. §1: `induction n with d hd` +#: Game.Levels.Addition.L01zero_add +msgid "" +"You can start a proof by induction on §0 by typing:\n" +"§1." +msgstr "" +"Einen Beweis durch Induktion über §0 kannst du beginnen, indem du Folgendes " +"tippst:\n" +"§1." + +#. §0: ```lean +#. nth_rewrite 2 [two_eq_succ_one] -- only change the second `2` to `succ 1`. +#. rw [add_succ] +#. rw [one_eq_succ_zero] +#. rw [add_succ, add_zero] -- two rewrites at once +#. rw [← three_eq_succ_two] -- change `succ 2` to `3` +#. rw [← four_eq_succ_three] +#. rfl +#. ``` +#. §1: `` +#. §2: `>_` +#. §3: `induction` +#: Game.Levels.Tutorial.L08twoaddtwo +msgid "" +"Here is an example proof of 2+2=4 showing off various techniques.\n" +"\n" +"§0\n" +"\n" +"Optional extra: you can run this proof yourself. Switch the game into " +"\"Editor mode\" by clicking\n" +"on the §1 button in the top right. You can now see your proof\n" +"written as several lines of code. Move your cursor between lines to see\n" +"the goal state at any point. Now cut and paste your code elsewhere if you\n" +"want to save it, and paste the above proof in instead. Move your cursor\n" +"around to investigate. When you've finished, click the §2 button in the top " +"right to\n" +"move back into \"Typewriter mode\".\n" +"\n" +"You have finished tutorial world!\n" +"Click \"Home\" to go back to the\n" +"overworld, and select Addition World, where you will learn\n" +"about the §3 tactic." +msgstr "" +"Hier ist ein Beispielbeweis für 2+2=4, der verschiedene Techniken vorführt.\n" +"\n" +"§0\n" +"\n" +"Optionaler Zusatz: Du kannst diesen Beweis selbst ausführen. Schalte das " +"Spiel in den „Editor-Modus“, indem du\n" +"oben rechts auf die Schaltfläche §1 klickst. Du kannst nun deinen Beweis\n" +"als mehrere Codezeilen aufgeschrieben sehen. Bewege deinen Cursor zwischen " +"den Zeilen, um\n" +"den Beweisstand an jeder Stelle zu sehen. Schneide nun deinen Code aus und " +"füge ihn woanders ein, wenn du\n" +"ihn speichern willst, und füge stattdessen den obigen Beweis ein. Bewege " +"deinen Cursor,\n" +" um alles zu erkunden. Wenn du fertig bist, klicke oben rechts auf die " +"Schaltfläche §2, um\n" +"in den „Schreibmaschinen-Modus“ zurückzukehren.\n" +"\n" +"Du hast die Tutorial-Welt abgeschlossen!\n" +"Klicke auf „Home“, um zur\n" +"Hauptwelt zurückzukehren, und wähle die Additions-Welt, wo du\n" +"die Taktik §3 kennenlernst." + +#. §0: `Pow a b` +#. §1: `a ^ b` +#. §2: `pow_zero a : a ^ 0 = 1` +#. §3: `pow_succ a b : a ^ succ b = a ^ b * a` +#. §4: `0 ^ 0 = 1` +#: Game.Levels.Power.L01zero_pow_zero +msgid "" +"§0, with notation §1, is the usual\n" +" exponentiation of natural numbers. Internally it is\n" +" defined via two axioms:\n" +"\n" +" * §2\n" +"\n" +" * §3\n" +"\n" +"Note in particular that §4." +msgstr "" +"§0, mit der Notation §1, ist die übliche\n" +" Potenzierung natürlicher Zahlen. Intern ist sie\n" +" über zwei Axiome definiert:\n" +"\n" +" * §2\n" +"\n" +" * §3\n" +"\n" +"Beachte insbesondere, dass §4 gilt." + +#. §0: `≤` +#. §1: `a` +#. §2: `b` +#. §3: `a ≤ b` +#. §4: `b ≤ a` +#. §5: `or` +#. §6: `∨` +#. §7: `\\or` +#. §8: `left` +#. §9: `right` +#. §10: `h` +#. §11: `cases h with h1 h2` +#: Game.Levels.LessOrEqual.L07or_symm +msgid "" +"Totality of §0 is the boss level of this world, and it's coming up next. It " +"says that\n" +"if §1 and §2 are naturals then either §3 or §4.\n" +"But we haven't talked about §5 at all. Here's a run-through.\n" +"\n" +"1) The notation for \"or\" is §6. You won't need to type it, but you can\n" +"type it with §7.\n" +"\n" +"2) If you have an \"or\" statement in the *goal*, then two tactics make\n" +"progress: §8 and §9. But don't choose a direction unless your\n" +"hypotheses guarantee that it's the correct one.\n" +"\n" +"3) If you have an \"or\" statement as a *hypothesis* §10, then\n" +"§11 will create two goals, one where you went left,\n" +"and the other where you went right." +msgstr "" +"Dass §0 eine Totalordnung ist, ist der Hauptgegner dieser Welt und kommt als " +"Nächstes. Die Aussage ist also,\n" +"dass für natürliche Zahlen §1 und §2 notwendigerweise §3 oder §4 gilt.\n" +"Aber über §5 haben wir noch gar nicht gesprochen. Hier ist eine Übersicht.\n" +"\n" +"1) Die Notation für „oder“ ist §6. Du wirst sie nicht tippen müssen, aber du " +"kannst\n" +"sie mit §7 tippen.\n" +"\n" +"2) Wenn du eine „oder“-Aussage im *Ziel* hast, dann bringen dich zwei " +"Taktiken\n" +"voran: §8 und §9. Aber wähle keine Richtung, solange deine\n" +"Annahmen nicht garantieren, dass es die richtige ist.\n" +"\n" +"3) Wenn du eine „oder“-Aussage als *Annahme* §10 hast, dann\n" +"erzeugt §11 zwei Ziele, eines, in dem du nach links gegangen bist,\n" +"und das andere, in dem du nach rechts gegangen bist." + +#: Game.Levels.Addition.L01zero_add +msgid "zero_add" +msgstr "zero_add" + +#. §0: `induction b with d hd generalizing c` +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "The way to start this proof is §0." +msgstr "Diesen Beweis beginnst du mit §0." + +#. §0: `0 ^ 0 = 1` +#. §1: `n` +#. §2: `0 ^ n = 0` +#: Game.Levels.Power.L02zero_pow_succ +msgid "" +"We've just seen that §0, but if §1\n" +"is a successor, then §2. We prove that here." +msgstr "" +"Wir haben gerade gesehen, dass §0 gilt, aber wenn §1\n" +"ein Nachfolger ist, dann gilt §2. Das beweisen wir hier." + +#. §0: $a$ +#. §1: $b$ +#. §2: $c$ +#. §3: $(a + b) \\times c = ac + bc$ +#: Game.Levels.Multiplication.L08add_mul +msgid "" +"Multiplication is distributive over addition.\n" +"In other words, for all natural numbers §0, §1 and §2, we have\n" +"§3." +msgstr "" +"Die Multiplikation ist linksseitig distributiv über der Addition.\n" +"Mit anderen Worten, für alle natürlichen Zahlen §0, §1 und §2 gilt\n" +"§3." + +#. §0: `zero_mul m` +#. §1: `0 * m = 0` +#. §2: `zero_mul` +#. §3: `simp` +#: Game.Levels.Multiplication.L02zero_mul +msgid "" +"§0 is the proof that §1.\n" +"\n" +"Note: §2 is a §3 lemma." +msgstr "" +"§0 ist der Beweis dafür, dass §1 gilt.\n" +"\n" +"Beachte: §2 ist ein §3-Lemma." + +#. §0: $\\leq$ +#. §1: $x \\leq y$ +#. §2: $y \\leq x$ +#. §3: $x = y$ +#: Game.Levels.LessOrEqual.L06le_antisymm +msgid "" +"This level asks you to prove *antisymmetry* of §0.\n" +"In other words, if §1 and §2 then §3.\n" +"It's the trickiest one so far. Good luck!" +msgstr "" +"In diesem Level sollst du die *Antisymmetrie* von §0 beweisen.\n" +"Mit anderen Worten: Wenn §1 und §2, dann §3.\n" +"Es ist das kniffligste bisher. Viel Glück!" + +#. §0: `contrapose!` +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +msgid "" +"If you have completed Algorithm World then you can use the §0 tactic\n" +"here. If not then I'll talk you through a manual approach." +msgstr "" +"Wenn du die Algorithmen-Welt abgeschlossen hast, dann kannst du hier die " +"Taktik §0\n" +"verwenden. Falls nicht, führe ich dich durch einen manuellen Ansatz." + +#. §0: $2y=2(x+7)$ +#. §1: `h` +#. §2: $y = x + 7$ +#. §3: `h` +#. §4: `h` +#. §5: `x` +#. §6: `rfl` +#. §7: $y$ +#. §8: `h` +#. §9: `rw` +#: Game.Levels.Tutorial.L02rw +msgid "" +"In this level the *goal* is §0 but to help us we\n" +"have an *assumption* §1 saying that §2. Check that you can see §3 in\n" +"your list of assumptions. Lean thinks of §4 as being a secret proof of the\n" +"assumption, rather like §5 is a secret number.\n" +"\n" +"Before we can use §6, we have to \"substitute in for §7\".\n" +"We do this in Lean by *rewriting* the goal with §8,\n" +"using the §9 tactic." +msgstr "" +"In diesem Level ist das *Ziel* §0, aber zur Hilfe haben wir\n" +"eine *Annahme* §1, die besagt, dass §2 gilt. Überprüfe, dass du §3 in\n" +"deiner Liste der Annahmen sehen kannst. Lean betrachtet §4 als einen " +"geheimen\n" +"Beweis der Annahme, ähnlich wie §5 eine geheime Zahl ist.\n" +"\n" +"Bevor wir §6 verwenden können, müssen wir „für §7 einsetzen“.\n" +"Das machen wir in Lean, indem wir das Ziel mit §8 *umschreiben*,\n" +"mit der Taktik §9 („rewrite“)." + +#. §0: `zero_ne_succ n` +#. §1: `0 ≠ succ n` +#. §2: `a ≠ b` +#. §3: `a = b → False` +#. §4: `zero_ne_succ n` +#. §5: `0 = succ n → False` +#. §6: `False` +#. §7: `apply zero_ne_succ at h` +#. §8: `h` +#. §9: `0 = succ n` +#: Game.Levels.Implication.L09zero_ne_succ +msgid "" +"§0 is the proof that §1.\n" +"\n" +"In Lean, §2 is *defined to mean* §3. Hence\n" +"§4 is really a proof of §5.\n" +"Here §6 is a generic false statement. This means that\n" +"you can §7 if §8 is a proof of §9." +msgstr "" +"§0 ist der Beweis dafür, dass §1 gilt.\n" +"\n" +"In Lean ist §2 *per Definition* §3. Daher\n" +"ist §4 in Wirklichkeit ein Beweis von §5.\n" +"Dabei ist §6 eine generische falsche Aussage. Das bedeutet, dass\n" +"du §7 anwenden kannst, wenn §8 ein Beweis von §9 ist." + +#: Game.Levels.Multiplication.L01mul_one +msgid "mul_one" +msgstr "mul_one" + +#. §0: `add_left_cancel a b n` +#. §1: $n+a=n+b\\implies a=b$ +#. §2: `n` +#. §3: `add_right_cancel` +#: Game.Levels.AdvAddition.L02add_left_cancel +msgid "" +"§0 is the theorem that §1.\n" +"You can prove it by induction on §2 or you can deduce it from §3." +msgstr "" +"§0 ist der Satz, dass §1 gilt.\n" +"Du kannst ihn durch Induktion über §2 beweisen oder ihn aus §3 herleiten." + +#. §0: `rw [«{h}»] at «{h2}»` +#. §1: `apply le_one at «{h2}»` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "Now §0 so you can §1." +msgstr "Jetzt §0, sodass du §1 anwenden kannst." + +#. §0: $x \\leq 2$ +#. §1: $x = 0$ +#. §2: $1$ +#. §3: $2$ +#: Game.Levels.LessOrEqual.L11le_two +msgid "If §0 then §1 or §2 or §3." +msgstr "Wenn §0, dann §1 oder §2 oder §3." + +#. §0: `one_eq_succ_zero` +#. §1: `1 = succ 0` +#: Game.Levels.Tutorial.L03two_eq_ss0 Game.Levels.Addition.L03add_comm +#: Game.Levels.Implication.L09zero_ne_succ Game.Levels.Algorithm.L05pred +#: Game.Levels.Algorithm.L06is_zero Game.Levels.LessOrEqual.L05le_zero +msgid "§0 is a proof of §1." +msgstr "§0 ist ein Beweis von §1." + +#. §0: $a$ +#. §1: $b$ +#. §2: $c$ +#. §3: $n$ +#. §4: $$(a+1)^{n+3}+(b+1)^{n+3}\\not=(c+1)^{n+3}.$$ +#: Game.Levels.Power.L10FLT +msgid "" +"For all naturals §0 §1 §2 and §3, we have\n" +"§4" +msgstr "" +"Für alle natürlichen Zahlen §0, §1, §2 und §3 gilt\n" +"§4" + +#. §0: `le_antisymm x y` +#. §1: `x ≤ y` +#. §2: `y ≤ x` +#. §3: `x = y` +#: Game.Levels.LessOrEqual.L06le_antisymm +#: Game.Levels.AdvMultiplication.L07mul_ne_zero +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "§0 is a proof that if §1 and §2 then §3." +msgstr "§0 ist ein Beweis dafür, dass aus §1 und §2 die Aussage §3 folgt." + +#. §0: ``` +#. repeat rw [add_comm n] +#. exact add_right_cancel a b n +#. ``` +#: Game.Levels.AdvAddition.L02add_left_cancel +msgid "" +"How about this for a proof:\n" +"§0" +msgstr "" +"Wie wäre es mit diesem Beweis:\n" +"§0" + +#. §0: `rw [h]` +#. §1: `rfl` +#. §2: `exact h` +#: Game.Levels.Implication.L07intro2 +msgid "Now §0 then §1 works, but §2 is quicker." +msgstr "§0 und dann §1 funktioniert zwar, aber §2 ist schneller." + +#. §0: `le_refl x` +#. §1: `x ≤ x` +#. §2: $\\le$ +#: Game.Levels.LessOrEqual.L01le_refl +msgid "" +"§0 is a proof of §1.\n" +"\n" +"The reason for the name is that this lemma is \"reflexivity of §2\"" +msgstr "" +"§0 ist ein Beweis für §1.\n" +"\n" +"Der Grund für den Namen ist, dass dieses Lemma die „Reflexivität von §2“ ist." + +#: Game.Levels.Addition.L03add_comm +msgid "add_comm (level boss)" +msgstr "add_comm (Hauptgegner)" + +#. §0: `mul_comm x y : x * y = y * x` +#. §1: `mul_zero` +#. §2: `zero_mul` +#: Game.Levels.Multiplication.L02zero_mul +msgid "" +"Our first challenge is §0,\n" +"and we want to prove it by induction. The zero\n" +"case will need §1 (which we have)\n" +"and §2 (which we don't), so let's\n" +"start with this." +msgstr "" +"Unsere erste Herausforderung ist §0,\n" +"und wir wollen sie durch Induktion beweisen. Der Fall\n" +"Null benötigt §1 (das wir haben)\n" +"und §2 (das wir nicht haben), also fangen wir\n" +"mit Letzterem an." + +#. §0: `simp_add` +#. §1: `a + (b + c) + (d + e) = e + (d + (c + b)) + a` +#: Game.Levels.Algorithm.L04add_algo3 +msgid "" +"# Overview\n" +"\n" +"Our home-made tactic §0 will solve arbitrary goals of\n" +"the form §1." +msgstr "" +"# Überblick\n" +"\n" +"Unsere selbstgebaute Taktik §0 erreicht beliebige Ziele\n" +"der Form §1." + +#. §0: `20 + 20 = 40` +#: Game.Levels.Algorithm.L04add_algo3 +msgid "" +"Let's now move on to a more efficient approach to questions\n" +"involving numerals, such as §0." +msgstr "" +"Wenden wir uns nun einem effizienteren Ansatz für Fragestellungen\n" +"mit Zahlen wie, zum Beispiel, §0 zu." + +#: Game.Levels.Multiplication.L09mul_assoc +msgid "" +"We now have enough to prove that multiplication is associative,\n" +"the boss level of multiplication world. Good luck!" +msgstr "" +"Wir haben jetzt genug, um zu beweisen, dass die Multiplikation assoziativ " +"ist –\n" +"der Endgegner der Multiplikations-Welt. Viel Glück!" + +#: Game.Levels.Power.L08pow_pow +msgid "pow_pow" +msgstr "pow_pow" + +#: Game.Levels.Implication.L04succ_inj +msgid "Now finish in one line." +msgstr "Schließe den Beweis nun in einer Zeile ab." + +#. §0: `le_two x` +#. §1: `x ≤ 2` +#. §2: `x = 0` +#. §3: `x = 1` +#. §4: `x = 2` +#: Game.Levels.LessOrEqual.L11le_two +msgid "§0 is a proof that if §1 then §2 or §3 or §4." +msgstr "" +"§0 ist ein Beweis dafür, dass aus §1 folgt, dass §2 oder §3 oder §4 gilt." + +#. §0: ``` +#. rw [add_comm] +#. exact add_right_eq_zero b a +#. ``` +#. §1: `≤` +#: Game.Levels.AdvAddition.L06add_left_eq_zero +msgid "" +"How about this for a proof:\n" +"\n" +"§0\n" +"\n" +"That's the end of Advanced Addition World! You'll need these theorems\n" +"for the next world, §1 World. Click on \"Home\" to access it." +msgstr "" +"Wie wäre es mit diesem Beweis:\n" +"\n" +"§0\n" +"\n" +"Das war das Ende der Fortgeschrittenen Additions-Welt! Du wirst diese Sätze\n" +"für die nächste Welt, die §1-Welt, brauchen. Klicke auf „Home“, um sie zu " +"erreichen." + +#. §0: `Mul a b` +#. §1: `a * b` +#. §2: `mul_zero a : a * 0 = 0` +#. §3: `mul_succ a b : a * succ b = a * b + a` +#. §4: `zero_mul` +#: Game.Levels.Multiplication.L01mul_one +msgid "" +"§0, with notation §1, is the usual\n" +" product of natural numbers. Internally it is\n" +" via two axioms:\n" +"\n" +" * §2\n" +"\n" +" * §3\n" +"\n" +"Other theorems about naturals, such as §4,\n" +"are proved by induction from these two basic theorems." +msgstr "" +"§0, mit der Notation §1, ist das übliche\n" +" Produkt natürlicher Zahlen. Intern wird es\n" +" über zwei Axiome definiert:\n" +"\n" +" * §2\n" +"\n" +" * §3\n" +"\n" +"Weitere Sätze über natürliche Zahlen, wie etwa §4,\n" +"werden durch Induktion aus diesen beiden grundlegenden Sätzen bewiesen." + +#. §0: `add_zero a` +#. §1: `a + 0 = a` +#. §2: `add_zero` +#. §3: `add_zero 37` +#. §4: `37 + 0 = 37` +#. §5: `rw` +#. §6: `rw [add_zero]` +#. §7: `add_zero` +#. §8: $\\forall n ∈ ℕ, n + 0 = n$ +#. §9: `n + 0 = n` +#: Game.Levels.Tutorial.L05add_zero +msgid "" +"§0 is a proof that §1.\n" +"\n" +"## Summary\n" +"\n" +"§2 is really a function, which\n" +"eats a number, and returns a proof of a theorem\n" +"about that number. For example §3 is\n" +"a proof that §4.\n" +"\n" +"The §5 tactic will accept §6\n" +"and will try to figure out which number you omitted\n" +"to input.\n" +"\n" +"## Details\n" +"\n" +"A mathematician sometimes thinks of §7\n" +"as \\\\\"one thing\\\\\", namely a proof of §8.\n" +"This is just another way of saying that it's a function which\n" +"can eat any number n and will return a proof that §9." +msgstr "" +"§0 ist ein Beweis dafür, dass §1 gilt.\n" +"\n" +"## Zusammenfassung\n" +"\n" +"§2 ist eigentlich eine Funktion, die\n" +"eine Zahl nimmt und einen Beweis eines Satzes\n" +"über diese Zahl zurück gibt. Zum Beispiel ist §3\n" +"ein Beweis dafür, dass §4 gilt.\n" +"\n" +"Die Taktik §5 akzeptiert §6\n" +"und versucht herauszufinden, welche Zahl du\n" +"ausgelassen hast.\n" +"\n" +"## Details\n" +"\n" +"Eine Mathematikerin stellt sich §7\n" +"manchmal als „ein Ding“ vor, nämlich als Beweis von §8.\n" +"Das ist nur eine andere Art zu sagen, dass es eine Funktion ist, die\n" +"eine beliebige Zahl n frisst und einen Beweis dafür zurück gibt, dass §9 " +"gilt." + +#. §0: $a$ +#. §1: $b$ +#. §2: $$(a+b)^2=a^2+b^2+2ab.$$ +#: Game.Levels.Power.L09add_sq +msgid "" +"For all numbers §0 and §1, we have\n" +"§2" +msgstr "" +"Für alle Zahlen §0 und §1 gilt\n" +"§2" + +#. §0: `rfl` +#. §1: `rfl` +#. §2: `rfl` +#. §3: `rw` +#: Game.Levels.Tutorial.L01rfl +msgid "" +"Congratulations! You completed your first verified proof!\n" +"\n" +"Remember that §0 is a *tactic*. If you ever want information about the §1 " +"tactic,\n" +"you can click on §2 in the list of tactics on the right.\n" +"\n" +"Now click on \"Next\" to learn about the §3 tactic." +msgstr "" +"Glückwunsch! Du hast deinen ersten verifizierten Beweis abgeschlossen!\n" +"\n" +"Denk daran, dass §0 eine *Taktik* ist. Wenn du jemals Informationen über die " +"Taktik §1 möchtest,\n" +"kannst du in der Liste der Taktiken rechts auf §2 klicken.\n" +"\n" +"Klicke nun auf „Weiter“, um die Taktik §3 kennenzulernen." + +#. §0: $0+x=(0+y)+2$ +#. §1: $x=y+2$ +#: Game.Levels.Implication.L02exact2 +msgid "Assuming §0, we have §1." +msgstr "Unter der Annahme §0 gilt §1." + +#. §0: `add_right_cancel a b n` +#. §1: $a+n=b+n\\implies a=b$ +#: Game.Levels.AdvAddition.L01add_right_cancel +msgid "" +"In this world I will mostly leave you on your own.\n" +"\n" +"§0 is the theorem that §1." +msgstr "" +"In dieser Welt überlasse ich dich größtenteils dir selbst.\n" +"\n" +"§0 ist der Satz, dass §1 gilt." + +#: Game.Levels.Power.L06pow_add +msgid "" +"Let's now begin our approach to the final boss,\n" +"by proving some more subtle facts about powers." +msgstr "" +"Beginnen wir nun unseren Weg zum Endgegner des Spiels,\n" +"indem wir einige subtilere Tatsachen über Potenzen beweisen." + +#. §0: `succ_le_succ x y` +#. §1: `succ x ≤ succ y` +#. §2: `x ≤ y` +#: Game.Levels.LessOrEqual.L09succ_le_succ +msgid "§0 is a proof that if §1 then §2." +msgstr "§0 ist ein Beweis dafür, dass §2 gilt, wenn §1 gilt." + +#: Game.Levels.Implication.L08ne +msgid "≠" +msgstr "≠" + +#. §0: `c = 0` +#. §1: `c = succ e` +#. §2: `cases c with e` +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "Split into cases §0 and §1 with §2." +msgstr "Teile mit §2 in die Fälle §0 und §1 auf." + +#. §0: `intro h` +#. §1: `h` +#: Game.Levels.Implication.L06intro +msgid "Start with §0 to assume the hypothesis and call its proof §1." +msgstr "" +"Beginne mit §0, um die Annahme anzunehmen und ihren Beweis §1 zu nennen." + +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "mul_right_eq_self" +msgstr "mul_right_eq_self" + +#. §0: `add_comm` +#. §1: `succ_add` +#. §2: `succ_add a b` +#. §3: `(succ a) + b = succ (a + b)` +#. §4: `a` +#. §5: `b` +#. §6: `x + y = y + x` +#. §7: `b` +#. §8: `b = 0` +#. §9: `b` +#: Game.Levels.Addition.L02succ_add +msgid "" +"Oh no! On the way to §0, a wild §1 appears. §2\n" +"is the proof that §3 for §4 and §5 numbers.\n" +"This result is what's standing in the way of §6. Again\n" +"we have the problem that we are adding §7 to things, so we need\n" +"to use induction to split into the cases where §8 and §9 is a successor." +msgstr "" +"Oh nein! Auf dem Weg zu §0 taucht ein wildes §1 auf. §2\n" +"ist der Beweis dafür, dass §3 für Zahlen §4 und §5 gilt.\n" +"Dieses Ergebnis steht §6 im Weg. Wieder\n" +"haben wir das Problem, dass wir §7 zu Dingen addieren, also müssen wir\n" +"Induktion verwenden, um in die Fälle aufzuteilen, in denen §8 gilt\n" +"beziehungsweise §9 ein Nachfolger ist." + +#. §0: `simp` +#. §1: `simp` +#. §2: `add_comm` +#: Game.Levels.Algorithm.L03add_algo2 +msgid "" +"# Overview\n" +"\n" +"Lean's simplifier, §0, will rewrite every lemma\n" +"tagged with §1 and every lemma fed to it by the user, as much as it can.\n" +"Furthermore, it will attempt to order variables into an internal order if " +"fed\n" +"lemmas such as §2, so that it does not go into an infinite loop." +msgstr "" +"# Überblick\n" +"\n" +"Leans Vereinfacher §0 schreibt mittels jedem mit §1\n" +"markierten Lemma sowie jedem von der Nutzerin übergebenen Lemma so weit um, " +"wie es geht.\n" +"Außerdem versucht er, Variablen in eine interne Reihenfolge zu bringen, wenn " +"ihm\n" +"Lemmata wie §2 übergeben werden, damit er nicht in eine Endlosschleife gerät." + +#. §0: `cases ha with n hn` +#: Game.Levels.AdvMultiplication.L04one_le_of_ne_zero +msgid "Now take apart the existence statement with §0." +msgstr "Zerlege nun die Existenzaussage mit §0." + +#. §0: $2+2=4$ +#: Game.Levels.Tutorial.L08twoaddtwo Game.Levels.Implication.L06intro +#: Game.Levels.Implication.L07intro2 Game.Levels.Implication.L09zero_ne_succ +#: Game.Levels.Implication.L10one_ne_zero +#: Game.Levels.Implication.L11two_add_two_ne_five +#: Game.Levels.Algorithm.L02add_algo1 Game.Levels.Algorithm.L06is_zero +#: Game.Levels.Algorithm.L08decide Game.Levels.AdvAddition.L01add_right_cancel +#: Game.Levels.AdvAddition.L02add_left_cancel +#: Game.Levels.AdvAddition.L04add_right_eq_self +msgid "§0." +msgstr "§0." + +#. §0: $x,y,z>0$ +#. §1: $m \\geq 3$ +#. §2: $x^m+y^m\\not =z^m$ +#. §3: $m \\geq 3$ +#. §4: `n + 3` +#. §5: `m` +#. §6: `x > 0` +#. §7: `a + 1` +#: Game.Levels.Power.L10FLT +msgid "" +"We now have enough to state a mathematically accurate, but slightly\n" +"clunky, version of Fermat's Last Theorem.\n" +"\n" +"Fermat's Last Theorem states that if §0 and §1 then §2.\n" +"If you didn't do inequality world yet then we can't talk about §3,\n" +"so we have to resort to the hack of using §4 for §5,\n" +"which guarantees it's big enough. Similarly instead of §6 we\n" +"use §7.\n" +"\n" +"This level looks superficially like other levels we have seen,\n" +"but the shortest solution known to humans would translate into\n" +"many millions of lines of Lean code. The author of this game,\n" +"Kevin Buzzard, is working on translating the proof by Wiles\n" +"and Taylor into Lean, although this task will take many years.\n" +"\n" +"## CONGRATULATIONS!\n" +"\n" +"You've finished the main quest of the natural number game!\n" +"If you would like to learn more about how to use Lean to\n" +"prove theorems in mathematics, then take a look\n" +"at [Mathematics In Lean](https://leanprover-community.github.io/" +"mathematics_in_lean/),\n" +"an interactive textbook which you can read in your browser,\n" +"and which explains how to work with many more mathematical concepts in Lean." +msgstr "" +"Wir haben jetzt genug, um eine mathematisch korrekte, aber etwas\n" +"umständliche Version von Fermats letztem Satz zu formulieren.\n" +"\n" +"Fermats letzter Satz besagt, dass §2 gilt, wenn §0 und §1 gelten.\n" +"Wenn du die Ungleichungs-Welt noch nicht gemacht hast, dann können wir nicht " +"über §3 sprechen,\n" +"also müssen wir zum Trick greifen, §4 für §5 zu verwenden,\n" +"was garantiert, dass die Zahl groß genug ist. Ähnlich verwenden wir statt §6 " +"einfach §7.\n" +"\n" +"Dieses Level sieht oberflächlich aus wie andere Level, die wir gesehen " +"haben,\n" +"aber die kürzeste den Menschen bekannte Lösung würde sich in\n" +"viele Millionen Zeilen Lean-Code übersetzen lassen. Der Autor dieses " +"Spiels,\n" +"Kevin Buzzard, arbeitet daran, den Beweis von Wiles\n" +"und Taylor in Lean zu übersetzen, auch wenn diese Aufgabe viele Jahre dauern " +"wird.\n" +"\n" +"## GLÜCKWUNSCH!\n" +"\n" +"Du hast den Hauptstrang der Zahlenspiele abgeschlossen!\n" +"Wenn du mehr darüber erfahren möchtest, wie man mit Lean\n" +"Sätze in der Mathematik beweist, dann wirf einen Blick\n" +"auf [Mathematics In Lean](https://leanprover-community.github.io/" +"mathematics_in_lean/),\n" +"ein interaktives Lehrbuch, das du in deinem Browser lesen kannst\n" +"und das erklärt, wie man mit vielen weiteren mathematischen Konzepten in " +"Lean arbeitet." + +#: Game.Levels.Algorithm.L09decide2 +msgid "decide again" +msgstr "noch einmal „decide“ anwenden" + +#: Game.Levels.LessOrEqual.L03le_succ_self +msgid "x ≤ succ x" +msgstr "x ≤ succ x" + +#: Game.Levels.Tutorial.L02rw +msgid "" +"Can you take it from here? Click on \"Show more help!\" if you need a hint." +msgstr "" +"Kommst du ab hier alleine weiter? Klicke auf „Mehr Hilfe“, wenn du einen " +"Tipp brauchst." + +#. §0: `contrapose! h` +#. §1: `succ m = succ n` +#. §2: `m = n` +#: Game.Levels.Algorithm.L07succ_ne_succ +msgid "" +"Start with §0, to change the goal into its\n" +"contrapositive, namely a hypothesis of §1 and a goal of §2." +msgstr "" +"Beginne mit §0, um das Ziel in seine\n" +"Kontraposition umzuwandeln, nämlich in eine Annahme §1 und ein Ziel §2." + +#: Game.Levels.Multiplication.L07mul_add +msgid "mul_add" +msgstr "mul_add" + +#. §0: `a` +#. §1: `b` +#: Game.Levels.Addition.L02succ_add +msgid "" +"You might want to think about whether induction\n" +"on §0 or §1 is the best idea." +msgstr "" +"Du solltest vielleicht darüber nachdenken, ob Induktion\n" +"über §0 oder über §1 die beste Idee ist." + +#. §0: `le_trans x y z` +#. §1: `x ≤ y` +#. §2: `y ≤ z` +#. §3: `x ≤ z` +#. §4: `x ≤ y → (y ≤ z → x ≤ z)` +#. §5: $x \\le y$ +#. §6: $y \\le z$ +#. §7: $x \\le z$ +#. §8: `a + b + c` +#. §9: `(a + b) + c` +#. §10: `+` +#. §11: `→` +#. §12: `x ≤ y → y ≤ z → x ≤ z` +#. §13: `≤` +#. §14: $P \\implies Q \\implies R$ +#. §15: $P \\implies Q$ +#. §16: $Q \\implies R$ +#: Game.Levels.LessOrEqual.L04le_trans +msgid "" +"§0 is a proof that if §1 and §2 then §3.\n" +"More precisely, it is a proof that §4. In words,\n" +"If §5 then (pause) if §6 then §7.\n" +"\n" +"## A note on associativity\n" +"\n" +"In Lean, §8 means §9, because §10 is left associative. However\n" +"§11 is right associative. This means that §12 in Lean means\n" +"exactly that §13 is transitive. This is different to how mathematicians use\n" +"§14; for them, this usually means that §15\n" +"and §16." +msgstr "" +"§0 ist ein Beweis dafür, dass §3 gilt, wenn §1 und §2 gelten.\n" +"Genauer gesagt ist es ein Beweis dafür, dass §4 gilt. In Worten:\n" +"Wenn §5, dann (Pause) wenn §6, dann §7.\n" +"\n" +"## Eine Anmerkung zur Assoziativität\n" +"\n" +"In Lean bedeutet §8 gerade §9, weil §10 linksassoziativ ist. §11\n" +"ist hingegen rechtsassoziativ. Das bedeutet, dass §12 in Lean\n" +"genau bedeutet, dass §13 transitiv ist. Das unterscheidet sich davon, wie " +"Mathematikerinnen\n" +"§14 verwenden; für sie bedeutet das üblicherweise, dass §15\n" +"und §16 gelten." + +#: Game.Levels.Algorithm.L02add_algo1 +msgid "making life easier" +msgstr "sich das Leben leichter machen" + +#. §0: `add_succ` +#: Game.Levels.Addition.L01zero_add +msgid "Use §0." +msgstr "Verwende §0." + +#. §0: `or` +#. §1: `right` +#: Game.Levels.LessOrEqual.L07or_symm +msgid "" +"Now we can prove the §0 statement by proving the statement on the right,\n" +"so use the §1 tactic." +msgstr "" +"Jetzt können wir die Aussage §0 beweisen, indem wir die Aussage auf der " +"rechten Seite beweisen,\n" +"also verwende die Taktik §1." + +#. §0: `h : a ≠ b` +#. §1: `c ≠ d` +#. §2: `contrapose! h` +#. §3: `h : c = d` +#. §4: `a = b` +#: Game.Levels.Algorithm.L07succ_ne_succ +msgid "" +"# Summary\n" +"\n" +"If you have a hypothesis\n" +"\n" +"§0\n" +"\n" +"and goal\n" +"\n" +"§1\n" +"\n" +"then §2 replaces the set-up with its so-called \\\\\"contrapositive\\\\\":\n" +"a hypothesis\n" +"\n" +"§3\n" +"\n" +"and goal\n" +"\n" +"§4." +msgstr "" +"# Zusammenfassung\n" +"\n" +"Wenn du eine Annahme\n" +"\n" +"§0\n" +"\n" +"und ein Ziel\n" +"\n" +"§1\n" +"\n" +"hast, dann ersetzt §2 den Aufbau durch seine sogenannte „Kontraposition“:\n" +"eine Annahme\n" +"\n" +"§3\n" +"\n" +"und ein Ziel\n" +"\n" +"§4." + +#. §0: `succ_add a b` +#. §1: `succ a + b = succ (a + b)` +#: Game.Levels.Addition.L02succ_add Game.Levels.Multiplication.L08add_mul +#: Game.Levels.Power.L04one_pow Game.Levels.Implication.L10one_ne_zero +#: Game.Levels.Algorithm.L01add_left_comm Game.Levels.LessOrEqual.L02zero_le +#: Game.Levels.LessOrEqual.L03le_succ_self +#: Game.Levels.AdvMultiplication.L01mul_le_mul_right +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +#: Game.Levels.AdvMultiplication.L04one_le_of_ne_zero +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "§0 is a proof that §1." +msgstr "§0 ist ein Beweis dafür, dass §1 gilt." + +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +msgid "eq_succ_of_ne_zero" +msgstr "eq_succ_of_ne_zero" + +#. §0: ``` +#. induction c with d hd +#. rw [add_zero, mul_zero, add_zero] +#. rfl +#. rw [add_succ, mul_succ, hd, mul_succ, add_assoc] +#. rfl +#. ``` +#. §1: `a` +#. §2: `b` +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"Here's my solution:\n" +"§0\n" +"\n" +"Inducting on §1 or §2 also works, but might take longer." +msgstr "" +"Hier ist meine Lösung:\n" +"§0\n" +"\n" +"Induktion über §1 oder §2 funktioniert auch, könnte aber länger dauern." + +#. §0: `apply succ_inj` +#. §1: `succ_inj` +#: Game.Levels.Implication.L05succ_inj2 +msgid "Start with §0 to apply §1 to the *goal*." +msgstr "Beginne mit §0, um §1 auf das *Ziel* anzuwenden." + +#: Game.Levels.Multiplication.L02zero_mul +msgid "zero_mul" +msgstr "zero_mul" + +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "Can you take it from here?" +msgstr "Kommst du ab hier alleine weiter?" + +#: Game.Levels.Power.L07mul_pow +msgid "mul_pow" +msgstr "mul_pow" + +#. §0: `≤` +#. §1: `ℕ` +#: Game.Levels.LessOrEqual.L04le_trans +msgid "" +"A passing mathematician remarks that with reflexivity and transitivity out " +"of the way,\n" +"you have proved that §0 is a *preorder* on §1." +msgstr "" +"Eine vorbeikommende Mathematikerin bemerkt, dass du, nachdem Reflexivität " +"und Transitivität erledigt sind,\n" +"bewiesen hast, dass §0 eine *Präordnung* auf §1 ist." + +#. §0: ``` +#. cases hxy with a ha +#. cases hyx with b hb +#. rw [ha] +#. rw [ha, add_assoc] at hb +#. symm at hb +#. apply add_right_eq_self at hb +#. apply add_right_eq_zero at hb +#. rw [hb, add_zero] +#. rfl +#. ``` +#. §1: `≤` +#. §2: `ℕ` +#. §3: `≤` +#: Game.Levels.LessOrEqual.L06le_antisymm +msgid "" +"Here's my proof:\n" +"§0\n" +"\n" +"A passing mathematician remarks that with antisymmetry as well,\n" +"you have proved that §1 is a *partial order* on §2.\n" +"\n" +"The boss level of this world is to prove\n" +"that §3 is a total order. Let's learn two more easy tactics\n" +"first." +msgstr "" +"Hier ist mein Beweis:\n" +"§0\n" +"\n" +"Eine vorbeikommende Mathematikerin bemerkt, dass du nun auch mit der " +"Antisymmetrie\n" +"bewiesen hast, dass §1 eine *Halbordnung* auf §2 ist.\n" +"\n" +"Der Hauptgegner dieser Welt fordert einen Beweis,\n" +"dass §3 eine Totalordnung ist. Lass uns zuvor noch zwei weitere einfache " +"Taktiken kennen\n" +"lernen." + +#: Game.Levels.Multiplication.L05one_mul +msgid "one_mul" +msgstr "one_mul" + +#. §0: `«{hd}» : 0 + «{d}» = «{d}»` +#. §1: `0 + succ «{d}» = succ «{d}»` +#: Game.Levels.Addition.L01zero_add +msgid "" +"Now for the second goal. Here you have the induction hypothesis\n" +"§0, and you need to prove that §1." +msgstr "" +"Nun zum zweiten Ziel. Hier hast du die Induktionsvoraussetzung\n" +"§0 und musst beweisen, dass §1 gilt." + +#: Game.Levels.Algorithm.L05pred +msgid "pred" +msgstr "pred" + +#. §0: `exact` +#: Game.Levels.Implication.L01exact Game.Levels.LessOrEqual.L01le_refl +msgid "The §0 tactic" +msgstr "Die Taktik §0" + +#. §0: `succ n` +#. §1: `n + 1` +#: Game.Levels.Tutorial.L04rw_backwards +msgid "" +"Why did we not just define §0 to be §1? Because we have not\n" +"even *defined* addition yet! We'll do that in the next level." +msgstr "" +"Warum haben wir §0 nicht einfach als §1 definiert? Weil wir die\n" +"Addition noch nicht einmal *definiert* haben! Das machen wir im nächsten " +"Level." + +#. §0: $x$ +#. §1: $y$ +#. §2: $y = x + 7$ +#. §3: $2y = 2(x + 7)$ +#: Game.Levels.Tutorial.L02rw +msgid "If §0 and §1 are natural numbers, and §2, then §3." +msgstr "Wenn §0 und §1 natürliche Zahlen sind und §2 gilt, dann folgt §3." + +#: Game.Levels.Power.L09add_sq +msgid "[final boss music]" +msgstr "[melodramatische Musik]" + +#. §0: `succ_eq_add_one n` +#. §1: `succ n = n + 1` +#: Game.Levels.Tutorial.L07add_succ Game.Levels.Multiplication.L01mul_one +#: Game.Levels.Multiplication.L06two_mul Game.Levels.Algorithm.L07succ_ne_succ +msgid "§0 is the proof that §1." +msgstr "§0 ist der Beweis dafür, dass §1 gilt." + +#: Game.Levels.Addition.L05add_right_comm +msgid "add_right_comm" +msgstr "add_right_comm" + +#. §0: `add_zero` +#: Game.Levels.Addition.L01zero_add +msgid "try rewriting §0." +msgstr "versuche, mit §0 umzuschreiben." + +#: Game.Levels.AdvMultiplication.L04one_le_of_ne_zero +msgid "one_le_of_ne_zero" +msgstr "one_le_of_ne_zero" + +#. §0: `add_right_cancel a b n` +#. §1: $a+n=b+n \\implies a=b.$ +#: Game.Levels.AdvAddition.L01add_right_cancel +#: Game.Levels.AdvAddition.L02add_left_cancel +#: Game.Levels.AdvAddition.L03add_left_eq_self +#: Game.Levels.AdvAddition.L04add_right_eq_self +msgid "§0 is the theorem that §1" +msgstr "§0 ist der Satz, dass §1 gilt" + +#: Game.Levels.Power.L04one_pow +msgid "one_pow" +msgstr "one_pow" + +#. §0: $a, b, c$ +#. §1: $a+(b+c)=b+(a+c)$ +#: Game.Levels.Algorithm.L01add_left_comm +msgid "If §0 are numbers, then §1." +msgstr "Wenn §0 Zahlen sind, dann gilt §1." + +#. §0: `a ≤ b` +#. §1: `∃ c, b = a + c` +#. §2: `a ≤ b` +#. §3: `c` +#. §4: `b = a + c` +#. §5: `use` +#: Game.Levels.LessOrEqual.L01le_refl +msgid "" +"§0 is *notation* for §1. This \"backwards E\"\n" +"means \"there exists\". So §2 means that there exists\n" +"a number §3 such that §4. This definition works\n" +"because there are no negative numbers in this game.\n" +"\n" +"To *prove* an \"exists\" statement, use the §5 tactic.\n" +"Let's see an example." +msgstr "" +"§0 ist die *Notation* für §1. Dieses „rückwärts geschriebene E“\n" +"bedeutet „es existiert“. Also besagt §2, dass eine Zahl\n" +"§3 existiert, sodass §4 gilt. Diese Definition funktioniert,\n" +"weil es in diesem Spiel keine negativen Zahlen gibt.\n" +"\n" +"Um eine „Existenz“-Aussage zu *beweisen*, verwende die Taktik §5.\n" +"Sehen wir uns ein Beispiel an." + +#: Game.Levels.LessOrEqual.L02zero_le +msgid "0 ≤ x" +msgstr "0 ≤ x" + +#. §0: `or` +#: Game.Levels.LessOrEqual.L07or_symm +msgid "Dealing with §0" +msgstr "Umgang mit §0" + +#: Game.Levels.Multiplication.L08add_mul +msgid "add_mul" +msgstr "add_mul" + +#. §0: `apply eq_succ_of_ne_zero at ha` +#. §1: `... at hb` +#: Game.Levels.AdvMultiplication.L07mul_ne_zero +msgid "Start with §0 and §1" +msgstr "Beginne mit §0 und §1" + +#. §0: `pow_succ a b : a ^ (succ b) = a ^ b * a` +#: Game.Levels.Power.L02zero_pow_succ +msgid "" +"§0 is one of the\n" +"two axioms defining exponentiation in this game." +msgstr "" +"§0 ist eines der\n" +"beiden Axiome, die die Potenzierung in diesem Spiel definieren." + +#. §0: `mul_zero` +#. §1: `mul_succ` +#. §2: `1` +#: Game.Levels.Multiplication.L01mul_one +msgid "" +"See the new \"*\" tab in your lemmas, containing §0 and §1.\n" +"Right now these are the only facts we know about multiplication.\n" +"Let's prove nine more.\n" +"\n" +"Let's start with a warm-up: no induction needed for this one,\n" +"because we know §2 is a successor." +msgstr "" +"Sieh dir den neuen „*“-Reiter bei deinen Sätzen an. Er enthält §0 und §1.\n" +"Im Moment sind das die einzigen Fakten, die wir über die Multiplikation " +"kennen.\n" +"Lass uns neun weitere beweisen.\n" +"\n" +"Beginnen wir mit einer Aufwärmübung: Für diese ist keine Induktion nötig,\n" +"weil wir wissen, dass §2 ein Nachfolger ist." + +#: Game.Levels.Implication.L09zero_ne_succ +#: Game.Levels.AdvAddition.L01add_right_cancel +msgid "Nice!" +msgstr "Super!" + +#. §0: $m$ +#. §1: $ m \\times 1 = m$ +#: Game.Levels.Multiplication.L01mul_one Game.Levels.Multiplication.L05one_mul +#: Game.Levels.Multiplication.L06two_mul +msgid "For any natural number §0, we have §1." +msgstr "Für jede natürliche Zahl §0 gilt §1." + +#. §0: `rw [h]` +#. §1: `y` +#. §2: `x + 7` +#: Game.Levels.Tutorial.L02rw +msgid "First execute §0 to replace the §1 with §2." +msgstr "Führe zuerst §0 aus, um §1 durch §2 zu ersetzen." + +#. §0: $2+2=4$ +#. §1: $2+2\\neq 5$ +#. §2: $x + y = y + x$ +#. §3: $x+1=4 \\implies x=3.$ +#: Game.Levels.Implication +msgid "" +"We've proved that §0; in Implication World we'll learn\n" +"how to prove §1.\n" +"\n" +"In Addition World we proved *equalities* like §2.\n" +"In this second tutorial world we'll learn some new tactics,\n" +"enabling us to prove *implications*\n" +"like §3\n" +"\n" +"We'll also learn two new fundamental facts about\n" +"natural numbers, which Peano introduced as axioms.\n" +"\n" +"Click on \"Start\" to proceed." +msgstr "" +"Wir haben bewiesen, dass §0 gilt; in der Implikations-Welt lernen wir,\n" +"wie man §1 beweist.\n" +"\n" +"In der Additions-Welt haben wir *Gleichheiten* wie §2 bewiesen.\n" +"In dieser zweiten Tutorial-Welt lernen wir einige neue Taktiken kennen,\n" +"mit denen wir *Implikationen*\n" +"wie §3 beweisen können\n" +"\n" +"Außerdem lernen wir zwei neue grundlegende Fakten über\n" +"natürliche Zahlen kennen, die Peano als Axiome eingeführt hat.\n" +"\n" +"Klicke auf „Start“, um fortzufahren." + +#: Game.Levels.LessOrEqual.L11le_two +msgid "le_two" +msgstr "le_two" + +#: Game.Levels.Power.L05pow_two +msgid "pow_two" +msgstr "pow_two" + +#. §0: ``` +#. have h2 := mul_ne_zero a b +#. tauto +#. ``` +#. §1: `mul_ne_zero a b` +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "" +"Here's the short proof:\n" +"§0\n" +"This works because, given §1,\n" +"the argument is reduced to pure logic." +msgstr "" +"Hier ist der kurze Beweis:\n" +"§0\n" +"Das funktioniert, weil sich das Argument, wenn §1 gegeben ist,\n" +"auf reine Logik reduziert." + +#. §0: `rw [← pred_succ a]` +#: Game.Levels.Algorithm.L05pred +msgid "Start with §0 and take it from there." +msgstr "Beginne mit §0 und mach von dort aus weiter." + +#. §0: `0` +#. §1: `pred` +#. §2: ``` +#. pred 0 := 37 +#. pred (succ n) := n +#. ``` +#. §3: `pred_succ` +#. §4: `pred (succ n) = n` +#. §5: `succ_inj` +#: Game.Levels.Algorithm.L05pred +msgid "" +"We now start work on an algorithm to do addition more efficiently. Recall " +"that\n" +"we defined addition by recursion, saying what it did on §0 and successors.\n" +"It is an axiom of Lean that recursion is a valid\n" +"way to define functions from types such as the naturals.\n" +"\n" +"Let's define a new function §1 from the naturals to the naturals, which\n" +"attempts to subtract 1 from the input. The definition is this:\n" +"\n" +"§2\n" +"\n" +"We cannot subtract one from 0, so we just return a junk value. As well as " +"this\n" +"definition, we also create a new lemma §3, which says that §4.\n" +"Let's use this lemma to prove §5, the theorem which\n" +"Peano assumed as an axiom and which we have already used extensively without " +"justification." +msgstr "" +"Wir beginnen nun mit der Arbeit an einem Algorithmus, der die Addition " +"effizienter\n" +"durchführt. Erinnere dich daran, dass wir die Addition durch Rekursion " +"definiert\n" +"haben, indem wir festgelegt haben, was sie mit §0 und Nachfolgern macht.\n" +"Es ist ein Axiom von Lean, dass Rekursion eine gültige\n" +"Methode ist, um Funktionen von Typen wie den natürlichen Zahlen zu " +"definieren.\n" +"\n" +"Definieren wir eine neue Funktion §1 von den natürlichen Zahlen in die " +"natürlichen\n" +"Zahlen, die versucht, 1 von ihrem Argument abzuziehen. Die Definition " +"lautet:\n" +"\n" +"§2\n" +"\n" +"Wir können nicht Eins von 0 abziehen, deshalb geben wir einfach einen " +"Unsinnswert\n" +"zurück. Zusätzlich zu dieser Definition erstellen wir auch ein neues Lemma " +"§3, das\n" +"besagt, dass §4 gilt. Verwenden wir dieses Lemma, um §5 zu beweisen, den " +"Satz, den\n" +"Peano als Axiom angenommen hat und den wir bereits ausgiebig ohne Begründung " +"verwendet haben." + +#: Game.Levels.Algorithm.L06is_zero +msgid "is_zero" +msgstr "is_zero" + +#. §0: $a$ +#. §1: $b$ +#. §2: $c$ +#. §3: $(ab)c = a(bc)$ +#: Game.Levels.Multiplication.L09mul_assoc +msgid "" +"Multiplication is associative.\n" +"In other words, for all natural numbers §0, §1 and §2, we have\n" +"§3." +msgstr "" +"Die Multiplikation ist assoziativ.\n" +"Mit anderen Worten: Für alle natürlichen Zahlen §0, §1 und §2 gilt\n" +"§3." + +#. §0: `simp` +#. §1: `rw` +#. §2: `simp` +#: Game.Levels.Algorithm.L03add_algo2 +msgid "" +"Lean's simplifier, §0, is \"§1 on steroids\". It will rewrite every lemma\n" +"tagged with §2 and every lemma fed to it by the user, as much as it can.\n" +"\n" +"This level is not a level which you want to solve by hand.\n" +"Get the simplifier to solve it for you." +msgstr "" +"Leans Vereinfacher, §0, ist „§1 auf Steroiden“. Er schreibt jedes Lemma,\n" +"das mit §2 markiert ist, und jedes Lemma, das ihm von der Nutzerin gegeben " +"wird,\n" +"so weit um, wie er kann.\n" +"\n" +"Dieses Level willst du nicht von Hand lösen.\n" +"Lass es dir von dem Vereinfacher lösen." + +#. §0: `h : X = Y` +#. §1: `X` +#. §2: `nth_rewrite 3 [h]` +#. §3: `X` +#. §4: `Y` +#. §5: `2 + 2 = 4` +#. §6: `nth_rewrite 2 [two_eq_succ_one]` +#. §7: `2 + succ 1 = 4` +#. §8: `rw [two_eq_succ_one]` +#. §9: `succ 1 + succ 1 = 4` +#: Game.Levels.Tutorial.L02rw +msgid "" +"## Summary\n" +"\n" +"If §0 and there are several §1s in the goal, then\n" +"§2 will just change the third §3 to a §4.\n" +"\n" +"## Example\n" +"\n" +"If the goal is §5 then §6\n" +"will change the goal to §7. In contrast, §8\n" +"will change the goal to §9." +msgstr "" +"## Zusammenfassung\n" +"\n" +"Wenn §0 gilt und im Ziel mehrere §1 vorkommen, dann\n" +"ändert §2 nur das dritte §3 in ein §4.\n" +"\n" +"## Beispiel\n" +"\n" +"Wenn das Ziel §5 ist, dann ändert §6\n" +"das Ziel in §7. Im Gegensatz dazu ändert §8\n" +"das Ziel in §9." + +#. §0: $P\\implies Q$ +#. §1: $Q$ +#. §2: $P$ +#. §3: `rw [succ_eq_add_one]` +#: Game.Levels.Implication.L05succ_inj2 +msgid "" +"Applying a proof of §0 to the *goal* changes §1 to §2.\n" +"Now try §3 to make the goal more like the hypothesis." +msgstr "" +"Wendet man einen Beweis von §0 auf das *Ziel* an, ändert sich §1 zu §2.\n" +"Versuche nun §3, um das Ziel der Annahme ähnlicher zu machen." + +#. §0: $a$ +#. §1: $b$ +#. §2: $(\\operatorname{succ}\\ a) \\times b = a\\times b + b$ +#: Game.Levels.Multiplication.L03succ_mul +msgid "" +"For all natural numbers §0 and §1, we have\n" +"§2." +msgstr "" +"Für alle natürlichen Zahlen §0 und §1 gilt\n" +"§2." + +#. §0: $a+b=0 \\implies a=0$ +#: Game.Levels.AdvAddition.L05add_right_eq_zero +#: Game.Levels.AdvAddition.L06add_left_eq_zero +msgid "A proof that §0." +msgstr "Ein Beweis dafür, dass §0 gilt." + +#. §0: `repeat rw [add_assoc]` +#: Game.Levels.Algorithm.L02add_algo1 +msgid "Start with §0 to push all the brackets to the right." +msgstr "Beginne mit §0, um alle Klammern nach rechts zu schieben." + +#. §0: `cases a with d` +#. §1: `a = 0` +#. §2: `a = succ d` +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +msgid "Start with §0 to do a case split on §1 and §2." +msgstr "Beginne mit §0, um eine Fallunterscheidung nach §1 und §2 zu machen." + +#. §0: `mul_eq_zero` +#. §1: `tauto` +#. §2: `a = 0` +#. §3: `a ≠ 0` +#: Game.Levels.AdvMultiplication.L09mul_left_cancel +msgid "" +"Use §0 and remember that §1 will solve a goal\n" +"if there are hypotheses §2 and §3." +msgstr "" +"Verwende §0 und denke daran, dass §1 ein Ziel erreichen kann,\n" +"wenn es die Annahmen §2 und §3 gibt." + +#: Game.Levels.AdvMultiplication.L04one_le_of_ne_zero +msgid "The previous lemma can be used to prove this one." +msgstr "Das vorige Lemma kann verwendet werden, um dieses zu beweisen." + +#. §0: `is_zero` +#. §1: ``` +#. is_zero 0 := True +#. is_zero (succ n) := False +#. ``` +#. §2: `is_zero_zero` +#. §3: `is_zero_succ n` +#. §4: `is_zero 0 = True` +#. §5: `is_zero (succ n) = False` +#. §6: `succ_ne_zero` +#. §7: `zero_ne_succ` +#. §8: `zero_ne_succ` +#. §9: `True` +#. §10: `trivial` +#: Game.Levels.Algorithm.L06is_zero +msgid "" +"We define a function §0 thus:\n" +"\n" +"§1\n" +"\n" +"We also create two lemmas, §2 and §3, saying that §4\n" +"and §5. Let's use these lemmas to prove §6, Peano's\n" +"Last Axiom. Actually, we have been using §7 before, but it's handy to have\n" +"this opposite version too, which can be proved in the same way. Note: you " +"can\n" +"cheat here by using §8 but the point of this world is to show\n" +"you how to *prove* results like that.\n" +"\n" +"If you can turn your goal into §9, then the §10 tactic will solve it." +msgstr "" +"Wir definieren eine Funktion §0 so:\n" +"\n" +"§1\n" +"\n" +"Wir erstellen außerdem zwei Lemmata, §2 und §3, die besagen, dass §4\n" +"und §5 gelten. Verwenden wir diese Lemmata, um §6 zu beweisen, Peanos\n" +"letztes Axiom. Tatsächlich haben wir §7 schon vorher verwendet, aber es ist " +"praktisch,\n" +"auch diese entgegengesetzte Version zu haben, die sich auf die gleiche Weise " +"beweisen\n" +"lässt. Hinweis: Du kannst hier schummeln, indem du §8 verwendest, aber der " +"Sinn dieser\n" +"Welt ist es, dir zu zeigen, wie man solche Ergebnisse *beweist*.\n" +"\n" +"Wenn du dein Ziel in §9 umwandeln kannst, dann kannst du es mit der Taktik " +"§10 erreichen." + +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "mul_eq_zero" +msgstr "mul_eq_zero" + +#. §0: `rw [two_eq_succ_one]` +#. §1: `2` +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "Start with §0 to begin to break §1 down into its definition." +msgstr "Beginne mit §0, um §1 in seine Definition zu zerlegen." + +#: Game.Levels.Implication.L10one_ne_zero +msgid "1 ≠ 0" +msgstr "1 ≠ 0" + +#: Game.Levels.AdvMultiplication.L01mul_le_mul_right +msgid "mul_le_mul_right" +msgstr "mul_le_mul_right" + +#: Game.Levels.AdvAddition.L04add_right_eq_self +msgid "add_right_eq_self" +msgstr "add_right_eq_self" + +#. §0: `2 + 2 ≠ 5` +#. §1: `≠` +#. §2: `a ≠ b` +#. §3: `a = b → False` +#. §4: `False` +#. §5: `→` +#. §6: `True → False` +#. §7: `False → False` +#. §8: `X → False` +#. §9: `X` +#. §10: `a ≠ b` +#. §11: `False` +#. §12: `False` +#: Game.Levels.Implication.L08ne +msgid "" +"We still can't prove §0 because we have not talked about the\n" +"definition of §1. In Lean, §2 is *notation* for §3.\n" +"Here §4 is a generic false proposition, and §5 is Lean's notation\n" +"for \"implies\". In logic we learn\n" +"that §6 is false, but §7 is true. Hence\n" +"§8 is the logical opposite of §9.\n" +"\n" +"Even though §10 does not look like an implication,\n" +"you should treat it as an implication. The next two levels will show you " +"how.\n" +"\n" +"§11 is a goal which you cannot deduce from a consistent set of assumptions!\n" +"So if your goal is §12 then you had better hope that your hypotheses\n" +"are contradictory, which they are in this level." +msgstr "" +"Wir können §0 immer noch nicht beweisen, weil wir noch nicht über die\n" +"Definition von §1 gesprochen haben. In Lean ist §2 die *Notation* für §3.\n" +"Hier ist §4 eine generische falsche Aussage und §5 ist Leans Notation\n" +"für „impliziert“. In der Logik lernen wir,\n" +"dass §6 falsch, §7 aber wahr ist. Daher ist\n" +"§8 das logische Gegenteil von §9.\n" +"\n" +"Auch wenn §10 nicht wie eine Implikation aussieht,\n" +"solltest du es wie eine Implikation behandeln. Die nächsten beiden Level " +"zeigen dir, wie.\n" +"\n" +"§11 ist ein Ziel, das du nicht aus einer widerspruchsfreien Menge von " +"Annahmen herleiten kannst!\n" +"Wenn dein Ziel also §12 ist, dann solltest du besser hoffen, dass deine " +"Annahmen\n" +"widersprüchlich sind, was sie in diesem Level auch sind." + +#: Game.Levels.LessOrEqual.L04le_trans +msgid "x ≤ y and y ≤ z implies x ≤ z" +msgstr "aus x ≤ y und y ≤ z folgt x ≤ z" + +#. §0: `exact` +#: Game.Levels.Implication.L02exact2 +msgid "§0 practice." +msgstr "Übung zu §0." + +#. §0: `zero_ne_succ n` +#. §1: `0 = succ n → False` +#. §2: `succ n = 0` +#. §3: `symm` +#. §4: `x = y` +#. §5: `y = x` +#. §6: `x ≠ y` +#. §7: `y ≠ x` +#. §8: `symm at h` +#. §9: `h` +#. §10: $0 \\neq 1$ +#. §11: `zero_ne_one` +#. §12: $1 \\neq 0$ +#: Game.Levels.Implication.L10one_ne_zero +msgid "" +"We know §0 is a proof of §1 -- but what\n" +"if we have a hypothesis §2? It's the wrong way around!\n" +"\n" +"The §3 tactic changes a goal §4 to §5, and a goal §6\n" +"to §7. And §8\n" +"does the same for a hypothesis §9. We've proved §10 and called\n" +"the proof §11; now try proving §12." +msgstr "" +"Wir wissen, dass §0 ein Beweis von §1 ist – aber was,\n" +"wenn wir eine Annahme §2 haben? Sie ist falsch herum!\n" +"\n" +"Die Taktik §3 ändert ein Ziel §4 zu §5 und ein Ziel §6\n" +"zu §7. Und §8\n" +"macht dasselbe für eine Annahme §9. Wir haben §10 bewiesen und den\n" +"Beweis §11 genannt; versuche nun, §12 zu beweisen." + +#. §0: `use` +#. §1: `use` +#: Game.Levels.LessOrEqual.L03le_succ_self +msgid "" +"If you §0 the wrong number, you get stuck with a goal you can't prove.\n" +"What number will you §1 here?" +msgstr "" +"Wenn du §0 mit der falschen Zahl aufrufst, bleibst du bei einem Ziel " +"hängen,\n" +"das du nicht beweisen kannst. Welche Zahl wirst du hier mit §1 benutzen?" + +#: Game.Levels.Multiplication.L04mul_comm +msgid "Multiplication is commutative." +msgstr "Die Multiplikation ist kommutativ." + +#. §0: `mul_succ` +#. §1: `succ_mul` +#: Game.Levels.Multiplication.L03succ_mul +msgid "" +"Similarly we have §0\n" +"but we're going to need §1 (guess what it says -- maybe you\n" +"are getting the hang of Lean's naming conventions).\n" +"\n" +"The last level from addition world might help you in this level.\n" +"If you can't remember what it is, you can go back to the\n" +"home screen by clicking the house icon and then taking a look.\n" +"You won't lose any progress." +msgstr "" +"Analog haben wir §0,\n" +"aber wir werden §1 brauchen (rate mal, was es besagt – vielleicht bekommst\n" +"du langsam ein Gefühl für Leans Namenskonventionen).\n" +"\n" +"Das letzte Level aus der Additions-Welt könnte dir in diesem Level helfen.\n" +"Falls du dich nicht mehr erinnerst, was es ist, kannst du über einen Klick " +"auf\n" +"das Haus-Symbol zum Startbildschirm zurückkehren und es dir ansehen.\n" +"Du verlierst dabei deinen Fortschritt nicht." + +#. §0: `intro h` +#: Game.Levels.Implication.L09zero_ne_succ Game.Levels.LessOrEqual.L04le_trans +#: Game.Levels.LessOrEqual.L08le_total +#: Game.Levels.AdvMultiplication.L02mul_left_ne_zero +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "Start with §0." +msgstr "Beginne mit §0." + +#: Game.Levels.Multiplication.L03succ_mul +msgid "succ_mul" +msgstr "succ_mul" + +#. §0: `add_left_comm` +#. §1: `rw [add_comm b c]` +#. §2: `a + b + c` +#. §3: `(a + b) + c` +#: Game.Levels.Algorithm.L01add_left_comm +msgid "" +"Having to rearrange variables manually using commutativity and\n" +"associativity is very tedious. We start by reminding you of this. §0\n" +"is a key component in the first algorithm which we'll explain, but we need\n" +"to prove it manually.\n" +"\n" +"Remember that you can do precision commutativity rewriting\n" +"with things like §1. And remember that\n" +"§2 means §3." +msgstr "" +"Variablen von Hand mit Kommutativität und Assoziativität umzuordnen, ist\n" +"sehr mühsam. Wir beginnen damit, dich daran zu erinnern. Das Lemma §0\n" +"ist ein zentraler Bestandteil des ersten Algorithmus, den wir erklären " +"werden,\n" +"aber wir müssen es von Hand beweisen.\n" +"\n" +"Denk daran, dass du mit Dingen wie §1 präzise mit Kommutativität\n" +"umschreiben kannst. Und denk daran, dass\n" +"§2 für §3 steht." + +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "Numbers" +msgstr "Zahlen" + +#. §0: `rfl` +#: Game.Levels.Tutorial.L07add_succ +msgid "And finally §0." +msgstr "Und schließlich §0." + +#. §0: `37 * x` +#. §1: $x=0$ +#. §2: $x$ +#. §3: `37 * 0` +#. §4: `0` +#. §5: `37 * d` +#. §6: `37 * succ d` +#. §7: $(d+1)$ +#. §8: $37$ +#. §9: `37 * d + 37` +#. §10: `mul_zero a : a * 0 = 0` +#. §11: `mul_succ a d : a * succ d = a * d + a` +#. §12: `a * b = b * a` +#. §13: `a * (b + c) = a * b + a * c` +#: Game.Levels.Multiplication +msgid "" +"How should we define §0? Just like addition, we need to give definitions\n" +"when §1 and when §2 is a successor.\n" +"\n" +"The zero case is easy: we define §3 to be §4. Now say we know\n" +"§5. What should §6 be? Well, that's §7 §8s,\n" +"so it should be §9.\n" +"\n" +"Here are the definitions in Lean.\n" +"\n" +" * §10\n" +" * §11\n" +"\n" +"In this world, we must not only prove facts about multiplication like §12,\n" +"we must also prove facts about how multiplication interacts with addition, " +"like §13.\n" +"Let's get started." +msgstr "" +"Wie sollten wir §0 definieren? Genau wie bei der Addition müssen wir " +"Definitionen\n" +"angeben, für den Fall, dass §1 gilt, und für den Fall, dass §2 ein " +"Nachfolger ist.\n" +"\n" +"Der Null-Fall ist einfach: Wir definieren §3 als §4. Nehmen wir nun an, wir " +"wissen\n" +"§5. Was sollte §6 sein? Nun, das sind §7 Kopien von §8,\n" +"also sollte es §9 sein.\n" +"\n" +"Hier sind die Definitionen in Lean.\n" +"\n" +" * §10\n" +" * §11\n" +"\n" +"In dieser Welt müssen wir nicht nur Fakten über die Multiplikation wie §12 " +"beweisen,\n" +"sondern auch Fakten darüber, wie die Multiplikation mit der Addition " +"zusammenwirkt, wie §13.\n" +"Fangen wir an." + +#. §0: ``` +#. symm +#. exact zero_ne_one +#. ``` +#. §1: `exact` +#: Game.Levels.Implication.L10one_ne_zero +msgid "" +"What do you think of this two-liner:\n" +"§0\n" +"\n" +"§1 doesn't just take hypotheses, it will eat any proof which exists\n" +"in the system." +msgstr "" +"Was hältst du von diesem Zweizeiler:\n" +"§0\n" +"\n" +"§1 nimmt nicht nur Annahmen, sondern akzeptiert jeden Beweis, der\n" +"im System existiert." + +#: Game.Levels.LessOrEqual.L09succ_le_succ +msgid "succ x ≤ succ y → x ≤ y" +msgstr "succ x ≤ succ y → x ≤ y" + +#: Game +msgid "The classical introduction game for Lean." +msgstr "Das klassische Einführungsspiel für Lean." + +#. §0: `rw [«{h}»]` +#. §1: `rfl` +#. §2: `exact «{h}»` +#: Game.Levels.Implication.L02exact2 +msgid "" +"Now you could finish with §0 then §1, but §2\n" +"does it in one line." +msgstr "" +"Jetzt könntest du mit §0 und dann §1 abschließen, aber §2\n" +"schafft es in einer Zeile." + +#. §0: `add_comm b c` +#. §1: `b + c = c + b` +#. §2: `a + b + c = a + c + b` +#. §3: `rw [add_comm b c]` +#. §4: `(a + b) + c = (a + c) + b` +#. §5: `b + c` +#. §6: `add_right_comm` +#. §7: `add_assoc` +#. §8: `add_comm` +#. §9: `rw [add_comm b]` +#. §10: `b + ? = ? + b` +#. §11: `rw [add_comm b c]` +#. §12: `b + c = c + b` +#: Game.Levels.Addition.L05add_right_comm +msgid "" +"§0 is a proof that §1. But if your goal\n" +"is §2 then §3 will not\n" +"work! Because the goal means §4 so there\n" +"is no §5 term *directly* in the goal.\n" +"\n" +"Use associativity and commutativity to prove §6.\n" +"You don't need induction. §7 moves brackets around,\n" +"and §8 moves variables around.\n" +"\n" +"Remember that you can do more targeted rewrites by\n" +"adding explicit variables as inputs to theorems. For example §9\n" +"will only do rewrites of the form §10, and §11\n" +"will only do rewrites of the form §12." +msgstr "" +"§0 ist ein Beweis dafür, dass §1 gilt. Aber wenn dein Ziel\n" +"§2 ist, dann wird §3 nicht\n" +"funktionieren! Denn das Ziel bedeutet §4, also gibt es\n" +"keinen §5-Term *direkt* im Ziel.\n" +"\n" +"Verwende Assoziativität und Kommutativität, um §6 zu beweisen.\n" +"Du brauchst keine Induktion. §7 bewegt Klammern,\n" +"und §8 bewegt Variablen.\n" +"\n" +"Denk daran, dass du gezieltere `rw`-Schritte machen kannst, indem du\n" +"explizite Variablen als Argumente für Sätze angibst. Zum Beispiel wird §9\n" +"nur `rw`-Schritte der Form §10 durchführen, und §11\n" +"wird nur `rw`-Schritte der Form §12 durchführen." + +#: Game.Levels.Power.L10FLT +msgid "Fermat's Last Theorem" +msgstr "Fermats letzter Satz" + +#. §0: $x$ +#. §1: $x \\le x$ +#: Game.Levels.LessOrEqual.L01le_refl Game.Levels.LessOrEqual.L02zero_le +#: Game.Levels.LessOrEqual.L03le_succ_self +msgid "If §0 is a number, then §1." +msgstr "Wenn §0 eine Zahl ist, dann gilt §1." + +#. §0: ``` +#. cases x with y +#. left +#. rfl +#. rw [one_eq_succ_zero] at hx ⊢ +#. apply succ_le_succ at hx +#. apply le_zero at hx +#. rw [hx] +#. right +#. rfl +#. ``` +#: Game.Levels.LessOrEqual.L10le_one +msgid "" +"Here's my proof:\n" +"§0\n" +"\n" +"If you solved this level then you should be fine with the next level!" +msgstr "" +"Hier ist mein Beweis:\n" +"§0\n" +"\n" +"Wenn du dieses Level gelöst hast, dann kommst du auch mit dem nächsten Level " +"gut zurecht!" + +#. §0: `2 = 2` +#: Game.Levels.Tutorial.L04rw_backwards +msgid "Can you now change the goal into §0?" +msgstr "Kannst du das Ziel jetzt in §0 umwandeln?" + +#: Game.Levels.Power.L09add_sq +msgid "add_sq" +msgstr "add_sq" + +#. §0: `a` +#. §1: `cases a with b` +#. §2: `a = 0` +#. §3: `a = succ b` +#: Game.Levels.LessOrEqual.L08le_total +msgid "" +"This is I think the toughest level yet. Tips: if §0 is a number\n" +"then §1 will split into cases §2 and §3.\n" +"And don't go left or right until your hypotheses guarantee that\n" +"you can prove the resulting goal!\n" +"\n" +"I've left hidden hints; if you need them, retry from the beginning\n" +"and click on \"Show more help!\"" +msgstr "" +"Das ist meiner Meinung nach das bisher schwierigste Level. Tipps: Wenn §0 " +"eine Zahl\n" +"ist, dann teilt §1 in die Fälle §2 und §3 auf.\n" +"Und geh nicht nach links oder rechts, bevor deine Annahmen garantieren, " +"dass\n" +"du das entstehende Ziel beweisen kannst!\n" +"\n" +"Ich habe versteckte Hinweise hinterlassen; wenn du sie brauchst, beginne von " +"vorn\n" +"und klicke auf „Mehr Hilfe“." + +#. §0: `ℕ` +#: Game.Levels.LessOrEqual.L08le_total +msgid "" +"Very well done.\n" +"\n" +"A passing mathematician remarks that with you've just proved that §0 is " +"totally\n" +"ordered.\n" +"\n" +"The final few levels in this world are much easier." +msgstr "" +"Sehr gut gemacht.\n" +"\n" +"Eine vorbeikommende Mathematikerin bemerkt, dass du gerade bewiesen hast, " +"dass §0 total\n" +"geordnet ist.\n" +"\n" +"Die letzten paar Level in dieser Welt sind viel einfacher." + +#: Game.Levels.LessOrEqual.L05le_zero +msgid "" +"It's \"intuitively obvious\" that there are no numbers less than zero,\n" +"but to prove it you will need a result which you showed in advanced\n" +"addition world." +msgstr "" +"Es ist „intuitiv offensichtlich“, dass es keine Zahlen kleiner als null " +"gibt,\n" +"aber um es zu beweisen, brauchst du ein Resultat, das du in der " +"Fortgeschrittenen\n" +"Additions-Welt gezeigt hast." + +#. §0: `exact h` +#: Game.Levels.Implication.L04succ_inj +msgid "" +"And now we've deduced what we wanted to prove: the goal is one of our " +"assumptions.\n" +"Finish the level with §0." +msgstr "" +"Und jetzt haben wir hergeleitet, was wir beweisen wollten: Das Ziel ist eine " +"unserer Annahmen.\n" +"Schließe das Level mit §0 ab." + +#. §0: `rw [add_zero]` +#: Game.Levels.Tutorial.L07add_succ +msgid "And now §0" +msgstr "Und jetzt §0" + +#. §0: `pow_add a m n` +#. §1: $a^{m+n}=a^ma^n.$ +#: Game.Levels.Power.L06pow_add Game.Levels.Power.L07mul_pow +#: Game.Levels.Power.L08pow_pow +msgid "§0 is a proof that §1" +msgstr "§0 ist ein Beweis dafür, dass §1 gilt" + +#: Game.Levels.LessOrEqual +msgid "≤ World" +msgstr "Ungleichungs-Welt" + +#. §0: ``` +#. rw [mul_comm, mul_one] +#. rfl +#. ``` +#: Game.Levels.Multiplication.L05one_mul Game.Levels.Multiplication.L06two_mul +msgid "" +"Here's my solution:\n" +"§0" +msgstr "" +"Hier ist meine Lösung:\n" +"§0" + +#: Game.Levels.Algorithm.L07succ_ne_succ +msgid "An algorithm for equality" +msgstr "Ein Algorithmus für Gleichheit" + +#: Game.Levels.AdvMultiplication.L05le_mul_right +msgid "le_mul_right" +msgstr "le_mul_right" + +#: Game.Levels.Power +msgid "Power World" +msgstr "Potenz-Welt" + +#. §0: ``` +#. nth_rewrite 2 [← mul_one a] at h +#. exact mul_left_cancel a b 1 ha h +#. ``` +#: Game.Levels.AdvMultiplication.L10mul_right_eq_self +msgid "" +"A two-line proof is\n" +"\n" +"§0\n" +"\n" +"We now have all the tools necessary to set up the basic theory of " +"divisibility of naturals." +msgstr "" +"Ein zweizeiliger Beweis ist\n" +"\n" +"§0\n" +"\n" +"Wir haben nun alle Werkzeuge, die wir brauchen, um die grundlegende Theorie " +"der Teilbarkeit natürlicher Zahlen aufzubauen." + +#: Game.Levels.Multiplication.L06two_mul +msgid "two_mul" +msgstr "two_mul" + +#: Game.Levels.Algorithm.L04add_algo3 +msgid "the simplest approach" +msgstr "der einfachste Ansatz" + +#. §0: $P\\implies Q$ +#. §1: $P$ +#. §2: $Q$ +#. §3: `exact` +#. §4: `exact h` +#: Game.Levels.Implication.L01exact +msgid "" +"In this world we'll learn how to prove theorems of the form §0.\n" +"In other words, how to prove theorems of the form \"if §1 is true, then §2 " +"is true.\"\n" +"To do that we need to learn some more tactics.\n" +"\n" +"The §3 tactic can be used to close a goal which is exactly one of\n" +"the hypotheses. It takes the name of the hypothesis as argument: §4." +msgstr "" +"In dieser Welt lernen wir, wie man Sätze der Form §0 beweist.\n" +"Mit anderen Worten, wie man Sätze der Form „wenn §1 wahr ist, dann ist §2 " +"wahr“ beweist.\n" +"Dazu müssen wir noch einige weitere Taktiken lernen.\n" +"\n" +"Die Taktik §3 kann verwendet werden, um ein Ziel zu erreichen, das\n" +"genau eine der Annahmen ist. Sie nimmt den Namen der Annahme als Argument: " +"§4." + +#: Game.Levels.Algorithm.L02add_algo1 +msgid "" +"So that's the algorithm: now let's use automation to perform it\n" +"automatically." +msgstr "" +"Das ist also der Algorithmus: Nutzen wir nun Automatisierung, um ihn " +"automatisch\n" +"auszuführen." + +#. §0: `x + y = 0 → x = 0` +#. §1: `x + y = x → y = 0` +#. §2: `x * y = 1 → x = 1` +#. §3: `x * y = x → y = 1` +#. §4: `x ≠ 0` +#: Game.Levels.AdvMultiplication +msgid "" +"Advanced *Addition* World proved various implications\n" +"involving addition, such as §0 and §1.\n" +"These lemmas were used to prove basic facts about ≤ in ≤ World.\n" +"\n" +"In Advanced Multiplication World we prove analogous\n" +"facts about multiplication, such as §2, and\n" +"§3 (assuming §4 in the latter result). This will prepare\n" +"us for Divisibility World.\n" +"\n" +"Multiplication World is more complex than Addition World. In the same\n" +"way, Advanced Multiplication world is more complex than Advanced Addition\n" +"World. One reason for this is that certain intermediate results are only\n" +"true under the additional hypothesis that one of the variables is non-zero.\n" +"This causes some unexpected extra twists." +msgstr "" +"In der Fortgeschrittenen *Additions*-Welt haben wir verschiedene " +"Implikationen bewiesen,\n" +"die die Addition betreffen, zum Beispiel §0 und §1.\n" +"Diese Lemmata wurden verwendet, um grundlegende Fakten über ≤ in der " +"Ungleichungs-Welt zu beweisen.\n" +"\n" +"In der Fortgeschrittenen Multiplikations-Welt beweisen wir analoge\n" +"Fakten über die Multiplikation, zum Beispiel §2 und\n" +"§3 (wobei wir für das letzte Resultat §4 annehmen). Das bereitet\n" +"uns auf die Teilbarkeits-Welt vor.\n" +"\n" +"Die Multiplikations-Welt ist komplexer als die Additions-Welt. Genauso\n" +"ist die Fortgeschrittene Multiplikations-Welt komplexer als die " +"Fortgeschrittene\n" +"Additions-Welt. Ein Grund dafür ist, dass bestimmte Zwischenresultate nur\n" +"unter der zusätzlichen Annahme wahr sind, dass eine der Variablen ungleich " +"null ist.\n" +"Das führt zu einigen unerwarteten zusätzlichen Wendungen." + +#. §0: `simp only [add_left_comm, add_comm]` +#: Game.Levels.Algorithm.L03add_algo2 +msgid "Solve this level in one line with §0" +msgstr "Löse dieses Level in einer Zeile mit §0" + +#. §0: `succ_inj` +#. §1: $0$ +#: Game.Levels.Algorithm.L05pred +msgid "" +"Nice! You've proved §0!\n" +"Let's now prove Peano's other axiom, that successors can't be §1." +msgstr "" +"Super! Du hast §0 bewiesen!\n" +"Beweisen wir nun Peanos anderes Axiom, dass Nachfolger nicht §1 sein können." + +#. §0: $a$ +#. §1: $\\operatorname{succ}(a) = a+1$ +#: Game.Levels.Tutorial.L07add_succ Game.Levels.Addition.L01zero_add +#: Game.Levels.Multiplication.L02zero_mul +msgid "For all natural numbers §0, we have §1." +msgstr "Für alle natürlichen Zahlen §0 gilt §1." + +#: Game.Levels.AdvAddition.L05add_right_eq_zero +msgid "Well done!" +msgstr "Gut gemacht!" + +#: Game.Levels.Tutorial.L06add_zero2 +msgid "Precision rewriting" +msgstr "Präzises Umschreiben" + +#. §0: $a(b+c)=ab+ac$ +#. §1: $(b+c)a=ba+ca$ +#. §2: `mul_add a b c` +#. §3: `a * (b + c) = a * b + a * c` +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"Our next goal is \"left and right distributivity\",\n" +"meaning §0 and §1. Rather than\n" +"these slightly pompous names, the name of the proofs\n" +"in Lean are descriptive. Let's start with\n" +"§2, the proof of §3.\n" +"Note that the left hand side contains a multiplication\n" +"and then an addition." +msgstr "" +"Unser nächstes Ziel ist die „links- und rechtsseitige Distributivität“,\n" +"das heißt §0 und §1. Statt\n" +"dieser etwas hochtrabenden Namen sind die Namen der Beweise\n" +"in Lean beschreibend. Fangen wir mit\n" +"§2 an, dem Beweis von §3.\n" +"Beachte, dass die linke Seite eine Multiplikation\n" +"und dann eine Addition enthält." + +#. §0: `xyzzy` +#. §1: `sorry` +#. §2: `xyzzy` +#: Game.Levels.Power.L10FLT +msgid "" +"§0 is an ancient magic spell, believed to be the origin of the\n" +"modern word §1. The game won't complain - or notice - if you\n" +"prove anything with §2." +msgstr "" +"§0 ist ein uralter Zauberspruch, von dem man glaubt, dass er der Ursprung " +"des\n" +"modernen Wortes §1 ist. Das Spiel wird sich nicht beschweren – und es nicht\n" +"einmal bemerken –, wenn du irgendetwas mit §2 beweist." + +#. §0: `0 ^ 0 = 0` +#. §1: `0 ^ 0 = 1` +#: Game.Levels.Power.L01zero_pow_zero +msgid "" +"Mathematicians sometimes argue that §0 is also\n" +"a good convention. But it is not a good convention in this\n" +"game; all the later levels come out beautifully with the\n" +"convention that §1." +msgstr "" +"Mathematikerinnen argumentieren manchmal, dass §0 ebenfalls\n" +"eine gute Konvention ist. Aber in diesem Spiel ist sie keine gute " +"Konvention;\n" +"alle späteren Level gehen wunderbar auf mit der Konvention, dass §1 gilt." + +#. §0: ``` +#. cases h with d hd +#. use d * t +#. rw [hd, add_mul] +#. rfl +#. ``` +#: Game.Levels.AdvMultiplication.L01mul_le_mul_right +msgid "" +"My proof:\n" +"§0" +msgstr "" +"Mein Beweis:\n" +"§0" + +#: Game.Levels.Multiplication.L06two_mul +msgid "" +"This level is more important than you think; it plays\n" +"a useful role when battling a big boss later on." +msgstr "" +"Dieses Level ist wichtiger, als du denkst; es wird nützlich sein,\n" +"wenn du später gegen große Gegner kämpfst." + +#. §0: `Add a b` +#. §1: `a + b` +#. §2: `add_zero a : a + 0 = a` +#. §3: `add_succ a b : a + succ b = succ (a + b)` +#. §4: `zero_add a : 0 + a = a` +#: Game.Levels.Tutorial.L05add_zero +msgid "" +"§0, with notation §1, is\n" +"the usual sum of natural numbers. Internally it is defined\n" +"via the following two hypotheses:\n" +"\n" +"* §2\n" +"\n" +"* §3\n" +"\n" +"Other theorems about naturals, such as §4, are proved\n" +"by induction using these two basic theorems." +msgstr "" +"§0, mit der Notation §1, ist\n" +"die übliche Summe natürlicher Zahlen. Intern ist sie\n" +"über die folgenden zwei Annahmen definiert:\n" +"\n" +"* §2\n" +"\n" +"* §3\n" +"\n" +"Andere Sätze über natürliche Zahlen, wie etwa §4, werden\n" +"mit Induktion aus diesen beiden grundlegenden Sätzen bewiesen." + +#. §0: `cases h2 with h0 h1` +#: Game.Levels.AdvMultiplication.L06mul_right_eq_one +msgid "" +"Now §0 and deal with the two\n" +"cases separately." +msgstr "" +"Nun §0 und behandle die beiden\n" +"Fälle getrennt." + +#: Game.Levels.Power.L08pow_pow +msgid "" +"The music dies down. Is that it?\n" +"\n" +"Course it isn't, you can\n" +"clearly see that there are two levels left.\n" +"\n" +"A passing mathematician says that mathematicians don't have a name\n" +"for the structure you just constructed. You feel cheated.\n" +"\n" +"Suddenly the music starts up again. This really is the final boss." +msgstr "" +"Die Musik verklingt. War das schon alles?\n" +"\n" +"Natürlich nicht, du kannst\n" +"deutlich sehen, dass noch zwei Level übrig sind.\n" +"\n" +"Eine vorbeikommende Mathematikerin sagt, dass Mathematikerinnen keinen " +"Namen\n" +"für die Struktur haben, die du gerade konstruiert hast. Du fühlst dich " +"betrogen.\n" +"\n" +"Plötzlich setzt die Musik wieder ein. Das ist wirklich der Endgegner." + +#. §0: `le_one x` +#. §1: `x ≤ 1` +#. §2: `x = 0` +#. §3: `x = 1` +#: Game.Levels.LessOrEqual.L10le_one +#: Game.Levels.AdvMultiplication.L08mul_eq_zero +msgid "§0 is a proof that if §1 then §2 or §3." +msgstr "§0 ist ein Beweis dafür, dass aus §1 folgt, dass §2 oder §3 gilt." + +#: Game.Levels.Tutorial +msgid "Tutorial World" +msgstr "Tutorial-Welt" + +#. §0: `rw [one_eq_succ_zero]` +#: Game.Levels.Tutorial.L07add_succ +msgid "§0 will do this." +msgstr "§0 erledigt das." + +#. §0: `x ≤ 0` +#. §1: `x = 0` +#. §2: `≤ 1` +#. §3: `≤ 2` +#: Game.Levels.LessOrEqual.L09succ_le_succ +msgid "" +"We've proved that §0 implies §1. The last two levels\n" +"in this world will prove which numbers are §2 and §3.\n" +"This lemma will be helpful for them." +msgstr "" +"Wir haben bewiesen, dass §0 die Aussage §1 impliziert. Die letzten beiden " +"Level\n" +"in dieser Welt werden beweisen, welche Zahlen §2 und §3 sind.\n" +"Dieses Lemma wird dabei helfen." + +#. §0: `cases «{e}» with a` +#: Game.Levels.LessOrEqual.L08le_total +msgid "You still don't know which way to go, so do §0." +msgstr "" +"Du weißt immer noch nicht, welchen Weg du einschlagen sollst, also führe §0 " +"aus." + +#: Game.Levels.AdvMultiplication +msgid "Advanced Multiplication World" +msgstr "Fortgeschrittene Multiplikations-Welt" + +#. §0: `a = 0` +#. §1: `x + a = x` +#: Game.Levels.Addition.L05add_right_comm +msgid "" +"You've now seen all the tactics you need to beat the final boss of the " +"game.\n" +"You can begin the journey towards this boss by entering Multiplication " +"World.\n" +"\n" +"Or you can go off the beaten track and learn some new tactics in " +"Implication\n" +"World. These tactics let you prove more facts about addition, such as\n" +"how to deduce §0 from §1.\n" +"\n" +"Click \"Home\" and make your choice." +msgstr "" +"Du hast jetzt alle Taktiken gesehen, die du brauchst, um den Endgegner des " +"Spiels zu besiegen.\n" +"Du kannst die Reise zu diesem Gegner beginnen, indem du die Multiplikations-" +"Welt betrittst.\n" +"\n" +"Oder du verlässt den ausgetretenen Pfad und lernst einige neue Taktiken in " +"der\n" +"Implikations-Welt. Mit diesen Taktiken kannst du mehr Fakten über die " +"Addition beweisen,\n" +"zum Beispiel, wie man §0 aus §1 herleitet.\n" +"\n" +"Klicke auf „Home“ und triff deine Wahl." + +#. §0: $2$ +#. §1: $0$ +#: Game.Levels.Tutorial.L03two_eq_ss0 Game.Levels.Tutorial.L04rw_backwards +msgid "§0 is the number after the number after §1." +msgstr "§0 ist die Zahl nach der Zahl nach §1." + +#. §0: `2 + 2 = 4` +#: Game.Levels.Tutorial.L02rw +msgid "You now know enough tactics to prove §0! Let's begin the journey." +msgstr "" +"Du kennst jetzt genug Taktiken, um §0 zu beweisen! Beginnen wir die Reise." + +#. §0: `succ_mul a b` +#. §1: `succ a * b = a * b + b` +#. §2: `mul_succ` +#. §3: `mul_comm` +#. §4: `mul_comm` +#. §5: `mul_succ` +#: Game.Levels.Multiplication.L03succ_mul +msgid "" +"§0 is the proof that §1.\n" +"\n" +"It could be deduced from §2 and §3, however this argument\n" +"would be circular because the proof of §4 uses §5." +msgstr "" +"§0 ist der Beweis dafür, dass §1 gilt.\n" +"\n" +"Er ließe sich aus §2 und §3 herleiten, allerdings wäre dieses Argument\n" +"zirkulär, weil der Beweis von §4 selbst §5 verwendet." + +#: GameServer.RpcHandlers +msgid "level completed! 🎉" +msgstr "Level abgeschlossen! 🎉" + +#. §0: `a * b` +#. §1: `rw [mul_comm]` +#. §2: `rw` +#: Game.Levels.Power.L07mul_pow +msgid "" +"The music gets ever more dramatic, as we explore\n" +"the interplay between exponentiation and multiplication.\n" +"\n" +"If you're having trouble exchanging the right §0\n" +"because §1 swaps the wrong multiplication,\n" +"then read the documentation of §2 for tips on how to fix this." +msgstr "" +"Die Musik wird immer dramatischer, während wir das Zusammenspiel\n" +"zwischen Potenzierung und Multiplikation erkunden.\n" +"\n" +"Wenn du Schwierigkeiten hast, die richtigen §0 zu vertauschen,\n" +"weil §1 an der falschen Multiplikation ansetzt,\n" +"dann lies die Dokumentation von §2 für Tipps, wie du das beheben kannst." + +#. §0: `le_total x y` +#. §1: `x ≤ y` +#. §2: `y ≤ x` +#: Game.Levels.LessOrEqual.L08le_total +msgid "§0 is a proof that §1 or §2." +msgstr "§0 ist ein Beweis dafür, dass §1 oder §2 gilt." + +#. §0: `ha : 0 ≠ 0` +#. §1: `tauto` +#: Game.Levels.AdvMultiplication.L03eq_succ_of_ne_zero +msgid "" +"In the \"base case\" we have a hypothesis §0, and you can deduce anything\n" +"from a false statement. The §1 tactic will close this goal." +msgstr "" +"Im „Induktionsanfang“ haben wir eine Annahme §0, und aus einer falschen " +"Aussage\n" +"kann man alles herleiten. Die Taktik §1 wird dieses Ziel erreichen." + +#: Game.Levels.Tutorial.L07add_succ +msgid "add_succ" +msgstr "add_succ" + +#: Game.Levels.Power.L03pow_one +msgid "pow_one" +msgstr "pow_one" + +#. §0: ``` +#. intro h +#. rw [add_succ, add_succ, add_zero] at h +#. repeat apply succ_inj at h +#. apply zero_ne_succ at h +#. exact h +#. ``` +#. §1: $20 + 20 ≠ 41$ +#: Game.Levels.Implication.L11two_add_two_ne_five +msgid "" +"Here's my proof:\n" +"§0\n" +"\n" +"Even though Lean is a theorem prover, right now it's pretty clear that we " +"have not\n" +"developed enough material to make it an adequate calculator. In Algorithm\n" +"World, a more computer-sciency world, we will develop machinery which makes\n" +"questions like this much easier, and goals like §1 feasible.\n" +"Alternatively you can do more mathematics in Advanced Addition World, where " +"we prove\n" +"the lemmas needed to get a working theory of inequalities. Click \"Home\" " +"and\n" +"decide your route." +msgstr "" +"Hier ist mein Beweis:\n" +"§0\n" +"\n" +"Auch wenn Lean ein Beweisassistent ist, ist im Moment ziemlich klar, dass " +"wir noch nicht\n" +"genug Material entwickelt haben, um ihn zu einem brauchbaren Taschenrechner " +"zu machen.\n" +"In der Algorithmen-Welt, einer eher Informatik-lastigen Welt, werden wir " +"Maschinerie entwickeln, die\n" +"Fragen wie diese viel einfacher und Ziele wie §1 erreichbar macht.\n" +"Alternativ kannst du mehr Mathematik in der Fortgeschrittenen Additions-Welt " +"betreiben, wo wir\n" +"die Lemmata beweisen, die man für eine funktionierende Theorie der " +"Ungleichungen braucht.\n" +"Klicke auf „Home“ und entscheide dich für einen Weg." + +#. §0: `rw [two_eq_succ_one, one_eq_succ_zero]` +#. §1: `rfl` +#: Game.Levels.Tutorial.L03two_eq_ss0 +msgid "" +"Note that you can do §0\n" +"and then §1 to solve this level in two lines." +msgstr "" +"Beachte, dass du §0\n" +"und dann §1 ausführen kannst, um dieses Level in zwei Zeilen zu lösen." + +#: Game.Levels.AdvAddition.L05add_right_eq_zero +msgid "add_right_eq_zero" +msgstr "add_right_eq_zero" + +#: Game.Levels.Tutorial.L05add_zero +msgid "Adding zero" +msgstr "Null addieren" + +#: Game.Levels.Addition.L03add_comm +msgid "" +"[boss battle music]\n" +"\n" +"Look in your inventory to see the proofs you have available.\n" +"These should be enough." +msgstr "" +"[Trompeten und Pauken]\n" +"\n" +"Schau in deinem Inventar nach, welche Beweise dir zur Verfügung stehen.\n" +"Diese sollten ausreichen." + +#. §0: $a, b$ +#. §1: $c$ +#. §2: $d$ +#. §3: $(a + b) + (c + d) = ((a + c) + d) + b.$ +#: Game.Levels.Algorithm.L02add_algo1 +msgid "" +"If §0, §1 and §2 are numbers, we have\n" +"§3" +msgstr "" +"Wenn §0, §1 und §2 Zahlen sind, gilt\n" +"§3" + +#. §0: `a ≠ 0` +#. §1: `b ≠ 0` +#. §2: `a * b ≠ 0` +#. §3: `a` +#. §4: `b` +#. §5: `succ` +#. §6: `a * b` +#. §7: `succ` +#. §8: `apply zero_ne_succ` +#: Game.Levels.AdvMultiplication.L07mul_ne_zero +msgid "" +"This level proves that if §0 and §1 then §2. One strategy\n" +"is to write both §3 and §4 as §5 of something, deduce that §6 is\n" +"also §7 of something, and then §8." +msgstr "" +"Dieses Level beweist, dass aus §0 und §1 die Aussage §2 folgt. Eine " +"Strategie\n" +"besteht darin, sowohl §3 als auch §4 als §5 von etwas zu schreiben, daraus " +"zu\n" +"folgern, dass §6 ebenfalls §7 von etwas ist, und dann §8 anzuwenden." + +#: Game.Levels.Power.L02zero_pow_succ +msgid "zero_pow_succ" +msgstr "zero_pow_succ" + +#: Game.Levels.LessOrEqual.L07or_symm +msgid "Ready for the boss level of this world?" +msgstr "Bereit für den Hauptgegner dieser Welt?" + +#. §0: `mul_add a b c` +#. §1: `a * (b + c) = a * b + a * c` +#: Game.Levels.Multiplication.L07mul_add +msgid "" +"Multiplication distributes\n" +"over addition on the left.\n" +"\n" +"§0 is the proof that §1." +msgstr "" +"Die Multiplikation ist von links distributiv über der Addition.\n" +"\n" +"§0 ist der Beweis dafür, dass §1 gilt." + +#: Game.Levels.Algorithm +msgid "Algorithm World" +msgstr "Algorithmen-Welt" + +#. §0: `add_succ a b` +#. §1: `a + succ b = succ (a + b)` +#: Game.Levels.Tutorial.L07add_succ +msgid "§0 is the proof of §1." +msgstr "§0 ist der Beweis von §1." + +#: Game.Levels.Power.L10FLT +msgid "" +"Congratulations! You have proved Fermat's Last Theorem!\n" +"\n" +"Either that, or you used magic..." +msgstr "" +"Glückwunsch! Du hast Fermats letzten Satz bewiesen!\n" +"\n" +"Entweder das, oder du hast gezaubert …" + +#. §0: `mul_comm` +#. §1: `mul_comm a b` +#. §2: `a * b = b * a` +#: Game.Levels.Multiplication.L04mul_comm +msgid "" +"§0 is the proof that multiplication is commutative. More precisely,\n" +"§1 is the proof that §2." +msgstr "" +"§0 ist der Beweis dafür, dass die Multiplikation kommutativ ist. Genauer " +"gesagt\n" +"ist §1 der Beweis dafür, dass §2 gilt." + +#: Game.Levels.Tutorial.L04rw_backwards +msgid "rewriting backwards" +msgstr "rückwärts umschreiben" + +#. §0: `use` +#. §1: `x` +#. §2: `x = 37` +#. §3: `use 37` +#. §4: `a ≤ b` +#. §5: `c` +#. §6: `b = a + c` +#. §7: `a ≤ b` +#. §8: `use` +#. §9: `b - a` +#. §10: `use b - a` +#. §11: `use` +#. §12: `use 37` +#. §13: `use a` +#. §14: `use a * a + 1` +#: Game.Levels.LessOrEqual.L01le_refl +msgid "" +"## Summary\n" +"\n" +"The §0 tactic makes progress with goals which claim something *exists*.\n" +"If the goal claims that some §1 exists with some property, and you know\n" +"that §2 will work, then §3 will make progress.\n" +"\n" +"Because §4 is notation for \\\\\"there exists §5 such that §6\\\\\",\n" +"you can make progress on goals of the form §7 by §8ing the\n" +"number which is morally §9 (i.e. §10)\n" +"\n" +"Any of the following examples is possible assuming the type of the argument " +"passed to the §11 function is accurate:\n" +"\n" +"- §12\n" +"- §13\n" +"- §14" +msgstr "" +"## Zusammenfassung\n" +"\n" +"Die Taktik §0 macht Fortschritte bei Zielen, die behaupten, dass etwas " +"*existiert*.\n" +"Wenn das Ziel behauptet, dass ein §1 mit einer bestimmten Eigenschaft " +"existiert, und du weißt,\n" +"dass §2 funktioniert, dann macht §3 Fortschritte.\n" +"\n" +"Da §4 eine Notation ist für „es existiert ein §5, sodass §6“ gilt,\n" +"kannst du bei Zielen der Form §7 Fortschritte machen, indem du §8 auf die\n" +"Zahl anwendest, die im Grunde §9 ist (d. h. §10)\n" +"\n" +"Jedes der folgenden Beispiele ist möglich, sofern der Typ des Arguments, das " +"an die Funktion §11 übergeben wird, korrekt ist:\n" +"\n" +"- §12\n" +"- §13\n" +"- §14" + +#. §0: `x + y = y + x` +#. §1: `add_comm` +#. §2: `add_zero` +#. §3: `zero_add` +#. §4: `add_comm` +#. §5: `x + y = y + x` +#: Game.Levels.Addition.L01zero_add +msgid "" +"This lemma would have been easy if we had known that §0. That theorem\n" +" is called §1 and it is *true*, but unfortunately its proof *uses* both\n" +" §2 and §3!\n" +"\n" +" Let's continue on our journey to §4, the proof of §5." +msgstr "" +"Dieses Lemma wäre einfach gewesen, wenn wir gewusst hätten, dass §0 gilt. " +"Dieser Satz\n" +" heißt §1 und er ist *wahr*, aber leider *verwendet* sein Beweis sowohl\n" +" §2 als auch §3!\n" +"\n" +" Setzen wir unsere Reise zu §4 fort, dem Beweis von §5." + +# should it not rather be multiplication distributive over addition? +#, fuzzy +#~ msgid "" +#~ "Addition is distributive over multiplication.\n" +#~ "In other words, for all natural numbers §0, §1 and §2, we have\n" +#~ "§3." +#~ msgstr "" +#~ "Die Multiplikation ist distributiv über der Addition.\n" +#~ "Mit anderen Worten, für alle natürlichen Zahlen §0, §1 und §2 gilt\n" +#~ "§3." + +#~ msgid "§0 is a proof of §1.\"" +#~ msgstr "§0 ist ein Beweis von §1.“" diff --git a/.i18n/de/Glossar-de.csv b/.i18n/de/Glossar-de.csv new file mode 100644 index 00000000..2e050fb1 --- /dev/null +++ b/.i18n/de/Glossar-de.csv @@ -0,0 +1,76 @@ +# maths +"associativity","Assoziativität" +"assumption","Annahme" +"base case","Induktionsanfang" +"bracket","Klammer" +"parenthesis","Klammer" +"commutativity","Kommutativität" +"distributivity","Distributivität" +"equality","Gleichheit" +"equation","Gleichung" +"expression","Ausdruck" +"false","falsch" +"hypothesis","Annahme" +"induction","Induktion" +"inductive hypothesis","Induktionsvoraussetzung" +"inductive step","Induktionsschritt" +"injective","injektiv" +"distributivity","Distributivität" +"lemma","Lemma", +"lemmas","Lemmata" +"theorem", "Satz" +"monoid","Monoid" +"natural number","natürliche Zahl" +"number","Zahl" +"partial order","Halbordnung" +"predecessor","Vorgänger" +"preorder","Präordnung" +"proof","Beweis" +"proof of","Beweis für" +"semiring","Halbring" +"statement","Aussage" +"successor","Nachfolger" +"to cancel","kürzen" +"to do induction on x","Induktion über x führen" +"to prove","beweisen" +"totally ordered","total geordnet" +"true","wahr" +"variable","Variable" +"X distributes over Y","X ist distributiv über Y" +# Lean +"a rewrite (Substantiv)","`rw`-Schritt" +"argument","Argument" +"input","Argument" +"definition","Definition" +"function","Funktion" +"goal","Ziel" +"goal state","Beweisstand" +"notation","Notation" +"proof term","Beweisterm" +"solvable goal","beweisbares Ziel" +"tactic","Taktik" +"term","Term" +"to rewrite","umschreiben" +"to rewrite backwards","rückwärts umschreiben" +"to solve a goal","ein Ziel erreichen" +"to close a goal","ein Ziel erreichen" +"to take arguments","Argumente erwarten" +"type","Typ" +# game +"boss","Gegner" +"boss level","Endgegner / Hauptgegner" +"main boss","Hauptgegner" +"sub-boss","Zwischengegner" +"button","Schaltfläche" +"Editor mode","„Editor-Modus“" +"final boss","Endgegner des Spiels" +"inventory","Inventar" +"Level","Level" +"tab","Reiter" +"typewriter mode","Schreibmaschinen-Modus" +"editor mode","Editor-Modus" +"World","Welt" +"X World","X-Welt" +# style +"mathematician","Mathematikerin" +"user","Nutzerin" diff --git a/.i18n/en/Game.pot b/.i18n/en/Game.pot index 58d74d68..cc446d3b 100644 --- a/.i18n/en/Game.pot +++ b/.i18n/en/Game.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Project-Id-Version: Game v4.23.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-09-27\n" +"POT-Creation-Date: 2026-09-11\n" "Last-Translator: \n" "Language-Team: none\n" "Language: en\n" @@ -144,16 +144,6 @@ msgid "# Summary\n" "will add §12 as a hypothesis." msgstr "" -#. §0: `≤` -#: Game.Levels.LessOrEqual.L11le_two -msgid "Nice!\n" -"\n" -"The next step in the development of order theory is to develop\n" -"the theory of the interplay between §0 and multiplication.\n" -"If you've already done Multiplication World, you're now ready for\n" -"Advanced Multiplication World. Click on \"Home\" to access it." -msgstr "" - #. §0: `a + b + c` #. §1: `(a + b) + c` #. §2: `+` @@ -189,27 +179,6 @@ msgstr "" msgid "mul_ne_zero" msgstr "" -#. §0: ``` -#. intro h -#. rw [add_succ, add_succ, add_zero] at h -#. repeat apply succ_inj at h -#. apply zero_ne_succ at h -#. exact h -#. ``` -#. §1: $20 + 20 ≠ 41$ -#: Game.Levels.Implication.L11two_add_two_ne_five -msgid "Here's my proof:\n" -"§0\n" -"\n" -"Even though Lean is a theorem prover, right now it's pretty clear that we have not\n" -"developed enough material to make it an adequate calculator. In Algorithm\n" -"World, a more computer-sciency world, we will develop machinery which makes\n" -"questions like this much easier, and goals like §1 feasible.\n" -"Alternatively you can do more mathematics in Advanced Addition World, where we prove\n" -"the lemmas needed to get a working theory of inequalities. Click \"Home\" and\n" -"decide your route." -msgstr "" - #. §0: `2 + 2 = 4` #: Game.Levels.Tutorial msgid "Welcome to tutorial world! In this world we learn the basics\n" @@ -287,6 +256,19 @@ msgid "In this level we're going to prove that §0, where §1 is a secret natura "back to \"Typewriter mode\" by clicking the §16 button in the top right.)" msgstr "" +#. §0: `apply` +#. §1: `P → Q` +#. §2: `P → Q` +#. §3: `P` +#. §4: `Q` +#. §5: `intro` +#: Game.Levels.Implication.L06intro +msgid "We have seen how to §0 theorems and assumptions\n" +"of the form §1. But what if our *goal* is of the form §2?\n" +"To prove this goal, we need to know how to say \"let's assume §3 and deduce §4\".\n" +"In Lean, we do this with the §5 tactic." +msgstr "" + #. §0: `∨` #. §1: `x = 0 ∨ x = 1 ∨ x = 2` #. §2: `x = 0 ∨ (x = 1 ∨ x = 2)` @@ -310,6 +292,19 @@ msgstr "" msgid "Induction on §0 or §1 -- it's all the same in this one." msgstr "" +#. §0: `rw [zero_add] at «{h}»` +#. §1: `zero_add` +#. §2: `«{x}»` +#. §3: `0 + «{x}»` +#. §4: `0 + «{y}»` +#: Game.Levels.Implication.L02exact2 +msgid "Do that again!\n" +"\n" +"§0 tries to fill in\n" +"the arguments to §1 (finding §2) then it replaces all occurrences of\n" +"§3 it finds. Therefore, it did not rewrite §4, yet." +msgstr "" + #: Game.Levels.Power.L05pow_two msgid "Note: this lemma will be useful for the final boss!" msgstr "" @@ -383,13 +378,6 @@ msgid "You can use §0 to rewrite at §1 instead\n" "of at the goal." msgstr "" -#. §0: `add_comm` -#. §1: `b` -#. §2: `d` -#: Game.Levels.Algorithm.L02add_algo1 -msgid "Finally use a targeted §0 to switch §1 and §2" -msgstr "" - #. §0: `repeat t` #. §1: `t` #. §2: `repeat rw [add_zero]` @@ -410,6 +398,18 @@ msgid "## Summary\n" "§4." msgstr "" +#. §0: `x + 1 = 4` +#. §1: `x = 3` +#. §2: `apply` +#: Game.Levels.Implication.L05succ_inj2 +msgid "In the last level, we manipulated the hypothesis §0\n" +" until it became the goal §1. In this level we'll manipulate\n" +" the goal until it becomes our hypothesis! In other words, we\n" +" will \"argue backwards\". The §2 tactic can do this too.\n" +" Again I will walk you through this one (assuming you're in\n" +" \"Typewriter mode\")." +msgstr "" + #: Game.Levels.Addition msgid "Addition World" msgstr "" @@ -725,6 +725,19 @@ msgstr "" msgid "Now you can §0." msgstr "" +#. §0: `h2` +#. §1: `x = 37` +#. §2: `y = 42` +#. §3: `apply` +#. §4: `apply` +#: Game.Levels.Implication.L03apply +msgid "In this level, the hypothesis §0 is an *implication*. It says\n" +"that *if* §1 *then* §2. We can use this\n" +"hypothesis with the §3 tactic. Remember you can click on\n" +"§4 or any other tactic on the right to see a detailed explanation\n" +"of what it does, with examples." +msgstr "" + #. §0: $37$ #. §1: $x$ #. §2: $q$ @@ -764,12 +777,12 @@ msgid "Here's a two-line proof:\n" "§0" msgstr "" -#. §0: `zero_add x` -#. §1: `0 + x = x` +#. §0: `zero_add n` +#. §1: `0 + n = n` #. §2: `zero_add` #. §3: `simp` -#. §4: `0 + x` -#. §5: `x` +#. §4: `0 + n` +#. §5: `n` #: Game.Levels.Addition.L01zero_add msgid "§0 is the proof of §1.\n" "\n" @@ -1002,22 +1015,24 @@ msgid "In this game you recreate the natural numbers §0 from the Peano axioms,\ "This is a good first introduction to Lean!" msgstr "" -#. §0: `Add a b` -#. §1: `a + b` -#. §2: `add_zero a : a + 0 = a` -#. §3: `add_succ a b : a + succ b = succ (a + b)` -#. §4: `zero_add a : 0 + a = a` -#: Game.Levels.Tutorial.L05add_zero -msgid "§0, with notation §1, is\n" -"the usual sum of natural numbers. Internally it is defined\n" -"via the following two hypotheses:\n" -"\n" -"* §2\n" -"\n" -"* §3\n" -"\n" -"Other theorems about naturals, such as §4, are proved\n" -"by induction using these two basic theorems." +#. §0: `y` +#. §1: `add_left_eq_self` +#. §2: `add_right_cancel` +#. §3: `` +#. §4: `>_` +#. §5: ``` +#. nth_rewrite 2 [← zero_add y] +#. exact add_right_cancel x 0 y +#. ``` +#: Game.Levels.AdvAddition.L03add_left_eq_self +msgid "Did you use induction on §0?\n" +"Here's a two-line proof of §1 which uses §2.\n" +"If you want to inspect it, you can go into \"Editor mode\" by clicking §3 in the top right\n" +"and then just cut and paste the proof and move your cursor around it\n" +"to see the hypotheses and goal at any given point\n" +"(although you'll lose your own proof this way). Click §4 to get\n" +"back to \"Typewriter mode\".\n" +"§5" msgstr "" #. §0: $x+1=4$ @@ -1164,23 +1179,6 @@ msgstr "" msgid "We don't know whether to go left or right yet. So start with §0." msgstr "" -#. §0: $2$ -#. §1: $2 = 37 × 42.$ -#. §2: $2$ -#. §3: $2$ -#. §4: `mul_left_ne_zero` -#. §5: `one_le_of_ne_zero` -#. §6: `mul_le_mul_right` -#: Game.Levels.AdvMultiplication.L05le_mul_right -msgid "One day this game will have a Prime Number World, with a final boss\n" -"of proving that §0 is prime.\n" -"To do this, we will have to rule out things like §1\n" -"We will do this by proving that any factor of §2 is at most §3,\n" -"which we will do using this lemma. The proof I have in mind manipulates the hypothesis\n" -"until it becomes the goal, using §4, §5 and\n" -"§6." -msgstr "" - #. §0: `False` #. §1: `True` #. §2: `is_zero (succ a)` @@ -1306,16 +1304,6 @@ msgid "It's all over! You have proved a theorem which has tripped up\n" "But wait! This boss is stirring...and mutating into a second more powerful form!" msgstr "" -#. §0: $a$ -#. §1: $b$ -#. §2: $c$ -#. §3: $(a + b) \\times c = ac + bc$ -#: Game.Levels.Multiplication.L08add_mul -msgid "Addition is distributive over multiplication.\n" -"In other words, for all natural numbers §0, §1 and §2, we have\n" -"§3." -msgstr "" - #. §0: `one_mul m` #. §1: `1 * m = m` #: Game.Levels.Multiplication.L05one_mul @@ -1372,16 +1360,8 @@ msgid "Now you have two goals. Once you proved the first, you will jump to the s "as long as it is of the form §1." msgstr "" -#. §0: `x + 1 = 4` -#. §1: `x = 3` -#. §2: `apply` -#: Game.Levels.Implication.L05succ_inj2 -msgid "In the last level, we manipulated the hypothesis §0\n" -" until it became the goal §1. In this level we'll manipulate\n" -" the goal until it becomes our hypothesis! In other words, we\n" -" will \"argue backwards\". The §2 tactic can do this too.\n" -" Again I will walk you through this one (assuming you're in\n" -" command line mode)." +#: Game.Levels.Addition.L02succ_add +msgid "Well done! You now have enough tools to tackle the main boss of this world." msgstr "" #. §0: `add_zero c` @@ -1653,17 +1633,21 @@ msgstr "" msgid "succ_add" msgstr "" -#. §0: `rw [zero_add] at «{h}»` -#. §1: `zero_add` -#. §2: `«{x}»` -#. §3: `0 + «{x}»` -#. §4: `0 + «{y}»` -#: Game.Levels.Implication.L02exact2 -msgid "Do that again!\n" +#. §0: `add_comm` +#. §1: `b` +#. §2: `d` +#: Game.Levels.Algorithm.L02add_algo1 +msgid "Finally use a targeted §0 to switch §1 and §2." +msgstr "" + +#. §0: `≤` +#: Game.Levels.LessOrEqual.L11le_two +msgid "Nice!\n" "\n" -"§0 tries to fill in\n" -"the arguments to §1 (finding §2) then it replaces all occurrences of\n" -"§3 it finds. Therefor, it did not rewrite §4, yet." +"The next step in the development of order theory is to develop\n" +"the theory of the interplay between §0 and multiplication.\n" +"If you've already done Multiplication World, you're now ready for\n" +"Advanced Multiplication World. Click on \"Home\" to access it." msgstr "" #. §0: `a` @@ -1718,52 +1702,6 @@ msgid "In this world we define §0 and prove standard facts\n" "Click on \"Start\" to proceed." msgstr "" -#: Game -msgid "*Game version: 4.3*\n" -"\n" -"*Recent additions: bug fixes*\n" -"\n" -"## Progress saving\n" -"\n" -"The game stores your progress in your local browser storage.\n" -"If you delete it, your progress will be lost!\n" -"\n" -"Warning: In most browsers, deleting cookies will also clear the local storage\n" -"(or \"local site data\"). Make sure to download your game progress first!\n" -"\n" -"## Credits\n" -"\n" -"* **Creators:** Kevin Buzzard, Jon Eugster\n" -"* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n" -"* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n" -"* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n" -"* **Additional thanks:** All the student beta testers, all the schools\n" -"who invited Kevin to speak, and all the schoolkids who asked him questions\n" -"about the material.\n" -"\n" -"## Resources\n" -"\n" -"* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n" -"* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n" -"\n" -"## Problems?\n" -"\n" -"Please ask any questions about this game in the\n" -"[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\n" -"the stream \"New Members\". The community will happily help. Note that\n" -"the Lean Zulip chat is a professional research forum.\n" -"Please use your full real name there, stay on topic, and be nice. If you're\n" -"looking for somewhere less formal (e.g. you want to post natural number\n" -"game memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n" -"\n" -"Alternatively, if you experience issues / bugs you can also open github issues:\n" -"\n" -"* For issues with the game engine, please open an\n" -"[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n" -"* For issues about the game's content, please open an\n" -"[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo." -msgstr "" - #. §0: $a$ #. §1: $m$ #. §2: $n$ @@ -1774,37 +1712,6 @@ msgstr "" msgid "For all naturals §0, §1, §2, we have §3." msgstr "" -#. §0: ```lean -#. nth_rewrite 2 [two_eq_succ_one] -- only change the second `2` to `succ 1`. -#. rw [add_succ] -#. rw [one_eq_succ_zero] -#. rw [add_succ, add_zero] -- two rewrites at once -#. rw [← three_eq_succ_two] -- change `succ 2` to `3` -#. rw [← four_eq_succ_three] -#. rfl -#. ``` -#. §1: `` -#. §2: `>_` -#. §3: `induction` -#: Game.Levels.Tutorial.L08twoaddtwo -msgid "Here is an example proof of 2+2=4 showing off various techniques.\n" -"\n" -"§0\n" -"\n" -"Optional extra: you can run this proof yourself. Switch the game into \"Editor mode\" by clicking\n" -"on the §1 button in the top right. You can now see your proof\n" -"written as several lines of code. Move your cursor between lines to see\n" -"the goal state at any point. Now cut and paste your code elsewhere if you\n" -"want to save it, and paste the above proof in instead. Move your cursor\n" -"around to investigate. When you've finished, click the §2 button in the top right to\n" -"move back into \"Typewriter mode\".\n" -"\n" -"You have finished tutorial world!\n" -"Click \"Home\" to go back to the\n" -"overworld, and select Addition World, where you will learn\n" -"about the §3 tactic." -msgstr "" - #: Game.Levels.AdvMultiplication.L09mul_left_cancel msgid "mul_left_cancel" msgstr "" @@ -1934,233 +1841,6 @@ msgstr "" msgid "Let's now learn about Peano's second axiom for addition, §0." msgstr "" -#. §0: `h2` -#. §1: `x = 37` -#. §2: `y = 42` -#. §3: `apply` -#. §4: `apply` -#: Game.Levels.Implication.L03apply -msgid "In this level, the hypotheses §0 is an *implication*. It says\n" -"that *if* §1 *then* §2. We can use this\n" -"hypothesis with the §3 tactic. Remember you can click on\n" -"§4 or any other tactic on the right to see a detailed explanation\n" -"of what it does, with examples." -msgstr "" - -#. §0: `add_comm b c` -#. §1: `b + c = c + b` -#. §2: `a + b + c = a + c + b` -#. §3: `rw [add_comm b c]` -#. §4: `(a + b) + c = (a + c) + b` -#. §5: `b + c` -#. §6: `add_right_comm` -#. §7: `add_assoc` -#. §8: `add_comm` -#. §9: `rw [add_comm b]` -#. §10: `b + ? = ? + b` -#. §11: `rw [add_comm b c]` -#. §12: `b + c = c + b` -#: Game.Levels.Addition.L05add_right_comm -msgid "§0 is a proof that §1. But if your goal\n" -"is §2 then §3 will not\n" -"work! Because the goal means §4 so there\n" -"is no §5 term *directly* in the goal.\n" -"\n" -"Use associativity and commutativity to prove §6.\n" -"You don't need induction. §7 moves brackets around,\n" -"and §8 moves variables around.\n" -"\n" -"Remember that you can do more targeted rewrites by\n" -"adding explicit variables as inputs to theorems. For example §9\n" -"will only do rewrites of the form §10, and §11\n" -"will only do rewrites of the form §12." -msgstr "" - -#. §0: `h` -#. §1: `X = Y` -#. §2: `rw [h]` -#. §3: `X` -#. §4: `Y` -#. §5: `rw [← h]` -#. §6: `Y` -#. §7: `X` -#. §8: `\\left ` -#. §9: `\\l` -#. §10: `rw [h1, h2]` -#. §11: `rw [h] at h2` -#. §12: `X` -#. §13: `Y` -#. §14: `h2` -#. §15: `rw [h] at h1 h2 ⊢` -#. §16: `X` -#. §17: `Y` -#. §18: `⊢` -#. §19: `\\|-` -#. §20: `repeat rw [add_zero]` -#. §21: `? + 0` -#. §22: `?` -#. §23: `? + 0` -#. §24: `nth_rewrite 2 [h]` -#. §25: `X` -#. §26: `Y` -#. §27: `h : x = y + y` -#. §28: ``` -#. succ (x + 0) = succ (y + y) -#. ``` -#. §29: `rw [add_zero]` -#. §30: `succ x = succ (y + y)` -#. §31: `rw [h]` -#. §32: `succ (y + y) = succ (y + y)` -#. §33: `rfl` -#. §34: `rw` -#. §35: ``` -#. h1 : x = y + 3 -#. h2 : 2 * y = x -#. ``` -#. §36: `rw [h1] at h2` -#. §37: `h2` -#. §38: `h2 : 2 * y = y + 3` -#. §39: `rw h` -#. §40: `h` -#. §41: `A = B` -#. §42: `h` -#. §43: `rw` -#. §44: `rw [P = Q]` -#. §45: `P = Q` -#. §46: `h : P = Q` -#. §47: `rw [h]` -#. §48: `rw` -#. §49: `h : A = B` -#. §50: `A` -#. §51: `rw [h]` -#. §52: `B` -#. §53: `A` -#. §54: `add_zero` -#. §55: `? + 0 = ?` -#. §56: `add_zero` -#. §57: `?` -#. §58: `rw` -#. §59: `x + 0` -#. §60: `?` -#. §61: `x` -#. §62: `x + 0` -#. §63: `x` -#. §64: `rw [add_zero]` -#. §65: `(0 + 0) + (x + 0) + (0 + 0) + (x + 0)` -#. §66: `0 + (x + 0) + 0 + (x + 0)` -#. §67: `b + c + a = b + (a + c)` -#. §68: `a + c` -#. §69: `c + a` -#. §70: `rw [add_comm]` -#. §71: `rw [add_comm a c]` -#. §72: `a + c` -#. §73: `c + a` -#. §74: `add_comm` -#. §75: `?1 + ?2 = ?2 + ?1` -#. §76: `add_comm a` -#. §77: `a + ? = ? + a` -#. §78: `add_comm a c` -#. §79: `a + c = c + a` -#. §80: `h : X = Y` -#. §81: `rw [h]` -#. §82: `X` -#. §83: `Y` -#. §84: `X` -#. §85: `Y` -#. §86: `nth_rewrite 37 [h]` -#: Game.Levels.Tutorial.L02rw -msgid "## Summary\n" -"\n" -"If §0 is a proof of an equality §1, then §2 will change\n" -"all §3s in the goal to §4s. It's the way to \\\\\"substitute in\\\\\".\n" -"\n" -"## Variants\n" -"\n" -"* §5 (changes §6s to §7s; get the back arrow by typing §8 or §9.)\n" -"\n" -"* §10 (a sequence of rewrites)\n" -"\n" -"* §11 (changes §12s to §13s in hypothesis §14)\n" -"\n" -"* §15 (changes §16s to §17s in two hypotheses and the goal;\n" -"get the §18 symbol with §19.)\n" -"\n" -"* §20 will keep changing §21 to §22\n" -"until there are no more matches for §23.\n" -"\n" -"* §24 will change only the second §25 in the goal to §26.\n" -"\n" -"### Example:\n" -"\n" -"If you have the assumption §27 and your goal is\n" -"§28\n" -"\n" -"then\n" -"\n" -"§29\n" -"\n" -"will change the goal into §30, and then\n" -"\n" -"§31\n" -"\n" -"will change the goal into §32, which\n" -"can be solved with §33.\n" -"\n" -"### Example:\n" -"\n" -"You can use §34 to change a hypothesis as well.\n" -"For example, if you have two hypotheses\n" -"§35\n" -"then §36 will turn §37 into §38.\n" -"\n" -"## Common errors\n" -"\n" -"* You need the square brackets. §39 is never correct.\n" -"\n" -"* If §40 is not a *proof* of an *equality* (a statement of the form §41),\n" -"for example if §42 is a function or an implication,\n" -"then §43 is not the tactic you want to use. For example,\n" -"§44 is never correct: §45 is the theorem *statement*,\n" -"not the proof. If §46 is the proof, then §47 will work.\n" -"\n" -"## Details\n" -"\n" -"The §48 tactic is a way to do \\\\\"substituting in\\\\\". There\n" -"are two distinct situations where you can use this tactic.\n" -"\n" -"1) Basic usage: if §49 is an assumption or\n" -"the proof of a theorem, and if the goal contains one or more §50s, then §51\n" -"will change them all to §52s. The tactic will error\n" -"if there are no §53s in the goal.\n" -"\n" -"2) Advanced usage: Assumptions coming from theorem proofs\n" -"often have missing pieces. For example §54\n" -"is a proof that §55 because §56 really is a function,\n" -"and §57 is the input. In this situation §58 will look through the goal\n" -"for any subterm of the form §59, and the moment it\n" -"finds one it fixes §60 to be §61 then changes all §62s to §63s.\n" -"\n" -"Exercise: think about why §64 changes the term\n" -"§65 to\n" -"§66\n" -"\n" -"If you can't remember the name of the proof of an equality, look it up in\n" -"the list of lemmas on the right.\n" -"\n" -"## Targeted usage\n" -"\n" -"If your goal is §67 and you want to rewrite §68\n" -"to §69, then §70 will not work because Lean finds another\n" -"addition first and swaps those inputs instead. Use §71 to\n" -"guarantee that Lean rewrites §72 to §73. This works because\n" -"§74 is a proof that §75, §76 is a proof\n" -"that §77, and §78 is a proof that §79.\n" -"\n" -"If §80 then §81 will turn all §82s into §83s.\n" -"If you only want to change the 37th occurrence of §84\n" -"to §85 then do §86." -msgstr "" - #. §0: $a, b,\\ldots h$ #. §1: $(d + f) + (h + (a + c)) + (g + e + b) = a + b + c + d + e + f + g + h$ #: Game.Levels.Algorithm.L03add_algo2 @@ -2459,6 +2139,52 @@ msgid "## Summary\n" "as mathematicians are concerned, and who cares what the definition of addition is).*" msgstr "" +#: Game +msgid "*Game version: 4.3*\n" +"\n" +"*Recent additions: bug fixes*\n" +"\n" +"## Progress saving\n" +"\n" +"The game stores your progress in your local browser storage.\n" +"If you delete it, your progress will be lost!\n" +"\n" +"Warning: In most browsers, deleting cookies will also clear the local storage\n" +"(or \"local site data\"). Make sure to download your game progress first!\n" +"\n" +"## Credits\n" +"\n" +"* **Creators:** Kevin Buzzard, Jon Eugster\n" +"* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n" +"* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n" +"* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n" +"* **Additional thanks:** All the student beta testers, all the schools\n" +"who invited Kevin to speak, and all the schoolkids who asked him questions\n" +"about the material.\n" +"\n" +"## Resources\n" +"\n" +"* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n" +"* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n" +"\n" +"## Problems?\n" +"\n" +"Please ask any questions about this game in the\n" +"[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\n" +"the stream \"New Members\". The community will happily help. Note that\n" +"the Lean Zulip chat is a professional research forum.\n" +"Please use your full real name there, stay on topic, and be nice. If you're\n" +"looking for somewhere less formal (e.g. you want to post natural number\n" +"game memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n" +"\n" +"Alternatively, if you experience issues / bugs you can also open github issues:\n" +"\n" +"* For issues with the game engine, please open an\n" +"[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n" +"* For issues about the game's content, please open an\n" +"[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo." +msgstr "" + #. §0: `b = 0` #. §1: `a * b = 0` #. §2: `X ≠ 0` @@ -2588,12 +2314,214 @@ msgstr "" msgid "Many people find §0 easy, but some find §1 confusing.\n" "If you find it confusing, then just argue forwards.\n" "\n" -"You can read more about the §2 tactic in its documentation, which you can view by\n" -"clicking on the tactic in the list on the right." -msgstr "" - -#: Game.Levels.Algorithm.L03add_algo2 -msgid "Let's now make our own tactic to do this." +"You can read more about the §2 tactic in its documentation, which you can view by\n" +"clicking on the tactic in the list on the right." +msgstr "" + +#. §0: $2$ +#. §1: $2 = 37 × 42$ +#. §2: $2$ +#. §3: $2$ +#. §4: `mul_left_ne_zero` +#. §5: `one_le_of_ne_zero` +#. §6: `mul_le_mul_right` +#: Game.Levels.AdvMultiplication.L05le_mul_right +msgid "One day this game will have a Prime Number World, with a final boss\n" +"of proving that §0 is prime.\n" +"To do this, we will have to rule out things like §1.\n" +"We will do this by proving that any factor of §2 is at most §3,\n" +"which we will do using this lemma. The proof I have in mind manipulates the hypothesis\n" +"until it becomes the goal, using §4, §5 and\n" +"§6." +msgstr "" + +#: Game.Levels.Algorithm.L03add_algo2 +msgid "Let's now make our own tactic to do this." +msgstr "" + +#. §0: `h` +#. §1: `X = Y` +#. §2: `rw [h]` +#. §3: `X` +#. §4: `Y` +#. §5: `rw [← h]` +#. §6: `Y` +#. §7: `X` +#. §8: `\\left ` +#. §9: `\\l` +#. §10: `rw [h1, h2]` +#. §11: `rw [h] at h2` +#. §12: `X` +#. §13: `Y` +#. §14: `h2` +#. §15: `rw [h] at h1 h2 ⊢` +#. §16: `X` +#. §17: `Y` +#. §18: `⊢` +#. §19: `\\|-` +#. §20: `repeat rw [add_zero]` +#. §21: `? + 0` +#. §22: `?` +#. §23: `? + 0` +#. §24: `nth_rewrite 2 [h]` +#. §25: `X` +#. §26: `Y` +#. §27: `h : x = y + y` +#. §28: ``` +#. succ (x + 0) = succ (y + y) +#. ``` +#. §29: `rw [add_zero]` +#. §30: `succ x = succ (y + y)` +#. §31: `rw [h]` +#. §32: `succ (y + y) = succ (y + y)` +#. §33: `rfl` +#. §34: `rw` +#. §35: ``` +#. h1 : x = y + 3 +#. h2 : 2 * y = x +#. ``` +#. §36: `rw [h1] at h2` +#. §37: `h2` +#. §38: `h2 : 2 * y = y + 3` +#. §39: `rw h` +#. §40: `h` +#. §41: `A = B` +#. §42: `h` +#. §43: `rw` +#. §44: `rw [P = Q]` +#. §45: `P = Q` +#. §46: `h : P = Q` +#. §47: `rw [h]` +#. §48: `rw` +#. §49: `h : A = B` +#. §50: `A` +#. §51: `rw [h]` +#. §52: `B` +#. §53: `A` +#. §54: `add_zero` +#. §55: `? + 0 = ?` +#. §56: `add_zero` +#. §57: `?` +#. §58: `rw` +#. §59: `x + 0` +#. §60: `?` +#. §61: `x` +#. §62: `x + 0` +#. §63: `x` +#. §64: `rw [add_zero]` +#. §65: `(0 + 0) + (x + 0) + (0 + 0) + (x + 0)` +#. §66: `0 + (x + 0) + 0 + (x + 0)` +#. §67: `b + c + a = b + (a + c)` +#. §68: `a + c` +#. §69: `c + a` +#. §70: `rw [add_comm]` +#. §71: `rw [add_comm a c]` +#. §72: `a + c` +#. §73: `c + a` +#. §74: `add_comm` +#. §75: `?1 + ?2 = ?2 + ?1` +#. §76: `add_comm a` +#. §77: `a + ? = ? + a` +#. §78: `add_comm a c` +#. §79: `a + c = c + a` +#. §80: `h : X = Y` +#. §81: `rw [h]` +#. §82: `X` +#. §83: `Y` +#. §84: `X` +#. §85: `Y` +#. §86: `nth_rewrite 37 [h]` +#: Game.Levels.Tutorial.L02rw +msgid "## Summary\n" +"\n" +"If §0 is a proof of an equality §1, then §2 will change\n" +"all §3s in the goal to §4s. It's the way to \\\\\"substitute in\\\\\".\n" +"\n" +"## Variants\n" +"\n" +"* §5 (changes §6s to §7s; get the back arrow by typing §8 or §9.)\n" +"\n" +"* §10 (a sequence of rewrites)\n" +"\n" +"* §11 (changes §12s to §13s in hypothesis §14)\n" +"\n" +"* §15 (changes §16s to §17s in two hypotheses and the goal;\n" +"get the §18 symbol with §19.)\n" +"\n" +"* §20 will keep changing §21 to §22\n" +"until there are no more matches for §23.\n" +"\n" +"* §24 will change only the second §25 in the goal to §26.\n" +"\n" +"### Example:\n" +"\n" +"If you have the assumption §27 and your goal is\n" +"§28\n" +"\n" +"then\n" +"\n" +"§29\n" +"\n" +"will change the goal into §30, and then\n" +"\n" +"§31\n" +"\n" +"will change the goal into §32, which\n" +"can be solved with §33.\n" +"\n" +"### Example:\n" +"\n" +"You can use §34 to change a hypothesis as well.\n" +"For example, if you have two hypotheses\n" +"§35\n" +"then §36 will turn §37 into §38.\n" +"\n" +"## Common errors\n" +"\n" +"* You need the square brackets. §39 is never correct.\n" +"\n" +"* If §40 is not a *proof* of an *equality* (a statement of the form §41),\n" +"for example if §42 is a function or an implication,\n" +"then §43 is not the tactic you want to use. For example,\n" +"§44 is never correct: §45 is the theorem *statement*,\n" +"not the proof. If §46 is the proof, then §47 will work.\n" +"\n" +"## Details\n" +"\n" +"The §48 tactic is a way to do \\\\\"substituting in\\\\\". There\n" +"are two distinct situations where you can use this tactic.\n" +"\n" +"1) Basic usage: if §49 is an assumption or\n" +"the proof of a theorem, and if the goal contains one or more §50s, then §51\n" +"will change them all to §52s. The tactic will error\n" +"if there are no §53s in the goal.\n" +"\n" +"2) Advanced usage: Assumptions coming from theorem proofs\n" +"often have missing pieces. For example §54\n" +"is a proof that §55 because §56 really is a function,\n" +"and §57 is the input. In this situation §58 will look through the goal\n" +"for any subterm of the form §59, and the moment it\n" +"finds one it fixes §60 to be §61 then changes all §62s to §63s.\n" +"\n" +"Exercise: think about why §64 changes the term\n" +"§65 to\n" +"§66\n" +"\n" +"If you can't remember the name of the proof of an equality, look it up in\n" +"the list of lemmas on the right.\n" +"\n" +"## Targeted usage\n" +"\n" +"If your goal is §67 and you want to rewrite §68\n" +"to §69, then §70 will not work because Lean finds another\n" +"addition first and swaps those inputs instead. Use §71 to\n" +"guarantee that Lean rewrites §72 to §73. This works because\n" +"§74 is a proof that §75, §76 is a proof\n" +"that §77, and §78 is a proof that §79.\n" +"\n" +"If §80 then §81 will turn all §82s into §83s.\n" +"If you only want to change the 37th occurrence of §84\n" +"to §85 then do §86." msgstr "" #: Game.Levels.AdvAddition.L06add_left_eq_zero @@ -2625,20 +2553,6 @@ msgstr "" msgid "Natural Number Game" msgstr "" -#. §0: ``` -#. rw [add_comm] -#. exact add_right_eq_zero b a -#. ``` -#. §1: `≤` -#: Game.Levels.AdvAddition.L06add_left_eq_zero -msgid "How about this for a proof:\n" -"\n" -"§0\n" -"\n" -"That's the end of Advanced Addition World! You'll need these theorems\n" -"for the next world, §1 World. Click on \"Home\" to access it." -msgstr "" - #. §0: `n` #. §1: `cases n with d` #. §2: `n = 0` @@ -2904,6 +2818,37 @@ msgid "You can start a proof by induction on §0 by typing:\n" "§1." msgstr "" +#. §0: ```lean +#. nth_rewrite 2 [two_eq_succ_one] -- only change the second `2` to `succ 1`. +#. rw [add_succ] +#. rw [one_eq_succ_zero] +#. rw [add_succ, add_zero] -- two rewrites at once +#. rw [← three_eq_succ_two] -- change `succ 2` to `3` +#. rw [← four_eq_succ_three] +#. rfl +#. ``` +#. §1: `` +#. §2: `>_` +#. §3: `induction` +#: Game.Levels.Tutorial.L08twoaddtwo +msgid "Here is an example proof of 2+2=4 showing off various techniques.\n" +"\n" +"§0\n" +"\n" +"Optional extra: you can run this proof yourself. Switch the game into \"Editor mode\" by clicking\n" +"on the §1 button in the top right. You can now see your proof\n" +"written as several lines of code. Move your cursor between lines to see\n" +"the goal state at any point. Now cut and paste your code elsewhere if you\n" +"want to save it, and paste the above proof in instead. Move your cursor\n" +"around to investigate. When you've finished, click the §2 button in the top right to\n" +"move back into \"Typewriter mode\".\n" +"\n" +"You have finished tutorial world!\n" +"Click \"Home\" to go back to the\n" +"overworld, and select Addition World, where you will learn\n" +"about the §3 tactic." +msgstr "" + #. §0: `Pow a b` #. §1: `a ^ b` #. §2: `pow_zero a : a ^ 0 = 1` @@ -2950,12 +2895,6 @@ msgid "Totality of §0 is the boss level of this world, and it's coming up next. "and the other where you went right." msgstr "" -#. §0: `one_eq_succ_zero` -#. §1: `1 = succ 0` -#: Game.Levels.Tutorial.L03two_eq_ss0 -msgid "§0 is a proof of §1.\"" -msgstr "" - #: Game.Levels.Addition.L01zero_add msgid "zero_add" msgstr "" @@ -2973,8 +2912,18 @@ msgid "We've just seen that §0, but if §1\n" "is a successor, then §2. We prove that here." msgstr "" -#. §0: `zero_mul x` -#. §1: `0 * x = 0` +#. §0: $a$ +#. §1: $b$ +#. §2: $c$ +#. §3: $(a + b) \\times c = ac + bc$ +#: Game.Levels.Multiplication.L08add_mul +msgid "Multiplication is distributive over addition.\n" +"In other words, for all natural numbers §0, §1 and §2, we have\n" +"§3." +msgstr "" + +#. §0: `zero_mul m` +#. §1: `0 * m = 0` #. §2: `zero_mul` #. §3: `simp` #: Game.Levels.Multiplication.L02zero_mul @@ -2999,6 +2948,27 @@ msgid "If you have completed Algorithm World then you can use the §0 tactic\n" "here. If not then I'll talk you through a manual approach." msgstr "" +#. §0: $2y=2(x+7)$ +#. §1: `h` +#. §2: $y = x + 7$ +#. §3: `h` +#. §4: `h` +#. §5: `x` +#. §6: `rfl` +#. §7: $y$ +#. §8: `h` +#. §9: `rw` +#: Game.Levels.Tutorial.L02rw +msgid "In this level the *goal* is §0 but to help us we\n" +"have an *assumption* §1 saying that §2. Check that you can see §3 in\n" +"your list of assumptions. Lean thinks of §4 as being a secret proof of the\n" +"assumption, rather like §5 is a secret number.\n" +"\n" +"Before we can use §6, we have to \"substitute in for §7\".\n" +"We do this in Lean by *rewriting* the goal with §8,\n" +"using the §9 tactic." +msgstr "" + #. §0: `zero_ne_succ n` #. §1: `0 ≠ succ n` #. §2: `a ≠ b` @@ -3045,8 +3015,9 @@ msgstr "" msgid "If §0 then §1 or §2 or §3." msgstr "" -#. §0: `two_eq_succ_one` -#. §1: `2 = succ 1` +#. §0: `one_eq_succ_zero` +#. §1: `1 = succ 0` +#: Game.Levels.Tutorial.L03two_eq_ss0 #: Game.Levels.Tutorial.L03two_eq_ss0 #: Game.Levels.Tutorial.L03two_eq_ss0 #: Game.Levels.Tutorial.L03two_eq_ss0 @@ -3158,6 +3129,20 @@ msgstr "" msgid "§0 is a proof that if §1 then §2 or §3 or §4." msgstr "" +#. §0: ``` +#. rw [add_comm] +#. exact add_right_eq_zero b a +#. ``` +#. §1: `≤` +#: Game.Levels.AdvAddition.L06add_left_eq_zero +msgid "How about this for a proof:\n" +"\n" +"§0\n" +"\n" +"That's the end of Advanced Addition World! You'll need these theorems\n" +"for the next world, §1 World. Click on \"Home\" to access it." +msgstr "" + #. §0: `Mul a b` #. §1: `a * b` #. §2: `mul_zero a : a * 0 = 0` @@ -3988,10 +3973,6 @@ msgid "We know §0 is a proof of §1 -- but what\n" "the proof §11; now try proving §12." msgstr "" -#: Game.Levels.Addition.L02succ_add -msgid "Well done! You now have enough tools to tackle the main boss of this level." -msgstr "" - #. §0: `use` #. §1: `use` #: Game.Levels.LessOrEqual.L03le_succ_self @@ -4085,27 +4066,6 @@ msgid "How should we define §0? Just like addition, we need to give definitions "Let's get started." msgstr "" -#. §0: $2y=2(x+7)$ -#. §1: `h` -#. §2: $y = x + 7$ -#. §3: `h` -#. §4: `h` -#. §5: `x` -#. §6: `rfl` -#. §7: $y$ -#. §8: `h` -#. §9: `rw` -#: Game.Levels.Tutorial.L02rw -msgid "In this level the *goal* is §0 but to help us we\n" -"have an *assumption* §1 saying that §2. Check that you can see §3 in\n" -"your list of assumptions. Lean thinks of §4 as being a secret proof of the\n" -"assumption, rather like §5 is a secret number.\n" -"\n" -"Before we can use §6, we have to \"substitute in for §7\".\n" -"We do this in Lean by *rewriting* the proof §8,\n" -"using the §9 tactic." -msgstr "" - #. §0: ``` #. symm #. exact zero_ne_one @@ -4135,21 +4095,37 @@ msgid "Now you could finish with §0 then §1, but §2\n" "does it in one line." msgstr "" -#: Game.Levels.Power.L10FLT -msgid "Fermat's Last Theorem" +#. §0: `add_comm b c` +#. §1: `b + c = c + b` +#. §2: `a + b + c = a + c + b` +#. §3: `rw [add_comm b c]` +#. §4: `(a + b) + c = (a + c) + b` +#. §5: `b + c` +#. §6: `add_right_comm` +#. §7: `add_assoc` +#. §8: `add_comm` +#. §9: `rw [add_comm b]` +#. §10: `b + ? = ? + b` +#. §11: `rw [add_comm b c]` +#. §12: `b + c = c + b` +#: Game.Levels.Addition.L05add_right_comm +msgid "§0 is a proof that §1. But if your goal\n" +"is §2 then §3 will not\n" +"work! Because the goal means §4 so there\n" +"is no §5 term *directly* in the goal.\n" +"\n" +"Use associativity and commutativity to prove §6.\n" +"You don't need induction. §7 moves brackets around,\n" +"and §8 moves variables around.\n" +"\n" +"Remember that you can do more targeted rewrites by\n" +"adding explicit variables as inputs to theorems. For example §9\n" +"will only do rewrites of the form §10, and §11\n" +"will only do rewrites of the form §12." msgstr "" -#. §0: `apply` -#. §1: `P → Q` -#. §2: `P → Q` -#. §3: `P` -#. §4: `Q` -#. §5: `intro` -#: Game.Levels.Implication.L06intro -msgid "We have seen how to §0 theorems and assumptions\n" -"of the form §1. But what if our *goal* is of the form §2?\n" -"To prove this goal, we need to know how to say \"let's assume §3 and deduce §4\"\n" -"in Lean. We do this with the §5 tactic." +#: Game.Levels.Power.L10FLT +msgid "Fermat's Last Theorem" msgstr "" #. §0: $x$ @@ -4211,39 +4187,6 @@ msgid "Very well done.\n" "The final few levels in this world are much easier." msgstr "" -#. §0: `y` -#. §1: `add_left_eq_self` -#. §2: `add_right_cancel` -#. §3: `` -#. §4: `>_` -#. §5: ``` -#. nth_rewrite 2 [← zero_add y] -#. exact add_right_cancel x 0 y -#. ``` -#: Game.Levels.AdvAddition.L03add_left_eq_self -msgid "Did you use induction on §0?\n" -"Here's a two-line proof of §1 which uses §2.\n" -"If you want to inspect it, you can go into editor mode by clicking §3 in the top right\n" -"and then just cut and paste the proof and move your cursor around it\n" -"to see the hypotheses and goal at any given point\n" -"(although you'll lose your own proof this way). Click §4 to get\n" -"back to command line mode.\n" -"§5" -msgstr "" - -#. §0: `a = 0` -#. §1: `x + a = x` -#: Game.Levels.Addition.L05add_right_comm -msgid "You've now seen all the tactics you need to beat the final boss of the game.\n" -"You can begin the journey towards this boss by entering Multiplication World.\n" -"\n" -"Or you can go off the beaten track and learn some new tactics in Implication\n" -"World. These tactics let you prove more facts about addition, such as\n" -"how to deduce §0 from §1.\n" -"\n" -"Click \"Home\" and make your choice." -msgstr "" - #: Game.Levels.LessOrEqual.L05le_zero msgid "It's \"intuitively obvious\" that there are no numbers less than zero,\n" "but to prove it you will need a result which you showed in advanced\n" @@ -4432,6 +4375,24 @@ msgid "This level is more important than you think; it plays\n" "a useful role when battling a big boss later on." msgstr "" +#. §0: `Add a b` +#. §1: `a + b` +#. §2: `add_zero a : a + 0 = a` +#. §3: `add_succ a b : a + succ b = succ (a + b)` +#. §4: `zero_add a : 0 + a = a` +#: Game.Levels.Tutorial.L05add_zero +msgid "§0, with notation §1, is\n" +"the usual sum of natural numbers. Internally it is defined\n" +"via the following two hypotheses:\n" +"\n" +"* §2\n" +"\n" +"* §3\n" +"\n" +"Other theorems about naturals, such as §4, are proved\n" +"by induction using these two basic theorems." +msgstr "" + #. §0: `cases h2 with h0 h1` #: Game.Levels.AdvMultiplication.L06mul_right_eq_one msgid "Now §0 and deal with the two\n" @@ -4487,6 +4448,19 @@ msgstr "" msgid "Advanced Multiplication World" msgstr "" +#. §0: `a = 0` +#. §1: `x + a = x` +#: Game.Levels.Addition.L05add_right_comm +msgid "You've now seen all the tactics you need to beat the final boss of the game.\n" +"You can begin the journey towards this boss by entering Multiplication World.\n" +"\n" +"Or you can go off the beaten track and learn some new tactics in Implication\n" +"World. These tactics let you prove more facts about addition, such as\n" +"how to deduce §0 from §1.\n" +"\n" +"Click \"Home\" and make your choice." +msgstr "" + #. §0: $2$ #. §1: $0$ #: Game.Levels.Tutorial.L03two_eq_ss0 @@ -4550,6 +4524,27 @@ msgstr "" msgid "pow_one" msgstr "" +#. §0: ``` +#. intro h +#. rw [add_succ, add_succ, add_zero] at h +#. repeat apply succ_inj at h +#. apply zero_ne_succ at h +#. exact h +#. ``` +#. §1: $20 + 20 ≠ 41$ +#: Game.Levels.Implication.L11two_add_two_ne_five +msgid "Here's my proof:\n" +"§0\n" +"\n" +"Even though Lean is a theorem prover, right now it's pretty clear that we have not\n" +"developed enough material to make it an adequate calculator. In Algorithm\n" +"World, a more computer-sciency world, we will develop machinery which makes\n" +"questions like this much easier, and goals like §1 feasible.\n" +"Alternatively you can do more mathematics in Advanced Addition World, where we prove\n" +"the lemmas needed to get a working theory of inequalities. Click \"Home\" and\n" +"decide your route." +msgstr "" + #. §0: `rw [two_eq_succ_one, one_eq_succ_zero]` #. §1: `rfl` #: Game.Levels.Tutorial.L03two_eq_ss0 diff --git a/.i18n/fr/Game.json b/.i18n/fr/Game.json index c56421f7..b0049ef4 100644 --- a/.i18n/fr/Game.json +++ b/.i18n/fr/Game.json @@ -218,10 +218,10 @@ "`add_left_cancel a b n` est le théorème que $n+a=n+b\\implies a=b$.\nVous pouvez le prouver par induction sur `n` ou le déduire de `add_right_cancel`.", "`add_left_cancel a b n` is the theorem that $n+a=n+b \\implies a=b.$": "`add_left_cancel a b n` est le théorème que $n+a=n+b \\implies a=b.$", - "`add_comm a b` is a proof of `a + b = b + a`.": - "`add_comm a b` est une preuve de `a + b = b + a`.", "`add_comm b c` is a proof that `b + c = c + b`. But if your goal\nis `a + b + c = a + c + b` then `rw [add_comm b c]` will not\nwork! Because the goal means `(a + b) + c = (a + c) + b` so there\nis no `b + c` term *directly* in the goal.\n\nUse associativity and commutativity to prove `add_right_comm`.\nYou don't need induction. `add_assoc` moves brackets around,\nand `add_comm` moves variables around.\n\nRemember that you can do more targeted rewrites by\nadding explicit variables as inputs to theorems. For example `rw [add_comm b]`\nwill only do rewrites of the form `b + ? = ? + b`, and `rw [add_comm b c]`\nwill only do rewrites of the form `b + c = c + b`.": "`add_comm b c` est une preuve que `b + c = c + b`. Mais si votre but\nest `a + b + c = a + c + b` alors `rw [add_comm b c]` ne\nfonctionnera pas ! Parce que le but signifie `(a + b) + c = (a + c) + b` donc il n'y a\npas de terme `b + c` *directement* dans le but.\n\nUtilisez l'associativité et la commutativité pour prouver `add_right_comm`.\nVous n'avez pas besoin d'induction. `add_assoc` déplace les parenthèses,\net `add_comm` échange les variables.\n\nRappelez-vous que vous pouvez faire des réécritures plus ciblées en\najoutant des variables explicites comme entrées aux théorèmes. Par exemple `rw [add_comm b]`\nne fera que des réécritures de la forme `b + ? = ? + b`, et `rw [add_comm b c]`\nne fera que des réécritures de la forme `b + c = c + b`.", + "`add_comm a b` is a proof of `a + b = b + a`.": + "`add_comm a b` est une preuve de `a + b = b + a`.", "`add_assoc a b c` is a proof\nthat `(a + b) + c = a + (b + c)`. Note that in Lean `(a + b) + c` prints\nas `a + b + c`, because the notation for addition is defined to be left\nassociative.": "`add_assoc a b c` est une preuve\nque `(a + b) + c = a + (b + c)`. Notez que dans Lean `(a + b) + c` s'affiche\ncomme `a + b + c`, car la notation pour l'addition est définie comme étant\nassociative à gauche.", "`a ≤ b` is *notation* for `∃ c, b = a + c`. This \"backwards E\"\nmeans \"there exists\". So `a ≤ b` means that there exists\na number `c` such that `b = a + c`. This definition works\nbecause there are no negative numbers in this game.\n\nTo *prove* an \"exists\" statement, use the `use` tactic.\nLet's see an example.": @@ -277,8 +277,8 @@ "Pourquoi n'avons-nous pas simplement défini `succ n` comme `n + 1` ? Parce que nous n'avons pas\nencore *défini* l'addition ! Nous ferons cela au niveau suivant.", "What do you think of this two-liner:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` doesn't just take hypotheses, it will eat any proof which exists\nin the system.": "Que pensez-vous de cette solution en deux lignes :\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` ne prend pas seulement des hypothèses, il acceptera toute preuve existante\ndans le système.", - "Well done! You now have enough tools to tackle the main boss of this level.": - "Bien joué ! Vous avez maintenant suffisamment d'outils pour affronter le boss principal de ce niveau.", + "Well done! You now have enough tools to tackle the main boss of this world.": + "Bien joué ! Vous avez maintenant suffisamment d'outils pour affronter le boss principal de ce monde.", "Well done!": "Bien joué !", "Welcome to tutorial world! In this world we learn the basics\nof proving theorems. The boss level of this world\nis the theorem `2 + 2 = 4`.\n\nYou prove theorems by solving puzzles using tools called *tactics*.\nThe aim is to prove the theorem by applying tactics\nin the right order.\n\nLet's learn some basic tactics. Click on \"Start\" below\nto begin your quest.": "Bienvenue dans le monde tutoriel ! Dans ce monde, nous apprenons les bases\nde la preuve de théorèmes. Le niveau boss de ce monde\nest le théorème `2 + 2 = 4`.\n\nVous prouvez des théorèmes en résolvant des énigmes à l'aide d'outils appelés *tactiques*.\nLe but est de prouver le théorème en appliquant des tactiques\ndans le bon ordre.\n\nApprenons quelques tactiques de base. Cliquez sur \"Commencer\" ci-dessous\npour débuter votre quête.", @@ -309,12 +309,12 @@ "We now start work on an algorithm to do addition more efficiently. Recall that\nwe defined addition by recursion, saying what it did on `0` and successors.\nIt is an axiom of Lean that recursion is a valid\nway to define functions from types such as the naturals.\n\nLet's define a new function `pred` from the naturals to the naturals, which\nattempts to subtract 1 from the input. The definition is this:\n\n```\npred 0 := 37\npred (succ n) := n\n```\n\nWe cannot subtract one from 0, so we just return a junk value. As well as this\ndefinition, we also create a new lemma `pred_succ`, which says that `pred (succ n) = n`.\nLet's use this lemma to prove `succ_inj`, the theorem which\nPeano assumed as an axiom and which we have already used extensively without justification.": "Nous commençons maintenant à travailler sur un algorithme pour faire l'addition plus efficacement. Rappelons que\nnous avons défini l'addition par une formule de récurrence, en disant ce qu'elle fait sur `0` et les successeurs.\nC'est un axiome de Lean que la récursion est une manière valide\nde définir des fonctions à partir de types comme les naturels.\n\nDéfinissons une nouvelle fonction `pred` des naturels vers les naturels, qui\ntente de soustraire 1 de l'entrée. La définition est :\n\n```\npred 0 := 37\npred (succ n) := n\n```\n\nNous ne pouvons pas soustraire un de 0, donc nous renvoyons simplement une valeur quelconque. En plus de cette\ndéfinition, nous créons également un nouveau lemme `pred_succ`, qui dit que `pred (succ n) = n`.\nUtilisons ce lemme pour prouver `succ_inj`, le théorème que\nPeano a supposé comme axiome et que nous avons déjà largement utilisé sans justification.", "We now have enough to state a mathematically accurate, but slightly\nclunky, version of Fermat's Last Theorem.\n\nFermat's Last Theorem states that if $x,y,z>0$ and $m \\geq 3$ then $x^m+y^m\\not =z^m$.\nIf you didn't do inequality world yet then we can't talk about $m \\geq 3$,\nso we have to resort to the hack of using `n + 3` for `m`,\nwhich guarantees it's big enough. Similarly instead of `x > 0` we\nuse `a + 1`.\n\nThis level looks superficially like other levels we have seen,\nbut the shortest solution known to humans would translate into\nmany millions of lines of Lean code. The author of this game,\nKevin Buzzard, is working on translating the proof by Wiles\nand Taylor into Lean, although this task will take many years.\n\n## CONGRATULATIONS!\n\nYou've finished the main quest of the natural number game!\nIf you would like to learn more about how to use Lean to\nprove theorems in mathematics, then take a look\nat [Mathematics In Lean](https://leanprover-community.github.io/mathematics_in_lean/),\nan interactive textbook which you can read in your browser,\nand which explains how to work with many more mathematical concepts in Lean.": - "Nous avons maintenant suffisamment de connaissance pour énoncer une version mathématiquement exacte, mais un peu\nmaladroite, du \"grand théorème de Fermat\".\n\nLe dernier théorème de Fermat énonce que si $x,y,z>0$ et $m \\geq 3$ alors $x^m+y^m\\not =z^m$.\nSi vous n'avez pas encore fait le monde des inégalités, nous ne pouvons pas parler de $m \\geq 3$,\nnous devons donc recourir à l'astuce d'utiliser `n + 3` pour `m`,\nce qui garantit qu'il est assez grand. De même, au lieu de `x > 0` nous\nutilisons `a + 1`.\n\nCe niveau ressemble superficiellement à d'autres niveaux que nous avons vus,\nmais la solution la plus courte connue des humains se traduirait par\nplusieurs millions de lignes de code Lean. L'auteur de ce jeu,\nKevin Buzzard, travaille à traduire la preuve de Wiles\net Taylor dans Lean, même si cette tâche prendra de nombreuses années.\n\n## FÉLICITATIONS !\n\nVous avez terminé la quête principale du jeu des nombres naturels !\nSi vous souhaitez en savoir plus sur l'utilisation de Lean pour\nprouver des théorèmes en mathématiques, jetez un œil\nà [Mathematics In Lean](https://leanprover-community.github.io/mathematics_in_lean/),\nun manuel interactif que vous pouvez lire dans votre navigateur,\net qui explique comment travailler avec beaucoup d'autres concepts mathématiques dans Lean.", + "Nous avons maintenant suffisamment de connaissances pour énoncer une version mathématiquement exacte, mais un peu\nmaladroite, du \"grand théorème de Fermat\".\n\nLe dernier théorème de Fermat énonce que si $x,y,z>0$ et $m \\geq 3$ alors $x^m+y^m\\not =z^m$.\nSi vous n'avez pas encore fait le monde des inégalités, nous ne pouvons pas parler de $m \\geq 3$,\nnous devons donc recourir à l'astuce d'utiliser `n + 3` pour `m`,\nce qui garantit qu'il est assez grand. De même, au lieu de `x > 0` nous\nutilisons `a + 1`.\n\nCe niveau ressemble superficiellement à d'autres niveaux que nous avons vus,\nmais la solution la plus courte connue des humains se traduirait par\nplusieurs millions de lignes de code Lean. L'auteur de ce jeu,\nKevin Buzzard, travaille à traduire la preuve de Wiles\net Taylor dans Lean, même si cette tâche prendra de nombreuses années.\n\n## FÉLICITATIONS !\n\nVous avez terminé la quête principale du jeu des nombres naturels !\nSi vous souhaitez en savoir plus sur l'utilisation de Lean pour\nprouver des théorèmes en mathématiques, jetez un œil\nà [Mathematics In Lean](https://leanprover-community.github.io/mathematics_in_lean/),\nun manuel interactif que vous pouvez lire dans votre navigateur,\net qui explique comment travailler avec beaucoup d'autres concepts mathématiques dans Lean.", "We now have enough to prove that multiplication is associative,\nthe boss level of multiplication world. Good luck!": "Nous avons maintenant assez de matière pour prouver que la multiplication est associative,\nle niveau boss du monde de la multiplication. Bonne chance !", "We know `zero_ne_succ n` is a proof of `0 = succ n → False` -- but what\nif we have a hypothesis `succ n = 0`? It's the wrong way around!\n\nThe `symm` tactic changes a goal `x = y` to `y = x`, and a goal `x ≠ y`\nto `y ≠ x`. And `symm at h`\ndoes the same for a hypothesis `h`. We've proved $0 \\neq 1$ and called\nthe proof `zero_ne_one`; now try proving $1 \\neq 0$.": "Nous savons que `zero_ne_succ n` est une preuve de `0 = succ n → False` -- mais que faire\nsi nous avons une hypothèse `succ n = 0` ? C'est dans le mauvais sens !\n\nLa tactique `symm` change un but `x = y` en `y = x`, et un but `x ≠ y`\nen `y ≠ x`. Et `symm at h`\nfait la même chose pour une hypothèse `h`. Nous avons prouvé $0 \\neq 1$ et nous avions appelé\nla preuve `zero_ne_one` ; maintenant essayez de prouver $1 \\neq 0$.", - "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\"\nin Lean. We do this with the `intro` tactic.": + "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\".\nIn Lean, we do this with the `intro` tactic.": "Nous avons vu comment utiliser `apply` sur des théorèmes et des hypothèses\nde la forme `P → Q`. Mais que faire si notre *but* est de la forme `P → Q` ?\nPour prouver ce but, nous devons savoir dire \"supposons `P` et déduisons `Q`\"\ndans Lean. Nous faisons cela avec la tactique `intro`.", "We gave a pretty unsatisfactory proof of `2 + 2 ≠ 5` earlier on; now give a nicer one.": "Nous avons donné une preuve assez peu satisfaisante de `2 + 2 ≠ 5` plus tôt ; maintenant donnez-en une meilleure.", @@ -344,7 +344,7 @@ "Ce monde introduit l'exponentiation. Si vous voulez définir `37 ^ n`\nalors, comme toujours, vous devrez savoir ce que vaut `37 ^ 0`, et\nce que vaut `37 ^ (succ d)`, sachant seulement `37 ^ d`.\n\nVous pouvez probablement deviner les noms des théorèmes généraux :\n\n * `pow_zero (a : ℕ) : a ^ 0 = 1`\n * `pow_succ (a b : ℕ) : a ^ succ b = a ^ b * a`\n\nEn utilisant uniquement ceux-ci, pourrez-vous passer le niveau boss final ?\n\nLes niveaux de ce monde ont été conçus par Sian Carey, une étudiante UROP\nà l'Imperial College de Londres, financée par une bourse Mary Lister McCammon\ndurant l'été 2019. Merci à Sian et également à Imperial\nCollege pour l'avoir financée.", "This time, use the `left` tactic.": "Cette fois, utilisez la tactique `left`.", - "This state is not provable! Did you maybe use `rw [add_left_eq_self] at h`\ninstead of `apply [add_left_eq_self] at h`? You can compare the two in the inventory.": + "This state is not provable! Did you maybe use `rw [add_left_eq_self] at h`\ninstead of `apply [add_left_eq_self] at h`? You can complare the two in the inventory.": "Cet état n'est pas prouvable ! Avez-vous peut-être utilisé `rw [add_left_eq_self] at h`\nau lieu de `apply [add_left_eq_self] at h` ? Vous pouvez comparer les deux dans l'inventaire.", "This level proves that if `a ≠ 0` and `b ≠ 0` then `a * b ≠ 0`. One strategy\nis to write both `a` and `b` as `succ` of something, deduce that `a * b` is\nalso `succ` of something, and then `apply zero_ne_succ`.": "Ce niveau prouve que si `a ≠ 0` et `b ≠ 0` alors `a * b ≠ 0`. Une stratégie\nconsiste à écrire `a` et `b` comme `succ` de quelque chose, à déduire que `a * b` est\naussi `succ` de quelque chose, puis à `apply zero_ne_succ`.", @@ -450,7 +450,7 @@ "Notre premier défi est `mul_comm x y : x * y = y * x`,\net nous voulons le prouver par induction. Le cas\nzéro aura besoin de `mul_zero` (que nous avons)\net de `zero_mul` (que nous n'avons pas), donc commençons\npar cela.", "One of the best named levels in the game, a savage `pow_pow`\nsub-boss appears as the music reaches a frenzy. What\nelse could there be to prove about powers after this?": "L'un des niveaux les mieux nommés du jeu, un sous-boss féroce `pow_pow` \napparaît alors que la musique atteint son paroxysme. Que\npourrait-il y avoir d'autre à prouver sur les puissances après cela ?", - "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42.$\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": + "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42$.\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": "Un jour, ce jeu aura un monde des Nombres Premiers, avec un boss final\nprouvant que $2$ est premier.\nPour cela, nous devrons exclure des choses comme $2 = 37 × 42$.\nNous ferons cela en prouvant que tout facteur de $2$ est au plus $2$,\nen utilisant ce lemme. La preuve que j'ai en tête manipule l'hypothèse\njusqu'à ce qu'elle devienne le but, en utilisant `mul_left_ne_zero`, `one_le_of_ne_zero` et\n`mul_le_mul_right`.", "On the set of natural numbers, addition is commutative.\nIn other words, if `a` and `b` are arbitrary natural numbers, then\n$a + b = b + a$.": "Sur l'ensemble des nombres naturels, l'addition est commutative.\nAutrement dit, si `a` et `b` sont des nombres naturels arbitraires, alors\n$a + b = b + a$.", @@ -532,6 +532,8 @@ "Ma preuve :\n```\ncases h with d hd\nuse d * t\nrw [hd, add_mul]\nrfl\n```", "Multiplication usually makes a number bigger, but multiplication by zero can make\nit smaller. Thus many lemmas about inequalities and multiplication need the\nhypothesis `a ≠ 0`. Here is a key lemma that enables us to use this hypothesis.\nTo help us with the proof, we can use the `tauto` tactic. Click on the tactic's name\non the right to see what it does.": "La multiplication transforme généralement un nombre en un nombre plus grand, mais la multiplication par zéro peut le rendre\nplus petit. Ainsi, de nombreux lemmes sur les inégalités et la multiplication nécessitent l'\nhypothèse `a ≠ 0`. Voici un lemme clé qui nous permet d'utiliser cette hypothèse.\nPour la preuve, nous pouvons utiliser la tactique `tauto`. Cliquez sur le nom de la tactique\nà droite pour voir ce qu'elle fait.", + "Multiplication is distributive over addition.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": + "La multiplication est distributive sur l'addition.\nAutrement dit, pour tous les nombres naturels $a$, $b$ et $c$, nous avons\n$(a + b) \\times c = ac + bc$.", "Multiplication is distributive over addition on the left.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$a(b + c) = ab + ac$.": "La multiplication est distributive sur l'addition à gauche.\nAutrement dit, pour tous les nombres naturels $a$, $b$ et $c$, nous avons\n$a(b + c) = ab + ac$.", "Multiplication is commutative.": "La multiplication est commutative.", @@ -592,7 +594,7 @@ "Dans ce jeu, vous recréez les nombres naturels $\\mathbb{N}$ à partir des axiomes de Peano,\nen apprenant les bases de la preuve de théorèmes dans Lean.\n\nC'est une excellente première introduction à Lean !", "In the next level, we'll do the same proof but backwards.": "Dans le niveau suivant, nous ferons la même preuve mais à l'envers.", - "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n command line mode).": + "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n \"Typewriter mode\").": "Dans le dernier niveau, nous avons manipulé l'hypothèse `x + 1 = 4`\n jusqu'à ce qu'elle devienne le but `x = 3`. Dans ce niveau, nous manipulerons\n le but jusqu'à ce qu'il devienne notre hypothèse ! Autrement dit, nous\n \"argumenterons à l'envers\". La tactique `apply` peut aussi faire cela.\n Je vais encore vous guider à travers celui-ci (en supposant que vous êtes en\n mode ligne de commande).", "In the \"base case\" we have a hypothesis `ha : 0 ≠ 0`, and you can deduce anything\nfrom a false statement. The `tauto` tactic will close this goal.": "Dans le \"cas de base\", nous avons une hypothèse `ha : 0 ≠ 0`, et vous pouvez déduire n'importe quoi\nd'un énoncé faux. La tactique `tauto` fermera ce but.", @@ -744,9 +746,9 @@ "Fermat's Last Theorem": "Grand théorème de Fermat", "Every number in Lean is either $0$ or a successor. We know how to add $0$,\nbut we need to figure out how to add successors. Let's say we already know\nthat `37 + d = q`. What should the answer to `37 + succ d` be? Well,\n`succ d` is one bigger than `d`, so `37 + succ d` should be `succ q`,\nthe number one bigger than `q`. More generally `x + succ d` should\nbe `succ (x + d)`. Let's add this as a lemma.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nIf you ever see `... + succ ...` in your goal, `rw [add_succ]` is\nnormally a good idea.\n\nLet's now prove that `succ n = n + 1`. Figure out how to get `+ succ` into\nthe picture, and then `rw [add_succ]`. Switch between the `+` (addition) and\n`012` (numerals) tabs under \"Theorems\" on the right to\nsee which proofs you can rewrite.": "Chaque nombre dans Lean est soit $0$, soit un successeur. Nous savons comment ajouter $0$,\nmais nous devons comprendre comment ajouter des successeurs. Disons que nous savons déjà\nque `37 + d = q`. Que devrait être la réponse à `37 + succ d` ? Eh bien,\n`succ d` est un de plus que `d`, donc `37 + succ d` devrait être `succ q`,\nle nombre un de plus que `q`. Plus généralement, `x + succ d` devrait\nêtre `succ (x + d)`. Ajoutons cela comme lemme.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nSi vous voyez `... + succ ...` dans votre but, `rw [add_succ]` est\ngénéralement une bonne idée.\n\nProuvons maintenant que `succ n = n + 1`. Trouvez comment introduire `+ succ`\ndans notre situation, puis `rw [add_succ]`. Alternez entre les onglets `+` (addition) et\n`012` (numéraux) sous \"Théorèmes\" à droite pour\nvoir quelles preuves vous pouvez réécrire.", - "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet.": + "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet.": "Faites-le encore !\n\n`rw [zero_add] at «{h}»` essaie de remplir\nles arguments de `zero_add` (trouvant `«{x}»`) puis remplace toutes les occurrences de\n`0 + «{x}»` qu'il trouve. Par conséquent, il n'a pas réécrit `0 + «{y}»` pour l'instant.", - "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into editor mode by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to command line mode.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": + "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into \"Editor mode\" by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to \"Typewriter mode\".\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": "Avez-vous utilisé l'induction sur `y` ?\nVoici une preuve en deux lignes de `add_left_eq_self` qui utilise `add_right_cancel`.\nSi vous voulez l'inspecter, vous pouvez passer en mode éditeur en cliquant sur `` en haut à droite\npuis copier et coller la preuve et déplacer votre curseur autour\npour voir les hypothèses et le but à n'importe quel point\n(bien que vous perdiez ainsi votre propre preuve). Cliquez sur `>_` pour\nrevenir en mode ligne de commande.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```", "Dealing with `or`": "Gérer `or`", "Congratulations! You've finished Algorithm World. These algorithms\nwill be helpful for you in Even-Odd World (when someone gets around to\nimplementing it).": @@ -787,8 +789,6 @@ "Advanced Addition World": "Monde de l'Addition Avancée", "Advanced *Addition* World proved various implications\ninvolving addition, such as `x + y = 0 → x = 0` and `x + y = x → y = 0`.\nThese lemmas were used to prove basic facts about ≤ in ≤ World.\n\nIn Advanced Multiplication World we prove analogous\nfacts about multiplication, such as `x * y = 1 → x = 1`, and\n`x * y = x → y = 1` (assuming `x ≠ 0` in the latter result). This will prepare\nus for Divisibility World.\n\nMultiplication World is more complex than Addition World. In the same\nway, Advanced Multiplication world is more complex than Advanced Addition\nWorld. One reason for this is that certain intermediate results are only\ntrue under the additional hypothesis that one of the variables is non-zero.\nThis causes some unexpected extra twists.": "Le Monde de l'Addition Avancée a prouvé diverses implications\nimpliquant l'addition, telles que `x + y = 0 → x = 0` et `x + y = x → y = 0`.\nCes lemmes ont été utilisés pour prouver des faits de base sur ≤ dans le Monde ≤.\n\nDans le Monde de la Multiplication Avancée, nous prouvons des résultats\nanalogues sur la multiplication, tels que `x * y = 1 → x = 1`, et\n`x * y = x → y = 1` (en supposant `x ≠ 0` pour ce dernier résultat). Cela nous préparera\nau Monde de la Divisibilité.\n\nLe Monde de la Multiplication est plus complexe que le Monde de l'Addition. De la même\nmanière, le Monde de la Multiplication Avancée est plus complexe que le Monde de l'Addition Avancée.\nUne raison est que certains résultats intermédiaires ne sont vrais\nque sous l'hypothèse supplémentaire qu'une des variables est non nulle.\nCela crée des complications inattendues.", - "Addition is distributive over multiplication.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": - "L'addition est distributive sur la multiplication.\nAutrement dit, pour tous les nombres naturels $a$, $b$ et $c$, nous avons\n$(a + b) \\times c = ac + bc$.", "Addition World": "Monde de l'Addition", "Adding zero": "Ajouter zéro", "A two-line proof is\n\n```\nnth_rewrite 2 [← mul_one a] at h\nexact mul_left_cancel a b 1 ha h\n```\n\nWe now have all the tools necessary to set up the basic theory of divisibility of naturals.": @@ -877,4 +877,4 @@ "# Overview\n\nOur home-made tactic `simp_add` will solve arbitrary goals of\nthe form `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.": "# Aperçu\n\nNotre tactique maison `simp_add` résoudra tout but de\nla forme `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.", "# Overview\n\nLean's simplifier, `simp`, will rewrite every lemma\ntagged with `simp` and every lemma fed to it by the user, as much as it can.\nFurthermore, it will attempt to order variables into an internal order if fed\nlemmas such as `add_comm`, so that it does not go into an infinite loop.": - "# Aperçu\n\nLe simplificateur de Lean, `simp`, réécrira chaque lemme\nmarqué `simp` et chaque lemme fourni par l'utilisateur, autant que possible.\nDe plus, il tentera d'ordonner les variables dans un ordre interne si on lui donne\ndes lemmes comme `add_comm`, afin de ne pas tomber dans une boucle infinie."} + "# Aperçu\n\nLe simplificateur de Lean, `simp`, réécrira chaque lemme\nmarqué `simp` et chaque lemme fourni par l'utilisateur, autant que possible.\nDe plus, il tentera d'ordonner les variables dans un ordre interne si on lui donne\ndes lemmes comme `add_comm`, afin de ne pas tomber dans une boucle infinie."} \ No newline at end of file diff --git a/.i18n/fr/Game.po b/.i18n/fr/Game.po index 5960fc57..19c20097 100644 --- a/.i18n/fr/Game.po +++ b/.i18n/fr/Game.po @@ -1263,10 +1263,10 @@ msgstr "" "sur n'importe quel `succ` dans le but ou les hypothèses pour voir exactement ce qu'il prend." #: Game.Levels.Addition.L02succ_add -msgid "Well done! You now have enough tools to tackle the main boss of this level." +msgid "Well done! You now have enough tools to tackle the main boss of this world." msgstr "" "Bien joué ! Vous avez maintenant suffisamment d'outils pour affronter le boss principal de ce " -"niveau." +"monde." #: Game.Levels.Addition.L03add_comm msgid "add_comm (level boss)" @@ -1822,11 +1822,11 @@ msgstr "`add_mul a b c` est une preuve que $(a+b)c=ac+bc$." #: Game.Levels.Multiplication.L08add_mul msgid "" -"Addition is distributive over multiplication.\n" +"Multiplication is distributive over addition.\n" "In other words, for all natural numbers $a$, $b$ and $c$, we have\n" "$(a + b) \\times c = ac + bc$." msgstr "" -"L'addition est distributive sur la multiplication.\n" +"La multiplication est distributive sur l'addition.\n" "Autrement dit, pour tous les nombres naturels $a$, $b$ et $c$, nous avons\n" "$(a + b) \\times c = ac + bc$." @@ -2448,7 +2448,7 @@ msgid "" "\n" "`rw [zero_add] at «{h}»` tries to fill in\n" "the arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n" -"`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet." +"`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet." msgstr "" "Faites-le encore !\n" "\n" @@ -2703,7 +2703,7 @@ msgid "" " the goal until it becomes our hypothesis! In other words, we\n" " will \"argue backwards\". The `apply` tactic can do this too.\n" " Again I will walk you through this one (assuming you're in\n" -" command line mode)." +" \"Typewriter mode\")." msgstr "" "Dans le dernier niveau, nous avons manipulé l'hypothèse `x + 1 = 4`\n" " jusqu'à ce qu'elle devienne le but `x = 3`. Dans ce niveau, nous manipulerons\n" @@ -2784,8 +2784,8 @@ msgstr "" msgid "" "We have seen how to `apply` theorems and assumptions\n" "of the form `P → Q`. But what if our *goal* is of the form `P → Q`?\n" -"To prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\"\n" -"in Lean. We do this with the `intro` tactic." +"To prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\".\n" +"In Lean, we do this with the `intro` tactic." msgstr "" "Nous avons vu comment utiliser `apply` sur des théorèmes et des hypothèses\n" "de la forme `P → Q`. Mais que faire si notre *but* est de la forme `P → Q` ?\n" @@ -3841,11 +3841,11 @@ msgstr "$x + y = y\\implies x=0.$" msgid "" "Did you use induction on `y`?\n" "Here's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\n" -"If you want to inspect it, you can go into editor mode by clicking `` in the top right\n" +"If you want to inspect it, you can go into \"Editor mode\" by clicking `` in the top right\n" "and then just cut and paste the proof and move your cursor around it\n" "to see the hypotheses and goal at any given point\n" "(although you'll lose your own proof this way). Click `>_` to get\n" -"back to command line mode.\n" +"back to \"Typewriter mode\".\n" "```\n" "nth_rewrite 2 [← zero_add y]\n" "exact add_right_cancel x 0 y\n" @@ -5042,7 +5042,7 @@ msgstr "" msgid "" "One day this game will have a Prime Number World, with a final boss\n" "of proving that $2$ is prime.\n" -"To do this, we will have to rule out things like $2 = 37 × 42.$\n" +"To do this, we will have to rule out things like $2 = 37 × 42$.\n" "We will do this by proving that any factor of $2$ is at most $2$,\n" "which we will do using this lemma. The proof I have in mind manipulates the hypothesis\n" "until it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n" diff --git a/.i18n/it/Game.json b/.i18n/it/Game.json index 1fe5aa5d..18fa3b48 100644 --- a/.i18n/it/Game.json +++ b/.i18n/it/Game.json @@ -219,10 +219,10 @@ "`add_left_cancel a b n` è il teorema che dice $n+a=n+b\\implies a=b$.\nPuoi dimostrarlo facendo induzione su `n` oppure puoi dedurlo tramite `add_right_cancel`.", "`add_left_cancel a b n` is the theorem that $n+a=n+b \\implies a=b.$": "`add_left_cancel a b n` è il teorema $n+a=n+b \\implies a=b.$", - "`add_comm a b` is a proof of `a + b = b + a`.": - "`add_comm a b` è la dimostrazione di `a + b = b + a`.", "`add_comm b c` is a proof that `b + c = c + b`. But if your goal\nis `a + b + c = a + c + b` then `rw [add_comm b c]` will not\nwork! Because the goal means `(a + b) + c = (a + c) + b` so there\nis no `b + c` term *directly* in the goal.\n\nUse associativity and commutativity to prove `add_right_comm`.\nYou don't need induction. `add_assoc` moves brackets around,\nand `add_comm` moves variables around.\n\nRemember that you can do more targeted rewrites by\nadding explicit variables as inputs to theorems. For example `rw [add_comm b]`\nwill only do rewrites of the form `b + ? = ? + b`, and `rw [add_comm b c]`\nwill only do rewrites of the form `b + c = c + b`.": "`add_comm b c` è una dimostrazione di `b + c = c + b`. Ma se il goal\nè `a + b + c = a + c + b`, `rw [add_comm b c]` non funzionerà!\nQuesto perché il goal sta in realtà per `(a + b) + c = (a + c) + b`, e se guardi bene questo goal non include\nil termine `b + c` *direttamente*.\n\nUsa l'associatività e la commutatività per dimostrare `add_right_comm`.\nNon è necessario procedere per induzione. `add_assoc` sposta le parentesi,\ne `add_comm` sposta le variabili.\n\nRicorda che puoi fare sostituzioni mirate fornendo\nesplicitamente le variabili in input ai teoremi. Ad esempio `rw [add_comm b]`\nfarà solo sostituzioni della forma `b + ? = ? + b`, e `rw [add_comm b c]`\nfarà solo sostituzioni della forma `b + c = c + b`.", + "`add_comm a b` is a proof of `a + b = b + a`.": + "`add_comm a b` è la dimostrazione di `a + b = b + a`.", "`add_assoc a b c` is a proof\nthat `(a + b) + c = a + (b + c)`. Note that in Lean `(a + b) + c` prints\nas `a + b + c`, because the notation for addition is defined to be left\nassociative.": "`add_assoc a b c` è la dimostrazione\ndi `(a + b) + c = a + (b + c)`. Ricordati che in Lean `(a + b) + c` viene\nstampato come `a + b + c`, perché la notazione dell'addizione è left \nassociative.", "`a ≤ b` is *notation* for `∃ c, b = a + c`. This \"backwards E\"\nmeans \"there exists\". So `a ≤ b` means that there exists\na number `c` such that `b = a + c`. This definition works\nbecause there are no negative numbers in this game.\n\nTo *prove* an \"exists\" statement, use the `use` tactic.\nLet's see an example.": @@ -277,7 +277,7 @@ "Come mai non abbiamo definito `succ n` semplicemente come `n + 1`? Perché non abbiamo\nancora *definito* il concetto di addizione! Provvederemo nel prossimo livello.", "What do you think of this two-liner:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` doesn't just take hypotheses, it will eat any proof which exists\nin the system.": "Guarda il mio two-liner:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` non prende soltanto ipotesi, puoi passargli qualsiasi dimostrazione\ndefinita nel gioco.", - "Well done! You now have enough tools to tackle the main boss of this level.": + "Well done! You now have enough tools to tackle the main boss of this world.": "Ottimo lavoro! Ora sei abbastanza pratico per affrontare il boss principale di questo mondo.", "Well done!": "Ottimo lavoro!", "Welcome to tutorial world! In this world we learn the basics\nof proving theorems. The boss level of this world\nis the theorem `2 + 2 = 4`.\n\nYou prove theorems by solving puzzles using tools called *tactics*.\nThe aim is to prove the theorem by applying tactics\nin the right order.\n\nLet's learn some basic tactics. Click on \"Start\" below\nto begin your quest.": @@ -314,7 +314,7 @@ "Adesso abbiamo abbastanza informazioni per dimostrare che la moltiplicazione è associativa,\nil boss del Mondo Moltiplicazione. Avanti guerriero!", "We know `zero_ne_succ n` is a proof of `0 = succ n → False` -- but what\nif we have a hypothesis `succ n = 0`? It's the wrong way around!\n\nThe `symm` tactic changes a goal `x = y` to `y = x`, and a goal `x ≠ y`\nto `y ≠ x`. And `symm at h`\ndoes the same for a hypothesis `h`. We've proved $0 \\neq 1$ and called\nthe proof `zero_ne_one`; now try proving $1 \\neq 0$.": "Abbiamo visto che `zero_ne_succ n` è la dimostrazione di `0 = succ n → False` -- ma come possiamo applicarla\nall'ipotesi `succ n = 0`? È la stessa uguaglianza, solo con i due lati scambiati!\n\nLa tattica `symm` ci viene in soccorso: riscrive un goal `x = y` in `y = x`, e un goal `x ≠ y`\nin `y ≠ x`. `symm at h`\nè la versione che opera sull'ipotesi `h`. Abbiamo dimostrato poco fa $0 \\neq 1$ e chiamato\nla sua dimostrazione `zero_ne_one`; ora prova a dimostrare $1 \\neq 0$.", - "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\"\nin Lean. We do this with the `intro` tactic.": + "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\".\nIn Lean, we do this with the `intro` tactic.": "Abbiamo visto come fare `apply` di teoremi e ipotesi\ndella forma `P → Q`. Ma come ci comportiamo se è il *goal* ad avere la forma `P → Q`?\nPer dimostrare questo tipo di goal, ci serve un modo per dire a Lean \"supponiamo `P` e deduciamo `Q`\".\nLo possiamo fare con la tattica `intro`.", "We gave a pretty unsatisfactory proof of `2 + 2 ≠ 5` earlier on; now give a nicer one.": "La dimostrazione che abbiamo dato prima per `2 + 2 ≠ 5` non è stata molto elegante; danne una più carina.", @@ -448,8 +448,8 @@ "La prima sfida è dimostrare `mul_comm x y : x * y = y * x`,\ne vogliamo farlo per induzione. Per dimostrare il caso\nbase utilizzeremo `mul_zero` (che abbiamo come assioma)\ne `zero_mul`, che non abbiamo ancora, dunque partiamo\nda quest'ultimo.", "One of the best named levels in the game, a savage `pow_pow`\nsub-boss appears as the music reaches a frenzy. What\nelse could there be to prove about powers after this?": "Con il suo nome accattivante, il mini-boss `pow_pow`\nsalta nel ring e la musica si fa ancora più intensa. Cos'altro c'è da\ndimostrare sulle potenze dopo di lui?!", - "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42.$\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": - "Un giorno questo gioco avrà il Mondo Numeri Primi, il cui boss finale\nsarà dimostrare che $2$ è un numero primo.\nMa per arrivarci, dobbiamo escludere falsità del tipo $2 ≠ 37 × 42.$\nLo faremo dimostrando che ogni fattore di $2$ è al più $2$,\nche avremo gratis grazie a questo lemma. La dimostrazione che ho in mente io manipola l'ipotesi finché\nnon ha la forma del goal, usando `mul_left_ne_zero`, `one_le_of_ne_zero` e\n`mul_le_mul_right`.", + "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42$.\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": + "Un giorno questo gioco avrà il Mondo Numeri Primi, il cui boss finale\nsarà dimostrare che $2$ è un numero primo.\nMa per arrivarci, dobbiamo escludere falsità del tipo $2 ≠ 37 × 42$.\nLo faremo dimostrando che ogni fattore di $2$ è al più $2$,\nche avremo gratis grazie a questo lemma. La dimostrazione che ho in mente io manipola l'ipotesi finché\nnon ha la forma del goal, usando `mul_left_ne_zero`, `one_le_of_ne_zero` e\n`mul_le_mul_right`.", "On the set of natural numbers, addition is commutative.\nIn other words, if `a` and `b` are arbitrary natural numbers, then\n$a + b = b + a$.": "L'addizione è commutativa sull'insieme dei naturali.\nEquivalentemente, se `a` e `b` sono due numeri naturali qualsiasi, allora\n$a + b = b + a$.", "On the set of natural numbers, addition is associative.\nIn other words, if $a, b$ and $c$ are arbitrary natural numbers, we have\n$ (a + b) + c = a + (b + c). $": @@ -528,6 +528,8 @@ "La mia dimostrazione:\n```\ncases h with d hd\nuse d * t\nrw [hd, add_mul]\nrfl\n```", "Multiplication usually makes a number bigger, but multiplication by zero can make\nit smaller. Thus many lemmas about inequalities and multiplication need the\nhypothesis `a ≠ 0`. Here is a key lemma that enables us to use this hypothesis.\nTo help us with the proof, we can use the `tauto` tactic. Click on the tactic's name\non the right to see what it does.": "La moltiplicazione normalmente fa crescere un numero, ma moltiplicare per zero lo rende\npiù piccolo, o meglio, lo azzera. Ecco perché gran parte dei teoremi che mischiano le disuguaglianze con la moltiplicazione necessitano\nl'ipotesi `a ≠ 0`. Questo livello è un lemma chiave che ci permette di mettere a frutto questa ipotesi.\nPer aiutarci nella dimostrazione, possiamo usare la tattica `tauto`. Clicca sul nome della tattica\nsulla destra per una descrizione dettagliata di cosa fa.", + "Multiplication is distributive over addition.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": + "La moltiplicazione gode della proprietà distributiva sull'addizione.\nEquivalentemente, per tutti i numeri naturali $a$, $b$ e $c$, si ha che\n$(a + b) \\times c = ac + bc$.", "Multiplication is distributive over addition on the left.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$a(b + c) = ab + ac$.": "La moltiplicazione è distributiva a sinistra rispetto all'addizione.\nEquivalentemente, per tutti i numeri naturali $a$, $b$ e $c$, si ha che\n$a(b + c) = ab + ac$.", "Multiplication is commutative.": "La moltiplicazione è commutativa.", @@ -586,7 +588,7 @@ "In questo gioco ricreerai l'insieme dei numeri naturali $\\mathbb{N}$ partendo dagli assiomi di Peano,\ne lungo il percorso imparerai le basi del *theorem proving* su Lean.\n\nQuesto gioco è un'ottima introduzione a Lean!", "In the next level, we'll do the same proof but backwards.": "Nel livello successivo, dimostreremo lo stesso enunciato, al contrario.", - "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n command line mode).": + "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n \"Typewriter mode\").": "Nell'ultimo livello abbiamo manipolato l'ipotesi `x + 1 = 4`\n per farla coincidere con il goal `x = 3`. In questo livello manipoleremo\n il goal per farlo combaciare con una delle ipotesi! Si puo dire che\n \"ragioneremo all'indietro\". È ancora la tattica `apply` che ce lo consente.\n Ti guiderò io anche in questa dimostrazione (assicurati di essere in modalità\n interattiva).", "In the \"base case\" we have a hypothesis `ha : 0 ≠ 0`, and you can deduce anything\nfrom a false statement. The `tauto` tactic will close this goal.": "Nel \"caso base\" abbiamo un'ipotesi `ha : 0 ≠ 0`, e sappiamo che puoi dedurre qualsiasi cosa\nda una proposizione falsa. La tattica `tauto` chiuderà il goal.", @@ -738,9 +740,9 @@ "Fermat's Last Theorem": "L'ultimo teorema di Fermat", "Every number in Lean is either $0$ or a successor. We know how to add $0$,\nbut we need to figure out how to add successors. Let's say we already know\nthat `37 + d = q`. What should the answer to `37 + succ d` be? Well,\n`succ d` is one bigger than `d`, so `37 + succ d` should be `succ q`,\nthe number one bigger than `q`. More generally `x + succ d` should\nbe `succ (x + d)`. Let's add this as a lemma.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nIf you ever see `... + succ ...` in your goal, `rw [add_succ]` is\nnormally a good idea.\n\nLet's now prove that `succ n = n + 1`. Figure out how to get `+ succ` into\nthe picture, and then `rw [add_succ]`. Switch between the `+` (addition) and\n`012` (numerals) tabs under \"Theorems\" on the right to\nsee which proofs you can rewrite.": "Ogni numero in Lean è $0$ oppure il successore di un altro numero. Abbiamo già visto come aggiungere $0$,\ne ci rimane da capire come aggiungere un successore. Ipotizziamo di sapere\nche vale l'uguaglianza `37 + d = q`. A cosa dovrebbe essere uguale `37 + succ d`? Beh,\n`succ d` è un'unità più grande di `d`, quindi `37 + succ d` dovrebbe essere `succ q`,\nossia un'unità più grande di `q`. In generale `x + succ d` dovrebbe\ndare `succ (x + d)`. Formalizziamo questo ragionamento in un lemma.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nQuando vedi `... + succ ...` nel goal, eseguire `rw [add_succ]` è una\nbuona idea.\n\nDimostriamo ora che `succ n = n + 1`. Cerca di introdurre un `+ succ` nel\ngoal, poi esegui `rw [add_succ]`. Controlla entrambi i tab `+` (addizione) e\n`012` (numeri) nella sezione \"Teoremi\" a destra\nper vedere quali teoremi da riscrivere hai a disposizione.", - "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet.": + "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet.": "Ripeti lo stesso comando!\n\n`rw [zero_add] at «{h}»` ha completato automaticamente\nla chiamata a `zero_add` (trovando l'argomento `«{x}»`) e poi ha sostituito tutte le occorrenze di\n`0 + «{x}»` in un solo colpo. Dunque non ha toccato `0 + «{y}»` ancora, perciò dovresti ripetere il comando.", - "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into editor mode by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to command line mode.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": + "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into \"Editor mode\" by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to \"Typewriter mode\".\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": "Per caso hai fatto induzione su `y`?\nEcco una dimostrazione in due righe `add_left_eq_self` che sfrutta `add_right_cancel`.\nSe vuoi vedere come funziona, vai in editor mode cliccando su `` in alto a destra,\ncopia e incolla la mia dimostrazione e muoviti tra le linee con il cursore\nper vedere le ipotesi e il goal in ogni punto\n(prima salva la tua dimostrazione però, altrimenti la perdi). Premi su `>_` per\ntornare alla modalità command line.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```", "Dealing with `or`": "Come ragionare con `or`", "Congratulations! You've finished Algorithm World. These algorithms\nwill be helpful for you in Even-Odd World (when someone gets around to\nimplementing it).": @@ -781,8 +783,6 @@ "Advanced Addition World": "Mondo Addizione Avanzata", "Advanced *Addition* World proved various implications\ninvolving addition, such as `x + y = 0 → x = 0` and `x + y = x → y = 0`.\nThese lemmas were used to prove basic facts about ≤ in ≤ World.\n\nIn Advanced Multiplication World we prove analogous\nfacts about multiplication, such as `x * y = 1 → x = 1`, and\n`x * y = x → y = 1` (assuming `x ≠ 0` in the latter result). This will prepare\nus for Divisibility World.\n\nMultiplication World is more complex than Addition World. In the same\nway, Advanced Multiplication world is more complex than Advanced Addition\nWorld. One reason for this is that certain intermediate results are only\ntrue under the additional hypothesis that one of the variables is non-zero.\nThis causes some unexpected extra twists.": "Nel Mondo *Addizione* Avanzata abbiamo dimostrato varie implicazioni\nsull'addizione, ad esempio `x + y = 0 → x = 0` e `x + y = x → y = 0`.\nIn seguito abbiamo usato questi lemmi per dimostrare fatti basilari su ≤ nel Mondo ≤.\n\nNel Mondo Moltiplicazione Avanzata dimostreremo dei fatti\nanaloghi sulla moltiplicazione, ad esempio `x * y = 1 → x = 1`, e\n`x * y = x → y = 1` (assumendo che `x ≠ 0` nel secondo enunciato). Questi saranno propedeutici\nper il Mondo Divisibilità.\n\nIl Mondo Moltiplicazione è più complesso del Mondo Addizione. Allo stesso modo,\nil Mondo Moltiplicazione Avanzata è più complesso del Mondo Addizione Avanzata.\nLa maggiore complessità di questo mondo è dovuta al fatto che certi teoremi valgono a condizione che una delle variabili non possa assumere il valore zero (sia non-nulla).\nQuesto ulteriore vincolo ha dei risvolti inaspettati.", - "Addition is distributive over multiplication.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": - "L'addizione gode della proprietà distributiva sulla moltiplicazione.\nEquivalentemente, per tutti i numeri naturali $a$, $b$ e $c$, si ha che\n$(a + b) \\times c = ac + bc$.", "Addition World": "Mondo Addizione", "Adding zero": "Sommare zero", "A two-line proof is\n\n```\nnth_rewrite 2 [← mul_one a] at h\nexact mul_left_cancel a b 1 ha h\n```\n\nWe now have all the tools necessary to set up the basic theory of divisibility of naturals.": @@ -803,8 +803,8 @@ "2 + 2 ≠ 5": "2 + 2 ≠ 5", "1 ≠ 0": "1 ≠ 0", "0 ≤ x": "0 ≤ x", - "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": - "*Versione del gioco: 4.2*\n\n*Aggiunti di recente: rimozione di bug*\n\n## Salvataggio del gioco\n\nIl gioco salva il tuo progresso nella memoria locale del browser.\nSe svuoti la memoria del browser, perderai anche i dati del gioco! (le tue preziose dimostrazioni!)\n\nAttenzione: nella maggior parte dei browser, eliminando i cookies si elimina anche la memoria di un sito\n(o \"i dati locali del sito\"). In ogni caso, assicurati di esportare il tuo progresso del gioco!\n\n## Riconoscimenti\n\n* **Autori:** Kevin Buzzard, Jon Eugster\n* **Versione originale per Lean3:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Livelli extra:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Traduzione italiana**: Federico Dal Pio Luogo\n* **Grazie anche a:** Gli studenti che si sono offerti come beta testers, tutte le scuole\nche hanno invitato Kevin a parlare, e gli studenti che gli hanno fatto domande\nsul materiale.\n\n## Risorse\n\n* La [chat di Lean su Zulip](https://leanprover.zulipchat.com/)\n* Il [gioco originale per Lean3](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n\n## Problemi?\n\nRivolgi le tue domande sul gioco nella\n[chat di Lean su Zulip](https://leanprover.zulipchat.com/), utilizzando\nlo stream \"New Members\". I membri della comunità sono felici di aiutare. Nota che\nla chat di Lean su Zulip è un forum professionale di ricerca.\nPerciò usa il tuo nome reale e per intero, rimani in tema, e sii cortese. Se cerchi\nun forum più informale (dove puoi ad esempio postare\ni meme sui numeri naturali) allora il [server Discord di Lean](https://discord.gg/WZ9bs9UCvx) fa per te.\n\nIn alternativa, se il gioco funziona male o dovessi trovare un bug puoi aprire una issue su github:\n\n* Per problemi relativi al game engine, apri una\n[issue sul repo lean4game](https://github.com/leanprover-community/lean4game/issues).\n* Per problemi relativi ai contenuti del the gioco, apri una\n[issue sul repo NNG](https://github.com/hhu-adam/NNG4/issues).", + "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": + "*Versione del gioco: 4.2*\n\n*Aggiunti di recente: rimozione di bug*\n\n## Salvataggio del gioco\n\nIl gioco salva il tuo progresso nella memoria locale del browser.\nSe svuoti la memoria del browser, perderai anche i dati del gioco! (le tue preziose dimostrazioni!)\n\nAttenzione: nella maggior parte dei browser, eliminando i cookies si elimina anche la memoria di un sito\n(o \"i dati locali del sito\"). In ogni caso, assicurati di esportare il tuo progresso del gioco!\n\n## Riconoscimenti\n\n* **Autori:** Kevin Buzzard, Jon Eugster\n* **Versione originale per Lean3:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Livelli extra:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Traduzione italiana**: Federico Dal Pio Luogo\n* **Grazie anche a:** Gli studenti che si sono offerti come beta testers, tutte le scuole\nche hanno invitato Kevin a parlare, e gli studenti che gli hanno fatto domande\nsul materiale.\n\n## Risorse\n\n* La [chat di Lean su Zulip](https://leanprover.zulipchat.com/)\n* Il [gioco originale per Lean3](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) (no longer maintained)\n\n## Problemi?\n\nRivolgi le tue domande sul gioco nella\n[chat di Lean su Zulip](https://leanprover.zulipchat.com/), utilizzando\nlo stream \"New Members\". I membri della comunità sono felici di aiutare. Nota che\nla chat di Lean su Zulip è un forum professionale di ricerca.\nPerciò usa il tuo nome reale e per intero, rimani in tema, e sii cortese. Se cerchi\nun forum più informale (dove puoi ad esempio postare\ni meme sui numeri naturali) allora il [server Discord di Lean](https://discord.gg/WZ9bs9UCvx) fa per te.\n\nIn alternativa, se il gioco funziona male o dovessi trovare un bug puoi aprire una issue su github:\n\n* Per problemi relativi al game engine, apri una\n[issue sul repo lean4game](https://github.com/leanprover-community/lean4game/issues).\n* Per problemi relativi ai contenuti del the gioco, apri una\n[issue sul repo NNG](https://github.com/hhu-adam/NNG4/issues).", "$x=37\\implies x=37$.": "$x=37\\implies x=37$.", "$x+y=x\\implies y=0$.": "$x+y=x\\implies y=0$.", "$x+1=y+1 \\implies x=y$.": "$x+1=y+1 \\implies x=y$.", @@ -873,4 +873,4 @@ "# Overview\n\nOur home-made tactic `simp_add` will solve arbitrary goals of\nthe form `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.": "# Overview\n\nLa nostra tattica casalinga `simp_add` risolverà qualsiasi goal\ndel tipo `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.", "# Overview\n\nLean's simplifier, `simp`, will rewrite every lemma\ntagged with `simp` and every lemma fed to it by the user, as much as it can.\nFurthermore, it will attempt to order variables into an internal order if fed\nlemmas such as `add_comm`, so that it does not go into an infinite loop.": - "# Overview\n\nIl semplificatore di Lean, `simp`, riscriverà ogni\nlemma con il tag `simp` e ogni lemma dato dall'utente, finché può.\nNon solo, cercherà di ordinare le variabili secondo la sua logica interna affinché non entri\nin un loop infinito quando utilizza lemmi come `add_comm`"} + "# Overview\n\nIl semplificatore di Lean, `simp`, riscriverà ogni\nlemma con il tag `simp` e ogni lemma dato dall'utente, finché può.\nNon solo, cercherà di ordinare le variabili secondo la sua logica interna affinché non entri\nin un loop infinito quando utilizza lemmi come `add_comm`"} \ No newline at end of file diff --git a/.i18n/it/Game.po b/.i18n/it/Game.po index 9ed3342b..8d4fde40 100644 --- a/.i18n/it/Game.po +++ b/.i18n/it/Game.po @@ -548,7 +548,7 @@ msgstr "" msgid "" "One day this game will have a Prime Number World, with a final boss\n" "of proving that $2$ is prime.\n" -"To do this, we will have to rule out things like $2 = 37 × 42.$\n" +"To do this, we will have to rule out things like $2 = 37 × 42$.\n" "We will do this by proving that any factor of $2$ is at most $2$,\n" "which we will do using this lemma. The proof I have in mind manipulates the " "hypothesis\n" @@ -558,7 +558,7 @@ msgid "" msgstr "" "Un giorno questo gioco avrà il Mondo Numeri Primi, il cui boss finale\n" "sarà dimostrare che $2$ è un numero primo.\n" -"Ma per arrivarci, dobbiamo escludere falsità del tipo $2 ≠ 37 × 42.$\n" +"Ma per arrivarci, dobbiamo escludere falsità del tipo $2 ≠ 37 × 42$.\n" "Lo faremo dimostrando che ogni fattore di $2$ è al più $2$,\n" "che avremo gratis grazie a questo lemma. La dimostrazione che ho in mente io " "manipola l'ipotesi finché\n" @@ -815,7 +815,7 @@ msgid "" "`rw [zero_add] at «{h}»` tries to fill in\n" "the arguments to `zero_add` (finding `«{x}»`) then it replaces all " "occurrences of\n" -"`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet." +"`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet." msgstr "" "Ripeti lo stesso comando!\n" "\n" @@ -1122,11 +1122,11 @@ msgstr "`mul_zero m` è la dimostrazione di `m * 0 = 0`." #: Game.Levels.Multiplication.L08add_mul msgid "" -"Addition is distributive over multiplication.\n" +"Multiplication is distributive over addition.\n" "In other words, for all natural numbers $a$, $b$ and $c$, we have\n" "$(a + b) \\times c = ac + bc$." msgstr "" -"L'addizione gode della proprietà distributiva sulla moltiplicazione.\n" +"La moltiplicazione gode della proprietà distributiva sull'addizione.\n" "Equivalentemente, per tutti i numeri naturali $a$, $b$ e $c$, si ha che\n" "$(a + b) \\times c = ac + bc$." @@ -4400,7 +4400,7 @@ msgid "" " the goal until it becomes our hypothesis! In other words, we\n" " will \"argue backwards\". The `apply` tactic can do this too.\n" " Again I will walk you through this one (assuming you're in\n" -" command line mode)." +" \"Typewriter mode\")." msgstr "" "Nell'ultimo livello abbiamo manipolato l'ipotesi `x + 1 = 4`\n" " per farla coincidere con il goal `x = 3`. In questo livello manipoleremo\n" @@ -4893,8 +4893,8 @@ msgid "" "We have seen how to `apply` theorems and assumptions\n" "of the form `P → Q`. But what if our *goal* is of the form `P → Q`?\n" "To prove this goal, we need to know how to say \"let's assume `P` and deduce " -"`Q`\"\n" -"in Lean. We do this with the `intro` tactic." +"`Q`\".\n" +"In Lean, we do this with the `intro` tactic." msgstr "" "Abbiamo visto come fare `apply` di teoremi e ipotesi\n" "della forma `P → Q`. Ma come ci comportiamo se è il *goal* ad avere la forma " @@ -5039,7 +5039,7 @@ msgstr "Sia $x$ un numero, allora $x \\le \\operatorname{succ}(x)$." #: Game.Levels.Addition.L02succ_add msgid "" -"Well done! You now have enough tools to tackle the main boss of this level." +"Well done! You now have enough tools to tackle the main boss of this world." msgstr "" "Ottimo lavoro! Ora sei abbastanza pratico per affrontare il boss principale " "di questo mondo." @@ -5526,12 +5526,12 @@ msgid "" "Did you use induction on `y`?\n" "Here's a two-line proof of `add_left_eq_self` which uses " "`add_right_cancel`.\n" -"If you want to inspect it, you can go into editor mode by clicking `` in " +"If you want to inspect it, you can go into \"Editor mode\" by clicking `` in " "the top right\n" "and then just cut and paste the proof and move your cursor around it\n" "to see the hypotheses and goal at any given point\n" "(although you'll lose your own proof this way). Click `>_` to get\n" -"back to command line mode.\n" +"back to \"Typewriter mode\".\n" "```\n" "nth_rewrite 2 [← zero_add y]\n" "exact add_right_cancel x 0 y\n" diff --git a/.i18n/uk/Game.json b/.i18n/uk/Game.json index 6c46fd4f..e0de3010 100644 --- a/.i18n/uk/Game.json +++ b/.i18n/uk/Game.json @@ -216,10 +216,10 @@ "`add_left_cancel a b n` це теорема про те, що $n+a=n+b\\implies a=b$.\nВи можете довести її за допомогою індукції по `n` або ви можете вивести це з `add_right_cancel`.", "`add_left_cancel a b n` is the theorem that $n+a=n+b \\implies a=b.$": "`add_left_cancel a b n` це теорема про те, що $n+a=n+b \\implies a=b.$", - "`add_comm a b` is a proof of `a + b = b + a`.": - "`add_comm a b` є доказом `a + b = b + a`.", "`add_comm b c` is a proof that `b + c = c + b`. But if your goal\nis `a + b + c = a + c + b` then `rw [add_comm b c]` will not\nwork! Because the goal means `(a + b) + c = (a + c) + b` so there\nis no `b + c` term *directly* in the goal.\n\nUse associativity and commutativity to prove `add_right_comm`.\nYou don't need induction. `add_assoc` moves brackets around,\nand `add_comm` moves variables around.\n\nRemember that you can do more targeted rewrites by\nadding explicit variables as inputs to theorems. For example `rw [add_comm b]`\nwill only do rewrites of the form `b + ? = ? + b`, and `rw [add_comm b c]`\nwill only do rewrites of the form `b + c = c + b`.": "`add_comm b c` є доказом того, що `b + c = c + b`. Але якщо ваша мета\nце `a + b + c = a + c + b`, тоді `rw [add_comm b c]` неспрацює!\nТому що мета означає `(a + b) + c = (a + c) + b` так що в меті\n*безпосередньо* немає члена `b + c`.\n\nВикористовуйте асоціативність і комутативність, щоб підтвердити `add_right_comm`.\nВам не потрібна індукція. `add_assoc` пересуває дужки,\nа `add_comm` переміщує змінні.\n\nПам’ятайте, що ви можете робити більш цілеспрямовані перезаписи за допомогою\nдодавання явних змінних як вхідних даних до теорем. Наприклад `rw [add_comm b]`\nвиконуватиме лише перезапис у формі `b + ? = ? + b` і `rw [add_comm b c]`\nвиконуватиме лише перезапис у формі `b + c = c + b`.", + "`add_comm a b` is a proof of `a + b = b + a`.": + "`add_comm a b` є доказом `a + b = b + a`.", "`add_assoc a b c` is a proof\nthat `(a + b) + c = a + (b + c)`. Note that in Lean `(a + b) + c` prints\nas `a + b + c`, because the notation for addition is defined to be left\nassociative.": "`add_assoc a b c` є доказом\nщо `(a + b) + c = a + (b + c)`. Зверніть увагу, що в Lean друкується `(a + b) + c`\nяк `a + b + c`, тому що нотація для додавання визначена ліво-\nасоціативно.", "`a ≤ b` is *notation* for `∃ c, b = a + c`. This \"backwards E\"\nmeans \"there exists\". So `a ≤ b` means that there exists\na number `c` such that `b = a + c`. This definition works\nbecause there are no negative numbers in this game.\n\nTo *prove* an \"exists\" statement, use the `use` tactic.\nLet's see an example.": @@ -275,8 +275,8 @@ "Чому ми просто не визначили `succ n` як `n + 1`? Тому що ми не маємо\nще навіть *визначення* додаванню! Ми зробимо це на наступному рівні.", "What do you think of this two-liner:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` doesn't just take hypotheses, it will eat any proof which exists\nin the system.": "Що ви думаєте про цей дворядковий доказ:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` не просто приймає гіпотези, він з'їдає будь-які наявні докази\nв системі.", - "Well done! You now have enough tools to tackle the main boss of this level.": - "Гарна робота! Тепер у вас достатньо інструментів, щоб боротися з головним босом цього рівня.", + "Well done! You now have enough tools to tackle the main boss of this world.": + "Гарна робота! Тепер у вас достатньо інструментів, щоб боротися з головним босом цього світу.", "Well done!": "Гарна робота!", "Welcome to tutorial world! In this world we learn the basics\nof proving theorems. The boss level of this world\nis the theorem `2 + 2 = 4`.\n\nYou prove theorems by solving puzzles using tools called *tactics*.\nThe aim is to prove the theorem by applying tactics\nin the right order.\n\nLet's learn some basic tactics. Click on \"Start\" below\nto begin your quest.": "Ласкаво просимо до навчального світу! У цьому світі ми вивчаємо основи\nдоведення теорем. Рівневим босом цього світу\nє теорема `2 + 2 = 4`.\n\nВи доводите теореми, вирішуючи головоломки за допомогою інструментів під назвою *тактики*.\nМета полягає в тому, щоб довести теорему шляхом застосування тактики\nу правильному порядку.\n\nДавайте навчимося деяким основним тактикам. Натисніть «Почати» нижче\nщоб почати свою пригоду.", @@ -312,7 +312,7 @@ "Тепер у нас достатньо всього, щоб довести, що множення асоціативне,\nбосовий рівень світу множення. Удачі!", "We know `zero_ne_succ n` is a proof of `0 = succ n → False` -- but what\nif we have a hypothesis `succ n = 0`? It's the wrong way around!\n\nThe `symm` tactic changes a goal `x = y` to `y = x`, and a goal `x ≠ y`\nto `y ≠ x`. And `symm at h`\ndoes the same for a hypothesis `h`. We've proved $0 \\neq 1$ and called\nthe proof `zero_ne_one`; now try proving $1 \\neq 0$.": "Ми знаємо, що `zero_ne_succ n` є доказом `0 = succ n → False` -- але що\nякщо ми маємо гіпотезу `succ n = 0`? Це неправильний шлях!\n\nТактика `symm` змінює ціль `x = y` на `y = x`, а ціль `x ≠ y`\nна `y ≠ x`. І `symm у h`\nробить те саме для гіпотези `h`. Ми довели $0 \\neq 1$ і назвали\nдоказ `zero_ne_one`; тепер спробуйте довести $1 \\neq 0$.", - "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\"\nin Lean. We do this with the `intro` tactic.": + "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\".\nIn Lean, we do this with the `intro` tactic.": "Ми побачили, як `apply`-іти теореми та припущення\nвиду `P → Q`. Але що, якщо наша *мета* має форму `P → Q`?\nЩоб підтвердити цю мету, нам потрібно знати, як сказати \"давайте припустимо `P` і виведемо `Q`\"\nв Lean. Ми робимо це за допомогою тактики `intro`.", "We gave a pretty unsatisfactory proof of `2 + 2 ≠ 5` earlier on; now give a nicer one.": "Раніше ми надали досить незадовільний доказ `2 + 2 ≠ 5`; тепер давайте зробимо кращій.", @@ -446,8 +446,8 @@ "Нашою першою місією є `mul_comm x y : x * y = y * x`,\nі ми хочемо довести це індукцією. Нульовий\nвипадок буде потребувати `mul_zero` (який у нас є)\nі `zero_mul` (якого ми не маємо), тож давайте\nпонемо з нього.", "One of the best named levels in the game, a savage `pow_pow`\nsub-boss appears as the music reaches a frenzy. What\nelse could there be to prove about powers after this?": "Один із найкращих іменованих рівнів у грі, дикий `pow_pow`\nпідбос з'являється у той час коли музика досягає піку. Що\nще можна було б довести про ступені після цього?", - "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42.$\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": - "Одного разу в цій грі з’явиться світ простих чисел із останнім босом\nдоведення того, що $2$ є простим числом.\nДля цього нам доведеться виключити такі речі, як $2 = 37 × 42.$\nМи зробимо це, довівши, що будь-який множник $2$ не перевищує $2$,\nщо ми зробимо, використовуючи цю лему. Доказ, який я маю на увазі, маніпулює гіпотезою\nпоки це не стане метою, використовуючи `mul_left_ne_zero`, `one_le_of_ne_zero` та\n`mul_le_mul_right`.", + "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42$.\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": + "Одного разу в цій грі з’явиться світ простих чисел із останнім босом\nдоведення того, що $2$ є простим числом.\nДля цього нам доведеться виключити такі речі, як $2 = 37 × 42$.\nМи зробимо це, довівши, що будь-який множник $2$ не перевищує $2$,\nщо ми зробимо, використовуючи цю лему. Доказ, який я маю на увазі, маніпулює гіпотезою\nпоки це не стане метою, використовуючи `mul_left_ne_zero`, `one_le_of_ne_zero` та\n`mul_le_mul_right`.", "On the set of natural numbers, addition is commutative.\nIn other words, if `a` and `b` are arbitrary natural numbers, then\n$a + b = b + a$.": "На множині натуральних чисел додавання комутативне.\nІншими словами, якщо `a` і `b` це довільні натуральні числа, то\n$a + b = b + a$.", "On the set of natural numbers, addition is associative.\nIn other words, if $a, b$ and $c$ are arbitrary natural numbers, we have\n$ (a + b) + c = a + (b + c). $": @@ -526,6 +526,8 @@ "Мій доказ:\n```\ncases h with d hd\nuse d * t\nrw [hd, add_mul]\nrfl\n```", "Multiplication usually makes a number bigger, but multiplication by zero can make\nit smaller. Thus many lemmas about inequalities and multiplication need the\nhypothesis `a ≠ 0`. Here is a key lemma that enables us to use this hypothesis.\nTo help us with the proof, we can use the `tauto` tactic. Click on the tactic's name\non the right to see what it does.": "Множення зазвичай збільшує число, але множення на нуль може зробити\nйого меншим. Тому багато лем про нерівності та множення потребують\nгіпотези `a ≠ 0`. Ось ключова лема, яка дозволяє нам використовувати цю гіпотезу.\nЩоб допомогти нам із доказом, ми можемо використати тактику `tauto`. Натисніть на назву тактики\nправоруч, щоб побачити, що вона робить.", + "Multiplication is distributive over addition.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": + "Множення діє дістрібутивно над додаванням.\nІншими словами, для всіх натуральних чисел $a$, $b$ і $c$ маємо\n$(a + b) \\times c = ac + bc$.", "Multiplication is distributive over addition on the left.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$a(b + c) = ab + ac$.": "Множення дістрібутивно над додаванням зліва.\nІншими словами, для всіх натуральних чисел $a$, $b$ і $c$ маємо\n$a(b + c) = ab + ac$.", "Multiplication is commutative.": "Множення комутативне.", @@ -586,7 +588,7 @@ "У цій грі ви відтворюєте натуральні числа $\\mathbb{N}$ із аксіом Пеано,\nвивчаючи основи доведення теорем в Lean.\n\nЦе хороший перший крок у Lean!", "In the next level, we'll do the same proof but backwards.": "На наступному рівні ми виконаємо той самий доказ, але в зворотному напрямку.", - "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n command line mode).": + "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n \"Typewriter mode\").": "На останньому рівні ми маніпулювали гіпотезою `x + 1 = 4`\n поки вона не стало метою `x = 3`. На цьому рівні ми будемо маніпулювати\n мету, поки вона не стане нашою гіпотезою! Іншими словами, ми\n буде «аргументувати у зворотньому напрямку». Тактика `apply` також може це зробити.\n Я знову проведу вас через цей шлях (якщо ви в\n режимі командного рядка).", "In the \"base case\" we have a hypothesis `ha : 0 ≠ 0`, and you can deduce anything\nfrom a false statement. The `tauto` tactic will close this goal.": "У «базовому випадку» ми маємо гіпотезу `ha : 0 ≠ 0`, і ви можете вивести будь-що\nіз хибного твердження. Тактика `tauto` закриє цю мету.", @@ -736,9 +738,9 @@ "Fermat's Last Theorem": "Остання теорема Ферма", "Every number in Lean is either $0$ or a successor. We know how to add $0$,\nbut we need to figure out how to add successors. Let's say we already know\nthat `37 + d = q`. What should the answer to `37 + succ d` be? Well,\n`succ d` is one bigger than `d`, so `37 + succ d` should be `succ q`,\nthe number one bigger than `q`. More generally `x + succ d` should\nbe `succ (x + d)`. Let's add this as a lemma.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nIf you ever see `... + succ ...` in your goal, `rw [add_succ]` is\nnormally a good idea.\n\nLet's now prove that `succ n = n + 1`. Figure out how to get `+ succ` into\nthe picture, and then `rw [add_succ]`. Switch between the `+` (addition) and\n`012` (numerals) tabs under \"Theorems\" on the right to\nsee which proofs you can rewrite.": "Кожне число в Lean є або $0$, або наступним значенням (наступником). Ми знаємо, як додати $0$,\nале нам потрібно зрозуміти, як додати наступників. Скажімо, ми вже знаємо\nщо `37 + d = q`. Якою має бути відповідь на `37 + succ d`? Гаразд,\n`succ d` на одиницю більший за `d`, тому `37 + succ d` має бути `succ q`,\nчисло на один більше за `q`. Більш загально `x + succ d` повинен\nбути `succ (x + d)`. Додамо це як лему.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nЯкщо ви побачите `... + succ ...` у своїй меті, `rw [add_succ]`\nзазвичай хороша ідея.\n\nДавайте тепер доведемо, що `succ n = n + 1`. З’ясуйте, як додати `+ succ`\nу фокус, а потім зробіть `rw [add_succ]`. Перемикайте між вкладками `+` (додавання) і\n`012` (цифри) у розділі \"Теореми\" праворуч\nі подивіться, які докази ви можете переписати.", - "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet.": + "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet.": "Зробіть це ще раз!\n\n`rw [zero_add] в «{h}»` намагається заповнити\nаргументи `zero_add` (знаходження `«{x}»`), потім вона замінює всі знайдені входження\n`0 + «{x}»`. Таким чином тактика не переписує `0 + «{y}»`.", - "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into editor mode by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to command line mode.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": + "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into \"Editor mode\" by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to \"Typewriter mode\".\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": "Ви використовували індукцію на `y`?\nОсь дворядковий доказ `add_left_eq_self`, який використовує `add_right_cancel`.\nЯкщо ви хочете перевірити його, ви можете перейти в режим редактора, натиснувши `` у верхньому правому куті\nа потім просто виріжте та вставте доказ і перемістіть курсор навколо нього\nщоб побачити гіпотези та мету в будь-якій точці\n(хоча таким чином ви втратите свій власний доказ). Натисніть `>_`, щоб\nповернутися назад до режиму командного рядка.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```", "Dealing with `or`": "Робота з `or`", "Congratulations! You've finished Algorithm World. These algorithms\nwill be helpful for you in Even-Odd World (when someone gets around to\nimplementing it).": @@ -779,8 +781,6 @@ "Advanced Addition World": "Світ розширеного додавання", "Advanced *Addition* World proved various implications\ninvolving addition, such as `x + y = 0 → x = 0` and `x + y = x → y = 0`.\nThese lemmas were used to prove basic facts about ≤ in ≤ World.\n\nIn Advanced Multiplication World we prove analogous\nfacts about multiplication, such as `x * y = 1 → x = 1`, and\n`x * y = x → y = 1` (assuming `x ≠ 0` in the latter result). This will prepare\nus for Divisibility World.\n\nMultiplication World is more complex than Addition World. In the same\nway, Advanced Multiplication world is more complex than Advanced Addition\nWorld. One reason for this is that certain intermediate results are only\ntrue under the additional hypothesis that one of the variables is non-zero.\nThis causes some unexpected extra twists.": "Світ розширенного *додаванн* довів різні імплікації\nвключаючі додавання, наприклад `x + y = 0 → x = 0` і `x + y = x → y = 0`.\nЦі леми були використані для доведення основних фактів про ≤ у Світі ≤.\n\nУ Світі розширенного множення ми доводимо аналогічни\nфакти про множення, наприклад `x * y = 1 → x = 1`, і\n`x * y = x → y = 1` (припускаючи, що `x ≠ 0` в останньому результаті). Це підготує\nнас для світу ділення.\n\nСвіт множення складніший за світ додавання. У тому самому\nсенсі, світ розширеного множення є складнішим, ніж світ розширеного додавання.\nОднією з причин цього є те, що є лише певні проміжні результати\nє вірними лише за умови додаткової гіпотези, що одна зі змінних не дорівнює нулю.\nЦе викликає деякі несподівані додаткові повороти.", - "Addition is distributive over multiplication.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": - "Додавання діє дістрібутивно над множенням.\nІншими словами, для всіх натуральних чисел $a$, $b$ і $c$ маємо\n$(a + b) \\times c = ac + bc$.", "Addition World": "Світ додавання", "Adding zero": "Додавання нуля", "A two-line proof is\n\n```\nnth_rewrite 2 [← mul_one a] at h\nexact mul_left_cancel a b 1 ha h\n```\n\nWe now have all the tools necessary to set up the basic theory of divisibility of naturals.": @@ -799,8 +799,8 @@ "2 + 2 ≠ 5": "2 + 2 ≠ 5", "1 ≠ 0": "1 ≠ 0", "0 ≤ x": "0 ≤ x", - "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": - "*Версія гри: 4.3*\n\n*Останні доповнення: виправлення помилок*\n\n## Збереження прогресу\n\nГра зберігає ваш прогрес у локальному сховищі браузера.\nЯкщо ви видалите його, ваш прогрес буде втрачено!\n\nПопередження: у більшості браузерів видалення файлів cookie також очищає локальне сховище\n(або «дані локального сайту»). Обов’язково спершу скачайте свій прогрес гри!\n\n## Подяки\n\n* **Творці:** Кевін Баззард, Джон Югстер\n* **Оригінальна версія Lean3:** Кевін Баззард, Мохаммад Педрамфар\n* **Ігровий рушій:** Олександр Бенткамп, Джон Югстер, Патрік Массо\n* **Додаткові рівні:** Сіан Кері, Іван Фарабелла, Арчі Браун.\n* **Додаткова подяка:** Усім учням-бета-тестерам, усім школам\nякі запросли Кевіна виступити, і всіх школярів, які ставили йому запитання\nпро матеріал.\n\n## Ресурси\n\n* Форум [Lean Zulip chat](https://leanprover.zulipchat.com/).\n* [Оригінальна версія Lean3](https://github.com/ImperialCollegeLondon/natural_number_game/) (більше не підтримується)\n\n## Проблеми?\n\nБудь ласка, задавайте будь-які запитання щодо цієї гри на\nфорумі [Zulip чату Lean](https://leanprover.zulipchat.com/), наприклад у\nпотік «New Members». Громада з радістю допоможе. Зауважте, що\nчат Lean Zulip — це професійний дослідницький форум.\nБудь ласка, використовуйте тут своє повне справжнє ім’я, не відривайтесь від теми та будьте чемними. Якщо ви\nшукаєте десь менш формальне (наприклад, ви хочете опублікувати меми гри в натуральні числа),\nто перейдіть до [Lean діскорду](https://discord.gg/WZ9bs9UCvx).\n\nКрім того, якщо у вас виникли проблеми / помилки, ви також можете відкрити проблеми на github:\n\n* Якщо у вас виникли проблеми з ігровим двигуном, відкрийте\n[проблема в репозиторії lean4game](https://github.com/leanprover-community/lean4game/issues).\n* Якщо у вас виникли питання щодо вмісту гри, відкрийте\n[проблема в NNG](https://github.com/hhu-adam/NNG4/issues) репі.", + "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": + "*Версія гри: 4.3*\n\n*Останні доповнення: виправлення помилок*\n\n## Збереження прогресу\n\nГра зберігає ваш прогрес у локальному сховищі браузера.\nЯкщо ви видалите його, ваш прогрес буде втрачено!\n\nПопередження: у більшості браузерів видалення файлів cookie також очищає локальне сховище\n(або «дані локального сайту»). Обов’язково спершу скачайте свій прогрес гри!\n\n## Подяки\n\n* **Творці:** Кевін Баззард, Джон Югстер\n* **Оригінальна версія Lean3:** Кевін Баззард, Мохаммад Педрамфар\n* **Ігровий рушій:** Олександр Бенткамп, Джон Югстер, Патрік Массо\n* **Додаткові рівні:** Сіан Кері, Іван Фарабелла, Арчі Браун.\n* **Додаткова подяка:** Усім учням-бета-тестерам, усім школам\nякі запросли Кевіна виступити, і всіх школярів, які ставили йому запитання\nпро матеріал.\n\n## Ресурси\n\n* Форум [Lean Zulip chat](https://leanprover.zulipchat.com/).\n* [Оригінальна версія Lean3](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) (більше не підтримується)\n\n## Проблеми?\n\nБудь ласка, задавайте будь-які запитання щодо цієї гри на\nфорумі [Zulip чату Lean](https://leanprover.zulipchat.com/), наприклад у\nпотік «New Members». Громада з радістю допоможе. Зауважте, що\nчат Lean Zulip — це професійний дослідницький форум.\nБудь ласка, використовуйте тут своє повне справжнє ім’я, не відривайтесь від теми та будьте чемними. Якщо ви\nшукаєте десь менш формальне (наприклад, ви хочете опублікувати меми гри в натуральні числа),\nто перейдіть до [Lean діскорду](https://discord.gg/WZ9bs9UCvx).\n\nКрім того, якщо у вас виникли проблеми / помилки, ви також можете відкрити проблеми на github:\n\n* Якщо у вас виникли проблеми з ігровим двигуном, відкрийте\n[проблема в репозиторії lean4game](https://github.com/leanprover-community/lean4game/issues).\n* Якщо у вас виникли питання щодо вмісту гри, відкрийте\n[проблема в NNG](https://github.com/hhu-adam/NNG4/issues) репі.", "$x=37\\implies x=37$.": "$x=37\\implies x=37$.", "$x+y=x\\implies y=0$.": "$x+y=x\\implies y=0$.", "$x+1=y+1 \\implies x=y$.": "$x+1=y+1 \\implies x=y$.", @@ -869,4 +869,4 @@ "# Overview\n\nOur home-made tactic `simp_add` will solve arbitrary goals of\nthe form `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.": "# Огляд\n\nНаша саморобна тактика `simp_add` вирішить довільні цілі\nу формі `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.", "# Overview\n\nLean's simplifier, `simp`, will rewrite every lemma\ntagged with `simp` and every lemma fed to it by the user, as much as it can.\nFurthermore, it will attempt to order variables into an internal order if fed\nlemmas such as `add_comm`, so that it does not go into an infinite loop.": - "# Огляд\n\nСпрощувач Lean, `simp`, перепише кожну лему\nз тегом `simp` і кожну лему, надану користувачем, настількі, наскільки це можливо.\nКрім того, він намагатиметься впорядкувати змінні у внутрішньому порядку, якщо йому буде скормлено\nлеми, такі як `add_comm`, щоб він не перейшов в нескінченний цикл."} + "# Огляд\n\nСпрощувач Lean, `simp`, перепише кожну лему\nз тегом `simp` і кожну лему, надану користувачем, настількі, наскільки це можливо.\nКрім того, він намагатиметься впорядкувати змінні у внутрішньому порядку, якщо йому буде скормлено\nлеми, такі як `add_comm`, щоб він не перейшов в нескінченний цикл."} \ No newline at end of file diff --git a/.i18n/uk/Game.po b/.i18n/uk/Game.po index d396bfe5..172c4055 100644 --- a/.i18n/uk/Game.po +++ b/.i18n/uk/Game.po @@ -1345,10 +1345,10 @@ msgstr "" #: Game.Levels.Addition.L02succ_add msgid "" -"Well done! You now have enough tools to tackle the main boss of this level." +"Well done! You now have enough tools to tackle the main boss of this world." msgstr "" "Гарна робота! Тепер у вас достатньо інструментів, щоб боротися з головним " -"босом цього рівня." +"босом цього світу." #: Game.Levels.Addition.L03add_comm msgid "add_comm (level boss)" @@ -1921,11 +1921,11 @@ msgstr "`add_mul a b c` є доказом того, що $(a+b)c=ac+bc$." #: Game.Levels.Multiplication.L08add_mul msgid "" -"Addition is distributive over multiplication.\n" +"Multiplication is distributive over addition.\n" "In other words, for all natural numbers $a$, $b$ and $c$, we have\n" "$(a + b) \\times c = ac + bc$." msgstr "" -"Додавання діє дістрібутивно над множенням.\n" +"Множення діє дістрібутивно над додаванням.\n" "Іншими словами, для всіх натуральних чисел $a$, $b$ і $c$ маємо\n" "$(a + b) \\times c = ac + bc$." @@ -2569,7 +2569,7 @@ msgid "" "`rw [zero_add] at «{h}»` tries to fill in\n" "the arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences " "of\n" -"`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet." +"`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet." msgstr "" "Зробіть це ще раз!\n" "\n" @@ -2841,7 +2841,7 @@ msgid "" " the goal until it becomes our hypothesis! In other words, we\n" " will \"argue backwards\". The `apply` tactic can do this too.\n" " Again I will walk you through this one (assuming you're in\n" -" command line mode)." +" \"Typewriter mode\")." msgstr "" "На останньому рівні ми маніпулювали гіпотезою `x + 1 = 4`\n" " поки вона не стало метою `x = 3`. На цьому рівні ми будемо маніпулювати\n" @@ -2933,8 +2933,8 @@ msgid "" "We have seen how to `apply` theorems and assumptions\n" "of the form `P → Q`. But what if our *goal* is of the form `P → Q`?\n" "To prove this goal, we need to know how to say \"let's assume `P` and deduce " -"`Q`\"\n" -"in Lean. We do this with the `intro` tactic." +"`Q`\".\n" +"In Lean, we do this with the `intro` tactic." msgstr "" "Ми побачили, як `apply`-іти теореми та припущення\n" "виду `P → Q`. Але що, якщо наша *мета* має форму `P → Q`?\n" @@ -4064,12 +4064,12 @@ msgstr "$x + y = y\\implies x=0.$" msgid "" "Did you use induction on `y`?\n" "Here's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\n" -"If you want to inspect it, you can go into editor mode by clicking `` in " +"If you want to inspect it, you can go into \"Editor mode\" by clicking `` in " "the top right\n" "and then just cut and paste the proof and move your cursor around it\n" "to see the hypotheses and goal at any given point\n" "(although you'll lose your own proof this way). Click `>_` to get\n" -"back to command line mode.\n" +"back to \"Typewriter mode\".\n" "```\n" "nth_rewrite 2 [← zero_add y]\n" "exact add_right_cancel x 0 y\n" @@ -5360,7 +5360,7 @@ msgstr "" msgid "" "One day this game will have a Prime Number World, with a final boss\n" "of proving that $2$ is prime.\n" -"To do this, we will have to rule out things like $2 = 37 × 42.$\n" +"To do this, we will have to rule out things like $2 = 37 × 42$.\n" "We will do this by proving that any factor of $2$ is at most $2$,\n" "which we will do using this lemma. The proof I have in mind manipulates the " "hypothesis\n" @@ -5369,7 +5369,7 @@ msgid "" msgstr "" "Одного разу в цій грі з’явиться світ простих чисел із останнім босом\n" "доведення того, що $2$ є простим числом.\n" -"Для цього нам доведеться виключити такі речі, як $2 = 37 × 42.$\n" +"Для цього нам доведеться виключити такі речі, як $2 = 37 × 42$.\n" "Ми зробимо це, довівши, що будь-який множник $2$ не перевищує $2$,\n" "що ми зробимо, використовуючи цю лему. Доказ, який я маю на увазі, маніпулює " "гіпотезою\n" diff --git a/.i18n/zh/Game.json b/.i18n/zh/Game.json index dba45d72..28fd4ef7 100644 --- a/.i18n/zh/Game.json +++ b/.i18n/zh/Game.json @@ -207,10 +207,10 @@ "`add_left_cancel a b n` 是定理 $n+a=n+b\\implies a=b$。你可以通过对 `n` 进行归纳来证明它,或者你可以从 `add_right_cancel` 推导出它。", "`add_left_cancel a b n` is the theorem that $n+a=n+b \\implies a=b.$": "`add_left_cancel a b n` 是 $n+a=n+b \\implies a=b$ 的定理名字。", - "`add_comm a b` is a proof of `a + b = b + a`.": - "`add_comm a b` 是 `a + b = b + a` 的证明。", "`add_comm b c` is a proof that `b + c = c + b`. But if your goal\nis `a + b + c = a + c + b` then `rw [add_comm b c]` will not\nwork! Because the goal means `(a + b) + c = (a + c) + b` so there\nis no `b + c` term *directly* in the goal.\n\nUse associativity and commutativity to prove `add_right_comm`.\nYou don't need induction. `add_assoc` moves brackets around,\nand `add_comm` moves variables around.\n\nRemember that you can do more targeted rewrites by\nadding explicit variables as inputs to theorems. For example `rw [add_comm b]`\nwill only do rewrites of the form `b + ? = ? + b`, and `rw [add_comm b c]`\nwill only do rewrites of the form `b + c = c + b`.": "`add_comm b c` 是一个 `b + c = c + b` 的证明。但如果您的目标是 `a + b + c = a + c + b`,那么 `rw [add_comm b c]` 将不起作用!因为目标是 `(a + b) + c = (a + c) + b`,所以目标中*直接*没有 `b + c` 项。\n\n使用结合律和交换律来证明 `add_right_comm`。您不需要使用归纳法。`add_assoc` 移动括号,`add_comm` 移动变量。\n\n请记住,您可以通过将显式变量添加为定理的输入来进行更有针对性的重写。\n例如,`rw [add_comm b]` 只会重写形如 `b + ? = ? + b` 的形式,而 `rw [add_comm b c]` 只会重写形如 `b + c = c + b` 的形式。", + "`add_comm a b` is a proof of `a + b = b + a`.": + "`add_comm a b` 是 `a + b = b + a` 的证明。", "`add_assoc a b c` is a proof\nthat `(a + b) + c = a + (b + c)`. Note that in Lean `(a + b) + c` prints\nas `a + b + c`, because the notation for addition is defined to be left\nassociative.": "`add_assoc a b c` 是一个 `(a + b) + c = a + (b + c)` 的证明。\n请注意,在 Lean `(a + b) + c` 中显示\n为 `a + b + c`,因为加法符号被定义为左\n结合的。", "`a ≤ b` is *notation* for `∃ c, b = a + c`. This \"backwards E\"\nmeans \"there exists\". So `a ≤ b` means that there exists\na number `c` such that `b = a + c`. This definition works\nbecause there are no negative numbers in this game.\n\nTo *prove* an \"exists\" statement, use the `use` tactic.\nLet's see an example.": @@ -264,8 +264,8 @@ "为什么我们不直接将 `succ n` 定义为 `n + 1`?因为我们还没有\n *定义* 加法!我们将在下一关做到这一点。", "What do you think of this two-liner:\n```\nsymm\nexact zero_ne_one\n```\n\n`exact` doesn't just take hypotheses, it will eat any proof which exists\nin the system.": "你对这两行代码有什么看法?\n\n```\nsymm\nexact zero_ne_one\n```\n\n请注意,`exact` 不仅限于使用假设,它可以接受系统中存在的任何证明。", - "Well done! You now have enough tools to tackle the main boss of this level.": - "做得好!现在你有足够的工具来对付这个关卡的大Boss了。", + "Well done! You now have enough tools to tackle the main boss of this world.": + "做得好!现在你有足够的工具来对付这个世界的大Boss了。", "Well done!": "做得好!", "Welcome to tutorial world! In this world we learn the basics\nof proving theorems. The boss level of this world\nis the theorem `2 + 2 = 4`.\n\nYou prove theorems by solving puzzles using tools called *tactics*.\nThe aim is to prove the theorem by applying tactics\nin the right order.\n\nLet's learn some basic tactics. Click on \"Start\" below\nto begin your quest.": "欢迎进入教程世界!在这里,我们将掌握证明定理的初步技能。这个世界中的终极挑战是证明 `2 + 2 = 4` 这一定理。\n\n解决这些谜题并证明定理的过程中,你将使用一种名为*策略*的强大工具。证明定理的关键在于准确地应用这些策略。\n\n现在,让我们开始学习一些基本策略吧。请点击下面的“开始”按钮,开启你的证明之旅。", @@ -301,7 +301,7 @@ "我们现在有足够的工具去证明乘法服从结合律,\n乘法世界的boss关。祝你好运!", "We know `zero_ne_succ n` is a proof of `0 = succ n → False` -- but what\nif we have a hypothesis `succ n = 0`? It's the wrong way around!\n\nThe `symm` tactic changes a goal `x = y` to `y = x`, and a goal `x ≠ y`\nto `y ≠ x`. And `symm at h`\ndoes the same for a hypothesis `h`. We've proved $0 \\neq 1$ and called\nthe proof `zero_ne_one`; now try proving $1 \\neq 0$.": "我们知道 `zero_ne_succ n` 是证明 `0 = succ n → False` 的证明。但是如果我们有一个假设 `succ n = 0` 呢?这恰好是反过来的!\n\n`symm` 策略可以将目标 `x = y` 改为 `y = x`,并将目标 `x ≠ y` 改为 `y ≠ x`。而 `symm at h` 对假设 `h` 也做同样的操作。\n我们已经证明了 $0 \\neq 1$,并将证明命名为 `zero_ne_one`;现在请尝试证明 $1 \\neq 0$。", - "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\"\nin Lean. We do this with the `intro` tactic.": + "We have seen how to `apply` theorems and assumptions\nof the form `P → Q`. But what if our *goal* is of the form `P → Q`?\nTo prove this goal, we need to know how to say \"let's assume `P` and deduce `Q`\".\nIn Lean, we do this with the `intro` tactic.": "我们已经看到了如何 `apply` 形式为 `P → Q` 的定理和假设。\n但如果我们的 *目标* 是形式为 `P → Q` 的呢?\n要证明这个目标,我们需要知道如何在 Lean 中表示 “假设 `P` 并推导出 `Q`”。我们用 `intro` 策略来做这件事。", "We gave a pretty unsatisfactory proof of `2 + 2 ≠ 5` earlier on; now give a nicer one.": "我们前面给出的 `2 + 2 ≠ 5` 证明并不令人满意,现在给出一个更好的证明。", @@ -428,7 +428,7 @@ "我们的第一个挑战是`mul_comm x y : x * y = y * x`,\n我们想通过归纳法来证明这一点。在证明0的目标下我们需要 `mul_zero` (我们有)和 `zero_mul` (我们没有),所以让我们从这里开始。", "One of the best named levels in the game, a savage `pow_pow`\nsub-boss appears as the music reaches a frenzy. What\nelse could there be to prove about powers after this?": "游戏中最名副其实的关卡之一。\n随着音乐达到狂热,一个凶猛的 `pow_pow` 小boss出现了。\n在这之后,还有什么关于幂的性质需要证明呢?", - "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42.$\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": + "One day this game will have a Prime Number World, with a final boss\nof proving that $2$ is prime.\nTo do this, we will have to rule out things like $2 = 37 × 42$.\nWe will do this by proving that any factor of $2$ is at most $2$,\nwhich we will do using this lemma. The proof I have in mind manipulates the hypothesis\nuntil it becomes the goal, using `mul_left_ne_zero`, `one_le_of_ne_zero` and\n`mul_le_mul_right`.": "在质数世界中,我们将证明 $2$ 是质数。为此,我们必须排除像 $2 ≠ 37 × 42$ 这样的情况。\n我们将通过证明 $2$ 的任何因数最多是 $2$ 来做到这一点,我们将使用这个引理来实现。\n我脑海中的证明会操作假设,直到它变成目标,几乎使用我们到目前为止在这个世界中已经证明的所有内容。", "On the set of natural numbers, addition is commutative.\nIn other words, if `a` and `b` are arbitrary natural numbers, then\n$a + b = b + a$.": "在自然数集上,加法是可交换的。\n换句话说,如果 `a` 和 `b` 是任意自然数,那么\n$a + b = b + a$。", @@ -505,6 +505,8 @@ "我的证明:\n```\ncases h with d hd\nuse d * t\nrw [hd, add_mul]\nrfl\n```", "Multiplication usually makes a number bigger, but multiplication by zero can make\nit smaller. Thus many lemmas about inequalities and multiplication need the\nhypothesis `a ≠ 0`. Here is a key lemma that enables us to use this hypothesis.\nTo help us with the proof, we can use the `tauto` tactic. Click on the tactic's name\non the right to see what it does.": "乘法通常会使一个数字变大,但是乘以零可以使它变小。因此,关于不等式和乘法的许多引理需要假设 `a ≠ 0`。\n这里有一个关键的引理使我们能够使用这个假设。我们可以使用 `tauto` 策略帮助我们进行证明。点击右侧的策略名称查看它的作用。", + "Multiplication is distributive over addition.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": + "乘法对加法有分配律。换句话说,对于所有自然数 $a$、$b$ 和 $c$,\n我们有 $(a + b) \\times c = ac + bc$。", "Multiplication is distributive over addition on the left.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$a(b + c) = ab + ac$.": "乘法对左边的加法具有分配性。\n换句话说,对于所有自然数 $a$、$b$ 和 $c$,我们有\n$a(b + c) = ab + ac$。", "Multiplication is commutative.": "乘法是可交换的。", @@ -562,7 +564,7 @@ "在这个游戏中,你将根据皮亚诺公理重新构建自然数集 $\\mathbb{N}$,学习在 Lean 中证明定理的基础知识。\n\n这是对 Lean 的一个很好的初步介绍!", "In the next level, we'll do the same proof but backwards.": "在下一级别中,我们将进行相同的证明,但要从后往前证。", - "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n command line mode).": + "In the last level, we manipulated the hypothesis `x + 1 = 4`\n until it became the goal `x = 3`. In this level we'll manipulate\n the goal until it becomes our hypothesis! In other words, we\n will \"argue backwards\". The `apply` tactic can do this too.\n Again I will walk you through this one (assuming you're in\n \"Typewriter mode\").": "在最后一关,我们操纵了假设 `x + 1 = 4`\n 直到成为目标 `x = 3` 。在这一关我们将改写\n 目标,直到它成为我们的假设!换句话说,我们\n 会“从后向前”证明。 `apply` 策略也可以做到这一点。\n 我将再次引导您完成这一过程(假设您在\n 命令行模式)。", "In the \"base case\" we have a hypothesis `ha : 0 ≠ 0`, and you can deduce anything\nfrom a false statement. The `tauto` tactic will close this goal.": "在“基础情形”中,我们有一个假设 `ha : 0 ≠ 0`,你可以从一个假命题中推导出任何东西。`tauto` 策略将证明这个目标。", @@ -710,9 +712,9 @@ "Fermat's Last Theorem": "费马大定理", "Every number in Lean is either $0$ or a successor. We know how to add $0$,\nbut we need to figure out how to add successors. Let's say we already know\nthat `37 + d = q`. What should the answer to `37 + succ d` be? Well,\n`succ d` is one bigger than `d`, so `37 + succ d` should be `succ q`,\nthe number one bigger than `q`. More generally `x + succ d` should\nbe `succ (x + d)`. Let's add this as a lemma.\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\nIf you ever see `... + succ ...` in your goal, `rw [add_succ]` is\nnormally a good idea.\n\nLet's now prove that `succ n = n + 1`. Figure out how to get `+ succ` into\nthe picture, and then `rw [add_succ]`. Switch between the `+` (addition) and\n`012` (numerals) tabs under \"Theorems\" on the right to\nsee which proofs you can rewrite.": "Lean 中的每个数字要么是 $0$ 要么是后继数。我们已经知道如何加 $0$,\n我们还需要弄清楚如何添加后继数。假设我们已经知道\n`37 + d = q`。 `37 + succ d` 的答案应该是什么?\n`succ d` 比 `d` 大1,因此 `37 + succ d` 应该是 `succ q`,\n也就是比 `q` 大1。更一般地说,`x + succ d` 应该\n为 `succ (x + d)`。让我们将其添加为定理。\n\n* `add_succ x d : x + succ d = succ (x + d)`\n\n如果您在证明目标中看到 `... + succ ...`,那么用 `rw [add_succ]` 改写\n通常是个好主意。\n\n现在让我们证明 `succ n = n + 1`。弄清楚如何引入 `+ succ` \n,然后再 `rw [add_succ]`。在右侧“定理”下的 `+`(加法)和\n `012`(数字)选项卡里\n看看你可以用哪些证明重写目标。\n\n在 Lean 中,每个数字要么是 $0$,要么是某个数字的后继数。我们已经掌握了如何加上 $0$,下一步需要明白如何加上后继数。设想我们已经知道 `37 + d = q`。那么 `37 + succ d` 应该是什么呢?由于 `succ d` 比 `d` 多 $1$,所以 `37 + succ d` 应该等于 `succ q`,也就是 `q` 加 $1$。更一般地,`x + succ d` 应等于 `succ (x + d)`。我们把这个规则加为一个引理:\n\n- `add_succ x d : x + succ d = succ (x + d)`\n\n当你在证明目标中遇到 `... + succ ...` 形式时,使用 `rw [add_succ]` 来重写通常是一个好策略。\n\n现在,让我们来证明 `succ n = n + 1`。思考如何先引入 `+ succ` 形式,然后再应用 `rw [add_succ]` 策略。请在右侧“定理”部分的 `+`(代表加法)和 `012`(代表数字)标签页中查找可以用来重写目标的定理。", - "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet.": + "Do that again!\n\n`rw [zero_add] at «{h}»` tries to fill in\nthe arguments to `zero_add` (finding `«{x}»`) then it replaces all occurrences of\n`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet.": "再做一次!\n\n`rw [zero_add] at «{h}»` 试图填充 `zero_add` 的参数(找到 `«{x}»`),然后替换它找到的所有 `0 + «{x}»` 出现的地方。因此,`0 + «{y}»`还没有被重写 。", - "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into editor mode by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to command line mode.\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": + "Did you use induction on `y`?\nHere's a two-line proof of `add_left_eq_self` which uses `add_right_cancel`.\nIf you want to inspect it, you can go into \"Editor mode\" by clicking `` in the top right\nand then just cut and paste the proof and move your cursor around it\nto see the hypotheses and goal at any given point\n(although you'll lose your own proof this way). Click `>_` to get\nback to \"Typewriter mode\".\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```": "你是否对 `y` 使用了归纳法?\n这里有一个使用 `add_right_cancel` 证明 `add_left_eq_self`的两行证明。如果你想查看它,你可以通过点击右上角的 `` 进入编辑器模式,然后只需剪切和粘贴证明,并在其周围移动你的光标,以查看在任何给定点的假设和目标(尽管这样做你会失去自己的证明)。点击 `>_` 返回命令行模式。\n```\nnth_rewrite 2 [← zero_add y]\nexact add_right_cancel x 0 y\n```", "Dealing with `or`": "处理 `or`", "Congratulations! You've finished Algorithm World. These algorithms\nwill be helpful for you in Even-Odd World (when someone gets around to\nimplementing it).": @@ -751,8 +753,6 @@ "Advanced Addition World": "高级加法世界", "Advanced *Addition* World proved various implications\ninvolving addition, such as `x + y = 0 → x = 0` and `x + y = x → y = 0`.\nThese lemmas were used to prove basic facts about ≤ in ≤ World.\n\nIn Advanced Multiplication World we prove analogous\nfacts about multiplication, such as `x * y = 1 → x = 1`, and\n`x * y = x → y = 1` (assuming `x ≠ 0` in the latter result). This will prepare\nus for Divisibility World.\n\nMultiplication World is more complex than Addition World. In the same\nway, Advanced Multiplication world is more complex than Advanced Addition\nWorld. One reason for this is that certain intermediate results are only\ntrue under the additional hypothesis that one of the variables is non-zero.\nThis causes some unexpected extra twists.": "高级 *加法* 世界证明了涉及加法的各种引理,例如 `x + y = 0 → x = 0` 和 `x + y = x → y = 0`。这些引理被用来证明 ≤ 世界中关于 ≤ 的基本事实。\n\n在高级乘法世界中,我们证明了关于乘法的类似事实,例如 `x * y = 1 → x = 1`,以及 `x * y = x → y = 1`(在后一个结果中假设 `x ≠ 0`)。这将为我们进入可除性世界做准备。\n\n乘法世界比加法世界更为复杂。同样,高级乘法世界比高级加法世界更为复杂。其中一个原因是某些中间结果只在额外假设下为真,即变量之一非零。这导致了一些意想不到的转折。", - "Addition is distributive over multiplication.\nIn other words, for all natural numbers $a$, $b$ and $c$, we have\n$(a + b) \\times c = ac + bc$.": - "加法和乘法有分配律。换句话说,对于所有自然数 $a$、$b$ 和 $c$,\n我们有 $(a + b) \\times c = ac + bc$。", "Addition World": "加法世界", "Adding zero": "加零", "A two-line proof is\n\n```\nnth_rewrite 2 [← mul_one a] at h\nexact mul_left_cancel a b 1 ha h\n```\n\nWe now have all the tools necessary to set up the basic theory of divisibility of naturals.": @@ -771,8 +771,8 @@ "2 + 2 ≠ 5": "2 + 2 ≠ 5", "1 ≠ 0": "1 ≠ 0", "0 ≤ x": "0 ≤ x", - "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://github.com/ImperialCollegeLondon/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": - "*游戏版本:4.2*\n\n*最近新增:不等式世界,算法世界*\n\n## 进度保存\n\n游戏会将你的进度存储在本地浏览器存储中。\n如果你删除它,你的进度将会丢失!\n\n警告:在大多数浏览器中,删除 cookie 也会清除本地存储(或“本地网站数据”)。确保首先下载你的游戏进度!\n\n## 致谢\n\n* **创建者:** Kevin Buzzard, Jon Eugster\n* **原始 Lean3 版本:** Kevin Buzzard, Mohammad Pedramfar\n* **游戏引擎:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **额外关卡:** Sian Carey, Ivan Farabella, Archie Browne.\n* **特别感谢:** 所有学生测试者,所有邀请 Kevin 发表演讲的学校,以及向他提出关于材料问题的所有学生。\n\n## 资源\n\n* [Lean Zulip 聊天](https://leanprover.zulipchat.com/) 论坛\n* [原始 Lean3 版本](https://github.com/ImperialCollegeLondon/natural_number_game/)(不再维护)\n\n## 有问题吗?\n\n请在 [Lean Zulip 聊天](https://leanprover.zulipchat.com/) 论坛提出关于这个游戏的任何问题,例如在 “新成员” 流中。社区会乐意帮忙。请注意,Lean Zulip 聊天是一个专业研究论坛。请使用您的全名,保持话题相关,且友好。如果你正在寻找一个不那么正式的地方(例如,你想发布自然数游戏的表情包),那么可以前往 [Lean Discord](https://discord.gg/WZ9bs9UCvx)。\n\n另外,如果你遇到问题/漏洞,你也可以在 github 上提出问题:\n\n* 对于游戏引擎的问题,请在 [lean4game](https://github.com/leanprover-community/lean4game/issues) 仓库提出问题。\n* 对于游戏内容的问题,请在 [NNG](https://github.com/hhu-adam/NNG4/issues) 仓库提出问题。", + "*Game version: 4.3*\n\n*Recent additions: bug fixes*\n\n## Progress saving\n\nThe game stores your progress in your local browser storage.\nIf you delete it, your progress will be lost!\n\nWarning: In most browsers, deleting cookies will also clear the local storage\n(or \"local site data\"). Make sure to download your game progress first!\n\n## Credits\n\n* **Creators:** Kevin Buzzard, Jon Eugster\n* **Original Lean3-version:** Kevin Buzzard, Mohammad Pedramfar\n* **Game Engine:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **Additional levels:** Sian Carey, Ivan Farabella, Archie Browne.\n* **Additional thanks:** All the student beta testers, all the schools\nwho invited Kevin to speak, and all the schoolkids who asked him questions\nabout the material.\n\n## Resources\n\n* The [Lean Zulip chat](https://leanprover.zulipchat.com/) forum\n* [Original Lean3 version](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/) (no longer maintained)\n\n## Problems?\n\nPlease ask any questions about this game in the\n[Lean Zulip chat](https://leanprover.zulipchat.com/) forum, for example in\nthe stream \"New Members\". The community will happily help. Note that\nthe Lean Zulip chat is a professional research forum.\nPlease use your full real name there, stay on topic, and be nice. If you're\nlooking for somewhere less formal (e.g. you want to post natural number\ngame memes) then head on over to the [Lean Discord](https://discord.gg/WZ9bs9UCvx).\n\nAlternatively, if you experience issues / bugs you can also open github issues:\n\n* For issues with the game engine, please open an\n[issue at the lean4game](https://github.com/leanprover-community/lean4game/issues) repo.\n* For issues about the game's content, please open an\n[issue at the NNG](https://github.com/hhu-adam/NNG4/issues) repo.": + "*游戏版本:4.2*\n\n*最近新增:不等式世界,算法世界*\n\n## 进度保存\n\n游戏会将你的进度存储在本地浏览器存储中。\n如果你删除它,你的进度将会丢失!\n\n警告:在大多数浏览器中,删除 cookie 也会清除本地存储(或“本地网站数据”)。确保首先下载你的游戏进度!\n\n## 致谢\n\n* **创建者:** Kevin Buzzard, Jon Eugster\n* **原始 Lean3 版本:** Kevin Buzzard, Mohammad Pedramfar\n* **游戏引擎:** Alexander Bentkamp, Jon Eugster, Patrick Massot\n* **额外关卡:** Sian Carey, Ivan Farabella, Archie Browne.\n* **特别感谢:** 所有学生测试者,所有邀请 Kevin 发表演讲的学校,以及向他提出关于材料问题的所有学生。\n\n## 资源\n\n* [Lean Zulip 聊天](https://leanprover.zulipchat.com/) 论坛\n* [原始 Lean3 版本](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/)(不再维护)\n\n## 有问题吗?\n\n请在 [Lean Zulip 聊天](https://leanprover.zulipchat.com/) 论坛提出关于这个游戏的任何问题,例如在 “新成员” 流中。社区会乐意帮忙。请注意,Lean Zulip 聊天是一个专业研究论坛。请使用您的全名,保持话题相关,且友好。如果你正在寻找一个不那么正式的地方(例如,你想发布自然数游戏的表情包),那么可以前往 [Lean Discord](https://discord.gg/WZ9bs9UCvx)。\n\n另外,如果你遇到问题/漏洞,你也可以在 github 上提出问题:\n\n* 对于游戏引擎的问题,请在 [lean4game](https://github.com/leanprover-community/lean4game/issues) 仓库提出问题。\n* 对于游戏内容的问题,请在 [NNG](https://github.com/hhu-adam/NNG4/issues) 仓库提出问题。", "$x=37\\implies x=37$.": "$x=37\\implies x=37$ 。", "$x+y=x\\implies y=0$.": "$x+y=x\\implies y=0$.", "$x+1=y+1 \\implies x=y$.": "$x+1=y+1\\implies x=y$。", @@ -840,4 +840,4 @@ "# Overview\n\nOur home-made tactic `simp_add` will solve arbitrary goals of\nthe form `a + (b + c) + (d + e) = e + (d + (c + b)) + a`.": "## 概述\n\n我们自制的策略 `simp_add` 将解决以下形式的任意目标:\n `a + (b + c) + (d + e) = e + (d + (c + b)) + a`。", "# Overview\n\nLean's simplifier, `simp`, will rewrite every lemma\ntagged with `simp` and every lemma fed to it by the user, as much as it can.\nFurthermore, it will attempt to order variables into an internal order if fed\nlemmas such as `add_comm`, so that it does not go into an infinite loop.": - "## 概述\n\nLean 的简化器 `simp` 将它将用每个用户提供给它的引理\n以及所有标记为 `simp` 的引理重写目标。\n此外,如果提供了如`add_comm`这样的引理,它将尝试将对变量排序,以避免陷入无限循环。"} + "## 概述\n\nLean 的简化器 `simp` 将它将用每个用户提供给它的引理\n以及所有标记为 `simp` 的引理重写目标。\n此外,如果提供了如`add_comm`这样的引理,它将尝试将对变量排序,以避免陷入无限循环。"} \ No newline at end of file diff --git a/.i18n/zh/Game.po b/.i18n/zh/Game.po index 7e81b4e2..ea0adea3 100644 --- a/.i18n/zh/Game.po +++ b/.i18n/zh/Game.po @@ -501,7 +501,7 @@ msgstr "" msgid "" "One day this game will have a Prime Number World, with a final boss\n" "of proving that $2$ is prime.\n" -"To do this, we will have to rule out things like $2 = 37 × 42.$\n" +"To do this, we will have to rule out things like $2 = 37 × 42$.\n" "We will do this by proving that any factor of $2$ is at most $2$,\n" "which we will do using this lemma. The proof I have in mind manipulates the " "hypothesis\n" @@ -747,7 +747,7 @@ msgid "" "`rw [zero_add] at «{h}»` tries to fill in\n" "the arguments to `zero_add` (finding `«{x}»`) then it replaces all " "occurrences of\n" -"`0 + «{x}»` it finds. Therefor, it did not rewrite `0 + «{y}»`, yet." +"`0 + «{x}»` it finds. Therefore, it did not rewrite `0 + «{y}»`, yet." msgstr "" "再做一次!\n" "\n" @@ -1023,11 +1023,11 @@ msgstr "`mul_zero m` 是 `m * 0 = 0` 的证明。" #: Game.Levels.Multiplication.L08add_mul msgid "" -"Addition is distributive over multiplication.\n" +"Multiplication is distributive over addition.\n" "In other words, for all natural numbers $a$, $b$ and $c$, we have\n" "$(a + b) \\times c = ac + bc$." msgstr "" -"加法和乘法有分配律。换句话说,对于所有自然数 $a$、$b$ 和 $c$,\n" +"乘法对加法有分配律。换句话说,对于所有自然数 $a$、$b$ 和 $c$,\n" "我们有 $(a + b) \\times c = ac + bc$。" #: Game.Levels.Implication.L09zero_ne_succ @@ -3968,7 +3968,7 @@ msgid "" " the goal until it becomes our hypothesis! In other words, we\n" " will \"argue backwards\". The `apply` tactic can do this too.\n" " Again I will walk you through this one (assuming you're in\n" -" command line mode)." +" \"Typewriter mode\")." msgstr "" "在最后一关,我们操纵了假设 `x + 1 = 4`\n" " 直到成为目标 `x = 3` 。在这一关我们将改写\n" @@ -4432,8 +4432,8 @@ msgid "" "We have seen how to `apply` theorems and assumptions\n" "of the form `P → Q`. But what if our *goal* is of the form `P → Q`?\n" "To prove this goal, we need to know how to say \"let's assume `P` and deduce " -"`Q`\"\n" -"in Lean. We do this with the `intro` tactic." +"`Q`\".\n" +"In Lean, we do this with the `intro` tactic." msgstr "" "我们已经看到了如何 `apply` 形式为 `P → Q` 的定理和假设。\n" "但如果我们的 *目标* 是形式为 `P → Q` 的呢?\n" @@ -4560,8 +4560,8 @@ msgstr "如果 $x$ 是自然数,则 $x \\le \\operatorname{succ}(x)$。" #: Game.Levels.Addition.L02succ_add msgid "" -"Well done! You now have enough tools to tackle the main boss of this level." -msgstr "做得好!现在你有足够的工具来对付这个关卡的大Boss了。" +"Well done! You now have enough tools to tackle the main boss of this world." +msgstr "做得好!现在你有足够的工具来对付这个世界的大Boss了。" #: Game.Levels.Multiplication.L04mul_comm msgid "Multiplication is commutative." @@ -5000,12 +5000,12 @@ msgid "" "Did you use induction on `y`?\n" "Here's a two-line proof of `add_left_eq_self` which uses " "`add_right_cancel`.\n" -"If you want to inspect it, you can go into editor mode by clicking `` in " +"If you want to inspect it, you can go into \"Editor mode\" by clicking `` in " "the top right\n" "and then just cut and paste the proof and move your cursor around it\n" "to see the hypotheses and goal at any given point\n" "(although you'll lose your own proof this way). Click `>_` to get\n" -"back to command line mode.\n" +"back to \"Typewriter mode\".\n" "```\n" "nth_rewrite 2 [← zero_add y]\n" "exact add_right_cancel x 0 y\n" diff --git a/Game.lean b/Game.lean index a7d76da6..e3dbd4f0 100644 --- a/Game.lean +++ b/Game.lean @@ -102,7 +102,7 @@ Alternatively, if you experience issues / bugs you can also open github issues: -- Dependency Implication → Power -- `Power` uses `≠` which is introduced in `Implication` /-! Information to be displayed on the servers landing page. -/ -Languages "en" "zh" "uk" "it" "fr" +Languages "en" "zh" "uk" "it" "fr" "de" CaptionShort "The classical introduction game for Lean." CaptionLong "In this game you recreate the natural numbers $\\mathbb{N}$ from the Peano axioms, learning the basics about theorem proving in Lean.