|
|
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."
|