You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lean4game/server/testgame/TestGame/Levels/Prime/L04_Prime.lean

46 lines
1.4 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 4
Title "Primzahlen"
Introduction
"
Um zu sagen, dass eine natürliche Zahl $n$ eine Primzahl ist, braucht man
eine Aussage `Nat.Prime n`, ähnlich wie `Even n`.
Primzahlen sind ein Objekt in Lean, das genug abstrakt definiert ist, dass es sich
aus mathematischer Sicht nicht lohnt mit der Definition zu arbeiten.
Alle wichtigen Lemmas um mit Primzahlen zu arbeiten sind in
[`import Data.Nat.Prime`](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Data/Nat/Prime.html)
Insbesondere `Nat.prime_def_lt''` welches die aus der Schule bekannte Definition einer
Primzahl `Prime p ↔ 2 ≤ p ∧ (∀ m, m p → m = 1 m = p)` gibt.
Beachte: In Lean gibt es auch noch den Ausdruck `Prime n`, der beschreibt generelle
Primelemente in einem generellen Ring. Wenn man mit natürlichen
Zahlen arbeitet, ist es besser `Nat.Prime` zu verwenden, obwohl man natürlich zeigen kann
dass die beiden äquivalent sind.
"
Statement
"Zeige dass die einzigen Teiler einer Primzahl $1$ und $p$ sind."
(p : ) (h : Nat.Prime p) : ∀ (x : ), (x p) → x = 1 x = p := by
rw [Nat.prime_def_lt''] at h
rcases h with ⟨_, h₂⟩
assumption
NewLemmas Nat.prime_def_lt''