structure
definition
PrimeLedgerAtom
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.NumberTheory.PrimeLedgerAtom on GitHub at line 19.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
16
17/-- A prime ledger atom is a prime integer together with the irreducibility
18property appropriate to the multiplicative ledger. -/
19structure PrimeLedgerAtom (p : ℕ) : Prop where
20 prime : Nat.Prime p
21 irreduciblePosting : ∀ a b : ℕ, p = a * b → a = 1 ∨ b = 1
22
23/-- Positive integers are the states of the multiplicative integer ledger. -/
24def IntegerLedgerState (n : ℕ) : Prop := 0 < n
25
26/-- A prime number is an irreducible posting of the integer ledger. -/
27theorem prime_is_ledger_atom {p : ℕ} (hp : Nat.Prime p) : PrimeLedgerAtom p where
28 prime := hp
29 irreduciblePosting := by
30 intro a b hab
31 have ha_dvd : a ∣ p := ⟨b, by rw [hab]⟩
32 have ha := hp.eq_one_or_self_of_dvd a ha_dvd
33 rcases ha with ha | ha
34 · exact Or.inl ha
35 · right
36 have hb_eq : p = p * b := by
37 simpa [ha] using hab
38 have hb : p * b = p * 1 := by
39 simpa using hb_eq.symm
40 exact Nat.mul_left_cancel hp.pos hb
41
42/-- Ledger atoms are prime numbers. -/
43theorem ledger_atom_is_prime {p : ℕ} (h : PrimeLedgerAtom p) : Nat.Prime p :=
44 h.prime
45
46/-- Prime-ledger atom iff ordinary primality. -/
47theorem primeLedgerAtom_iff_prime (p : ℕ) :
48 PrimeLedgerAtom p ↔ Nat.Prime p :=
49 ⟨ledger_atom_is_prime, prime_is_ledger_atom⟩