Exact divisors of a natural number #
Q is an exact divisor of N when Q ∣ N and Q is coprime to the complementary divisor
N / Q; equivalently, N = Q · M with Q and M sharing no prime. Such a Q collects the
full power of each prime it contains, so the exact divisors of N are exactly the products of
the maximal prime powers p ^ (N.factorization p), and they form a Boolean algebra under the
subsets of N.primeFactors. The notion is also called a unitary or Hall divisor.
The classical notation is Q ‖ N, which cannot be used here: ‖ ‖ is norm notation, and in the
same corner of the library p ^ r ‖ n means exact p-adic divisibility — that r is the full
exponent of p, a statement about the pair (p, r) rather than about the single number p ^ r.
The notation introduced instead is Q ∥ N, with the parallel bars ∥ in place of the double
vertical line ‖; it is scoped, so it never competes with the ∥ of AffineSubspace.Parallel.
Main definitions #
TauCeti.Nat.IsExactDivisor: the predicate itself.TauCeti.Nat.ExactDivisor: the exact divisors of a fixedN, bundled as a commutative group whose multiplication is symmetric difference.TauCeti.Nat.prodPrimePow: the exact divisor∏ p ∈ s, p ^ v_p(N)cut out by a setsof primes ofN.TauCeti.Nat.ExactDivisor.primeFactorsEquiv: the identification of the exact divisors ofNwith the subsets ofN.primeFactors.
Notation #
Q ∥ NforTauCeti.Nat.IsExactDivisor Q N, in theTauCeti.ExactDivisorscope.
Main results #
TauCeti.Nat.isExactDivisor_iff: the predicate unfolded to its two conditions.TauCeti.Nat.IsExactDivisor.div: forN ≠ 0the complementary divisorN / Qis exact too.TauCeti.Nat.IsExactDivisor.ne_zero: an exact divisor is nonzero. There is no exact divisor0, becauseNat.Coprime 0 0is false.TauCeti.Nat.isExactDivisor_one,TauCeti.Nat.isExactDivisor_self:1and (forN ≠ 0)Nitself.TauCeti.Nat.IsExactDivisor.mul: coprime exact divisors multiply to an exact divisor, so the exact divisors ofNare closed under coprime products.TauCeti.Nat.isExactDivisor_iff_factorization: exactness read on the factorization — at every prime the exponent ofQis either0or the full exponent ofN.TauCeti.Nat.IsExactDivisor.gcd,TauCeti.Nat.IsExactDivisor.div_gcd,TauCeti.Nat.IsExactDivisor.coprime_div_gcd: the Boolean-algebra structure, in the form the Atkin–Lehner group law needs —gcd Q RandQ / gcd Q Rare again exact divisors, and the second is coprime toR.TauCeti.Nat.IsExactDivisor.mul_div_gcd_sq:Q * R / gcd (Q, R) ^ 2— the symmetric difference ofQandR— is an exact divisor too.TauCeti.Nat.ExactDivisor.val_mul: multiplication in the bundled group has underlying valueQ * R / gcd (Q, R) ^ 2.TauCeti.Nat.isExactDivisor_prodPrimePow,TauCeti.Nat.primeFactors_prodPrimePow,TauCeti.Nat.IsExactDivisor.prodPrimePow_primeFactors: a subset ofN.primeFactorscuts out an exact divisor with exactly those prime factors, and every exact divisor arises this way — the prime-power generation of the family, bundled asTauCeti.Nat.ExactDivisor.primeFactorsEquiv.TauCeti.Nat.isExactDivisor_primePow: the maximal prime powersp ^ v_p(N)are exact divisors.TauCeti.Nat.coprime_primePow_prodPrimePow:p ^ v_p(N)is prime to∏ q ∈ s, q ^ v_q(N)forp ∉ s.
Q is an exact divisor of N: it divides N and is coprime to the complementary
divisor N / Q. Written Q ‖ N in the literature and Q ∥ N here; see the module docstring for
the change of bars.
An exact divisor is a divisor.
An exact divisor is coprime to its complementary divisor.
Instances For
Q is an exact divisor of N: it divides N and is coprime to the complementary
divisor N / Q. Written Q ‖ N in the literature and Q ∥ N here; see the module docstring for
the change of bars.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An exact divisor is nonzero. 0 is only a divisor of 0, whose complementary divisor is
again 0, and Nat.Coprime 0 0 is false.
An exact divisor is positive.
The defining conditions of an exact divisor, as a rewrite rule.
The complementary divisor is exact. For N ≠ 0, N / Q is again an exact divisor of N,
whose own complement is Q again (Nat.div_div_self). At N = 0 this fails: 1 is an exact
divisor of 0, but 0 / 1 = 0 is not.
1 is an exact divisor of every N.
A nonzero N is an exact divisor of itself: the complementary divisor is 1. This is the
case of the Fricke operator inside the Atkin–Lehner family.
Coprime exact divisors multiply. The exact divisors of N are therefore closed under
coprime products, which is how the family generated by the maximal prime powers of N is built
up.
The Boolean-algebra structure #
The only exact divisor of 0 is 1. The complementary divisor of Q in 0 is 0
again, and Nat.Coprime Q 0 says Q = 1. This is what lets the closure properties below carry
no N ≠ 0 hypothesis.
Exactness, read on the factorization. For N ≠ 0, a divisor Q of N is exact exactly
when at every prime its exponent is either 0 or the full exponent of N. In this form the
closure properties below become statements about the exponents of gcd and of a quotient, namely
about min and truncated subtraction.
Exact divisors are closed under gcd. At each prime the exponent of gcd Q R is the
minimum of two exponents each of which is 0 or the full exponent of N.
The quotient of an exact divisor by a gcd with another one is exact. At each prime the
exponent of Q / gcd Q R is 0 unless Q carries the full exponent of N there and R carries
none, in which case it is again that full exponent.
Q / gcd Q R is coprime to R. A prime dividing the quotient carries the full exponent
of N in Q and none of it in R; this is the step where the exactness of both divisors is
used, and it fails for divisors in general (Q = 4, R = 2).
The symmetric difference of two exact divisors is exact. Q * R / gcd (Q, R) ^ 2 is the
product of the coprime exact divisors Q / gcd (Q, R) and R / gcd (Q, R); under the
identification of exact divisors with subsets of N.primeFactors it is the symmetric difference,
which is why it is the composition law of the Atkin–Lehner family.
Exact divisors from sets of primes #
The exact divisor of N supported on a set of primes: the product
∏ p ∈ s, p ^ v_p(N) of the maximal prime powers of N at the primes of s. For
s ⊆ N.primeFactors this is the exact divisor of N whose prime factors are exactly s
(TauCeti.Nat.isExactDivisor_prodPrimePow, TauCeti.Nat.primeFactors_prodPrimePow), and every
exact divisor arises this way (TauCeti.Nat.IsExactDivisor.prodPrimePow_primeFactors).
Equations
- TauCeti.Nat.prodPrimePow N s = ∏ p ∈ s, p ^ N.factorization p
Instances For
The empty set cuts out the exact divisor 1.
Adjoining a prime multiplies by its maximal power: ∏ p ∈ insert q s, p ^ v_p(N) is
q ^ v_q(N) times the product over s, for q ∉ s.
The exponents of ∏ p ∈ s, p ^ v_p(N): the full exponent of N at the primes of s,
and 0 elsewhere.
A finite set cuts out an exact divisor. Indices outside N.primeFactors have exponent
zero and contribute 1, while the remaining product consists of maximal prime powers of N.
The prime factors of ∏ p ∈ s, p ^ v_p(N) are s, so distinct subsets of
N.primeFactors cut out distinct exact divisors.
The maximal prime powers are exact divisors. This also holds when the exponent is zero,
in which case the power is 1. These generate the family: every exact divisor is a product of
them (TauCeti.Nat.IsExactDivisor.prodPrimePow_primeFactors).
A maximal prime power is prime to the product over the other primes: p ^ v_p(N) is
coprime to ∏ q ∈ s, q ^ v_q(N) for p ∉ s.
An exact divisor of N only involves primes of N.
Every exact divisor is the product of the maximal prime powers it contains: the exponents
of an exact divisor are those of N at the primes dividing it. This is the prime-power generation
of the Atkin–Lehner family.
The exact-divisor group #
The exact divisors of N, bundled as a group. Multiplication is symmetric difference:
the value of Q * R is Q R / gcd(Q, R)². Every element is its own inverse, and the identity is
the exact divisor 1.
- val : ℕ
The underlying natural-number divisor.
- property : IsExactDivisor self.val N
The underlying value is an exact divisor of
N.
Instances For
Two exact divisors are equal when their underlying natural numbers are equal.
Equations
Multiplication of exact divisors is symmetric difference, with underlying value
Q * R / gcd(Q, R) ^ 2.
Inversion is the identity because every exact divisor is self-inverse under symmetric difference.
Equations
- TauCeti.Nat.ExactDivisor.instInv = { inv := id }
The identity exact divisor has underlying value 1.
Every exact divisor is its own inverse.
An exact divisor of N is determined by the set of primes dividing it.
Prime factors turn exact-divisor multiplication into symmetric difference.
Exact divisors form a Boolean commutative group under symmetric-difference multiplication;
the identity is 1 and every element is its own inverse.
Equations
- One or more equations did not get rendered due to their size.
The exact divisors of N are exactly the subsets of N.primeFactors. An exact divisor
goes to the set of primes dividing it, and a subset s comes back as the product
∏ p ∈ s, p ^ v_p(N) of maximal prime powers. Since primeFactors_mul carries multiplication to
symmetric difference and val_inv makes every element its own inverse, this identifies the group
of exact divisors with the Boolean group of subsets of N.primeFactors — abstractly
(ℤ/2) ^ ω(N), generated by the maximal prime powers p ^ v_p(N).
Equations
- One or more equations did not get rendered due to their size.
Instances For
primeFactorsEquiv sends an exact divisor to its set of prime factors.
primeFactorsEquiv recovers an exact divisor from a set of primes as a product of maximal
prime powers.