import TestGame.Metadata import Mathlib.Tactic.Ring --set_option tactic.hygienic false Game "TestGame" World "Predicate" Level 1 Title "Natürliche Zahlen" Introduction " Wir sind den narürlichen Zahlen `ℕ` (`\\N`) schon kurz begegnet. Gleichungen, die nur die Operationen `+, -, *, ^` (Addition, Subtraktion, Multiplikation, Potenz) und Variablen enthalten, kann Lean mit der Taktik `ring` beweisen. Diese Taktik funktioniert nicht nur über den natürlichen Zahlen, sondern auch in (kommutativen) Gruppen, Ringen, und Körpern. Sie heisst `ring`, weil sie für Ringe entwickelt wurde. (Note: Division `/` ignorieren wir hier erst einmal, weil diese auf `ℕ` nicht kanonisch definiert ist.) " Statement "Zeige $(x + y) ^ 2 = x ^ 2 + 2 * x * y + y ^ 2$." (x y : ℕ) : (x + y) ^ 2 = x ^ 2 + 2 * x * y + y ^ 2 := by ring HiddenHint (x : ℕ) (y : ℕ) : (x + y) ^ 2 = x ^ 2 + 2 * x * y + y ^ 2 => "`ring` übernimmt den ganzen Spaß." Conclusion " Die Taktik heisst übrigens `ring` weil sie dafür entwickelt wurde, Gleichungen in einem abstrakten Ring zu lösen, funktioniert aber auch auf `ℕ`, auch wenn dieses kein Ring ist (erst `ℤ` ist ein Ring). " NewTactics ring #eval 4 / 6