FormalConjectures/Paper/ZagierMZV.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

15 declarations, 2 contain sorry, 0 declared as axioms

Zagier's Conjecture on Multiple Zeta Values

References:

Imports (1)
  1. def ZagierMZV.multiZeta The multiple zeta value line 50 source

    Source documentation

    The multiple zeta value $\zeta(s_1, s_2, \ldots, s_k)$, defined as $$\zeta(s_1, \ldots, s_k) = \sum_{n_1 > n_2 > \cdots > n_k > 0} \frac{1}{n_1^{s_1} n_2^{s_2} \cdots n_k^{s_k}}.$$ The argument is a list of positive natural numbers. The value is well-defined (i.e. the series converges) when the first entry is at least 2, but we define it for all inputs. For the empty list, multiZeta [] = 1 (the empty product convention).

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: List, Nat, Real

    Proof uses: ZagierMZV.multiZeta.match_1, Unit, OfNat.ofNat, tsum, HMul.hMul, HDiv.hDiv, HPow.hPow, HAdd.hAdd, ZagierMZV.multiZeta.aux, SummationFilter.unconditional

    19 instances, coercions and auxiliary constants left out.

    noncomputable def multiZeta : List ℕ → ℝ
      | [] => 1
      | s :: rest => ∑' n : ℕ, (1 / (n + 1 : ℝ) ^ s) * multiZeta.aux rest n
    where
    …
  2. def ZagierMZV.weight The weight of an MZV index $(s_1, \ldots, s_k)$ is $s_1 + \cdots + s_k$ line 61 source

    Source documentation

    The weight of an MZV index $(s_1, \ldots, s_k)$ is $s_1 + \cdots + s_k$.

    standard axioms: propext what this means

    Statement uses: List, Nat

    Proof uses: List.sum

    3 instances, coercions and auxiliary constants left out.

    def weight (s : List ℕ) : ℕ := s.sum
  3. def ZagierMZV.AdmissibleIndex An MZV index is admissible if it is either empty or if the first entry is at least 2 and all entries are positive line 67 source

    Source documentation

    An MZV index is admissible if it is either empty or if the first entry is at least 2 and all entries are positive. The empty list convention ensures $\mathcal{Z}_0 = \mathbb{Q}$.

    no axioms what this means

    Statement uses: List, Nat

    Proof uses: ZagierMZV.multiZeta.match_1, Unit, True, And, LT.lt, OfNat.ofNat, Membership.mem

    3 instances, coercions and auxiliary constants left out.

    def AdmissibleIndex : List ℕ → Prop
      | [] => True
      | s₁ :: rest => 1 < s₁ ∧ ∀ sᵢ ∈ rest, 0 < sᵢ
    
    /-- The set of all MZV values of weight $n$. -/

    Mentions: ZagierMZV.weight

  4. def ZagierMZV.mzvSetOfWeight The set of all MZV values of weight $n$ line 72 source

    Source documentation

    The set of all MZV values of weight $n$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Set, Real

    Proof uses: Set.image, List, ZagierMZV.multiZeta, Set.ofPred, And, ZagierMZV.AdmissibleIndex, Eq, ZagierMZV.weight

    def mzvSetOfWeight (n : ℕ) : Set ℝ :=
    …
  5. def ZagierMZV.mzvSpanOfWeight The $\mathbb{Q}$-submodule of $\mathbb{R}$ spanned by all MZVs of weight $n$ line 76 source

    Source documentation

    The $\mathbb{Q}$-submodule of $\mathbb{R}$ spanned by all MZVs of weight $n$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, Submodule, Rat, Real

    Proof uses: Submodule.span, ZagierMZV.mzvSetOfWeight

    42 instances, coercions and auxiliary constants left out.

    noncomputable def mzvSpanOfWeight (n : ℕ) : Submodule ℚ ℝ :=
    …
  6. def ZagierMZV.zagierDim The conjectured Zagier dimension sequence $d_n$, defined by $d_0 = 1$, $d_1 = 0$, $d_2 = 1$, and $d_n = d_{n-2} + d_{n-3}$ for $n \geq 3$ line 83 source

    Source documentation

    The conjectured Zagier dimension sequence $d_n$, defined by $d_0 = 1$, $d_1 = 0$, $d_2 = 1$, and $d_n = d_{n-2} + d_{n-3}$ for $n \geq 3$.

    no axioms what this means

    Statement uses: Nat

    2 instances, coercions and auxiliary constants left out.

    def zagierDim : ℕ → ℕ
      | 0 => 1
      | 1 => 0
      | 2 => 1
      | (n + 3) => zagierDim (n + 1) + zagierDim n
    
    /--
    **Zagier's conjecture**
    
    The $\mathbb{Q}$-dimension of the vector space spanned by all multiple zeta values
    of weight $n$ equals $d_n$, where $d_n$ is the Zagier dimension sequence
    satisfying $d_0 = 1$, $d_1 = 0$, $d_2 = 1$, and $d_n = d_{n-2} + d_{n-3}$ for $n \geq 3$.
    …

    Mentions: ZagierMZV.weight

  7. theorem ZagierMZV.zagier_conjecture Documented declaration: zagier_conjecture sorry line 97 source

    Source documentation

    Zagier's conjecture

    The $\mathbb{Q}$-dimension of the vector space spanned by all multiple zeta values of weight $n$ equals $d_n$, where $d_n$ is the Zagier dimension sequence satisfying $d_0 = 1$, $d_1 = 0$, $d_2 = 1$, and $d_n = d_{n-2} + d_{n-3}$ for $n \geq 3$.

    depends on sorry what this means

    Statement uses: Iff, True, Nat, Eq, Module.finrank, Rat, Subtype, Real, Membership.mem, Submodule, ZagierMZV.mzvSpanOfWeight, ZagierMZV.zagierDim

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    59 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem zagier_conjecture :
        answer(sorry) ↔ ∀ n : ℕ, Module.finrank ℚ (mzvSpanOfWeight n) = zagierDim n := by
    …

    Mentions: ZagierMZV.mzvSpanOfWeight, ZagierMZV.zagierDim

  8. theorem ZagierMZV.zagier_upper_bound Upper bound [Te02, DG05] The dimension of the $\mathbb{Q}$-vector space of MZVs of weight $n$ is at most $d_n$ sorry line 107 source

    Source documentation

    Upper bound [Te02, DG05]

    The dimension of the $\mathbb{Q}$-vector space of MZVs of weight $n$ is at most $d_n$.

    depends on sorry what this means

    Statement uses: Nat, LE.le, Module.finrank, Rat, Subtype, Real, Membership.mem, Submodule, ZagierMZV.mzvSpanOfWeight, ZagierMZV.zagierDim

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous, OfNat.ofNat

    61 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem zagier_upper_bound :
        ∀ n : ℕ, Module.finrank ℚ (mzvSpanOfWeight n) ≤ zagierDim n := by
    …

    Mentions: ZagierMZV.mzvSpanOfWeight, ZagierMZV.zagierDim

  9. theorem ZagierMZV.zagierDim_first_values The first few values of $d_n$ are $1, 0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, \ldots$ line 117 source

    Source documentation

    The first few values of $d_n$ are $1, 0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, \ldots$

    no axioms what this means

    Statement uses: Eq, List, Nat, List.cons, ZagierMZV.zagierDim, OfNat.ofNat, List.nil

    Proof uses: of_decide_eq_true, id, Bool, Decidable.decide, Bool.true, Eq.refl

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem zagierDim_first_values :
        [zagierDim 0, zagierDim 1, zagierDim 2, zagierDim 3, zagierDim 4,
         zagierDim 5, zagierDim 6, zagierDim 7, zagierDim 8, zagierDim 9] =
        [1, 0, 1, 1, 1, 2, 2, 3, 4, 5] := by
    …

    Mentions: ZagierMZV.zagierDim

  10. theorem ZagierMZV.no_admissible_weight_one There is no admissible index of weight 1 (since $s_1 \geq 2$ is required) line 125 source

    Source documentation

    There is no admissible index of weight 1 (since $s_1 \geq 2$ is required).

    standard axioms: Quot.sound, propext what this means

    Statement uses: List, Nat, ZagierMZV.AdmissibleIndex, Ne, ZagierMZV.weight, OfNat.ofNat

    Proof uses: Eq, List.nil, id, of_eq_true, Not, Eq.trans, False, True, congrArg, not_false_eq_true, Eq.symm, List.cons, List.sum, LT.lt, Membership.mem, ZagierMZV.multiZeta.match_1, Unit, And, HAdd.hAdd, Eq.refl

    16 instances, coercions and auxiliary constants left out.

    Tactic trace: 8 steps

    Open to load the checked before-and-after goal states.

    theorem no_admissible_weight_one (s : List ℕ) (h : AdmissibleIndex s) : weight s ≠ 1 := by
    …

    Mentions: ZagierMZV.AdmissibleIndex, ZagierMZV.weight

  11. theorem ZagierMZV.dim_mzv_weight_zero $\mathcal{Z}_0 = \mathbb{Q}$, so $\dim_\mathbb{Q}(\mathcal{Z}_0) = 1$ line 139 source

    Source documentation

    $\mathcal{Z}_0 = \mathbb{Q}$, so $\dim_\mathbb{Q}(\mathcal{Z}_0) = 1$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Nat, Module.finrank, Rat, Subtype, Real, Membership.mem, Submodule, ZagierMZV.mzvSpanOfWeight, OfNat.ofNat

    Proof uses: Set, ZagierMZV.mzvSetOfWeight, Singleton.singleton, Set.ext, Eq.mpr, Iff, Exists, List, And, ZagierMZV.AdmissibleIndex, ZagierMZV.weight, ZagierMZV.multiZeta, id, congr, congrArg, Set.ofPred, Iff.intro, List.nil, Eq.refl, Eq.symm and 19 more

    85 instances, coercions and auxiliary constants left out.

    Tactic trace: 22 steps

    Open to load the checked before-and-after goal states.

    theorem dim_mzv_weight_zero : Module.finrank ℚ (mzvSpanOfWeight 0) = 1 := by
    …

    Mentions: ZagierMZV.mzvSpanOfWeight

  12. theorem ZagierMZV.dim_mzv_weight_one $\mathcal{Z}_1 = \emptyset$, so $\dim_\mathbb{Q}(\mathcal{Z}_1) = 0$ line 161 source

    Source documentation

    $\mathcal{Z}_1 = \emptyset$, so $\dim_\mathbb{Q}(\mathcal{Z}_1) = 0$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Nat, Module.finrank, Rat, Subtype, Real, Membership.mem, Submodule, ZagierMZV.mzvSpanOfWeight, OfNat.ofNat

    Proof uses: Set, ZagierMZV.mzvSetOfWeight, EmptyCollection.emptyCollection, Set.ext, Eq.mpr, Iff, Exists, List, And, ZagierMZV.AdmissibleIndex, ZagierMZV.weight, ZagierMZV.multiZeta, False, id, congr, congrArg, Set.ofPred, Iff.intro, ZagierMZV.no_admissible_weight_one, False.elim and 6 more

    69 instances, coercions and auxiliary constants left out.

    Tactic trace: 11 steps

    Open to load the checked before-and-after goal states.

    theorem dim_mzv_weight_one : Module.finrank ℚ (mzvSpanOfWeight 1) = 0 := by
    …

    Mentions: ZagierMZV.mzvSpanOfWeight

  13. theorem ZagierMZV.multiZeta_empty line 173 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Real, ZagierMZV.multiZeta, List.nil, Nat, OfNat.ofNat

    Proof uses: of_eq_true, eq_self

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

  14. theorem ZagierMZV.multiZeta_two Euler's identity: $\zeta(2) = \pi^2/6$ line 178 source

    Source documentation

    Euler's identity: $\zeta(2) = \pi^2/6$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Real, ZagierMZV.multiZeta, List.cons, Nat, OfNat.ofNat, List.nil, HDiv.hDiv, HPow.hPow, Real.pi

    Proof uses: tsum, HAdd.hAdd, SummationFilter.unconditional, id, of_eq_true, ZagierMZV.multiZeta.match_1, List, Unit, HMul.hMul, ZagierMZV.multiZeta.aux, Eq.trans, True, congrFun', congrArg, SummationFilter, optParam, funext, mul_one, eq_self, Eq.mpr and 20 more

    80 instances, coercions and auxiliary constants left out.

    Tactic trace: 16 steps

    Open to load the checked before-and-after goal states.

    theorem multiZeta_two : multiZeta [2] = Real.pi ^ 2 / 6 := by
    …

    Mentions: ZagierMZV.multiZeta

  15. theorem ZagierMZV.multiZeta_four Euler's identity for $\zeta(4) = \pi^4/90$ line 198 source

    Source documentation

    Euler's identity for $\zeta(4) = \pi^4/90$.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Real, ZagierMZV.multiZeta, List.cons, Nat, OfNat.ofNat, List.nil, HDiv.hDiv, HPow.hPow, Real.pi

    Proof uses: tsum, HAdd.hAdd, SummationFilter.unconditional, id, of_eq_true, ZagierMZV.multiZeta.match_1, List, Unit, HMul.hMul, ZagierMZV.multiZeta.aux, Eq.trans, True, congrFun', congrArg, SummationFilter, optParam, funext, mul_one, eq_self, Eq.mpr and 24 more

    81 instances, coercions and auxiliary constants left out.

    Tactic trace: 18 steps

    Open to load the checked before-and-after goal states.

    theorem multiZeta_four : multiZeta [4] = Real.pi ^ 4 / 90 := by
    …

    Mentions: ZagierMZV.multiZeta