Skip to content

[Merged by Bors] - feat: explicit volume computations in NumberTheory.NumberField.CanonicalEmbedding #6886

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 68 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
ed5dff2
1st commit
xroblot Aug 28, 2023
a254aac
1st clean commit
xroblot Aug 31, 2023
9f3a12c
Whitespace
xroblot Aug 31, 2023
8eefbeb
1st commit
xroblot Aug 31, 2023
4a528a6
1st commit
xroblot Aug 31, 2023
a44f60c
Clean up
xroblot Sep 1, 2023
95b2f22
Merge remote-tracking branch 'origin' into xfr_complex_measure_ishaar
xroblot Sep 2, 2023
ff02d50
Review
xroblot Sep 2, 2023
34c99ae
Review
xroblot Sep 2, 2023
b974b15
New version
xroblot Sep 5, 2023
fdec608
Fix imports
xroblot Sep 5, 2023
820f44a
Lint
xroblot Sep 5, 2023
2df6385
Add results from #19013
xroblot Sep 5, 2023
bd3e38e
Merge remote-tracking branch 'origin' into xfr-integral_sqrt
xroblot Sep 5, 2023
ca9f1a6
Move result
xroblot Sep 5, 2023
9139831
Clean up
xroblot Sep 5, 2023
2b24e48
clean up + docstring
xroblot Sep 5, 2023
eec4fcf
clean up
xroblot Sep 5, 2023
97fb274
adjust hypothesis
xroblot Sep 5, 2023
d719b49
Merge remote-tracking branch 'origin/xfr-integral_sqrt' into xfr-comp…
xroblot Sep 5, 2023
f52b882
Merge remote-tracking branch 'origin/xfr_complex_measure_ishaar' into…
xroblot Sep 5, 2023
1766342
1st commit
xroblot Sep 8, 2023
01b073e
Clean up
xroblot Sep 8, 2023
f4fd951
Whitespace
xroblot Sep 8, 2023
4b1844e
Merge remote-tracking branch 'origin/xfr_haartools' into xfr_complex_…
xroblot Sep 8, 2023
a0f3fcc
1st commit
xroblot Sep 8, 2023
7bab286
Merge remote-tracking branch 'origin' into xfr-complex_ball
xroblot Sep 8, 2023
b4781f7
Merge branch 'xfr_complex_measure_ishaar' into xfr-complex_ball
xroblot Sep 8, 2023
a51a0c0
Merge remote-tracking branch 'origin/xfr-euclidean_preserve_measure' …
xroblot Sep 8, 2023
c048329
Restore statement
xroblot Sep 12, 2023
a48fdff
Merge remote-tracking branch 'origin' into xfr_complex_measure_ishaar
xroblot Sep 12, 2023
0b537a1
Clean up after merge
xroblot Sep 12, 2023
7f6d0f4
Merge remote-tracking branch 'origin/master' into xfr-euclidean_prese…
xroblot Sep 12, 2023
315410c
Change to LinearIsometryEquiv.refl
xroblot Sep 12, 2023
5908c93
New version
xroblot Sep 12, 2023
40382d4
Complete proof
xroblot Sep 12, 2023
744ab96
Merge remote-tracking branch 'origin' into xfr-complex_ball
xroblot Sep 12, 2023
1396047
Merge branch 'xfr-euclidean_preserve_measure' into xfr-complex_ball
xroblot Sep 12, 2023
c9136f3
Merge branch 'xfr_complex_measure_ishaar' into xfr-complex_ball
xroblot Sep 12, 2023
e53150b
Change default
xroblot Sep 12, 2023
bd5119a
Review
xroblot Sep 12, 2023
b82f912
Remove lemmas
xroblot Sep 12, 2023
0e97f9c
Review
xroblot Sep 12, 2023
eddc472
Review
xroblot Sep 13, 2023
7d701ac
Merge branch 'xfr-euclidean_preserve_measure' into xfr-complex_ball
xroblot Sep 13, 2023
66e524d
Clean up after merge
xroblot Sep 13, 2023
07c5f29
Merge remote-tracking branch 'origin' into xfr-complex_ball
xroblot Sep 13, 2023
f60ff32
Whitespace
xroblot Sep 13, 2023
b20232b
Change instance
xroblot Sep 13, 2023
3abf395
Merge remote-tracking branch 'origin' into xfr-complex_ball
xroblot Sep 16, 2023
6b3e959
Merge remote-tracking branch 'origin' into xfr-complex_ball
xroblot Sep 22, 2023
d6affe9
Merge branch 'xfr-complex_ball' into xfr_volume-computations
xroblot Sep 22, 2023
6ef3c2d
Small changes
xroblot Sep 23, 2023
24193eb
Small clean up
xroblot Sep 23, 2023
39a2fa1
Add docstring
xroblot Sep 23, 2023
9c4f585
Merge remote-tracking branch 'origin' into xfr_volume-computations
xroblot Sep 28, 2023
b3226d3
Clean after merge
xroblot Sep 28, 2023
0d7ef77
Fix timeout
xroblot Sep 29, 2023
f4c4b04
Merge remote-tracking branch 'origin' into xfr_volume-computations
xroblot Oct 26, 2023
b4f47a6
clean up
xroblot Oct 26, 2023
a2b1044
Merge remote-tracking branch 'origin' into xfr_volume-computations
xroblot Oct 31, 2023
f9b6720
Review
xroblot Nov 3, 2023
357f786
"Golf" proof
xroblot Nov 3, 2023
ce9555f
change name to matrixToStdBasis
xroblot Nov 3, 2023
3c7a0f4
Minor clean up
xroblot Nov 3, 2023
5f9938d
Use abbrev for number of places
xroblot Nov 3, 2023
54f1eda
Add docstrings
xroblot Nov 4, 2023
5cede47
Merge remote-tracking branch 'origin' into xfr_volume-computations
xroblot Nov 4, 2023
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
Prev Previous commit
Next Next commit
Small clean up
  • Loading branch information
xroblot committed Sep 23, 2023
commit 24193eb0550804abc0dccd0b5ce638ab2f5c483f
15 changes: 6 additions & 9 deletions Mathlib/NumberTheory/NumberField/CanonicalEmbedding.lean
Original file line number Diff line number Diff line change
@@ -250,8 +250,6 @@ end commMap

noncomputable section stdBasis

variable [NumberField K]

open Classical Complex MeasureTheory MeasureTheory.Measure Zspan Matrix BigOperators
ComplexConjugate

@@ -260,8 +258,8 @@ variable [NumberField K]
/-- The type indexing the basis `stdBasis`. -/
abbrev index := {w : InfinitePlace K // IsReal w} ⊕ ({w : InfinitePlace K // IsComplex w}) × (Fin 2)

/-- The `ℝ`-basis of `({w // IsReal w} → ℝ) × ({ w // IsComplex w } → ℂ)` formed of the vector
equal to `1` at `w` and `0` elsewhere for `IsReal w` and of the couple of vectors equal to `1`
/-- The `ℝ`-basis of `({w // IsReal w} → ℝ) × ({ w // IsComplex w } → ℂ)` formed by the vector
equal to `1` at `w` and `0` elsewhere for `IsReal w` and by the couple of vectors equal to `1`
(resp. `I`) at `w` and `0` elsewhere for `IsComplex w`. -/
def stdBasis : Basis (index K) ℝ (E K) :=
Basis.prod (Pi.basisFun ℝ _)
@@ -293,9 +291,9 @@ theorem fundamentalDomain_stdBasis :
theorem volume_fundamentalDomain_stdBasis :
volume (fundamentalDomain (stdBasis K)) = 1 := by
rw [fundamentalDomain_stdBasis, volume_eq_prod, prod_prod, volume_pi, volume_pi, pi_pi, pi_pi,
Real.volume_Ico, sub_zero, ENNReal.ofReal_one, Finset.prod_const_one, one_mul,
Complex.volume_preserving_equiv_pi.measure_preimage ?_, volume_pi, pi_pi, Real.volume_Ico,
sub_zero, ENNReal.ofReal_one, Finset.prod_const_one, Finset.prod_const_one]
sub_zero, ENNReal.ofReal_one, Finset.prod_const_one, Finset.prod_const_one,
Finset.prod_const_one, one_mul]
exact MeasurableSet.pi Set.countable_univ (fun _ _ => measurableSet_Ico)

/-- The `Equiv` between `index K` and `K →+* ℂ` defined by sending a real infinite place `w` to
@@ -352,13 +350,12 @@ theorem det_matrix_to_stdBasis :
det_reindex_self, det_blockDiagonal]
_ = ∏ k : { w : InfinitePlace K // IsComplex w }, (2⁻¹ * Complex.I) := by
refine Finset.prod_congr (Eq.refl _) (fun _ _ => ?_)
simp_rw [smul_of, smul_cons, smul_eq_mul, mul_one, smul_empty, det_fin_two_of, mul_neg,
sub_neg_eq_add, ← mul_add, ← two_mul, inv_mul_cancel_left₀ (two_ne_zero (α := ℂ))]
field_simp; ring
_ = (2⁻¹ * Complex.I) ^ Fintype.card {w : InfinitePlace K // IsComplex w} := by
rw [Finset.prod_const, Fintype.card]

/-- Let `x : (K →+* ℂ) → ℂ` such that `x_φ = conj x_(conj φ)` for all `φ : K →+* ℂ`, then the
representation of `comMap K x` on `stdBasis` is given (up to reindexing) by the multiplication of
representation of `comMap K x` on `stdBasis` is given (up to reindexing) by the product of
`matrix_to_stdBasis` by `x`. -/
theorem stdBasis_repr_eq_matrix_to_stdBasis_mul (x : (K →+* ℂ) → ℂ)
(hx : ∀ φ, conj (x φ) = x (ComplexEmbedding.conjugate φ)) (c : index K) :
2 changes: 1 addition & 1 deletion Mathlib/NumberTheory/NumberField/Discriminant.lean
Original file line number Diff line number Diff line change
@@ -53,7 +53,7 @@ theorem _root_.NumberField.mixedEmbedding.volume_fundamentalDomain_latticeBasis
Real.toNNReal (Real.sqrt |discr K|) := by
rw [← toNNReal_eq_toNNReal_iff' (ne_of_lt (fundamentalDomain_isBounded _).measure_lt_top)
(ENNReal.mul_ne_top (coe_ne_top) (coe_ne_top)), toNNReal_mul, toNNReal_coe]
let f : Module.Free.ChooseBasisIndex ℤ (𝓞 K) ≃ (K →+* ℂ) :=
let f : Module.Free.ChooseBasisIndex ℤ (𝓞 K) ≃ (K →+* ℂ) :=
(canonicalEmbedding.latticeBasis K).indexEquiv (Pi.basisFun ℂ _)
let e : (index K) ≃ Module.Free.ChooseBasisIndex ℤ (𝓞 K) := (indexEquiv K).trans f.symm
let M := (mixedEmbedding.stdBasis K).toMatrix ((latticeBasis K).reindex e.symm)