Paper X · Lean source

WeilSpecialChain.lean

Declared contract recorded Coverage and evidence

The cited release explicitly reports completion of its registered formal contract, under its exact hypotheses.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (2)

PaperX/WeilSpecialChain.lean124 lines

Original source pathcurrent_continuation/lean/PaperX/WeilSpecialChain.lean
Skip declarations and read code

Skip source text

1 import PaperX.WeilEuler
2 import PaperX.SpecialMonodromy
3 
4 /-! The special monodromy chain is extended to an actual action of the whole
5 group using two characters. Ramified scalar inertia kills every fixed vector. -/
6 set_option autoImplicit false
7 noncomputable section
8 namespace PaperX.WeilSpecialChain
9 open Polynomial PaperX.WeilData PaperX.WeilEuler PaperX.SpecialMonodromy
10 variable {K G : Type*} [Field K] [Group G]
11 
12 def chainRep (ν α : G →* Kˣ) (n : ℕ) : Representation K G (Fin n → K) where
13   toFun g := (diagonalF (ν g) (α g) n).toLinearMap
14   map_one' := by apply LinearMap.ext; intro x; funext j; simp [diagonalF]
15   map_mul' g h := by
16     apply LinearMap.ext
17     intro x
18     funext j
19     simp [diagonalF, mul_pow, mul_comm, mul_left_comm, mul_assoc]
20 
21 def chainDatum (ν α : G →* Kˣ) (n : ℕ) : Datum ν (Fin n → K) where
22   r := chainRep ν α n
23   N := shift n
24   nilpotent := ⟨n, shift_nilpotent n⟩
25   relation g := chain_relation (ν g) (α g) n
26 
27 theorem inertia_scalar (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G)
28     (hν : ∀ h : H, ν h = 1) (h : H) (x : Fin n → K) :
29     (chainDatum ν α n).r h x = (α h : K) • x := by
30   funext j
31   simp [chainDatum, chainRep, diagonalF, hν h]
32 
33 theorem unramified_fixed (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G)
34     (hν : ∀ h : H, ν h = 1) (hα : ∀ h : H, α h = 1) :
35     fixedKernel (chainDatum ν α n) H = LinearMap.ker (shift (K := K) n) := by
36   apply fixedKernel_eq_kernel
37   intro h
38   apply LinearMap.ext
39   intro x
40   rw [inertia_scalar ν α n H hν h x, hα h]
41   simp
42 
43 /-- The unramified local space is the earlier kernel, with the same actual F-action. -/
44 def unramifiedKernelEquiv (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G)
45     (hν : ∀ h : H, ν h = 1) (hα : ∀ h : H, α h = 1) :
46     fixedKernel (chainDatum ν α n) H ≃ₗ[K] LinearMap.ker (shift (K := K) n) :=
47   LinearEquiv.ofEq _ _ (unramified_fixed ν α n H hν hα)
48 
49 theorem unramified_charpoly (ν α : G →* Kˣ) (n : ℕ) (hn : 0 < n)
50     (H : Subgroup G) [H.Normal] (hν : ∀ h : H, ν h = 1)
51     (hα : ∀ h : H, α h = 1) (φ : G) :
52     localCharpoly (chainDatum ν α n) H φ = X - C (α φ : K) := by
53   let e := unramifiedKernelEquiv ν α n H hν hα
54   have he : e.conj (fixedRep (chainDatum ν α n) H φ) =
55       (PaperX.MonodromyData.kernelF (specialDatum (ν φ) (α φ) n)).toLinearMap := by
56     apply LinearMap.ext
57     intro x
58     apply Subtype.ext
59     rfl
60   unfold localCharpoly
61   rw [← LinearEquiv.charpoly_conj e, he]
62   exact special_kernel_charpoly (ν φ) (α φ) n hn
63 
64 theorem ramified_fixed (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G)
65     (hν : ∀ h : H, ν h = 1) (hα : ∃ h : H, α h ≠ 1) :
66     fixedKernel (chainDatum ν α n) H = ⊥ := by
67   obtain ⟨h, hh⟩ := hα
68   apply eq_bot_iff.mpr
69   intro x hx
70   change x = 0
71   have hf : (α h : K) • x = x :=
72     (inertia_scalar ν α n H hν h x).symm.trans (hx.2 h)
73   have hz : ((α h : K) - 1) • x = 0 := by rw [sub_smul, one_smul, hf, sub_self]
74   have ha : (α h : K) - 1 ≠ 0 := sub_ne_zero.mpr (by
75     intro he
76     apply hh
77     apply Units.ext
78     exact he)
79   exact (smul_eq_zero.mp hz).resolve_left ha
80 
81 theorem unramified_dimension (ν α : G →* Kˣ) (n : ℕ) (hn : 0 < n)
82     (H : Subgroup G) (hν : ∀ h : H, ν h = 1) (hα : ∀ h : H, α h = 1) :
83     Module.finrank K (fixedKernel (chainDatum ν α n) H) = 1 := by
84   rw [unramified_fixed ν α n H hν hα, (kernelLine (K := K) n hn).finrank_eq]
85   simp
86 
87 theorem ramified_dimension (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G)
88     (hν : ∀ h : H, ν h = 1) (hα : ∃ h : H, α h ≠ 1) :
89     Module.finrank K (fixedKernel (chainDatum ν α n) H) = 0 := by
90   rw [ramified_fixed ν α n H hν hα]
91   simp
92 
93 theorem ramified_charpoly (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G) [H.Normal]
94     (hν : ∀ h : H, ν h = 1) (hα : ∃ h : H, α h ≠ 1) (φ : G) :
95     localCharpoly (chainDatum ν α n) H φ = 1 := by
96   have hd : (localCharpoly (chainDatum ν α n) H φ).natDegree = 0 := by
97     rw [localCharpoly, LinearMap.charpoly_natDegree, ramified_dimension ν α n H hν hα]
98   have hc : (localCharpoly (chainDatum ν α n) H φ).coeff 0 = 1 := by
99     rw [← hd]
100     exact (LinearMap.charpoly_monic _).leadingCoeff
101   rw [Polynomial.eq_C_of_natDegree_eq_zero hd, hc, Polynomial.C_1]
102 
103 
104 theorem reverse_linear (a : K) : (X - C a).reverse = 1 - C a * X := by
105   have h1 : (1 : Polynomial K).reverse = 1 := by
106     simpa using Polynomial.reverse_C (1 : K)
107   have hx : (X : Polynomial K).reverse = 1 := by
108     simpa [h1] using Polynomial.reverse_mul_X (1 : Polynomial K)
109   rw [sub_eq_add_neg, ← map_neg, Polynomial.reverse_add_C]
110   simp [hx, sub_eq_add_neg]
111 
112 theorem unramified_euler (ν α : G →* Kˣ) (n : ℕ) (hn : 0 < n)
113     (H : Subgroup G) [H.Normal] (hν : ∀ h : H, ν h = 1)
114     (hα : ∀ h : H, α h = 1) (φ : G) :
115     eulerPolynomial (chainDatum ν α n) H φ = 1 - C (α φ : K) * X := by
116   rw [eulerPolynomial, unramified_charpoly ν α n hn H hν hα φ, reverse_linear]
117 
118 theorem ramified_euler (ν α : G →* Kˣ) (n : ℕ) (H : Subgroup G) [H.Normal]
119     (hν : ∀ h : H, ν h = 1) (hα : ∃ h : H, α h ≠ 1) (φ : G) :
120     eulerPolynomial (chainDatum ν α n) H φ = 1 := by
121   rw [eulerPolynomial, ramified_charpoly ν α n H hν hα φ]
122   simpa using Polynomial.reverse_C (1 : K)
123 
124 end PaperX.WeilSpecialChain

Back to source controls

Original file and source record

This copy matches the recorded source file. Its publication here does not change the work’s review status.

SHA-256: 9854e9fb8ec2c30c5493ef1c1073705bc24b3553fc9b0a1d8f065bb49cf662ba

Original source on GitHub

Back to Paper X: Universal Residual Seeds and Conditional Occupied-System Completion