Documentation

Q2Presentation.Quadratic.DicksonCount

Stage G — the Dickson zero-count of a nonsingular F₂ quadratic form #

This file closes the two finite-field Gauss-sum axioms of Quadratic/GaussSign.lean (prop:candidatezero / prop:localzero):

Both axioms are the same statement (the candidate qc and the local ql are just two instances of an arbitrary nonsingular F₂ quadratic space), so a single general theorem — nonsingular_numZeros_dickson — discharges both. This is the classical Dickson / Arf count: a nonsingular quadratic form of dimension d over F₂ has 2^{d-1} ± 2^{d/2-1} zeros, the sign being (-1)^{Arf}. It is finite-field linear algebra (NOT local CFT), proven here sorry-free with no new axioms.

Method: the Gauss sum (avoids an explicit Witt/Arf decomposition) #

Let χ : F₂ → ℤ be the sign character (χ 0 = 1, χ 1 = -1; multiplicative, χ(a+b) = χ a · χ b), and let D := ∑_{v} χ(q v) be the Gauss sum. Two clean identities pin down the zero count:

With |V| = 2^d (FiniteField.pow_finrank_eq_card) we get D² = 2^d, so d is even and D = ±2^{d/2} (extracted via Nat.dvd_prime_pow); then numZeros q = (2^d + D)/2 = 2^{d-1} ± 2^{d/2-1} = baseZeroCount ram d.

A residual edge case (reported): d = 0 #

baseZeroCount ram d = 2^{d-1} + (±1)·2^{d/2-1} uses truncated nat subtraction. For even d ≥ 2 this equals the honest (2^d ± 2^{d/2})/2, and everything matches. But at d = 0 (the zero space V = 0, vacuously nonsingular) it gives baseZeroCount true 0 = 2, baseZeroCount false 0 = 0, whereas the true count is numZeros = 1. So the verbatim axiom statement (which quantifies over all finite V, including V = 0) is in fact FALSE at V = 0 — the existential ∃-fix removed the old double-ram inconsistency but a d = 0 inconsistency remains (see baseZeroCount_zero_false / dickson_count_false_at_zero below).

The fix is a single hypothesis 0 < finrank V (equivalently [Nontrivial V]), which is automatic for the candidate/local applications (nonzero self-dual simple modules). The main theorem therefore carries 0 < finrank V, and the drop-in corollaries candidate_base_zeroCount_proven / q2_local_base_zeroCount_proven add [Nontrivial V] to the verbatim axiom signature. Modulo that one instance they are the axioms and can replace them; GaussSign.lean only needs the same [Nontrivial V] added to the two axiom lines for a literal swap.

The sign character χ : F₂ → ℤ #

The sign character χ(0) = 1, χ(1) = -1.

Equations
Instances For

    χ is multiplicative: χ(a+b) = χ a · χ b (the homomorphism (F₂,+) → (±1,·)).

    theorem Q2Presentation.Quadratic.Dickson.quadF2_diag {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] (q : QuadF2 V) (v u : V) :
    q.form v + q.form (v + u) = q.form u + (q.polar v) u

    The quadratic-law diagonal identity q v + q(v+u) = q u + b_q(v,u) (char 2).

    The Gauss sum and its square #

    The Gauss sum D(q) = ∑_v χ(q v).

    Equations
    Instances For
      theorem Q2Presentation.Quadratic.Dickson.sum_signChar_eq_zero_of_ne {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Fintype V] (ℓ : V →ₗ[ZMod 2] ZMod 2) (y : V) (hy : ℓ y = 1) :
      ∑ v : V, signChar (ℓ v) = 0

      A nonzero F₂-linear functional has vanishing character sum: translating by a y with ℓ y = 1 flips every sign, so ∑ χ(ℓ v) = -∑ χ(ℓ v) = 0.

      The Gauss sum squares to |V| for a nonsingular form (the key identity).

      The counting identity #

      The Gauss sum counts: D = 2·#Q⁻¹(0) - |V|.

      2·numZeros q = |V| + D.

      Extracting the Dickson count from D² = 2^d #

      theorem Q2Presentation.Quadratic.Dickson.dickson_arith {n d : ℕ} {D : ℤ} (hpos : 0 < d) (hcount : 2 * ↑n = 2 ^ d + D) (hsq : D ^ 2 = 2 ^ d) :
      ∃ (ram : Bool), ↑n = baseZeroCount ram d

      The number-theoretic core: from 2·n = 2^d + D and D² = 2^d with 0 < d, the count n is 2^{d-1} ± 2^{d/2-1} = baseZeroCount ram d for the sign ram of D.

      The Dickson zero-count theorem and the two corollaries #

      theorem Q2Presentation.Quadratic.nonsingular_numZeros_dickson {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Finite V] (q : QuadF2 V) (hns : q.Nonsingular) (hpos : 0 < Module.finrank (ZMod 2) V) :
      ∃ (ram : Bool), ↑(numZeros q) = baseZeroCount ram (Module.finrank (ZMod 2) V)

      The Dickson zero-count of a nonsingular F₂ quadratic form. For a nonsingular QuadF2 V on a finite V of dimension d > 0, the number of zeros is 2^{d-1} ± 2^{d/2-1} = baseZeroCount ram d for a ram : Bool (the form's Arf type).

      This is the finite-field content shared by prop:candidatezero and prop:localzero; the proof is the Gauss-sum identity D² = |V| = 2^d together with the counting identity 2·numZeros = |V| + D (see Dickson.gaussSum_sq, Dickson.two_mul_numZeros).

      The hypothesis 0 < finrank V is necessary: at d = 0 the truncated nat-subtraction in baseZeroCount makes the statement false (the zero space has 1 zero, but baseZeroCount ram 0 ∈ {0,2}); see dickson_count_false_at_zero.

      Closes candidate_base_zeroCount (prop:candidatezero). Verbatim the axiom of GaussSign.lean plus [Nontrivial V] (automatic for the nonzero candidate module): the candidate base form's zero count realizes one of the two baseZeroCount values.

      theorem Q2Presentation.Quadratic.q2_local_base_zeroCount_proven {V : Type u_1} [AddCommGroup V] [Module (ZMod 2) V] [Module.Finite (ZMod 2) V] [Nontrivial V] (qLoc : QuadF2 V) (hns : qLoc.Nonsingular) :
      ∃ (ram : Bool), ↑(numZeros qLoc) = baseZeroCount ram (Module.finrank (ZMod 2) V)

      Closes q2_local_base_zeroCount (prop:localzero). Identical to the candidate corollary — the local base form is just another nonsingular F₂ quadratic space, so the "irreducible local CFT input" is in fact the same finite-field Dickson count.

      The reported d = 0 edge case, rigorously #

      The verbatim axioms (no Nontrivial) are refutable at V = 0.

      baseZeroCount at d = 0 misses the true count 1 (nat-subtraction truncation).

      theorem Q2Presentation.Quadratic.dickson_count_false_at_zero :
      ¬∀ {V : Type} [inst : AddCommGroup V] [inst_1 : Module (ZMod 2) V] [Module.Finite (ZMod 2) V] (q : QuadF2 V), q.Nonsingular → ∃ (ram : Bool), ↑(numZeros q) = baseZeroCount ram (Module.finrank (ZMod 2) V)

      The verbatim axiom statement is FALSE at V = 0. The zero space carries a (vacuously) nonsingular QuadF2 with numZeros = 1 and finrank = 0, yet baseZeroCount ram 0 ∈ {0,2}; so the residual d = 0 instance is outright refutable (closure ⊆ {propext, Classical.choice, Quot.sound}), i.e. the [Nontrivial V] hypothesis of the corollaries above is genuinely required.

      The Gauss-type pinning and the §6 comparison (re-homed) #

      Formerly GaussSign Parts 4–6, resting on the two zero-count AXIOMS — which were refutable at V = 0. With the Dickson theorems above (candidate_base_zeroCount_proven / q2_local_base_zeroCount_proven, honest [Nontrivial V] guard) the pinning and the comparison are axiom-free. The hcr/hlr hypotheses still carry the manuscript's §6.3 sign statement (both base forms take V's ramification type); their local half is the future q2_local_base_gaussType keep (audit/BLOCKR_P6_DESIGN.md), the candidate half the P6.4–P6.7 program.

      The candidate base form's zero count realizes its own Gauss type (prop:candidatezero, now via Dickson).

      The local base form's zero count realizes its own Gauss type (prop:localzero's count clause, now via Dickson).

      theorem Q2Presentation.Quadratic.zeroCount_comparison {Vc : Type u_1} {Vl : Type u_2} [AddCommGroup Vc] [Module (ZMod 2) Vc] [Module.Finite (ZMod 2) Vc] [AddCommGroup Vl] [Module (ZMod 2) Vl] [Module.Finite (ZMod 2) Vl] (qc : QuadF2 Vc) (ql : QuadF2 Vl) (ram : Bool) (hdim : Module.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl) (hc : ↑(numZeros qc) = baseZeroCount ram (Module.finrank (ZMod 2) Vc)) (hl : ↑(numZeros ql) = baseZeroCount ram (Module.finrank (ZMod 2) Vl)) :
      ↑(numZeros qc) = ↑(numZeros ql)

      Equal ramification type + equal dimension force equal zero counts (re-homed helper: both counts are the shared base value).

      theorem Q2Presentation.Quadratic.candidate_gauss_eq_local_gauss {Vc : Type u_1} {Vl : Type u_2} [AddCommGroup Vc] [Module (ZMod 2) Vc] [Module.Finite (ZMod 2) Vc] [Nontrivial Vc] [AddCommGroup Vl] [Module (ZMod 2) Vl] [Module.Finite (ZMod 2) Vl] [Nontrivial Vl] (qc : QuadF2 Vc) (hqc : qc.Nonsingular) (ql : QuadF2 Vl) (hql : ql.Nonsingular) (ram : Bool) (hcr : gaussType qc = ram) (hlr : gaussType ql = ram) :

      The candidate Gauss sign equals the local Gauss sign given the §6.3 shared-ramification input hcr/hlr (cor:sourceinterface(iv) sign half).

      theorem Q2Presentation.Quadratic.candidate_numZeros_eq_local {Vc : Type u_1} {Vl : Type u_2} [AddCommGroup Vc] [Module (ZMod 2) Vc] [Module.Finite (ZMod 2) Vc] [Nontrivial Vc] [AddCommGroup Vl] [Module (ZMod 2) Vl] [Module.Finite (ZMod 2) Vl] [Nontrivial Vl] (qc : QuadF2 Vc) (hqc : qc.Nonsingular) (ql : QuadF2 Vl) (hql : ql.Nonsingular) (ram : Bool) (hdim : Module.finrank (ZMod 2) Vc = Module.finrank (ZMod 2) Vl) (hcr : gaussType qc = ram) (hlr : gaussType ql = ram) :
      ↑(numZeros qc) = ↑(numZeros ql)

      Equal base determinant zero counts given shared dimension and ramification (cor:sourceinterface(iv) numerical half).