Supernatural numbers #
A supernatural number, also called a Steinitz number, is a formal product
\prod_p p ^ n_p, where p ranges over the rational primes and every exponent n_p is an
extended natural number. This file realizes supernatural numbers as exponent functions and
equips them with the arithmetic used for orders and indices of profinite groups.
Multiplication adds exponents, divisibility is pointwise comparison, and gcd and lcm are the lattice infimum and supremum. Positive natural numbers embed by their prime factorizations. The finite supernatural numbers are characterized as those with finite support and no infinite exponent.
Main definitions #
Supernatural: supernatural numbers as prime-indexed extended-natural exponent functions.Supernatural.ofFun: the supernatural number with prescribed exponent at each prime.Supernatural.ofNat: the supernatural number attached to a positive natural number.Supernatural.primePower: the supernatural prime powerp ^ n, includingp ^ infinity.Supernatural.primaryPart: thep-primary part of a supernatural number.Supernatural.primeToPart: the prime-to-ppart of a supernatural number.Supernatural.IsNatural: the predicate that a supernatural number comes fromofNat.
References #
This is the Supernatural milestone of Layer 1, "supernatural order and index", of the
human-authored roadmap TauCetiRoadmap/ProfiniteProPGroups/README.md, which asks for
divisibility as pointwise ≤, multiplication as pointwise +, the lattice operations, the
embedding of ℕ+ by prime factorization, the "is a natural number" predicate and the
p-primary and prime-to-p parts, together with an API checklist of the multiplicativity,
injectivity, gcd/lcm and finite-support statements proved below. The type itself is pinned in
that roadmap's Suggested.lean as Supernatural := Nat.Primes → ℕ∞.
The definitions and terminology follow Ribes--Zalesskii, Profinite Groups, Section 2.3.
A supernatural number is a formal product of rational primes with exponents in \mathbb{N}_∞.
This is a separate type, rather than an abbreviation for a function type, because multiplication
of supernatural numbers is pointwise addition of exponents, not the pointwise multiplication a
function type carries. As for Mathlib's Matrix, the body of the synonym is exposed, since the
operations are pointwise operations of the underlying function type and can only be defined, and
their pointwise characterizations only stated, with the synonym transparent. The operations and
instances themselves are opaque and are used through the pointwise lemmas below; ofFun is the
named constructor building a supernatural number from its exponents.
Equations
Instances For
Equations
Two supernatural numbers are equal when all of their prime exponents are equal.
Equations
- One or more equations did not get rendered due to their size.
Equations
- TauCeti.Supernatural.instOne = { one := fun (x : Nat.Primes) => 0 }
Equations
- TauCeti.Supernatural.instMul = { mul := fun (m n : TauCeti.Supernatural) (p : Nat.Primes) => m p + n p }
Equations
- One or more equations did not get rendered due to their size.
Every exponent of the multiplicative unit is zero.
Raising to a natural power multiplies every exponent by that power.
Every exponent of the greatest supernatural number is infinite.
Every exponent of the least supernatural number is zero.
Suprema of supernatural numbers are computed exponentwise.
Infima of supernatural numbers are computed exponentwise.
The multiplicative unit is also the least supernatural number.
Divisibility of supernatural numbers is comparison of every prime exponent.
One supernatural number is at most another exactly when each exponent is at most the corresponding exponent of the other.
A supernatural number divides another exactly when each exponent is at most the corresponding exponent of the other.
The exponent of a supernatural number at a given prime.
Equations
Instances For
The supernatural prime power p ^ n; all exponents away from p are zero.
Equations
Instances For
A prime power determines its exponent: p ^ m = p ^ n forces m = n.
A prime power with a sum of exponents is the product of the two prime powers.
A prime power p ^ m is at most a supernatural number exactly when m is at most its
exponent at p.
Two prime powers at the same prime compare as their exponents do.
Two prime powers at the same prime compare strictly as their exponents do.
A rational prime, regarded as the supernatural number having exponent one at that prime.
Equations
- TauCeti.Supernatural.instCoePrimes = { coe := fun (p : Nat.Primes) => TauCeti.Supernatural.primePower p 1 }
A prime is at most a supernatural number exactly when its exponent there is nonzero.
This is the simp-normal form of coe_prime_dvd_iff, since dvd_iff_le rewrites divisibility
of supernatural numbers to comparison.
A prime divides a supernatural number exactly when its exponent there is nonzero.
The p-primary part of a supernatural number.
Equations
Instances For
The p-primary part of a supernatural number is trivial (equal to ⊥ = 1) exactly when p
does not divide it.
The prime-to-p part of a supernatural number, obtained by deleting its p-exponent.
Equations
- TauCeti.Supernatural.primeToPart p n = Function.update n p 0
Instances For
A supernatural number is the product of its p-primary and prime-to-p parts.
The embedding of positive natural numbers into supernatural numbers by prime factorization.
Equations
- TauCeti.Supernatural.ofNat n p = ↑(padicValNat ↑p ↑n)
Instances For
Prime factorization embeds positive natural numbers injectively into supernatural numbers.
The embedding of positive natural numbers as a multiplicative homomorphism.
Equations
- TauCeti.Supernatural.ofNatMonoidHom = { toFun := TauCeti.Supernatural.ofNat, map_one' := TauCeti.Supernatural.ofNat_one, map_mul' := TauCeti.Supernatural.ofNat_mul }
Instances For
Divisibility of positive natural numbers agrees with comparison of their supernatural images.
This is the simp-normal form of ofNat_dvd_ofNat_iff, since dvd_iff_le rewrites divisibility
of supernatural numbers to comparison.
A supernatural number is natural exactly when it is the image under ofNat of a positive
natural number. This is IsNatural by definition, and is the form downstream files use, since
the body of IsNatural is not exposed.
Every positive natural number gives a natural supernatural number.
The support of a supernatural number is the set of primes having nonzero exponent.
Equations
- n.support = Function.support n
Instances For
A supernatural number comes from a positive natural number exactly when it has finite support and every exponent is finite.
A prime power with infinite exponent is not a natural supernatural number.