nothin of importance
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import TestGame.Metadata
|
||||
import Mathlib.Data.Nat.Prime
|
||||
|
||||
import Std.Tactic.RCases
|
||||
import Mathlib.Tactic.LeftRight
|
||||
import Mathlib.Tactic.Contrapose
|
||||
import Mathlib.Tactic.Use
|
||||
import Mathlib.Tactic.Ring
|
||||
|
||||
-- import Data.Nat.Prime
|
||||
|
||||
import TestGame.ToBePorted
|
||||
|
||||
Game "TestGame"
|
||||
World "Prime"
|
||||
Level 2
|
||||
|
||||
Title "Primzahlen"
|
||||
|
||||
Introduction
|
||||
"
|
||||
Als nächstes Begnet ihr einem Lehrer, der nachdenkend an der Sonne sitzt.
|
||||
|
||||
**Lehrer**: Sagt mal, mich hat heute einer meiner Schüler was gefragt,
|
||||
und ich glaube einfach, der ist in so jungen Jahren bereits schlauer als ich.
|
||||
|
||||
Hier etwas Kontext:
|
||||
"
|
||||
|
||||
Statement (p : ℕ) (h : Nat.Prime p) : ∀ (x : ℕ), (x ∣ p) → x = 1 ∨ x = p := by
|
||||
Hint "**Du**: Die einzigen Teiler einer Primzahl sind `1` und `p`, ist das
|
||||
nicht eine der möglichen Definitionen über `ℕ`?
|
||||
|
||||
**Robo**: Doch, oder zumindest fast.
|
||||
Du kannst du mit `rw` und `Nat.prime_def_lt''` eine der Definitionen für `Nat.Prime` einsetzen
|
||||
|
||||
**Du** Könnte ich nicht einfach `unfold Nat.Prime` sagen um mir das anzuschauen.
|
||||
|
||||
**Robo**: Bloss nicht. Das ist so eine Definition, in die du besser nicht hineinschaust!
|
||||
`Nat.Prime p` ist als `Irreducible p` definiert, was wiederum anhand von Einheiten
|
||||
definiert ist… Da verlieren wir uns in Definition die wir im Moment gar nicht brauchen."
|
||||
rw [Nat.prime_def_lt''] at h
|
||||
rcases h with ⟨_, h₂⟩
|
||||
assumption
|
||||
|
||||
NewLemma Nat.prime_def_lt''
|
||||
|
||||
Conclusion "**Du**: Ich sehe, meine \"Definition\" hätte auch `1` als Primzahl deklariert. Gut,
|
||||
dass wir das überprüft haben.
|
||||
|
||||
**Lehrer**: Und jetzt kommen wir zu dem, was mir Kopfschmerzen bereitet."
|
||||
@@ -0,0 +1,41 @@
|
||||
import TestGame.Metadata
|
||||
import Mathlib.Data.Nat.Prime
|
||||
|
||||
import Std.Tactic.RCases
|
||||
import Mathlib.Tactic.LeftRight
|
||||
import Mathlib.Tactic.Contrapose
|
||||
import Mathlib.Tactic.Use
|
||||
import Mathlib.Tactic.Ring
|
||||
|
||||
import TestGame.ToBePorted
|
||||
|
||||
Game "TestGame"
|
||||
World "Prime"
|
||||
Level 3
|
||||
|
||||
Title "Primzahlen"
|
||||
|
||||
Introduction
|
||||
"
|
||||
Der Lehrer erklärt sein Problem.
|
||||
|
||||
**Lehrer**: Und dann fragte der Schüler, wie man denn folgendes herleitet.
|
||||
Und dabei ist das weit über seiner Altersstufe!
|
||||
"
|
||||
|
||||
Statement
|
||||
(p : ℕ) (h₂ : 2 ≤ p): Nat.Prime p ↔ ∀ (a b : ℕ), p ∣ a * b → p ∣ a ∨ p ∣ b := by
|
||||
Hint "**Du**: Naja, mal schauen wie weit man mit `intro` und `constructor` kommt…"
|
||||
constructor
|
||||
intro h a b
|
||||
Hint "**Robo**: Stop! Hier helfe ich dir etwas"
|
||||
apply (Nat.Prime.dvd_mul h).mp
|
||||
intro h
|
||||
rw [Nat.prime_iff]
|
||||
unfold Prime
|
||||
rw [Nat.isUnit_iff, ←and_assoc]
|
||||
constructor
|
||||
constructor
|
||||
linarith
|
||||
linarith
|
||||
assumption
|
||||
Reference in New Issue
Block a user