Matrices with fixed determinant #
This file defines the type of matrices with fixed determinant m and proves some basic results
about them.
We also prove that the subgroup of SL(2,ℤ) generated by S and T is the whole group.
Note: Some of this was done originally in Lean 3 in the kbb (https://github.com/kim-em/kbb/tree/master) repository, so credit to those authors.
theorem FixedDetMatrices.ext' (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] {m : R} {A B : FixedDetMatrix n R m} (h : ↑A = ↑B) :
Extensionality theorem for FixedDetMatrix with respect to the underlying matrix, not
entrywise.
theorem FixedDetMatrices.ext (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] {m : R} {A B : FixedDetMatrix n R m} (h : ∀ (i j : n), ↑A i j = ↑B i j) :
theorem FixedDetMatrices.ext_iff {n : Type u_1} [DecidableEq n] [Fintype n] {R : Type u_2} [CommRing R] {m : R} {A B : FixedDetMatrix n R m} :
@[instance_reducible]
instance FixedDetMatrices.instSMulSpecialLinearGroupFixedDetMatrix (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] (m : R) :
SMul (Matrix.SpecialLinearGroup n R) (FixedDetMatrix n R m)
Equations
- FixedDetMatrices.instSMulSpecialLinearGroupFixedDetMatrix n R m = { smul := fun (g : Matrix.SpecialLinearGroup n R) (A : FixedDetMatrix n R m) => ⟨↑g * ↑A, ⋯⟩ }
theorem FixedDetMatrices.smul_def (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] (m : R) (g : Matrix.SpecialLinearGroup n R) (A : FixedDetMatrix n R m) :
@[instance_reducible]
instance FixedDetMatrices.instMulActionSpecialLinearGroupFixedDetMatrix (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] (m : R) :
MulAction (Matrix.SpecialLinearGroup n R) (FixedDetMatrix n R m)
Equations
- FixedDetMatrices.instMulActionSpecialLinearGroupFixedDetMatrix n R m = { toSMul := FixedDetMatrices.instSMulSpecialLinearGroupFixedDetMatrix n R m, mul_smul := ⋯, one_smul := ⋯ }
theorem FixedDetMatrices.smul_coe (n : Type u_1) [DecidableEq n] [Fintype n] (R : Type u_2) [CommRing R] (m : R) (g : Matrix.SpecialLinearGroup n R) (A : FixedDetMatrix n R m) :
def FixedDetMatrices.reduceStep {m : ℤ} (A : FixedDetMatrix (Fin 2) ℤ m) :
FixedDetMatrix (Fin 2) ℤ m
Reduction step for matrices in Δ m which moves the matrices towards reps
Equations
- FixedDetMatrices.reduceStep A = ModularGroup.S • ModularGroup.T ^ (-(↑A 0 0 / ↑A 1 0)) • A
Instances For
@[irreducible]
def FixedDetMatrices.reduce_rec {m : ℤ} {C : FixedDetMatrix (Fin 2) ℤ m → Sort u_3} (base : (A : FixedDetMatrix (Fin 2) ℤ m) → ↑A 1 0 = 0 → C A) (step : (A : FixedDetMatrix (Fin 2) ℤ m) → ↑A 1 0 ≠ 0 → C (reduceStep A) → C A) (A : FixedDetMatrix (Fin 2) ℤ m) :
C A
Reduction lemma for integral FixedDetMatrices.
Equations
- FixedDetMatrices.reduce_rec base step A = if h : ↑A 1 0 = 0 then base A h else step A h (FixedDetMatrices.reduce_rec base step (FixedDetMatrices.reduceStep A))
Instances For
@[irreducible]
Map from Δ m → Δ m which reduces a FixedDetMatrix towards a representative element
in reps
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem FixedDetMatrices.reduce_of_pos {m : ℤ} {A : FixedDetMatrix (Fin 2) ℤ m} (hc : ↑A 1 0 = 0) (ha : 0 < ↑A 0 0) :
theorem FixedDetMatrices.reduce_of_not_pos {m : ℤ} {A : FixedDetMatrix (Fin 2) ℤ m} (hc : ↑A 1 0 = 0) (ha : ¬0 < ↑A 0 0) :
@[simp]
theorem FixedDetMatrices.reduce_reduceStep {m : ℤ} {A : FixedDetMatrix (Fin 2) ℤ m} (hc : ↑A 1 0 ≠ 0) :
@[instance_reducible]
Equations
- FixedDetMatrices.repsFintype k = Fintype.ofInjective (fun (M : ↑(FixedDetMatrices.reps k)) (i j : Fin 2) => ⟨↑↑M i j, ⋯⟩) ⋯
@[simp]
@[simp]
theorem FixedDetMatrices.induction_on {m : ℤ} {C : FixedDetMatrix (Fin 2) ℤ m → Prop} {A : FixedDetMatrix (Fin 2) ℤ m} (hm : m ≠ 0) (h0 : ∀ (A : FixedDetMatrix (Fin 2) ℤ m), ↑A 1 0 = 0 → 0 < ↑A 0 0 → 0 ≤ ↑A 0 1 → |↑A 0 1| < |↑A 1 1| → C A) (hS : ∀ (B : FixedDetMatrix (Fin 2) ℤ m), C B → C (ModularGroup.S • B)) (hT : ∀ (B : FixedDetMatrix (Fin 2) ℤ m), C B → C (ModularGroup.T • B)) :
C A
SL(2, ℤ) is generated by S and T.