PRINCIPAL — where a quadratic field's first principal prime sits
The object: a quadratic field K = Q(√D), D a fundamental discriminant, and its split primes whose places are principal. This page states how far down the least of them can sit, which the sign of D decides, how a finite cut's split primes depart from their classes' even shares, and at 2-rank 1 which side of the squares the least split place takes. Its engine is principal.py.
An odd prime p with χ_D(p) = +1, χ_D the Kronecker symbol (D/·), splits as P·P̄, and P is principal when P = (α); over a real field that is principal as an ideal (the wide sense) unless the narrow group is named. L₁(D) is the least odd prime with χ_D(p) = +1 and P principal; its P is a principal rank-1 place of least odd norm, and at any principal rank-1 place a greedy walk whose moves must be principal keeps the carrier ladder, climbed through carriers (rank-1 and carrier as CASCADE's lead defines them, the claim at CASCADE: The escape is a conjunction). The principal form of discriminant D is x² + b₀xy + c₀y², b₀ = D mod 2, c₀ = (b₀ − D)/4, and N(x + yω) is its value at (x, y), ω = (b₀ + √D)/2. So P is principal exactly when p or −p is a value of that form, that is when
4p = |u² − D·y²|, u = 2x + b₀y.
The answer: over an imaginary field the form is definite, so a principal prime is at least |D|/4 and, to |D| ≤ 20000, the median least one sits inside the range of the floor |D|/4 over its band (an observation), while over a real field the form is indefinite and there is no floor at all; and over a population of fields the split primes at a finite cut stand above their even shares on the classes that are neither squares nor 2-torsion, by the weight of the prime-ideal powers the count leaves out, which lands almost all on the other classes (a pattern): counting those powers removes 93–104% of that excess over imaginary fields and 84–97% over real ones in the narrow class group. What still departs over real fields sits, at the low cuts, mostly on the narrow trivial class and on the class of principal ideals whose generators all have negative norm, the latter still the largest departure at 10⁴; the term at s = 0 carries part of it, and each kind's mean of what it leaves is −(½ + o(1))·log D/Π(x, 1), Π(x, 1) the whole count, as D grows at a fixed cut.
The floor
Tier: theorem; observation (the readings).
Verifier: proof; principal.py::section_floor.
Over an imaginary field, L₁ ≥ |D|/4, and L₁ ≥ (|D| + 1)/4 at odd D. The floor is met, L₁ = (|D| + 1)/4, exactly when D is odd and (|D| + 1)/4 is an odd prime; at even D, L₁ > |D|/4.
Proof. Let P over p be principal, so 4p = u² + |D|y². If y = 0 then 4p = u² and p is a square, which it is not; so y ≠ 0 and 4p ≥ |D|. At odd D, u ≡ b₀y ≡ y mod 2, so a y of either parity gives 4p ≥ |D| + 1. For equality at odd D, the form's value at (0, 1) is c₀ = (|D| + 1)/4, and D = 1 − 4c₀ makes c₀ prime to D: an odd prime c₀ is unramified and represented, hence split and principal, and nothing lower can be. At D ≡ 0 mod 4, 4p = |D| forces u = 0 and |y| = 1, so p = |D|/4, which divides D and ramifies. Conversely L₁ is an odd prime, so it meets (|D| + 1)/4 only where that value is one.
The floor's proof uses the size of the norm form and never the class group. Its corollary is that the imaginary fields with L₁ ≤ B form a finite set, since none with |D| > 4B has L₁ ≤ B. Over all 6079 imaginary fields with |D| ≤ 20000 the scan meets the floor at 499, each at the criterion; the median L₁ runs 181, 587, 1163, 2269, 4483 over the |D| bands topped at 1000, 2500, 5000, 10⁴ and 20000, each below hi/4 over its band (lo, hi].
No floor over a real field
Tier: theorem; observation (the readings).
Verifier: proof; principal.py::section_family,
principal.py::section_real.
Over a real field no lower bound on L₁ growing with D exists: L₁ = 3 at every squarefree D > 0 of the form m² − 12 or m² + 12 with m odd and 3 ∤ m, and there are infinitely many.
Proof. With m odd, m² ≡ 1 mod 8, so D ≡ 5 mod 8 and b₀ = 1. Put x = (m − 1)/2: then N(x + ω) = x² + x − (D − 1)/4 = (m² − D)/4 = ±3. D ≡ m² mod 3 is a nonzero square, so χ_D(3) = +1, and x + ω generates a place over 3. So L₁ = 3 whenever D is fundamental, that is squarefree. Writing m = 6n ± 1, D is an irreducible quadratic in n with no fixed square divisor: it is odd, prime to 3, and modulo ℓ² for ℓ ≥ 5 a quadratic with unit leading coefficient 36 does not vanish at every n. Such a quadratic takes squarefree values with positive density (Ricci, Rend. Circ. Mat. Palermo 57, 1933; the case z² + k is Estermann's, Math. Ann. 105, 1931).
The difference between the two signs is the sign in 4p = |u² − Dy²|: a definite form's values grow with |D|, an indefinite one takes small values far out. Over a quadratic field that is the unit rank, since a finite unit group and a definite norm form are both the condition D < 0; higher up the two come apart (a totally imaginary quartic field is definite with unit rank 1), and which of them a floor needs there is left open. The class engine finds a wide-principal place over 3 at each of the 627 members below 10⁶. Over all 4865 real fields with D ≤ 16000 every one has L₁ < 10⁴, and the median runs 7, 11, 11, 11, 11 over the D bands topped at 1000, 2500, 5000, 10⁴ and 16000. A complex cubic field has unit rank 1 and an indefinite norm form, and over all 888 whose discriminant is at most 6000 in absolute value a principal degree-1 place lies over an odd unramified prime below 250, the largest such least prime 131; to 50000 it is 823, both over class groups certified numerically, not proved (TRIPLE; triple.py::section_controls, triple.py::section_coverage).
Where the omitted prime powers land
Tier: property.
Verifier: proof; principal.py::section_imag.
Chebotarev in the Hilbert class field H/K, whose group is the class group Cl of order h, speaks of the count Π_C(x) of all prime-ideal powers P^k of K with N(P^k) < x in the class C, each weighted 1/k: its main term is Li(x)/h for every class. The degree-1 count read on this page is of the split places alone, so it omits three families, a ramified prime among them though its degree is 1, and each lands on known classes:
- - an inert prime (q) has norm q² and is principal: weight 1 on the trivial class for each q < √x;
- - the square P² of a split place has norm p² and class 2[P]: weight ½ on a square class, twice per split p < √x;
- - a ramified prime R, over the rational prime r, has R² = (r) principal, so [R] lies in Cl[2].
The remaining powers, each weighted 1/k at norm below x, land as follows: even powers of a split place on squares, powers of inert and ramified primes on the trivial class and Cl[2], and only the odd powers k ≥ 3 of split places, p < x^(1/k) (the cubes p < 22 at x = 10⁴), anywhere. So a class in neither 2Cl nor Cl[2] loses only that sliver of odd-power weight, while a class in 2Cl or Cl[2] loses besides the weight of every family and power above that lands on it. Split places below x number about π(x), so a class holds about π(x)/h of them, and the trivial class loses about π(√x)/2 inert primes plus, were the split places below √x spread evenly over the classes, the share |Cl[2]|/h of the split squares' weight π(√x)/2: a heuristic deficit, to leading order under that spread, against its Chebotarev share Li(x)/h of
(h + |Cl[2]|)/2 · π(√x)/π(x),
affine in h at a fixed |Cl[2]|, the ramified primes' weight on Cl[2], 1/k for each power R^k of norm below x, left out. Read against the field's realised total over h, itself short of Li(x)/h by about π(√x)/h, the trivial class falls short by that deficit less π(√x)/π(x), to the same order. Over a real field the same holds in the narrow group Cl⁺, of order h⁺, since q and r are generators of positive norm.
The shortfall is the prime powers
Tier: pattern (imaginary fields |D| ≤ 4000 with h ≥ 2, the (class
number, cell) readings of 30 fields or more at h = 4, 6, …, 16, 20, 24,
28; real fields D ≤ 16000 with h⁺ ≥ 2, in the narrow group; the cuts
250, 400, 630, 1000, 2500, 10⁴).
Verifier: principal.py::section_imag; principal.py::section_real;
principal.py::section_race.
Per field the level of a set of classes is its mean count per class over the field's total divided by h. The cells are T, the trivial class; A, the other classes of Cl[2], over a real field less one read alone below; S, the squares outside Cl[2]; G, the classes in neither 2Cl nor Cl[2], which lose only the sliver of odd-power weight. Read over a population of fields, the explicit formula's prime-power term, one-signed, survives the average; the zero sums do not cancel alone, the term at s = 0 growing like ½ log D against them (set apart below, with the floor), so the split places' levels are read, not derived, to depart from 1 by what the omitted weight predicts, to the percentages below. Counting Π_C instead removes 93% to 104% of the G cell's excess at every cut over imaginary fields and 84% to 97% over real ones. A field's levels average to 1 over its classes, so a cell is read against its siblings, and which classes make up each cell is set by the group's shape, not its order: a stratum named by the class number alone mixes shapes. At a prime h a field has two cells, so the non-trivial one is fixed by the trivial one, at level (h − η)/(h − 1) with η the level of T, and casts no vote of its own: a fit across strata that counts it as one is testing the trivial class twice.
Over the 1208 imaginary fields with h ≥ 2 the G cell, present at 880 of them, reads, raw against counted in prime powers,
cut 250 400 630 1000 2500 10⁴ raw 1.186 1.145 1.106 1.089 1.057 1.023 Π 1.013 1.002 0.996 1.000 1.003 0.999
at 42 standard errors or more above 1 raw, with 93% to 104% of the excess removed. The raw excess falls by a factor of 8.0 from cut 250 to 10⁴; in the same level units the prime-power term's leading piece π(√x)/π(x) falls by 5.6, the gap to 8.0 not printed apart, where a fixed count of primes would fall by π(10⁴)/π(250) = 23 and a constant level by 1. At 10⁴ all 39 (class number, cell) readings with 30 fields or more read 0.97 to 1.02 counted in prime powers, while the raw trivial class runs from 0.95 at h = 4 down to 0.75 at h = 28. Averaged over all 1208 fields at 10⁴, its raw deficit 1 − η is 0.208; the section above's deficit less π(√x)/π(x), the realised total's own shortfall, averages 0.204 field by field, a ratio of 1.02, a comparison settled after the run (the deficit as first predicted, 0.2245, reads 0.93). Neither counts the floor, which empties the trivial class of split places below |D|/4 ≤ 1000 and thins the split places below √x in Cl[2] that the spread assumes, so η at small cuts is read, never predicted, nor the term at s = 0 below; the floor's loss at 10⁴ is not printed.
Over the 4107 real fields with h⁺ ≥ 2, the G cell present at 1069 of them, the same count removes 84% of the G excess at cut 250 and 97% at 10⁴ (1.0255 raw, 1.0009 counted). What it leaves is not spread evenly: counted in prime powers, the trivial class reads 1.07 at cut 250 and 1.005 at 10⁴, and k₀, the narrow class of a principal ideal whose generators all have negative norm, 0.82 and 0.99; the other cells lie within 0.035 of 1 at cut 250 and 0.005 at 10⁴. The term at s = 0 carries part of it (The archimedean term and the kind means). The classical instance is the control: over the 77 odd prime moduli below 400 at x = 10⁶ the non-residue lead, the count of primes below x that are non-residues less the count that are residues, over the two counts' mean, reads 0.00180 ± 0.00031 (a standard error, moduli taken as independent) against π(√x)/π(x) = 0.00214, and −0.00042 ± 0.00031 counted in prime powers.
The least split place leans away from the squares
Tier: observation (fields of 2-rank 1, both signs: |D| ≤ 10⁵ read
whole, 20000 drawn at random in each of (10⁵, 10⁶] and (10⁶, 10⁷]).
Verifier: genus.py::section_controls; genus.py::band_table;
genus.py::by_d1; genus.py::by_hmod4.
At 2-rank 1, D = d₁·d₂ with d₁, d₂ prime discriminants, |d₁| < |d₂|, and Cl/2Cl (Cl⁺/2Cl⁺ over a real field) has order 2. At an odd split q the two characters agree, and the place lies in 2Cl exactly when χ_{d₁}(q) = +1 (Gauss's principal genus theorem, checked against the class group at the least odd split place of all 1140 fields of 2-rank 1 to |D| ≤ 4000). The least odd split place lies outside 2Cl at 0.760 over imaginary fields and 0.714 over real ones below |D| = 1000, and at 0.615 and 0.612 over (10⁶, 10⁷]; from 10³ on the two signs agree within 0.006 band by band, the real arm having no floor.
The smaller factor carries most of it. Hold d₁ and let χ_{d₂} be a fair coin at each odd prime l_j prime to D: the least split place is outside 2Cl with chance Σ_j [χ_{d₁}(l_j) = −1]·2^(−j). Pooled over the sample as drawn the share reads 0.728 (imaginary) and 0.725 (real) where |d₁| ≤ 8, and 0.46 to 0.57 in the five cells per sign past 8, the coin within 0.021 of each; the six characters of conductor at most 8 set the share there at the first odd primes, χ(3) = −1 at −4, 5, −7 and 8. The coin leaves a positive residual in all ten band readings, 0.4 to 2.5 standard errors each.
Over imaginary fields with h > 2 and |D| ≤ 10⁴ the share moves with h mod 4 from field to field, while from 10³ on each band still matches the real arm. It reads 0.711 ± 0.018 where 4 | h and 0.635 ± 0.018 where h ≡ 2 mod 4, against the coin's 0.659 and 0.648: a gap of 0.076, the coin's 0.011. The floor may be what 4 | h selects. A split q with 4qr < |D|, r the norm of a ramified prime in the nontrivial class c₂ of Cl[2], lies in neither the trivial class nor c₂, and the least odd split place lies in Cl[2] at none of the 1336 fields with h > 2; a class uniform over the rest is outside 2Cl at 0.578 where 4 | h and 0.500 where not, a gap of 0.078 that matches while the shares miss by 0.13, and how many fields meet 4qr < |D| is not printed. The complex cubic field's least partial place leans the same way with no Dirichlet factor to carry it (TRIPLE: The lean's character is irreducible).
The bias against principal primes
Tier: known.
Source: M. Aoki and S. Koyama, Chebyshev's bias against splitting and
principal primes in global fields, J. Number Theory 245 (2023), 233–262,
Corollary 3.5 and Example 3.7.
Assume DRH(A), the deep Riemann hypothesis in Aoki and Koyama's form (A): the convergence of the Euler products of Gal(H/K)'s L-functions at s = ½, none vanishing there. Then over the prime ideals P of K with N(P) ≤ x,
Σ_{P non-principal} 1/√N(P) − (h − 1)·Σ_{P principal} 1/√N(P)
= (|Cl/2Cl| − 1)/2 · log(log x) + c + o(1),
a bias against principal primes whenever h is even; over an imaginary field |Cl/2Cl| = 2^(t − 1), t the number of primes dividing D (genus theory). Their race is weighted and asymptotic; the accounting above counts unweighted, class by class, at a finite cut.
The archimedean term and the kind means
Tier: theorem; observation (the readings).
Verifier: proof; origin.py::main; residual.py::main; parity.py::main.
When the fundamental unit has norm +1, h⁺ = 2h and complex conjugation moves the narrow class field H⁺: its image in Cl⁺ = Gal(H⁺/K) is k₀ at both real places, whose classes differ by that of (α) = (−α), α totally negative. So χ(k₀) = −1 makes χ odd at both, with Γ_R(s + 1)² and L(0, χ) ≠ 0; χ(k₀) = +1 gives Γ_R(s)² and a double zero at s = 0 if χ ≠ 1; ζ_K has a simple one. A zero of order m at s = 0 puts −m·log x into ψ(x, χ) = Σ χ(P^k) log N(P) over N(P^k) < x, and averaging against χ̄(C) gives −(1 − 1/h⁺)·log x at C = 1 and at k₀, +(1/h⁺)·log x at every other class; with no k₀ every character is even and the trivial class alone sits two log x below the rest, and over an imaginary field one, where pooled over the 1208 fields it reads 0.987 in prime powers at 10⁴, the floor's loss included, against the term's 0.989, and at 250 1.013 against 0.924, the floor untested as the cause. In Π(x, χ) = Σ_C χ(C)·Π_C(x) the term is −m(loglog x + γ) + log L*(0, χ), L*(0, χ) > 0 the leading coefficient (Perron at s = 0, the trivial zeros' O(1/(x log x)) dropped). Over the 4107 real fields to |D| ≤ 16000 it has the departures' signs on the trivial class and k₀ at every cut but the trivial class at 10⁴, where it prints zero, and carries part of it (origin.py::main): at 250 the trivial class reads 0.068 above 1 against the term's 0.032, k₀ (at 3352 fields) 0.176 below against 0.141.
What is left per nontrivial χ is ρ_χ = [Π(x, χ) + m(loglog x + γ) − log|L*(0, χ)|]/Π(x, 1), and on a class C it is r_C = Σ χ(C)·ρ_χ over χ ≠ 1. Since χ(k₀) = ±1 splits each sum into two kinds, odd and even, the odd mean of ρ_χ is (r₁ − r_k₀)/h⁺ and, at h⁺ ≥ 4, the even nontrivial one (r₁ + r_k₀)/(h⁺ − 2), and the same split gives the odd mean of Π(x, χ) as Π₁ − Π_k₀, the trivial class's count less k₀'s; with no k₀ the mean is r₁/(h − 1). The means by kind restate the two cells. By the functional equation, log|L*(0, χ)| = ½ log D + log|L(1, χ)| − 2 log π for odd χ, − log 4 for even. Brauer–Siegel (R. Brauer, Amer. J. Math. 69 (1947), as Griffon, Lebacque and Rémond state it, arXiv:2105.01023) gives log(hR) ~ log √d over Galois fields with log d over the degree → ∞, and H⁺ and H, of degrees 2h⁺ and 2h and discriminants D^h⁺ and D^h, qualify: by the class number formula a kind's mean of log|L(1, χ)| is o(log D). A fixed cut bounds the counts and Π(x, 1) ≥ 1, so as D → ∞ every kind mean of ρ_χ is −(½ + o(1))·log D/Π(x, 1).
Over the 12599 real fields with h⁺ ≥ 2 to |D| ≤ 48000 (observations), a fixed mean per kind across h bands at 250 carries most of the remainder's growth with h⁺, not killed at 3 se, the step it was set against undecided (residual.py::main), and the odd mean falls with log|D| at −0.0035 ± 0.0007: the count Π₁ − Π_k₀ adds +0.0051, log|L(1, χ)| −0.0003, ½ log D −0.0083 (parity.py::main); by |D| band the odd mean reads +0.0060 to +0.0162, far above −½ log D/Π, −0.061 to −0.086 by band.
Open fronts
Why the count Π₁ − Π_k₀ rises with |D| at a fixed cut is not derived: +0.29 per unit of log D at 250 and +0.88 at 10⁴, each field weighted by its h⁺/2 odd characters. The split places carry it, +0.258 of +0.290 at 250, and with (D/p) fixed at p = 2, …, 13 the slope stays +0.274 ± 0.041. Their first powers lean to k₀, below √D/2 and above, the lean relaxing with |D|: over the 10323 fields with k₀ to |D| ≤ 48000, their part over their number, both summed h⁺/2-weighted, reads −0.137 to −0.051 by band below, −0.078 to −0.023 above (observations, localtype.py::main, splitpart.py::main). It reopens when that lean is derived against D.