@@ -8,7 +8,7 @@ import linear_algebra.matrix.special_linear_group
88import analysis.complex.basic
99import group_theory.group_action.defs
1010import linear_algebra.matrix.general_linear_group
11-
11+ import tactic.linear_combination
1212
1313/-!
1414# The upper half plane and its automorphisms
@@ -30,11 +30,13 @@ open_locale classical big_operators matrix_groups
3030
3131local attribute [instance] fintype.card_fin_even
3232
33- /- Disable this instances as it is not the simp-normal form, and having them disabled ensures
33+ /- Disable these instances as they are not the simp-normal form, and having them disabled ensures
3434we state lemmas in this file without spurious `coe_fn` terms. -/
3535local attribute [-instance] matrix.special_linear_group.has_coe_to_fun
36+ local attribute [-instance] matrix.general_linear_group.has_coe_to_fun
3637
3738local prefix `↑ₘ`:1024 := @coe _ (matrix (fin 2 ) (fin 2 ) _) _
39+ local notation `↑ₘ[`:1024 R `]` := @coe _ (matrix (fin 2 ) (fin 2 ) R) _
3840
3941local notation `GL (` n `, ` R `)`⁺ := matrix.GL_pos (fin n) R
4042
@@ -84,6 +86,9 @@ by { rw complex.norm_sq_pos, exact z.ne_zero }
8486
8587lemma norm_sq_ne_zero (z : ℍ) : complex.norm_sq (z : ℂ) ≠ 0 := (norm_sq_pos z).ne'
8688
89+ lemma im_inv_neg_coe_pos (z : ℍ) : 0 < ((-z : ℂ)⁻¹).im :=
90+ by simpa using div_pos z.property (norm_sq_pos z)
91+
8792/-- Numerator of the formula for a fractional linear transformation -/
8893@[simp] def num (g : GL(2 , ℝ)⁺) (z : ℍ) : ℂ := (↑ₘg 0 0 : ℝ) * z + (↑ₘg 0 1 : ℝ)
8994
@@ -217,6 +222,11 @@ instance subgroup_to_SL_tower : is_scalar_tower Γ SL(2,ℤ) ℍ :=
217222
218223end modular_scalar_towers
219224
225+ lemma special_linear_group_apply {R : Type *} [comm_ring R] [algebra R ℝ] (g : SL(2 , R)) (z : ℍ) :
226+ g • z = mk ((((↑(↑ₘ[R] g 0 0 ) : ℝ) : ℂ) * z + ((↑(↑ₘ[R] g 0 1 ) : ℝ) : ℂ)) /
227+ (((↑(↑ₘ[R] g 1 0 ) : ℝ) : ℂ) * z + ((↑(↑ₘ[R] g 1 1 ) : ℝ) : ℂ))) (g • z).property :=
228+ rfl
229+
220230@[simp] lemma coe_smul (g : GL(2 , ℝ)⁺) (z : ℍ) : ↑(g • z) = num g z / denom g z := rfl
221231@[simp] lemma re_smul (g : GL(2 , ℝ)⁺) (z : ℍ) : (g • z).re = (num g z / denom g z).re := rfl
222232lemma im_smul (g : GL(2 , ℝ)⁺) (z : ℍ) : (g • z).im = (num g z / denom g z).im := rfl
@@ -299,4 +309,40 @@ variables (x : ℝ) (z : ℍ)
299309
300310end real_add_action
301311
312+ @[simp] lemma modular_S_smul (z : ℍ) : modular_group.S • z = mk (-z : ℂ)⁻¹ z.im_inv_neg_coe_pos :=
313+ by { rw special_linear_group_apply, simp [modular_group.S, neg_div, inv_neg], }
314+
315+ lemma exists_SL2_smul_eq_of_apply_zero_one_eq_zero (g : SL(2 , ℝ)) (hc : ↑ₘ[ℝ] g 1 0 = 0 ) :
316+ ∃ (u : {x : ℝ // 0 < x}) (v : ℝ),
317+ ((•) g : ℍ → ℍ) = (λ z, v +ᵥ z) ∘ (λ z, u • z) :=
318+ begin
319+ obtain ⟨a, b, ha, rfl⟩ := g.fin_two_exists_eq_mk_of_apply_zero_one_eq_zero hc,
320+ refine ⟨⟨_, mul_self_pos.mpr ha⟩, b * a, _⟩,
321+ ext1 ⟨z, hz⟩, ext1,
322+ suffices : ↑a * z * a + b * a = b * a + a * a * z,
323+ { rw special_linear_group_apply, simpa [add_mul], },
324+ ring,
325+ end
326+
327+ lemma exists_SL2_smul_eq_of_apply_zero_one_ne_zero (g : SL(2 , ℝ)) (hc : ↑ₘ[ℝ] g 1 0 ≠ 0 ) :
328+ ∃ (u : {x : ℝ // 0 < x}) (v w : ℝ),
329+ ((•) g : ℍ → ℍ) = ((+ᵥ) w : ℍ → ℍ) ∘ ((•) modular_group.S : ℍ → ℍ)
330+ ∘ ((+ᵥ) v : ℍ → ℍ) ∘ ((•) u : ℍ → ℍ) :=
331+ begin
332+ have h_denom := denom_ne_zero g,
333+ induction g using matrix.special_linear_group.fin_two_induction with a b c d h,
334+ replace hc : c ≠ 0 , { simpa using hc, },
335+ refine ⟨⟨_, mul_self_pos.mpr hc⟩, c * d, a / c, _⟩,
336+ ext1 ⟨z, hz⟩, ext1,
337+ suffices : (↑a * z + b) / (↑c * z + d) = a / c - (c * d + ↑c * ↑c * z)⁻¹,
338+ { rw special_linear_group_apply, simpa [-neg_add_rev, inv_neg, ← sub_eq_add_neg], },
339+ replace hc : (c : ℂ) ≠ 0 , { norm_cast, assumption, },
340+ replace h_denom : ↑c * z + d ≠ 0 , { simpa using h_denom ⟨z, hz⟩, },
341+ have h_aux : (c : ℂ) * d + ↑c * ↑c * z ≠ 0 ,
342+ { rw [mul_assoc, ← mul_add, add_comm], exact mul_ne_zero hc h_denom, },
343+ replace h : (a * d - b * c : ℂ) = (1 : ℂ), { norm_cast, assumption, },
344+ field_simp,
345+ linear_combination (-(z * ↑c ^ 2 ) - ↑c * ↑d) * h,
346+ end
347+
302348end upper_half_plane
0 commit comments