Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions CebotarevDensity/ForMathlib/NormLeOneLipschitz.lean
Original file line number Diff line number Diff line change
Expand Up @@ -435,4 +435,39 @@ theorem exists_phase_mem_Icc_mul_exp (z : β„‚) :
push_cast; ring, hreal]
exact Complex.norm_mul_exp_arg_mul_I z

open scoped Classical in
/-- The lift splits the `d βˆ’ 1` cube coordinates into the `r βˆ’ 1 = #InfinitePlace K βˆ’ 1`
"modulus" coordinates (fed to a `realSpace`-valued cover map) and the `rβ‚‚` "phase" coordinates
(one per complex place). The cardinalities match: `(d βˆ’ 1) = (r βˆ’ 1) + rβ‚‚` follows from
`r₁ + 2 rβ‚‚ = d` (`card_add_two_mul_card_eq_rank`) and `r = r₁ + rβ‚‚`
(`card_eq_nrRealPlaces_add_nrComplexPlaces`), with `r β‰₯ 1` (`Fintype.card_pos`). -/
noncomputable def mixedCubeEquiv : Fin (Module.finrank β„š K - 1)
≃ Fin (Fintype.card (InfinitePlace K) - 1) βŠ• {w : InfinitePlace K // IsComplex w} := by
apply Fintype.equivOfCardEq
rw [Fintype.card_sum, Fintype.card_fin, Fintype.card_fin]
have h1 : Fintype.card (InfinitePlace K) = nrRealPlaces K + nrComplexPlaces K :=
card_eq_nrRealPlaces_add_nrComplexPlaces K
have h2 : nrRealPlaces K + 2 * nrComplexPlaces K = Module.finrank β„š K :=
card_add_two_mul_card_eq_rank K
have hpos : 1 ≀ Fintype.card (InfinitePlace K) := Fintype.card_pos
have h3 : nrComplexPlaces K = Fintype.card {w : InfinitePlace K // IsComplex w} := rfl
lia

/-- Lift a `realSpace`-valued cover map `ψ` to a `mixedSpace`-valued map, using the first
`r βˆ’ 1` cube coordinates as the modulus input to `ψ` and the last `rβ‚‚` coordinates as the phases
of the complex places, with the real places carrying the sign pattern `Ξ΅`.

At a real place `w` the coordinate is `± (ψ ·) w`; at a complex place `w` it is
`(ψ Β·) w Β· exp((2Ο€ ΞΈ_w βˆ’ Ο€) i)`. By construction `normAtAllPlaces (liftToMixed ψ Ξ΅ c) = ψ (…)`
whenever the modulus values `(ψ ·) w` are nonnegative. -/
noncomputable def liftToMixed (ψ : (Fin (Fintype.card (InfinitePlace K) - 1) β†’ ℝ) β†’ realSpace K)
(Ξ΅ : {w : InfinitePlace K // IsReal w} β†’ Bool)
(c : Fin (Module.finrank β„š K - 1) β†’ ℝ) : mixedSpace K :=
(fun w : {w : InfinitePlace K // IsReal w} ↦
(if Ξ΅ w then (1 : ℝ) else -1) * ψ (fun i ↦ c ((mixedCubeEquiv K).symm (Sum.inl i))) w.1,
fun w : {w : InfinitePlace K // IsComplex w} ↦
(ψ (fun i ↦ c ((mixedCubeEquiv K).symm (Sum.inl i))) w.1 : β„‚) *
Complex.exp ((2 * Real.pi * c ((mixedCubeEquiv K).symm (Sum.inr w)) - Real.pi) *
Complex.I))

end Chebotarev