@@ -85,7 +85,7 @@ lemma diagonal_iff_upper_and_lower {M: Matrix (Fin 2) (Fin 2) F} :
8585 obtain ⟨a, b, d, hM_upper⟩ := h_upper
8686 obtain ⟨a', c, d', hM_lower⟩ := h_lower
8787 use a, d
88- ext <;> simp [← hM_upper, ← hM_lower ]
88+ ext <;> simp [← hM_upper]
8989 have : b = M 0 1 := by rw [← hM_upper]; rfl
9090 rw [this]
9191 rw [← hM_lower]
@@ -127,6 +127,10 @@ def D_iso_units (F : Type*) [Field F] : SpecialSubgroups.D F ≃* Fˣ where
127127 repeat '
128128 simp_rw [← hδ₁, ← hδ₂]
129129 simp [SpecialMatrices.d, mul_comm]
130+ @[simp]
131+ lemma d_mem_D {F : Type *} [Field F] {δ : Fˣ} : d δ ∈ D F := by
132+ use δ
133+
130134
131135end Diagonal
132136section Shear
@@ -175,9 +179,8 @@ lemma D_meet_S_eq_bot (F : Type*) [Field F] : D F ⊓ S F = ⊥ := by
175179 · intro h
176180 simp at h
177181 constructor
178- · simp [h]; exact Subgroup.one_mem (D F)
179- · simp [h]; exact Subgroup.one_mem (S F)
180-
182+ · simp [h]
183+ · simp [h]
181184/--
182185 This is H in the notes.
183186-/
@@ -190,7 +193,7 @@ def L (F : Type*) [Field F] : Subgroup SL(2,F) where
190193 ext
191194 · simp [d, s]
192195 · simp [d, s]
193- · field_simp [d, s]; ring
196+ · simp [d, s]; field_simp
194197 · simp [d, s, mul_comm]
195198 one_mem' := ⟨1 , 0 , by simp⟩
196199 inv_mem' := by
@@ -220,12 +223,16 @@ lemma mem_L_iff_lower_triangular [DecidableEq F] {x : SL(2,F)} :
220223 have a_is_unit : IsUnit a := isUnit_of_mul_eq_one a d had
221224 have a_inv_eq_d : a⁻¹ = d := DivisionMonoid.inv_eq_of_mul a d had
222225 use a_is_unit.unit, c * a_is_unit.unit
223- simp [SpecialMatrices.d, SpecialMatrices.s, had]
224- ext <;> field_simp [a_inv_eq_d, had, ← hx]; exact (eq_one_div_of_mul_eq_one_right had).symm
226+ simp [SpecialMatrices.d, SpecialMatrices.s]
227+ ext <;>
228+ simp [← a_inv_eq_d, ← hx]
229+ rw [← mul_assoc]
230+ have a_ne_zero : a ≠ 0 := left_ne_zero_of_mul_eq_one had
231+ field_simp [a_ne_zero]
225232
226233lemma S_le_L : S F ≤ L F := by
227234 rintro x ⟨σ, rfl⟩
228- rw [L, mem_mk, Set.mem_setOf_eq ]
235+ rw [L, mem_mk]
229236 use 1 , σ
230237 rw [d_one_eq_one, one_mul]
231238
@@ -250,7 +257,7 @@ lemma normal_S_subgroupOf_L {F : Type*} [Field F] : ((S F).subgroupOf (L F)).Nor
250257 inv_d_eq_d_inv, mul_assoc, mul_assoc (s (-σ)), ← mul_assoc (s σ'),
251258 ← mul_assoc (d δ⁻¹), ← mul_assoc (d δ⁻¹), d_eq_inv_d_inv δ,
252259 d_mul_s_mul_d_inv_eq_s, s_mul_s_eq_s_add, s_mul_s_eq_s_add]
253- rw [S, inv_inv, neg_add_cancel_comm_assoc, mem_mk, Set.mem_setOf_eq ]
260+ rw [S, inv_inv, neg_add_cancel_comm_assoc, mem_mk]
254261 use σ' * (δ : F) * (δ : F)
255262 · rintro ⟨σ', hσ'⟩
256263 rw [mem_subgroupOf]
@@ -338,23 +345,8 @@ lemma D_join_S_eq_L (F : Type*) [Field F]: D F ⊔ S F = L F := by
338345 rfl
339346
340347
341- -- def foo {G : Type*} [Group G] (H K : Subgroup G) : (H ⊔ K :) ⧸ K ≃* H := by sorry
342348
343349
344- -- noncomputable def pi : (L F) →* (D F) where
345- -- toFun := fun l => ⟨d (l.property.choose), ⟨l.property.choose, rfl⟩⟩
346- -- map_one' := by
347- -- have d_one_in_L : d 1 * s 0 ∈ L F := ⟨1, 0, by simp⟩
348- -- have one_eq_d_one : (⟨d 1 * s 0, d_one_in_L⟩ : L F) = 1 := by simp
349- -- have : Exists.choose (⟨d 1 * s 0, d_one_in_L⟩ : L F).property = 1 := by sorry
350- -- rw [← one_eq_d_one]
351- -- ext
352- -- · simp only [Fin.isValue, OneMemClass.coe_one, SpecialLinearGroup.coe_one, one_apply_eq]
353- -- sorry
354- -- · exact rfl
355- -- · exact rfl
356- -- · sorry
357- -- map_mul' := by sorry
358350
359351-- second isomorphism theorem!!!!
360352#check QuotientGroup.quotientInfEquivProdNormalQuotient
@@ -499,15 +491,15 @@ def DW (F : Type*) [Field F] : Subgroup SL(2,F) where
499491
500492lemma D_leq_DW : D F ≤ DW F := by
501493 rintro x ⟨δ, rfl⟩
502- rw [DW, mem_mk, Set.mem_union, Set.mem_setOf_eq ]
494+ rw [DW, mem_mk]
503495 left
504496 apply exists_apply_eq_apply
505497
506498
507499lemma Dw_leq_DW : (D F : Set SL(2 ,F)) * ({w} : Set SL(2 ,F)) ⊆ (DW F : Set SL(2 ,F)) := by
508500 rintro x ⟨d', hd', w, hw, rfl⟩
509501 obtain ⟨δ, rfl⟩ := hd'
510- rw [DW, coe_set_mk, Set.mem_union, Set.mem_setOf_eq ]
502+ rw [DW, coe_set_mk]
511503 right
512504 use δ
513505 rw [Set.mem_singleton_iff] at hw
@@ -578,8 +570,7 @@ lemma Field.one_eq_neg_one_of_two_eq_zero (two_eq_zero : (2 : F) = 0) : 1 = (-1
578570lemma SpecialLinearGroup.neg_one_eq_one_of_two_eq_zero (two_eq_zero : (2 : F) = 0 ) :
579571 1 = (-1 : SL(2 ,F)) := by
580572 ext
581- <;> simp [Field.one_eq_neg_one_of_two_eq_zero]
582- <;> exact Field.one_eq_neg_one_of_two_eq_zero two_eq_zero
573+ <;> simpa using Field.one_eq_neg_one_of_two_eq_zero two_eq_zero
583574
584575
585576
@@ -626,7 +617,7 @@ lemma card_Z_eq_two_of_two_ne_zero [NeZero (2 : F)]: Nat.card (Z F) = 2 := by
626617 use 1 , ⟨-1 , neg_one_mem_Z⟩
627618 split_ands
628619 · intro h
629- rw [Subtype.ext_val_iff ] at h
620+ rw [Subtype.ext_iff ] at h
630621 -- -1 ≠ 1 for characteristic different to 2
631622 simp at h
632623 · rw [Set.eq_univ_iff_forall]
@@ -703,7 +694,7 @@ instance IsCyclic_Z : IsCyclic (Z F) := by
703694 rw [card_Z_eq_one_of_two_eq_zero two_eq_zero]
704695 simp only [orderOf_eq_one_iff, exists_eq]
705696
706- instance IsCommutative_Z : IsCommutative (Z F) := inferInstance
697+ instance IsCommutative_Z : IsMulCommutative (Z F) := inferInstance
707698
708699
709700namespace IsPGroup
@@ -834,14 +825,14 @@ lemma S_mul_Z_subset_SZ :
834825
835826section CommutativeSubgroups
836827
837- lemma IsCommutative_iff {G : Type *} [Group G] ( H : Subgroup G) :
838- IsCommutative H ↔ ∀ x y : H, x * y = y * x := by
828+ lemma IsMulCommutative_iff {G : Type *} [Group G] { H : Subgroup G} :
829+ IsMulCommutative H ↔ ∀ x y : H, x * y = y * x := by
839830 constructor
840831 · intro h x y
841- have := @mul_comm_of_mem_isCommutative G _ H h x y (by simp) (by simp)
832+ have := @mul_comm_of_mem_isMulCommutative G _ H h x y (by simp) (by simp)
842833 exact SetLike.coe_eq_coe.mp this
843834 · intro h
844- rw [← le_centralizer_iff_isCommutative ]
835+ rw [← le_centralizer_iff_isMulCommutative ]
845836 intro y hy
846837 rw [mem_centralizer_iff]
847838 intro x hx
@@ -850,20 +841,20 @@ lemma IsCommutative_iff {G : Type*} [Group G] (H : Subgroup G) :
850841 simp only [MulMemClass.mk_mul_mk, Subtype.mk.injEq] at h
851842 exact h
852843
853- instance IsCommutative_D : IsCommutative (D F) := by
854- rw [IsCommutative_iff ]
844+ instance IsMulCommutative_D : IsMulCommutative (D F) := by
845+ rw [IsMulCommutative_iff ]
855846 rintro ⟨x, ⟨δ₁, hδ₁⟩⟩ ⟨y, ⟨δ₂, hδ₂⟩⟩
856- simp [Subtype.ext_val_iff, coe_mul, ← hδ₁, ← hδ₂, mul_comm]
847+ simp [← hδ₁, ← hδ₂, mul_comm]
857848
858- instance IsCommutative_S (F : Type *) [Field F] : IsCommutative (S F) := by
859- rw [IsCommutative_iff ]
849+ instance IsMulCommutative_S (F : Type *) [Field F] : IsMulCommutative (S F) := by
850+ rw [IsMulCommutative_iff ]
860851 rintro ⟨x, ⟨σ₁, hσ₁⟩⟩ ⟨y, ⟨σ₂, hσ₂⟩⟩
861- simp [@ Subtype.ext_val_iff ]
852+ simp [Subtype.ext_iff ]
862853 rw [← hσ₁, ← hσ₂]
863854 simp [add_comm]
864855
865- instance IsCommutative_SZ (F : Type *) [Field F] : IsCommutative (SZ F) := by
866- refine le_centralizer_iff_isCommutative .mp ?_
856+ instance IsMulCommutative_SZ (F : Type *) [Field F] : IsMulCommutative (SZ F) := by
857+ refine le_centralizer_iff_isMulCommutative .mp ?_
867858 rintro x (⟨σ₁, rfl⟩ | ⟨σ₁, rfl⟩)
868859 repeat
869860 rw [mem_centralizer_iff]
@@ -923,15 +914,15 @@ lemma S_join_Z_eq_SZ : S F ⊔ Z F = SZ F := by
923914 rw [Set.mem_mul]
924915 use s σ
925916 split_ands
926- simp [Z, closure_neg_one_eq ]
917+ simp only [SetLike.mem_coe ]
927918 use σ
928919 simp
929920 apply Subgroup.subset_closure mem_Z_mul_S
930921 · have mem_Z_mul_T : -s σ ∈ ((S F) : Set SL(2 ,F)) * (Z F) := by
931922 rw [Set.mem_mul]
932923 use s σ
933924 split_ands
934- simp [Z, closure_neg_one_eq ]
925+ simp only [SetLike.mem_coe ]
935926 use σ
936927 simp
937928 apply Subgroup.subset_closure mem_Z_mul_T
0 commit comments