Skip to content

Commit c362b56

Browse files
committed
trivial changes
1 parent 402b66e commit c362b56

3 files changed

Lines changed: 209 additions & 788 deletions

File tree

ClassificationOfSubgroups/Ch6_MaximalAbelianSubgroupClassEquation/S2_A_MaximalAbelianSubgroup.lean

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,6 @@ lemma eq_center_of_card_le_two {p : ℕ} [Fact (Nat.Prime p)] {F : Type*} [Field
407407

408408

409409

410-
411410
/- Theorem 2.3 (i) If x ∈ G\Z then we have CG (x) ∈ M. -/
412411
theorem centralizer_meet_G_in_MaximalAbelianSubgroups_of_noncentral {F : Type*} [Field F]
413412
[IsAlgClosed F] [DecidableEq F] (G : Subgroup SL(2,F)) (x : SL(2,F))
@@ -1552,7 +1551,6 @@ theorem A_subgroupOf_normalizer_MulEquiv_conj_A_subgroupOf_conj_quot_eq
15521551
lemma conj_A_subgroupOf_G_eq_A'_subgroupOf_G {F : Type*} [Field F] {A A' G G' : Subgroup SL(2,F)} {c : SL(2,F)}
15531552
(A_eq_conj_A' : A = conj c • A') (G_eq_conj_G' : G = conj c • G') :
15541553
conj c • Subgroup.map G.subtype (A.subgroupOf G).normalizer = Subgroup.map G'.subtype (A'.subgroupOf G').normalizer := by
1555-
-- apply?
15561554
sorry
15571555

15581556
lemma conj_eq_iff_eq_conj_inv {F : Type*} [Field F] {c : SL(2,F)} (A A' : Subgroup SL(2,F)) :
@@ -1799,9 +1797,7 @@ def monoidHom_normalizer_D_quot_D {F : Type*} [Field F] (A' G' : Subgroup SL(2,F
17991797
)
18001798

18011799

1802-
noncomputable def foob {F : Type*} [Field F] (A' G' : Subgroup SL(2,F)) :=
1803-
QuotientGroup.quotientInfEquivProdNormalQuotient (H := (((A'.normalizer ⊓ G')).subgroupOf ((D F).normalizer)))
1804-
(N := (D F).subgroupOf ((D F).normalizer))
1800+
18051801

18061802
noncomputable def A_subgroupOf_G_MonoidHom_ZMod_two {F : Type*} [Field F] (A' G' : Subgroup SL(2,F))
18071803
(A'_le_D : A' ≤ D F) (A'_le_G' : A' ≤ G') (two_lt_card_A' : 2 < Nat.card A')
@@ -1830,7 +1826,29 @@ noncomputable def A_subgroupOf_G_MonoidHom_ZMod_two {F : Type*} [Field F] (A' G'
18301826
= ((D F).subgroupOf (D F).normalizer).subgroupOf
18311827
((A'.normalizer ⊓ G').subgroupOf
18321828
(D F).normalizer ⊔ (D F).subgroupOf (D F).normalizer) by
1833-
sorry)
1829+
dsimp [φ₃]
1830+
ext x; constructor
1831+
· intro hx
1832+
rw [mem_map] at hx
1833+
obtain ⟨y, y_mem_subgroupOf, hy⟩ := hx
1834+
rw [← hy]
1835+
rw [mem_subgroupOf, mem_subgroupOf] at y_mem_subgroupOf ⊢
1836+
simp [y_mem_subgroupOf]
1837+
· intro hx
1838+
rw [mem_map]
1839+
use ⟨
1840+
x.val,
1841+
by
1842+
rw [mem_subgroupOf, mem_subgroupOf] at hx
1843+
rw [mem_subgroupOf]
1844+
suffices D F ≤ A'.normalizer ⊓ G' ⊔ D F by
1845+
apply this hx
1846+
apply le_sup_right
1847+
1848+
constructor
1849+
· rw [mem_subgroupOf, mem_subgroupOf] at hx ⊢
1850+
simp [hx]
1851+
· aesop)
18341852

18351853
let ϕ₄ := monoidHom_normalizer_D_quot_D A' G'
18361854

@@ -1861,11 +1879,6 @@ lemma injective_A_subgroupOf_G_MonoidHom_ZMod_two {F : Type*} [Field F] (A' G' :
18611879
· exact MulEquiv.injective _
18621880
exact MulEquiv.injective _
18631881

1864-
#check MonoidHom.comp
1865-
1866-
#check Equiv.ofInjective
1867-
1868-
#check Equiv.mulEquiv
18691882

18701883
lemma relIndex_MaximalAbelianSubgroupOf_normalizer_eq_relIndex_conj_MaxAbelianSubgroupOf
18711884
{F : Type*} [Field F] {A A' G G' : Subgroup SL(2,F)} {c : SL(2,F)}

ClassificationOfSubgroups/Ch6_MaximalAbelianSubgroupClassEquation/S3_NoncenterClassEquation.lean

Lines changed: 141 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

777783
lemma 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 :
797803
Theorem 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
/-
816941
Theorem 2.4 iii)
817942
$|\mathcal{C}_i| = [G : N_G(A_i)]$
818943
-/
819944
lemma 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

825949
noncomputable instance {F : Type*} [Field F] {G : Subgroup SL(2,F)} [Finite G] :

0 commit comments

Comments
 (0)