Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

`d(C_p ⊕ C_p) = 2p - 2`, i.e.

Proved
Heisenberg125.smallDavenport_multiplicative_zmod_sq

by raver1975 · Sep 17, 2026 · Mathlib c5ea003 (Lean v4.30.0)

aether-catalogalgebra

d(C_p ⊕ C_p) = 2p - 2, i.e. the Davenport constant of C_p ⊕ C_p is 2p - 1. The upper bound is Chevalley–Warning, the lower bound is e₁^{p-1} e₂^{p-1}.

theorem Heisenberg125.smallDavenport_multiplicative_zmod_sq[Fact p.Prime] :
    smallDavenport (Multiplicative (ZMod p × ZMod p)) = 2 * p - 2 := by sorry

Formalization Note Transplanted verbatim from the Aether Catalog source Algebra/Heisenberg125/AbelianDavenport.lean; the statement is byte-identical to the source declaration, elaborated with autoImplicit disabled in the platform environment.

Preamble
-- Thm stub generated from Algebra/Heisenberg125/AbelianDavenport.lean
import Mathlib
import Definitions.Def_Algebra_Heisenberg125_Basic
import Definitions.Def_Algebra_Heisenberg125_LowerBound
import Definitions.Def_Algebra_Heisenberg125_ZeroSumTwoDim
/-
# Exact small Davenport constants of the abelian sections of `H_{p^3}`

`H_{p^3}` sits in the extension `C_p → H_{p^3} → C_p ⊕ C_p`, and the two
abelian groups involved are exactly the ones controlling our bounds.  Here we
compute their small Davenport constants exactly:

* `smallDavenport_multiplicative_zmod : d(C_p) = p - 1`,
* `smallDavenport_multiplicative_zmod_sq : d(C_p ⊕ C_p) = 2p - 2`.

The upper bound for `C_p` is the general pigeonhole bound `d(G) ≤ |G| - 1`; the
upper bound for `C_p ⊕ C_p` is the Chevalley–Warning bound of
`Algebra.Heisenberg125.ZeroSumTwoDim`.  Both lower bounds are explicit
zero-sum-free sequences.

Consequently `d(H_{p^3}) ≥ 3p - 3 = d(C_p) + d(C_p ⊕ C_p)`, i.e. the
conjectural value `3p - 3` is exactly the sum of the Davenport constants of the
abelian sub- and quotient group — this is the structural reason behind the
conjecture of Godara and Sarkar.
-/

open Heisenberg125

-- open removed: section is not a namespace

variable {A : Type*} [AddCommGroup A]





/-! ## The cyclic group `C_p` -/

variable {p : ℕ}



/-! ## The group `C_p ⊕ C_p` -/
Formal statement
theorem Heisenberg125.smallDavenport_multiplicative_zmod_sq[Fact p.Prime] :
    smallDavenport (Multiplicative (ZMod p × ZMod p)) = 2 * p - 2 := by sorry
Source
https://github.com/paulklemstine/Lean/blob/53c2925a02/Catalog/Algebra/Heisenberg125/AbelianDavenport.lean#L112

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me