import Adam.Metadata import Mathlib.Data.Nat.Prime import Std.Tactic.RCases import Mathlib.Tactic.LeftRight import Mathlib.Tactic.Contrapose import Mathlib.Tactic.Use import Mathlib.Tactic.Ring -- import Data.Nat.Prime import Adam.ToBePorted Game "Adam" World "Prime" Level 2 Title "Primzahlen" Introduction " Als nächstes Begnet ihr einem Lehrer, der nachdenkend an der Sonne sitzt. **Lehrer**: Sagt mal, mich hat heute einer meiner Schüler was gefragt, und ich glaube einfach, der ist in so jungen Jahren bereits schlauer als ich. Hier etwas Kontext: " Statement (p : ℕ) (h : Nat.Prime p) : ∀ (x : ℕ), (x ∣ p) → x = 1 ∨ x = p := by Hint "**Du**: Die einzigen Teiler einer Primzahl sind `1` und `p`, ist das nicht eine der möglichen Definitionen über `ℕ`? **Robo**: Doch, oder zumindest fast. Du kannst du mit `rw` und `Nat.prime_def_lt''` eine der Definitionen für `Nat.Prime` einsetzen **Du** Könnte ich nicht einfach `unfold Nat.Prime` sagen um mir das anzuschauen. **Robo**: Bloss nicht. Das ist so eine Definition, in die du besser nicht hineinschaust! `Nat.Prime p` ist als `Irreducible p` definiert, was wiederum anhand von Einheiten definiert ist… Da verlieren wir uns in Definition die wir im Moment gar nicht brauchen." rw [Nat.prime_def_lt''] at h rcases h with ⟨_, h₂⟩ assumption NewLemma Nat.prime_def_lt'' Conclusion "**Du**: Ich sehe, meine \"Definition\" hätte auch `1` als Primzahl deklariert. Gut, dass wir das überprüft haben. **Lehrer**: Und jetzt kommen wir zu dem, was mir Kopfschmerzen bereitet."