Skip to content

Commit 29f21b6

Browse files
committed
feat(NumberTheory/Modular): strengthen 2nd Fundamental-Domain Lemma (leanprover-community#36736)
Strengthen the results on the fundamental domain for the modular group, by proving that the interior of the fundamental domain is disjoint from any translate of the fundamental domain. Proof closely follows Serre _A Course in Arithmetic_ (although Serre also proves that S, T generate the modular group at the same time, which we do not do, since this is proved by a different method in `FixedDetMatrices`).
1 parent 05c4d64 commit 29f21b6

5 files changed

Lines changed: 385 additions & 56 deletions

File tree

Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,26 @@ structure UpperHalfPlane where
2929

3030
@[inherit_doc] scoped[UpperHalfPlane] notation "ℍ" => UpperHalfPlane
3131

32-
open UpperHalfPlane
32+
open UpperHalfPlane Complex
3333

3434
namespace UpperHalfPlane
3535

3636
attribute [coe] UpperHalfPlane.coe
3737

3838
instance : CoeOut ℍ ℂ := ⟨UpperHalfPlane.coe⟩
3939

40-
/-- Define I := √-1 as an element on the upper half plane. -/
40+
/-- Define `I := √-1` as an element of the upper half plane. -/
4141
def I : ℍ := ⟨Complex.I, zero_lt_one⟩
4242

43+
/-- Define the cube root of unity `ρ := (-1 + √-3) / 2` as an element of the upper half plane. -/
44+
def ρ : ℍ := ⟨⟨-1 / 2, Real.sqrt 3 / 2⟩, by positivity⟩
45+
46+
lemma ρ_sq : (ρ : ℂ) ^ 2 = -ρ - 1 := by
47+
simp [Complex.ext_iff, pow_two, ρ]
48+
grind
49+
50+
lemma norm_ρ : ‖(ρ : ℂ)‖ = 1 := by norm_num [norm_def, normSq, ← pow_two, ρ, div_pow]
51+
4352
instance : Inhabited ℍ := ⟨.I⟩
4453

4554
@[simp, norm_cast] theorem coe_inj {a b : ℍ} : (a : ℂ) = b ↔ a = b := UpperHalfPlane.ext_iff.symm
@@ -123,6 +132,14 @@ theorem ne_zero (z : ℍ) : (z : ℂ) ≠ 0 :=
123132
lemma mem_slitPlane (z : ℍ) : (z : ℂ) ∈ Complex.slitPlane := by
124133
simp [Complex.slitPlane, im_ne_zero z]
125134

135+
/-- Criterion for equality in terms of real part and norm. Useful when working with the
136+
geometry of the fundamental domain. -/
137+
lemma eq_of_re_of_norm {τ τ' : ℍ} (hre : τ.re = τ'.re) (hnorm : ‖(τ : ℂ)‖ = ‖(τ' : ℂ)‖) :
138+
τ = τ' := by
139+
apply_fun (· ^ 2) at hnorm
140+
simpa [UpperHalfPlane.ext_iff, Complex.ext_iff, hre, Complex.normSq, Complex.sq_norm,
141+
← pow_two, pow_left_inj₀ τ.im_pos.le τ'.im_pos.le two_ne_zero] using hnorm
142+
126143
end UpperHalfPlane
127144

128145
namespace Mathlib.Meta.Positivity

Mathlib/Analysis/Complex/UpperHalfPlane/MoebiusAction.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ Authors: Alex Kontorovich, Heather Macbeth, Marc Masdeu
66
module
77

88
public import Mathlib.Analysis.Complex.UpperHalfPlane.Basic
9-
public import Mathlib.Data.Fintype.Parity
109
public import Mathlib.LinearAlgebra.Matrix.GeneralLinearGroup.Defs
1110

1211
/-!

Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Anne Baanen, Wen Yang
55
-/
66
module
77

8+
public import Mathlib.Data.Fintype.Parity
89
public import Mathlib.LinearAlgebra.Matrix.Adjugate
910
public import Mathlib.LinearAlgebra.Matrix.ToLin
1011
public import Mathlib.LinearAlgebra.Matrix.Transvection
@@ -77,6 +78,9 @@ namespace SpecialLinearGroup
7778

7879
variable {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R]
7980

81+
/-- If `R` and `n` have decidable equality then so does `SL(n, R)`. -/
82+
instance [DecidableEq R] : DecidableEq (SpecialLinearGroup n R) := Subtype.instDecidableEq
83+
8084
instance hasCoeToMatrix : Coe (SpecialLinearGroup n R) (Matrix n n R) :=
8185
fun A => A.val⟩
8286

@@ -479,6 +483,8 @@ def T : SL(2, ℤ) :=
479483
theorem coe_S : ↑S = !![0, -1; 1, 0] :=
480484
rfl
481485

486+
lemma S_inv : S⁻¹ = -S := by decide
487+
482488
theorem coe_T : ↑T = (!![1, 1; 0, 1] : Matrix _ _ ℤ) :=
483489
rfl
484490

0 commit comments

Comments
 (0)