Paper XI · Lean source

ProductNormalizerQuotient59.lean

Selected results recorded Coverage and evidence

Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (1)

PaperXI/ProductNormalizerQuotient59.lean95 lines

Original source pathformalization/PaperXI/ProductNormalizerQuotient59.lean
Skip declarations and read code

Skip source text

1 import PaperXI.NormalizerExtensionInducing58
2 import Mathlib.GroupTheory.QuotientGroup.Basic
3 import Mathlib.GroupTheory.Subgroup.Centralizer
4 
5 /-!
6 # Product subgroups and the action of a centralizing normalizer
7 
8 For actual subgroups `H,N` of an ambient group, with `H` normalizing `N`,
9 the quotient of `H ⊔ N` by `N` is the quotient of `H` by its intersection
10 with `N`. An ambient element centralizing `H` and normalizing `N` acts
11 trivially on this quotient. No identification with a simple-character group
12 is asserted here.
13 -/
14 set_option autoImplicit false
15 noncomputable section
16 namespace PaperXI.ProductNormalizerQuotient59
17 
18 variable {G : Type*} [Group G]
19 variable (H N : Subgroup G) (t : G)
20 variable (hH : ∀ h ∈ H, t * h = h * t)
21 variable (hN : t ∈ Subgroup.normalizer (N : Set G))
22 
23 include hH hN in
24 /-- Centralizing one factor and normalizing the other normalizes their product. -/
25 theorem normalizes_sup : t ∈ Subgroup.normalizer ((H ⊔ N : Subgroup G) : Set G) := by
26   apply H.inf_normalizer_le_normalizer_sup N
27   refine ⟨?_, hN⟩
28   apply Subgroup.centralizer_le_normalizer
29   exact Subgroup.mem_centralizer_iff.mpr fun h hh => (hH h hh).symm
30 
31 /-- The literal ambient conjugation automorphism of the product subgroup. -/
32 def conjugation : MulAut (H ⊔ N : Subgroup G) :=
33   NormalizerExtensionInducing58.conjugation (H ⊔ N) t (normalizes_sup H N t hH hN)
34 
35 @[simp] theorem conjugation_coe (j : (H ⊔ N : Subgroup G)) :
36     ((conjugation H N t hH hN j : (H ⊔ N : Subgroup G)) : G) =
37       t * (j : G) * t⁻¹ := rfl
38 
39 /-- Every homomorphism killing the second factor is unchanged by conjugation. -/
40 theorem map_conjugation {Q : Type*} [Group Q]
41     (hHN : H ≤ Subgroup.normalizer (N : Set G))
42     (q : (H ⊔ N : Subgroup G) →* Q)
43     (hq : N.subgroupOf (H ⊔ N) ≤ q.ker)
44     (j : (H ⊔ N : Subgroup G)) :
45     q (conjugation H N t hH hN j) = q j := by
46   have hj := j.property
47   rw [← SetLike.mem_coe, Subgroup.coe_mul_of_left_le_normalizer_right H N hHN] at hj
48   obtain ⟨h, hh, n, hn, he⟩ := hj
49   let a : (H ⊔ N : Subgroup G) := ⟨h, (show H ≤ H ⊔ N from le_sup_left) hh⟩
50   let b : (H ⊔ N : Subgroup G) := ⟨n, (show N ≤ H ⊔ N from le_sup_right) hn⟩
51   have hj' : j = a * b := Subtype.ext he.symm
52   have ha : conjugation H N t hH hN a = a := by
53     apply Subtype.ext
54     change t * h * t⁻¹ = h
55     rw [hH h hh, mul_assoc, mul_inv_cancel, mul_one]
56   have hb : q b = 1 := hq hn
57   have hcb : q (conjugation H N t hH hN b) = 1 := by
58     apply hq
59     exact (Subgroup.mem_normalizer_iff.mp hN n).mp hn
60   simp only [hj', map_mul, ha, hcb, hb]
61 
62 /-- The actual quotient projection is unchanged by the normalizer action. -/
63 theorem quotient_conjugation (hHN : H ≤ Subgroup.normalizer (N : Set G))
64     (j : (H ⊔ N : Subgroup G)) :
65     letI := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
66     QuotientGroup.mk' (N.subgroupOf (H ⊔ N)) (conjugation H N t hH hN j) =
67       QuotientGroup.mk' (N.subgroupOf (H ⊔ N)) j := by
68   let := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
69   apply map_conjugation H N t hH hN hHN
70   rw [QuotientGroup.ker_mk']
71 
72 /-- The second isomorphism theorem gives the literal product quotient. -/
73 def productQuotientEquiv (hHN : H ≤ Subgroup.normalizer (N : Set G)) :
74     letI := Subgroup.normal_subgroupOf_of_le_normalizer hHN
75     letI := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
76     (H ⊔ N : Subgroup G) ⧸ N.subgroupOf (H ⊔ N) ≃* H ⧸ N.subgroupOf H := by
77   letI := Subgroup.normal_subgroupOf_of_le_normalizer hHN
78   letI := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
79   exact (QuotientGroup.quotientInfEquivProdNormalizerQuotient H N hHN).symm
80 
81 /-- A concrete surjective map on the first factor identifies the full product
82 quotient once its kernel is the actual intersection with the second factor. -/
83 def quotientEquivOfKernel {Q : Type*} [Group Q]
84     (hHN : H ≤ Subgroup.normalizer (N : Set G))
85     (q : H →* Q) (hq : Function.Surjective q)
86     (hker : N.subgroupOf H = q.ker) :
87     letI := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
88     (H ⊔ N : Subgroup G) ⧸ N.subgroupOf (H ⊔ N) ≃* Q := by
89   letI := Subgroup.normal_subgroupOf_of_le_normalizer hHN
90   letI := Subgroup.normal_subgroupOf_sup_of_le_normalizer hHN
91   exact (productQuotientEquiv H N hHN).trans
92     ((QuotientGroup.quotientMulEquivOfEq hker).trans
93       (QuotientGroup.quotientKerEquivOfSurjective q hq))
94 
95 end PaperXI.ProductNormalizerQuotient59

Back to source controls

Original file and source record

This copy matches the recorded source file. Its publication here does not change the work’s review status.

SHA-256: 253347996905c91f7605f14539fa7abaf854e23c86fc22008272369cf3bd30bd

Original source on GitHub

Back to Paper XI: Packets, Arithmetic Realization, and Conditional Comparison