@@ -738,6 +738,22 @@ lemma eq_iff_union_eq_of_disjoint {G : Type*} (A B C: Set G) (hA : Disjoint A C)
738738 · intro h
739739 rw [h]
740740
741+ theorem Disjoint_conj_noncenter_center {G : Type *} [inst : Group G]
742+ {c : G} (H : Subgroup G) (key : conj c • (center G ⊓ H) = center G ⊓ H) :
743+ Disjoint (conj c • H.noncenter) ↑(center G ⊓ H) := by
744+ rw [disjoint_comm, disjoint_iff, eq_bot_iff, ← key]
745+ intro x ⟨x_mem_center, x_mem_conj⟩
746+ simp [Subgroup.noncenter] at x_mem_conj
747+ push_cast at x_mem_center
748+ rw [Set.mem_smul_set_iff_inv_smul_mem] at x_mem_conj x_mem_center
749+ rw [Set.mem_diff] at x_mem_conj
750+ suffices (conj c)⁻¹ • x ∈ center G by
751+ absurd x_mem_conj.right
752+ exact this
753+ apply Set.inter_subset_left
754+ apply x_mem_center
755+
756+
741757-- it is not clear whether I should be defining `Subgroup.noncenter`
742758-- or trying an alternative formalization
743759-- argument is symmetric, surely there must be a tactic for such cases
@@ -760,18 +776,8 @@ lemma conj_eq_conj_iff {G : Type*} [Group G] {c c' : G} (H : Subgroup G) :
760776 rw [key₂]
761777 symm
762778 rw [eq_iff_union_eq_of_disjoint _ _]
763- · rw [disjoint_comm, disjoint_iff, eq_bot_iff, ← key₁]
764- intro x ⟨x_mem_center, x_mem_conj⟩
765- simp [Subgroup.noncenter] at x_mem_conj
766- push_cast at x_mem_center
767- rw [Set.mem_smul_set_iff_inv_smul_mem] at x_mem_conj x_mem_center
768- rw [Set.mem_diff] at x_mem_conj
769- suffices (conj c)⁻¹ • x ∈ center G by
770- absurd x_mem_conj.right
771- exact this
772- apply Set.inter_subset_left
773- apply x_mem_center
774- · sorry
779+ · exact Disjoint_conj_noncenter_center H key₁
780+ · exact Disjoint_conj_noncenter_center H key₂
775781
776782
777783lemma Bijective_ConjClassOf_to_noncenter_ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
@@ -797,8 +803,8 @@ lemma Bijective_ConjClassOf_to_noncenter_ConjClassOf {F : Type*} [Field F] (G :
797803Theorem 2.4 ii)
798804$|\mathcal{C}_i| = |\mathcal{C}_i^*|$
799805-/
800- lemma card_noncenter_ConjClassOfSet_eq_card_ConjClassOfSet {F : Type *} [Field F] (G : Subgroup SL( 2 ,F))
801- (A : MaximalAbelianSubgroupsOf G) :
806+ lemma card_noncenter_ConjClassOfSet_eq_card_ConjClassOfSet {F : Type *} [Field F]
807+ (G : Subgroup SL( 2 ,F)) ( A : MaximalAbelianSubgroupsOf G) :
802808 Nat.card (ConjClassOf G A) =
803809 Nat.card (noncenter_ConjClassOf G (
804810 ⟨noncenter A, noncenter_mem_noncenter_MaximalAbelianSubgroupsOf G A⟩
@@ -810,16 +816,134 @@ noncomputable def conjClassOf_to_G {F : Type*} [Field F] (G : Subgroup SL(2,F))
810816 (A : MaximalAbelianSubgroupsOf G) : ConjClassOf G A → G :=
811817 fun ⟨_, h⟩ => ⟨h.choose, h.choose_spec.left⟩
812818
813- def conjClassOf_to_quot_normalizer {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
814- (A : MaximalAbelianSubgroupsOf G) : ConjClassOf G A → G ⧸ ((A.val.subgroupOf G).normalizer) := sorry
819+ def G_to_ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
820+ (A : MaximalAbelianSubgroupsOf G) : G → ConjClassOf G A :=
821+ fun ⟨c, hc⟩ => ⟨conj c • A.val, by use c⟩
822+
823+ -- For Mathlib
824+ lemma conj_eq_of_mem {G : Type *} [Group G] {H : Subgroup G} {h : G} (hh : h ∈ H) :
825+ conj h • H = H := by
826+ apply le_antisymm (conj_smul_le_of_le (le_refl H) ⟨h, hh⟩)
827+ rw [subset_pointwise_smul_iff, ← map_inv]
828+ exact conj_smul_le_of_le (le_refl H) ⟨h⁻¹, H.inv_mem hh⟩
829+
830+ #check lift_MaximalAbelianSubgroupsOf
831+
832+ def G_to_ConjClassOf_lift {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
833+ (A : MaximalAbelianSubgroupsOf G) : G ⧸ ((A.val.subgroupOf G).normalizer) → ConjClassOf G A :=
834+ Quot.lift (G_to_ConjClassOf G A)
835+ (by
836+ intro ⟨c, c_mem_G⟩ ⟨c', c'_mem_G⟩ h
837+ symm at h
838+ rw [QuotientGroup.leftRel_apply, mem_normalizer_iff] at h
839+ simp [G_to_ConjClassOf]
840+ rw [@conj_eq_iff_eq_conj_inv, smul_smul, ← map_mul]
841+ ext x; constructor
842+ · intro hx
843+ specialize h ⟨x, A.prop.right hx⟩
844+ simp [mem_subgroupOf] at h
845+ simp [mem_pointwise_smul_iff_inv_smul_mem]
846+ group at h ⊢
847+ apply h.mp hx
848+ · intro hx
849+ simp [mem_pointwise_smul_iff_inv_smul_mem] at hx
850+ have x_mem_G := A.prop.right hx
851+ rw [show c'⁻¹ * (c * x * c⁻¹) * c' = (conj (c⁻¹ * c'))⁻¹ • x by simp,
852+ ← mem_pointwise_smul_iff_inv_smul_mem] at x_mem_G
853+ suffices conj (c⁻¹ * c') • G = G by
854+ rw [this] at x_mem_G
855+ specialize h ⟨x, x_mem_G⟩
856+ simp [mem_subgroupOf] at h
857+ group at h hx
858+ apply h.mpr hx
859+ exact conj_eq_of_mem (G.mul_mem (G.inv_mem c_mem_G) c'_mem_G))
860+
861+
862+ lemma Bijective_G_to_ConjClassOf_lift {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
863+ (A : MaximalAbelianSubgroupsOf G) : Bijective (G_to_ConjClassOf_lift G A) := by
864+ refine ⟨?Injective, ?Surjective⟩
865+ · rintro ⟨x, hx⟩ ⟨y, hy⟩ hxy
866+ simp [G_to_ConjClassOf_lift] at hxy
867+ rw [Subtype.ext_iff] at hxy
868+ rw [Subtype.coe_eq_iff] at hxy
869+ obtain ⟨⟨c, c_mem_G, hc⟩, h⟩ := hxy
870+ simp_rw [← hc] at h
871+ rw [Quot.eq]
872+ sorry
873+ · dsimp [G_to_ConjClassOf_lift]
874+ rw [Quot.surjective_lift]
875+ intro ⟨conj_A, c, c_mem_G, conj_A_eq⟩
876+ use ⟨c, c_mem_G⟩
877+ simp [G_to_ConjClassOf, ← conj_A_eq]
878+
879+
880+ -- noncomputable def conjClassOf_to_quot_normalizer {F : Type*} [Field F] (G : Subgroup SL(2,F))
881+ -- (A : MaximalAbelianSubgroupsOf G) : ConjClassOf G A → G ⧸ ((A.val.subgroupOf G).normalizer) :=
882+ -- fun conj_A => Quot.mk ⇑(QuotientGroup.leftRel ((A.val.subgroupOf G).normalizer)) ⟨_, conj_A.prop.choose_spec.left⟩
883+
884+
885+
886+ -- lemma Bijective_conjClassOf_to_quot_normalizer {F : Type*} [Field F] (G : Subgroup SL(2,F))
887+ -- (A : MaximalAbelianSubgroupsOf G) : Bijective (conjClassOf_to_quot_normalizer G A) := by
888+ -- refine ⟨?Injective, ?Surjective⟩
889+ -- · intro conj_A conj_B h
890+ -- simp [ conjClassOf_to_quot_normalizer ] at h
891+ -- have ⟨c_mem_G, conj_A_eq⟩ := conj_A.prop.choose_spec
892+ -- have ⟨c'_mem_G, conj_B_eq⟩ := conj_B.prop.choose_spec
893+ -- set c := conj_A.prop.choose with hc
894+ -- set c' := conj_B.prop.choose with hc'
895+ -- simp_rw [← hc, ← hc'] at h
896+ -- apply Subtype.ext
897+ -- rw [← conj_A_eq, ← conj_B_eq]
898+ -- symm at h
899+ -- rw? at h
900+ -- simp [Quot.eq, mem_normalizer_iff] at h
901+ -- rw [conj_eq_iff_eq_conj_inv, smul_smul, ← map_mul]
902+ -- ext x; constructor
903+ -- · intro hx
904+ -- simp [ mem_pointwise_smul_iff_inv_smul_mem ]
905+ -- specialize h x (A.prop.right hx)
906+ -- simp [ mem_subgroupOf ] at h
907+ -- group at h ⊢
908+ -- apply h.mp hx
909+ -- · intro hx
910+ -- simp [ mem_pointwise_smul_iff_inv_smul_mem ] at hx
911+ -- have x_mem_G := A.prop.right hx
912+ -- rw [show c'⁻¹ * (c * x * c⁻¹) * c' = (conj (c⁻¹ * c'))⁻¹ • x by simp,
913+ -- ← mem_pointwise_smul_iff_inv_smul_mem] at x_mem_G
914+ -- suffices conj (c⁻¹ * c') • G = G by
915+ -- rw [ this ] at x_mem_G
916+ -- specialize h x x_mem_G
917+ -- simp [ mem_subgroupOf ] at h
918+ -- group at h hx
919+ -- apply h.mpr hx
920+ -- exact conj_eq_of_mem (G.mul_mem (G.inv_mem c_mem_G) c'_mem_G)
921+ -- · intro c_normalizer
922+ -- obtain ⟨c, hc⟩ := c_normalizer
923+ -- use ⟨conj c • A.val, by use c⟩
924+ -- simp [ conjClassOf_to_quot_normalizer ]
925+ -- let conj_A : ConjClassOf G A := ⟨conj c • A, by use c⟩
926+ -- set c' := conj_A.prop.choose with hc'
927+ -- simp_rw [← hc']
928+
929+
930+
931+
932+
933+ -- -- rw [ QuotientGroup.eq ]
934+
935+ -- -- rw [ QuotientGroup.eq_iff_div_mem ]
936+
937+
938+ -- sorry
939+
815940/-
816941Theorem 2.4 iii)
817942$|\mathcal{C}_i| = [G : N_G(A_i)]$
818943-/
819944lemma card_ConjClassOf_eq_index_normalizer {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
820945 (A : MaximalAbelianSubgroupsOf G) :
821946 Nat.card (ConjClassOf G A) = index (normalizer (A.val.subgroupOf G)) := by
822-
823947 sorry
824948
825949noncomputable instance {F : Type*} [Field F] {G : Subgroup SL(2 ,F)} [Finite G] :
0 commit comments