@@ -19,6 +19,7 @@ open Matrix MatrixGroups Subgroup MulAut MaximalAbelianSubgroup Pointwise Specia
1919def Subgroup.noncenter {G : Type *} [Group G] (H : Subgroup G) : Set G :=
2020 H.carrier \ center G
2121
22+
2223theorem Subgroup.mem_noncenter {G : Type *} [Group G] {H : Subgroup G} {x : G} :
2324 x ∈ H.noncenter ↔ x ∈ H ∧ x ∉ center G := by
2425 simp [Subgroup.noncenter, Set.mem_diff, SetLike.mem_coe]
@@ -27,22 +28,22 @@ theorem Subgroup.mem_noncenter {G : Type*} [Group G] {H : Subgroup G} {x : G} :
2728Definition. The set $\mathcal{C}(A) = Cl(A) = \{ x A x^{-1} \; | \; x ∈ G \} $
2829is called the conjugacy class of $A \in \mathcal{M}$.
2930-/
30- def ConjClassOfSet {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
31- (A : MaximalAbelianSubgroupsOf G) :=
31+ def ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
32+ (A : MaximalAbelianSubgroupsOf G) :=
3233 { conj x • A.val | x ∈ G }
3334
3435/- let M∗ be the set of all Aᵢ* and let Cᵢ* be the conjugacy class of Aᵢ* .-/
3536def noncenter_MaximalAbelianSubgroupsOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F)) :=
3637 { noncenter (K : Subgroup SL(2 ,F)) | K ∈ MaximalAbelianSubgroupsOf G }
3738
38- def noncenter_ConjClassOfSet {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
39+ def noncenter_ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
3940 (A : noncenter_MaximalAbelianSubgroupsOf G) :=
4041 { conj x • A.val | x ∈ G }
4142
4243
43- noncomputable def card_noncenter_ConjClassOfSet {F : Type *} [Field F]
44+ noncomputable def card_noncenter_ConjClassOf {F : Type *} [Field F]
4445 (G : Subgroup SL(2 ,F)) : noncenter_MaximalAbelianSubgroupsOf G → ℕ :=
45- fun A => Nat.card (noncenter_ConjClassOfSet G A)
46+ fun A => Nat.card (noncenter_ConjClassOf G A)
4647
4748section noncenter_MaximalAbelianSubgroupsOf
4849
@@ -94,7 +95,8 @@ def union_conj_noncenter_MaximalAbelianSubgroupsOf {F : Type*} [Field F]
9495 noncenter_MaximalAbelianSubgroupsOf G → Set SL(2 ,F) :=
9596 fun A => ⋃ x ∈ G, conj x • A.val
9697
97- lemma noncenter_C_eq_of_related {F : Type *} [Field F] (G : Subgroup SL(2 ,F)) [Finite G] :
98+
99+ lemma union_conj_noncenter_eq_of_related {F : Type *} [Field F] (G : Subgroup SL(2 ,F)) [Finite G] :
98100 (∀ (A B : (noncenter_MaximalAbelianSubgroupsOf G)),
99101 A ≈ B → union_conj_noncenter_MaximalAbelianSubgroupsOf G A =
100102 union_conj_noncenter_MaximalAbelianSubgroupsOf G B) := by
@@ -122,7 +124,8 @@ lemma noncenter_C_eq_of_related {F : Type*} [Field F] (G : Subgroup SL(2,F)) [Fi
122124def lift_union_conj_noncenter_MaximalAbelianSubgroupsOf {F : Type *} [Field F]
123125 (G : Subgroup SL(2 ,F)) [Finite G] :=
124126 @Quotient.lift _ _ (s := lift_noncenter_MaximalAbelianSubgroupsOf G)
125- (f := union_conj_noncenter_MaximalAbelianSubgroupsOf G) (noncenter_C_eq_of_related G)
127+ (f := union_conj_noncenter_MaximalAbelianSubgroupsOf G) (union_conj_noncenter_eq_of_related G)
128+
126129
127130
128131
@@ -237,7 +240,7 @@ noncomputable def lift_card_noncenter {F : Type*} [Field F] (G : Subgroup SL(2,F
237240
238241def toConjClassOfSet {F : Type *} [Field F]
239242 (G : Subgroup SL(2 ,F)) [Finite G] : noncenter_MaximalAbelianSubgroupsOf G → Set (Set SL(2 ,F)) :=
240- fun A => noncenter_ConjClassOfSet G A
243+ fun A => noncenter_ConjClassOf G A
241244
242245lemma conj_noncenter_eq_noncenter_conj {F : Type *} [Field F] {G :Subgroup SL(2 ,F)}
243246 (A : MaximalAbelianSubgroupsOf G) (x : SL(2 ,F)) :
@@ -285,7 +288,7 @@ lemma toConjClassOfSet_eq_of_related_noncenter_subgroups {F : Type*} [Field F]
285288 A ≈ B → toConjClassOfSet G A = toConjClassOfSet G B) := by
286289 intro A B ArB
287290 obtain ⟨x, x_in_G, hx⟩ := ArB
288- simp [toConjClassOfSet, noncenter_ConjClassOfSet ]
291+ simp [toConjClassOfSet, noncenter_ConjClassOf ]
289292 ext s
290293 constructor
291294 · rintro ⟨y, y_in_G, rfl⟩
@@ -299,7 +302,6 @@ lemma toConjClassOfSet_eq_of_related_noncenter_subgroups {F : Type*} [Field F]
299302 rw [MonoidHom.map_mul, MulAction.mul_smul, smul_left_cancel_iff]
300303 exact ⟨Subgroup.mul_mem G y_in_G x_in_G, rfl⟩
301304
302- -- conj_noncenter_eq_noncenter_conj A x
303305
304306def lift_ConjClassOfSet {F : Type *} [Field F] (G : Subgroup SL(2 ,F)) [Finite G] :=
305307 @Quotient.lift _ _ (s := lift_noncenter_MaximalAbelianSubgroupsOf G) (f := toConjClassOfSet G)
@@ -588,15 +590,21 @@ We compute the cardinality of the noncenter conjugacy class
588590-/
589591-- noncomputable def card_noncenter_C {F : Type*} [Field F] (G : Subgroup SL(2,F)) [Finite G] :
590592-- noncenter_MaximalAbelianSubgroupsOf G → ℕ := fun A => Nat.card (noncenter_C G A)
591-
592593/-
593594We have the relation $|C(A^*)| = |A^* | |\mathcal{C}(A^*)|$
594595-/
595596lemma card_noncenter_C_eq_noncenter_MaximalAbelianSubgroup_mul_noncenter_ConjClassOfSet
596597 {F : Type *} [hF : Field F] (G : Subgroup SL(2 ,F)) [hG : Finite G]
597598 (A : noncenter_MaximalAbelianSubgroupsOf G) :
598599 Nat.card (union_conj_noncenter_MaximalAbelianSubgroupsOf G A) =
599- Nat.card A * card_noncenter_ConjClassOfSet G A := by
600+ Nat.card A * card_noncenter_ConjClassOf G A := by
601+ dsimp [union_conj_noncenter_MaximalAbelianSubgroupsOf]
602+ have card_A_eq_card_conj_A (A : noncenter_MaximalAbelianSubgroupsOf G) (c : SL(2 ,F)) :
603+ Nat.card A.val = Nat.card (conj c • A.val :) := by simp
604+ -- rw [ Set.Finite.ncard_biUnion ]
605+
606+
607+
600608 sorry
601609
602610#check Group.nat_card_center_add_sum_card_noncenter_eq_card
@@ -622,9 +630,7 @@ lemma card_noncenter_C_eq_noncenter_MaximalAbelianSubgroup_mul_noncenter_ConjCla
622630-- rw [_root_ .map_mul, ← smul_smul]
623631-- exact z_in_conj_g_A
624632
625- -- noncomputable def lift_card_noncenter_C {F : Type*} [Field F] (G : Subgroup SL(2,F)) [Finite G] :=
626- -- @Quotient.lift _ _ (s := lift_noncenter_MaximalAbelianSubgroupsOf G)
627- -- (f := card_noncenter_C G) (card_noncenter_C_eq_of_related G)
633+
628634
629635#check Setoid.isPartition_classes
630636
@@ -639,7 +645,7 @@ We have the relation $|C_i^*| = |A_i^*| |\mathcal{C}_i^*|$
639645lemma card_noncenter_C_eq_card_A_mul_card_noncenter_ConjClass {F : Type *} [Field F]
640646 (G : Subgroup SL(2 ,F)) [Finite G] (A : noncenter_MaximalAbelianSubgroupsOf G) :
641647 Nat.card (union_conj_noncenter_MaximalAbelianSubgroupsOf G A) =
642- Nat.card A * card_noncenter_ConjClassOfSet G A := by
648+ Nat.card A * card_noncenter_ConjClassOf G A := by
643649 sorry
644650
645651/- $G \setminus Z(\textrm{SL}_2(F)) = \bigcup_ {A \in \mathcal{M}} (C A)^*$ -/
@@ -649,26 +655,172 @@ lemma subgroup_sdiff_center_eq_union_noncenter_C {F : Type*} [Field F] (G : Subg
649655
650656
651657
658+ def ConjClassOf_to_noncenter_ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
659+ (A : MaximalAbelianSubgroupsOf G) : (ConjClassOf G A) → (noncenter_ConjClassOf G (
660+ ⟨noncenter A, noncenter_mem_noncenter_MaximalAbelianSubgroupsOf G A⟩)) :=
661+ fun conj_A => ⟨
662+ conj_A.val.noncenter,
663+ by
664+ obtain ⟨c, c_mem_G, conj_A_eq⟩ := conj_A.prop
665+ use c, c_mem_G
666+ rw [← conj_noncenter_eq_noncenter_conj, ← conj_A_eq]
667+ ⟩
668+
669+ open Function
670+
671+ #check Set.image_union
672+ #check Set.union_diff_cancel
673+
674+ instance semiring {X : Type *} : Semiring (Set X) where
675+ add s t := Set.union s t
676+ add_assoc s t r := Set.union_assoc _ _ _
677+ zero := ⊥
678+ zero_add s := Set.empty_union _
679+ add_zero := Set.union_empty
680+ nsmul n s := sorry --⋃₀ i : Fin n, s
681+ add_comm := Set.union_comm
682+ mul s t := Set.inter s t
683+ left_distrib := Set.inter_union_distrib_left
684+ right_distrib := Set.union_inter_distrib_right
685+ zero_mul := Set.empty_inter
686+ mul_zero := Set.inter_empty
687+ mul_assoc := Set.inter_assoc
688+ one := ⊤
689+ one_mul := Set.univ_inter
690+ mul_one := Set.inter_univ
691+ nsmul_zero := sorry
692+ nsmul_succ := sorry
693+
694+
695+ lemma conj_subgroup_eq_conj_center_union_conj_noncenter {G : Type *} [Group G] (H : Subgroup G)
696+ (c : G) : (conj c • H : Set G)
697+ = (conj c • H.noncenter : Set G) ∪ (conj c • (center G ⊓ H) : Set G) := by
698+ unfold noncenter
699+ rw [← Set.image_smul, ← Set.image_smul, ← Set.image_smul, ← Set.image_union,
700+ Set.union_comm]
701+ congr
702+ rw [← Set.diff_self_inter, Set.inter_comm, show H.carrier = (H : Set G) by rfl]
703+ simp only [coe_inf]
704+ rw [Set.union_diff_cancel (Set.inter_subset_right)]
705+
706+
707+ lemma mem_coe_conj_iff_conj_coe {G : Type *} [Group G] (H : Subgroup G) (c x : G) :
708+ x ∈ conj c • H ↔ x ∈ (conj c • H : Set G) := by rfl
709+
710+ -- For Mathlib
711+ instance instNormalCenterInf {G : Type *} [Group G] {H : Subgroup G} : Normal (center G ⊓ H) := by
712+ sorry
713+
714+ -- For Mathlib
715+ lemma subset_of_union_eq_of_disjoint {G : Type *} (A B C : Set G) (hA : Disjoint A C)
716+ (h : A ∪ C = B ∪ C) : A ⊆ B := by
717+ intro a a_mem_A
718+ have a_mem_B_union_C : a ∈ B ∪ C := by
719+ rw [← h]
720+ exact Set.mem_union_left C a_mem_A
721+ suffices a ∉ C by
722+ rw [Set.mem_union] at a_mem_B_union_C
723+ grind
724+ have A_inter_C_eq_empty : A ∩ C = ∅ := Disjoint.inter_eq hA
725+ intro a_mem_C
726+ have contr : a ∈ (∅ : Set G) := by rw [← A_inter_C_eq_empty]; grind
727+ contradiction
728+
729+
730+ -- For Mathlib
731+ lemma eq_iff_union_eq_of_disjoint {G : Type *} (A B C: Set G) (hA : Disjoint A C)
732+ (hB : Disjoint B C) : A ∪ C = B ∪ C ↔ A = B := by
733+ constructor
734+ · intro h
735+ apply subset_antisymm
736+ · exact subset_of_union_eq_of_disjoint A B C hA h
737+ · exact subset_of_union_eq_of_disjoint B A C hB (id (Eq.symm h))
738+ · intro h
739+ rw [h]
740+
741+ -- it is not clear whether I should be defining `Subgroup.noncenter`
742+ -- or trying an alternative formalization
743+ -- argument is symmetric, surely there must be a tactic for such cases
744+ lemma conj_eq_conj_iff {G : Type *} [Group G] {c c' : G} (H : Subgroup G) :
745+ conj c • H.noncenter = conj c' • H.noncenter ↔ conj c • H = conj c' • H := by
746+ -- have := conj_subgroup_eq_conj_center_union_conj_noncenter H c
747+ suffices conj c • H.noncenter = conj c' • H.noncenter ↔ (conj c • H : Set G) = conj c' • H by
748+ simp [this]
749+ constructor <;> intro h <;> ext x
750+ · rw [mem_coe_conj_iff_conj_coe, mem_coe_conj_iff_conj_coe, h]
751+ · rw [← mem_coe_conj_iff_conj_coe, ← mem_coe_conj_iff_conj_coe, h]
752+ rw [conj_subgroup_eq_conj_center_union_conj_noncenter]
753+ have key₁ : conj c • (center G ⊓ H) = center G ⊓ H := Subgroup.Normal.conj_smul_eq_self c _
754+ norm_cast
755+ rw [key₁]
756+ push_cast
757+ rw [conj_subgroup_eq_conj_center_union_conj_noncenter]
758+ have key₂ : conj c' • (center G ⊓ H) = center G ⊓ H := Subgroup.Normal.conj_smul_eq_self c' _
759+ norm_cast
760+ rw [key₂]
761+ symm
762+ 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
775+
776+
777+ lemma Bijective_ConjClassOf_to_noncenter_ConjClassOf {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
778+ (A : MaximalAbelianSubgroupsOf G) : Bijective (ConjClassOf_to_noncenter_ConjClassOf G A) := by
779+ refine ⟨?Injective, ?Surjective⟩
780+ · intro conj_A conj_B hAB
781+ obtain ⟨c, c_mem_G, conj_A_eq⟩ := conj_A.prop
782+ obtain ⟨c', c'_mem_G, conj_B_eq⟩ := conj_B.prop
783+ simp [ConjClassOf_to_noncenter_ConjClassOf] at hAB
784+ rw [← conj_A_eq, ← conj_B_eq, conj_noncenter_eq_noncenter_conj,
785+ conj_noncenter_eq_noncenter_conj] at hAB
786+ rw [conj_eq_conj_iff] at hAB
787+ apply Subtype.ext
788+ rw [← conj_A_eq, ← conj_B_eq, hAB]
789+ · intro ⟨A_noncenter, c, c_mem_G, conj_A_noncenter_eq⟩
790+ use ⟨conj c • A, by simp [ConjClassOf]; use c⟩
791+ simp [ConjClassOf_to_noncenter_ConjClassOf, ← conj_A_noncenter_eq]
792+ exact conj_noncenter_eq_noncenter_conj A c
793+
794+
795+ #check Function.Bijective
652796/-
653797Theorem 2.4 ii)
654798$|\mathcal{C}_i| = |\mathcal{C}_i^*|$
655799-/
656800lemma card_noncenter_ConjClassOfSet_eq_card_ConjClassOfSet {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
657801 (A : MaximalAbelianSubgroupsOf G) :
658- Nat.card (ConjClassOfSet G A) =
659- Nat.card (noncenter_ConjClassOfSet G (
802+ Nat.card (ConjClassOf G A) =
803+ Nat.card (noncenter_ConjClassOf G (
660804 ⟨noncenter A, noncenter_mem_noncenter_MaximalAbelianSubgroupsOf G A⟩
661805 )) := by
662- apply Nat.card_eq_of_bijective sorry
663- sorry
806+ exact Nat.card_eq_of_bijective _ (Bijective_ConjClassOf_to_noncenter_ConjClassOf G A)
807+
664808
809+ noncomputable def conjClassOf_to_G {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
810+ (A : MaximalAbelianSubgroupsOf G) : ConjClassOf G A → G :=
811+ fun ⟨_, h⟩ => ⟨h.choose, h.choose_spec.left⟩
812+
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
665815/-
666816Theorem 2.4 iii)
667817$|\mathcal{C}_i| = [G : N_G(A_i)]$
668818-/
669- lemma card_ConjClassOfSet_eq_index_normalizer {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
819+ lemma card_ConjClassOf_eq_index_normalizer {F : Type *} [Field F] (G : Subgroup SL(2 ,F))
670820 (A : MaximalAbelianSubgroupsOf G) :
671- Nat.card (ConjClassOfSet G A) = index (normalizer (A.val.subgroupOf G)) := by sorry
821+ Nat.card (ConjClassOf G A) = index (normalizer (A.val.subgroupOf G)) := by
822+
823+ sorry
672824
673825noncomputable instance {F : Type*} [Field F] {G : Subgroup SL(2 ,F)} [Finite G] :
674826 Fintype (Quotient (lift_MaximalAbelianSubgroupsOf G)) := by infer_instance
@@ -681,8 +833,6 @@ the setNormalizer needs to be restricted to G
681833-- @Quotient.lift _ _ (s := lift_noncenter_MaximalAbelianSubgroupsOf G)
682834-- (fun (A_star : noncenter_MaximalAbelianSubgroupsOf G) => index (setNormalizer (A_star.val)))
683835
684-
685-
686836/-
687837Theorem 2.4 iv)
688838$|G \setminus Z| = \sum_{[ A ] \in \mathfrak{M} / \sim } |[ A* ] | |[ C(A)* ] |$
0 commit comments