Documentation

Mathlib.GroupTheory.GroupExtension.Basic

Basic lemmas about group extensions #

This file gives basic lemmas about group extensions.

For the main definitions, see Mathlib/GroupTheory/GroupExtension/Defs.lean.

noncomputable def GroupExtension.quotientKerRightHomEquivRight {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) :

The isomorphism E โงธ S.rightHom.ker โ‰ƒ* G induced by S.rightHom

Equations
    Instances For
      noncomputable def AddGroupExtension.quotientKerRightHomEquivRight {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) :

      The isomorphism E โงธ S.rightHom.ker โ‰ƒ+ G induced by S.rightHom

      Equations
        Instances For
          noncomputable def GroupExtension.quotientRangeInlEquivRight {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) :

          The isomorphism E โงธ S.inl.range โ‰ƒ* G induced by S.rightHom

          Equations
            Instances For
              noncomputable def AddGroupExtension.quotientRangeInlEquivRight {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) :

              The isomorphism E โงธ S.inl.range โ‰ƒ+ G induced by S.rightHom

              Equations
                Instances For
                  noncomputable def GroupExtension.surjInvRightHom {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) :

                  An arbitrarily chosen section

                  Equations
                    Instances For
                      noncomputable def AddGroupExtension.surjInvRightHom {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) :

                      An arbitrarily chosen section

                      Equations
                        Instances For
                          theorem GroupExtension.Section.mul_inv_mem_range_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          ฯƒ g * (ฯƒ' g)โปยน โˆˆ S.inl.range
                          theorem AddGroupExtension.Section.add_neg_mem_range_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          ฯƒ g + -ฯƒ' g โˆˆ S.inl.range
                          theorem GroupExtension.Section.inv_mul_mem_range_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          (ฯƒ g)โปยน * ฯƒ' g โˆˆ S.inl.range
                          theorem AddGroupExtension.Section.neg_add_mem_range_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          -ฯƒ g + ฯƒ' g โˆˆ S.inl.range
                          theorem GroupExtension.Section.exists_eq_inl_mul {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          โˆƒ (n : N), ฯƒ g = S.inl n * ฯƒ' g
                          theorem AddGroupExtension.Section.exists_eq_inl_add {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          โˆƒ (n : N), ฯƒ g = S.inl n + ฯƒ' g
                          theorem GroupExtension.Section.exists_eq_mul_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          โˆƒ (n : N), ฯƒ g = ฯƒ' g * S.inl n
                          theorem AddGroupExtension.Section.exists_eq_add_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ ฯƒ' : S.Section) (g : G) :
                          โˆƒ (n : N), ฯƒ g = ฯƒ' g + S.inl n
                          theorem GroupExtension.Section.mul_mul_mul_inv_mem_range_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          ฯƒ gโ‚ * ฯƒ gโ‚‚ * (ฯƒ (gโ‚ * gโ‚‚))โปยน โˆˆ S.inl.range
                          theorem AddGroupExtension.Section.add_add_add_neg_mem_range_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          ฯƒ gโ‚ + ฯƒ gโ‚‚ + -ฯƒ (gโ‚ + gโ‚‚) โˆˆ S.inl.range
                          theorem GroupExtension.Section.mul_inv_mul_mul_mem_range_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          (ฯƒ (gโ‚ * gโ‚‚))โปยน * ฯƒ gโ‚ * ฯƒ gโ‚‚ โˆˆ S.inl.range
                          theorem AddGroupExtension.Section.add_neg_add_add_mem_range_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          -ฯƒ (gโ‚ + gโ‚‚) + ฯƒ gโ‚ + ฯƒ gโ‚‚ โˆˆ S.inl.range
                          theorem GroupExtension.Section.exists_mul_eq_inl_mul_mul {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          โˆƒ (n : N), ฯƒ (gโ‚ * gโ‚‚) = S.inl n * ฯƒ gโ‚ * ฯƒ gโ‚‚
                          theorem AddGroupExtension.Section.exists_add_eq_inl_add_add {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          โˆƒ (n : N), ฯƒ (gโ‚ + gโ‚‚) = S.inl n + ฯƒ gโ‚ + ฯƒ gโ‚‚
                          theorem GroupExtension.Section.exists_mul_eq_mul_mul_inl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          โˆƒ (n : N), ฯƒ (gโ‚ * gโ‚‚) = ฯƒ gโ‚ * ฯƒ gโ‚‚ * S.inl n
                          theorem AddGroupExtension.Section.exists_add_eq_add_add_inl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} (ฯƒ : S.Section) (gโ‚ gโ‚‚ : G) :
                          โˆƒ (n : N), ฯƒ (gโ‚ + gโ‚‚) = ฯƒ gโ‚ + ฯƒ gโ‚‚ + S.inl n
                          def GroupExtension.Section.equivComp {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (ฯƒ : S.Section) (equiv : S.Equiv S') :

                          The composition of an isomorphism between equivalent group extensions and a section

                          Equations
                            Instances For
                              def AddGroupExtension.Section.equivComp {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (ฯƒ : S.Section) (equiv : S.Equiv S') :

                              The composition of an isomorphism between equivalent additive group extensions and a section

                              Equations
                                Instances For
                                  @[simp]
                                  theorem GroupExtension.Section.equivComp_apply {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (ฯƒ : S.Section) (equiv : S.Equiv S') (aโœ : G) :
                                  (ฯƒ.equivComp equiv) aโœ = equiv (ฯƒ aโœ)
                                  @[simp]
                                  theorem AddGroupExtension.Section.equivComp_apply {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (ฯƒ : S.Section) (equiv : S.Equiv S') (aโœ : G) :
                                  (ฯƒ.equivComp equiv) aโœ = equiv (ฯƒ aโœ)
                                  noncomputable def GroupExtension.Equiv.ofMonoidHom {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (f : E โ†’* E') (comp_inl : f.comp S.inl = S'.inl) (rightHom_comp : S'.rightHom.comp f = S.rightHom) :
                                  S.Equiv S'

                                  An equivalence of group extensions from a homomorphism making a commuting diagram. Such a homomorphism is necessarily an isomorphism.

                                  Equations
                                    Instances For
                                      noncomputable def AddGroupExtension.Equiv.ofAddMonoidHom {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (f : E โ†’+ E') (comp_inl : f.comp S.inl = S'.inl) (rightHom_comp : S'.rightHom.comp f = S.rightHom) :
                                      S.Equiv S'

                                      An equivalence of additive group extensions from a homomorphism making a commuting diagram. Such a homomorphism is necessarily an isomorphism.

                                      Equations
                                        Instances For
                                          noncomputable def GroupExtension.Splitting.conjAct {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (s : S.Splitting) :

                                          G acts on N by conjugation.

                                          Equations
                                            Instances For

                                              A split group extension is equivalent to the extension associated to a semidirect product.

                                              Equations
                                                Instances For
                                                  noncomputable def GroupExtension.Splitting.semidirectProductMulEquiv {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] {S : GroupExtension N E G} (s : S.Splitting) :

                                                  The group associated to a split extension is isomorphic to a semidirect product.

                                                  Equations
                                                    Instances For
                                                      theorem GroupExtension.IsConj.refl {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) (s : S.Splitting) :
                                                      S.IsConj s s

                                                      N-conjugacy is reflexive.

                                                      theorem AddGroupExtension.IsConj.refl {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) (s : S.Splitting) :
                                                      S.IsConj s s

                                                      N-conjugacy is reflexive.

                                                      theorem GroupExtension.IsConj.symm {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) {sโ‚ sโ‚‚ : S.Splitting} (h : S.IsConj sโ‚ sโ‚‚) :
                                                      S.IsConj sโ‚‚ sโ‚

                                                      N-conjugacy is symmetric.

                                                      theorem AddGroupExtension.IsConj.symm {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) {sโ‚ sโ‚‚ : S.Splitting} (h : S.IsConj sโ‚ sโ‚‚) :
                                                      S.IsConj sโ‚‚ sโ‚

                                                      N-conjugacy is symmetric.

                                                      theorem GroupExtension.IsConj.trans {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) {sโ‚ sโ‚‚ sโ‚ƒ : S.Splitting} (hโ‚ : S.IsConj sโ‚ sโ‚‚) (hโ‚‚ : S.IsConj sโ‚‚ sโ‚ƒ) :
                                                      S.IsConj sโ‚ sโ‚ƒ

                                                      N-conjugacy is transitive.

                                                      theorem AddGroupExtension.IsConj.trans {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) {sโ‚ sโ‚‚ sโ‚ƒ : S.Splitting} (hโ‚ : S.IsConj sโ‚ sโ‚‚) (hโ‚‚ : S.IsConj sโ‚‚ sโ‚ƒ) :
                                                      S.IsConj sโ‚ sโ‚ƒ

                                                      N-conjugacy is transitive.

                                                      def GroupExtension.IsConj.setoid {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) :

                                                      The setoid of splittings with N-conjugacy

                                                      Equations
                                                        Instances For
                                                          def AddGroupExtension.IsConj.setoid {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) :

                                                          The setoid of splittings with N-conjugacy

                                                          Equations
                                                            Instances For
                                                              def GroupExtension.ConjClasses {N : Type u_1} {G : Type u_2} [Group N] [Group G] {E : Type u_3} [Group E] (S : GroupExtension N E G) :
                                                              Type (max u_2 u_3)

                                                              The N-conjugacy classes of splittings

                                                              Equations
                                                                Instances For
                                                                  def AddGroupExtension.ConjClasses {N : Type u_1} {G : Type u_2} [AddGroup N] [AddGroup G] {E : Type u_3} [AddGroup E] (S : AddGroupExtension N E G) :
                                                                  Type (max u_2 u_3)

                                                                  The N-conjugacy classes of splittings

                                                                  Equations
                                                                    Instances For
                                                                      theorem SemidirectProduct.right_splitting {N : Type u_1} {G : Type u_2} [Group N] [Group G] {ฯ† : G โ†’* MulAut N} (s : (toGroupExtension ฯ†).Splitting) (g : G) :
                                                                      (s g).right = g