Documentation

Mathlib.GroupTheory.GroupExtension.Defs

Group Extensions #

This file defines extensions of multiplicative and additive groups and their associated structures such as splittings and equivalences.

Main definitions #

For multiplicative groups:
      ↗︎ E  ↘
1 → N   ↓    G → 1
      ↘︎ E' ↗︎️

For additive groups:
      ↗︎ E  ↘
0 → N   ↓    G → 0
      ↘︎ E' ↗︎️

TODO #

If N is abelian,

structure AddGroupExtension (N : Type u_1) (E : Type u_2) (G : Type u_3) [AddGroup N] [AddGroup E] [AddGroup G] :
Type (max (max u_1 u_2) u_3)

AddGroupExtension N E G is a short exact sequence of additive groups 0 → N → E → G → 0.

  • inl : N →+ E

    The inclusion homomorphism N →+ E

  • rightHom : E →+ G

    The projection homomorphism E →+ G

  • inl_injective : Function.Injective self.inl

    The inclusion map is injective.

  • range_inl_eq_ker_rightHom : self.inl.range = self.rightHom.ker

    The range of the inclusion map is equal to the kernel of the projection map.

  • rightHom_surjective : Function.Surjective self.rightHom

    The projection map is surjective.

Instances For
    structure GroupExtension (N : Type u_1) (E : Type u_2) (G : Type u_3) [Group N] [Group E] [Group G] :
    Type (max (max u_1 u_2) u_3)

    GroupExtension N E G is a short exact sequence of groups 1 → N → E → G → 1.

    • inl : N →* E

      The inclusion homomorphism N →* E

    • rightHom : E →* G

      The projection homomorphism E →* G

    • inl_injective : Function.Injective self.inl

      The inclusion map is injective.

    • range_inl_eq_ker_rightHom : self.inl.range = self.rightHom.ker

      The range of the inclusion map is equal to the kernel of the projection map.

    • rightHom_surjective : Function.Surjective self.rightHom

      The projection map is surjective.

    Instances For
      structure AddGroupExtension.Equiv {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) {E' : Type u_4} [AddGroup E'] (S' : AddGroupExtension N E' G) extends E ≃+ E' :
      Type (max u_2 u_4)

      AddGroupExtensions are equivalent iff there is an isomorphism making a commuting diagram. Use AddGroupExtension.Equiv.ofMonoidHom in Mathlib/GroupTheory/GroupExtension/Basic.lean to construct an equivalence without providing the inverse map.

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

        Section of an additive group extension is a right inverse to S.rightHom.

        Instances For
          structure AddGroupExtension.Splitting {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) extends G →+ E, S.Section :
          Type (max u_2 u_3)

          Splitting of an additive group extension is a section homomorphism.

          Instances For
            instance GroupExtension.normal_inl_range {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :

            The range of the inclusion map is a normal subgroup.

            instance AddGroupExtension.normal_inl_range {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) :

            The range of the inclusion map is a normal additive subgroup.

            @[simp]
            theorem GroupExtension.rightHom_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) (n : N) :
            S.rightHom (S.inl n) = 1
            @[simp]
            theorem AddGroupExtension.rightHom_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) (n : N) :
            S.rightHom (S.inl n) = 0
            @[simp]
            theorem GroupExtension.rightHom_comp_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
            @[simp]
            theorem AddGroupExtension.rightHom_comp_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) :
            noncomputable def GroupExtension.conjAct {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :

            E acts on N by conjugation.

            Equations
              Instances For
                theorem GroupExtension.inl_conjAct_comm {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) {e : E} {n : N} :
                S.inl ((S.conjAct e) n) = e * S.inl n * e⁻¹

                The inclusion and a conjugation commute.

                structure GroupExtension.Equiv {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) {E' : Type u_4} [Group E'] (S' : GroupExtension N E' G) extends E ≃* E' :
                Type (max u_2 u_4)

                GroupExtensions are equivalent iff there is an isomorphism making a commuting diagram. Use GroupExtension.Equiv.ofMonoidHom in Mathlib/GroupTheory/GroupExtension/Basic.lean to construct an equivalence without providing the inverse map.

                Instances For
                  instance GroupExtension.Equiv.instEquivLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} :
                  EquivLike (S.Equiv S') E E'
                  Equations
                    instance AddGroupExtension.Equiv.instEquivLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} :
                    EquivLike (S.Equiv S') E E'
                    Equations
                      instance GroupExtension.Equiv.instMulEquivClass {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} :
                      MulEquivClass (S.Equiv S') E E'
                      instance AddGroupExtension.Equiv.instAddEquivClass {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} :
                      AddEquivClass (S.Equiv S') E E'
                      @[simp]
                      theorem GroupExtension.Equiv.toMulEquiv_eq_coe {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') :
                      equiv.toMulEquiv = equiv
                      @[simp]
                      theorem AddGroupExtension.Equiv.toAddEquiv_eq_coe {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') :
                      equiv.toAddEquiv = equiv
                      @[simp]
                      theorem GroupExtension.Equiv.coe_toMulEquiv {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') :
                      equiv = equiv
                      @[simp]
                      theorem AddGroupExtension.Equiv.coe_toAddEquiv {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') :
                      equiv = equiv
                      @[simp]
                      theorem GroupExtension.Equiv.map_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') (n : N) :
                      equiv (S.inl n) = S'.inl n
                      @[simp]
                      theorem AddGroupExtension.Equiv.map_inl {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') (n : N) :
                      equiv (S.inl n) = S'.inl n
                      @[simp]
                      theorem GroupExtension.Equiv.rightHom_map {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') (e : E) :
                      S'.rightHom (equiv e) = S.rightHom e
                      @[simp]
                      theorem AddGroupExtension.Equiv.rightHom_map {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') (e : E) :
                      S'.rightHom (equiv e) = S.rightHom e
                      def GroupExtension.Equiv.symm {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') :
                      S'.Equiv S

                      The inverse of an equivalence of group extensions is an equivalence.

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

                          The inverse of an equivalence of additive group extensions is an equivalence.

                          Equations
                            Instances For
                              def GroupExtension.Equiv.Simps.symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') :
                              E'E

                              See Note [custom simps projection].

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

                                  See Note [custom simps projection].

                                  Equations
                                    Instances For
                                      @[simp]
                                      theorem GroupExtension.Equiv.coe_symm {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') :
                                      (↑equiv).symm = equiv.symm
                                      @[simp]
                                      theorem AddGroupExtension.Equiv.coe_symm {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') :
                                      (↑equiv).symm = equiv.symm
                                      @[simp]
                                      theorem AddGroupExtension.Equiv.symm_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') (a✝ : E) :
                                      equiv.symm.symm a✝ = equiv a✝
                                      @[simp]
                                      theorem GroupExtension.Equiv.symm_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') (a✝ : E) :
                                      equiv.symm.symm a✝ = equiv a✝
                                      def GroupExtension.Equiv.trans {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') {E'' : Type u_5} [Group E''] {S'' : GroupExtension N E'' G} (equiv' : S'.Equiv S'') :
                                      S.Equiv S''

                                      The composition of monoid isomorphisms associated to equivalences of group extensions gives another equivalence.

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

                                          The composition of monoid isomorphisms associated to equivalences of additive group extensions gives another equivalence.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem GroupExtension.Equiv.trans_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') {E'' : Type u_5} [Group E''] {S'' : GroupExtension N E'' G} (equiv' : S'.Equiv S'') (a✝ : E'') :
                                              (equiv.trans equiv').symm a✝ = equiv.symm (equiv'.symm a✝)
                                              @[simp]
                                              theorem AddGroupExtension.Equiv.trans_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') {E'' : Type u_5} [AddGroup E''] {S'' : AddGroupExtension N E'' G} (equiv' : S'.Equiv S'') (a✝ : E'') :
                                              (equiv.trans equiv').symm a✝ = equiv.symm (equiv'.symm a✝)
                                              @[simp]
                                              theorem GroupExtension.Equiv.trans_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} {E' : Type u_4} [Group E'] {S' : GroupExtension N E' G} (equiv : S.Equiv S') {E'' : Type u_5} [Group E''] {S'' : GroupExtension N E'' G} (equiv' : S'.Equiv S'') (a✝ : E) :
                                              (equiv.trans equiv') a✝ = equiv' (equiv a✝)
                                              @[simp]
                                              theorem AddGroupExtension.Equiv.trans_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} {E' : Type u_4} [AddGroup E'] {S' : AddGroupExtension N E' G} (equiv : S.Equiv S') {E'' : Type u_5} [AddGroup E''] {S'' : AddGroupExtension N E'' G} (equiv' : S'.Equiv S'') (a✝ : E) :
                                              (equiv.trans equiv') a✝ = equiv' (equiv a✝)
                                              def GroupExtension.Equiv.refl {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
                                              S.Equiv S

                                              A group extension is equivalent to itself.

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

                                                  An additive group extension is equivalent to itself.

                                                  Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem GroupExtension.Equiv.refl_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) (a : E) :
                                                      (refl S).symm a = a
                                                      @[simp]
                                                      theorem AddGroupExtension.Equiv.refl_symm_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) (a : E) :
                                                      (refl S).symm a = a
                                                      @[simp]
                                                      theorem AddGroupExtension.Equiv.refl_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) (a : E) :
                                                      (refl S) a = a
                                                      @[simp]
                                                      theorem GroupExtension.Equiv.refl_apply {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) (a : E) :
                                                      (refl S) a = a
                                                      structure GroupExtension.Section {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
                                                      Type (max u_2 u_3)

                                                      Section of a group extension is a right inverse to S.rightHom.

                                                      Instances For
                                                        instance GroupExtension.Section.instFunLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
                                                        Equations
                                                          instance AddGroupExtension.Section.instFunLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) :
                                                          Equations
                                                            @[simp]
                                                            theorem GroupExtension.Section.coe_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (σ : GE) ( : Function.RightInverse σ S.rightHom) :
                                                            { toFun := σ, rightInverse_rightHom := } = σ
                                                            @[simp]
                                                            theorem AddGroupExtension.Section.coe_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (σ : GE) ( : Function.RightInverse σ S.rightHom) :
                                                            { toFun := σ, rightInverse_rightHom := } = σ
                                                            @[simp]
                                                            theorem GroupExtension.Section.rightHom_section {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (σ : S.Section) (g : G) :
                                                            S.rightHom (σ g) = g
                                                            @[simp]
                                                            theorem AddGroupExtension.Section.rightHom_section {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (σ : S.Section) (g : G) :
                                                            S.rightHom (σ g) = g
                                                            @[simp]
                                                            theorem GroupExtension.Section.rightHom_comp_section {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (σ : S.Section) :
                                                            S.rightHom σ = id
                                                            @[simp]
                                                            theorem AddGroupExtension.Section.rightHom_comp_section {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (σ : S.Section) :
                                                            S.rightHom σ = id
                                                            structure GroupExtension.Splitting {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) extends G →* E, S.Section :
                                                            Type (max u_2 u_3)

                                                            Splitting of a group extension is a section homomorphism.

                                                            Instances For
                                                              instance GroupExtension.Splitting.instFunLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
                                                              Equations
                                                                instance AddGroupExtension.Splitting.instFunLike {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] (S : AddGroupExtension N E G) :
                                                                Equations
                                                                  instance GroupExtension.Splitting.instMonoidHomClass {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) :
                                                                  @[simp]
                                                                  theorem GroupExtension.Splitting.coe_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (s : G →* E) (hs : Function.RightInverse s S.rightHom) :
                                                                  { toMonoidHom := s, rightInverse_rightHom := hs } = s
                                                                  @[simp]
                                                                  theorem AddGroupExtension.Splitting.coe_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (s : G →+ E) (hs : Function.RightInverse s S.rightHom) :
                                                                  { toAddMonoidHom := s, rightInverse_rightHom := hs } = s
                                                                  @[simp]
                                                                  theorem GroupExtension.Splitting.coe_monoidHom_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (s : G →* E) (hs : Function.RightInverse s S.rightHom) :
                                                                  { toMonoidHom := s, rightInverse_rightHom := hs } = s
                                                                  @[simp]
                                                                  theorem AddGroupExtension.Splitting.coe_addMonoidHom_mk {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (s : G →+ E) (hs : Function.RightInverse s S.rightHom) :
                                                                  { toAddMonoidHom := s, rightInverse_rightHom := hs } = s
                                                                  @[simp]
                                                                  theorem GroupExtension.Splitting.rightHom_splitting {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (s : S.Splitting) (g : G) :
                                                                  S.rightHom (s g) = g
                                                                  @[simp]
                                                                  theorem AddGroupExtension.Splitting.rightHom_splitting {N : Type u_1} {E : Type u_2} {G : Type u_3} [AddGroup N] [AddGroup E] [AddGroup G] {S : AddGroupExtension N E G} (s : S.Splitting) (g : G) :
                                                                  S.rightHom (s g) = g
                                                                  @[simp]
                                                                  theorem GroupExtension.Splitting.rightHom_comp_splitting {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] {S : GroupExtension N E G} (s : S.Splitting) :
                                                                  @[simp]
                                                                  def GroupExtension.IsConj {N : Type u_1} {E : Type u_2} {G : Type u_3} [Group N] [Group E] [Group G] (S : GroupExtension N E G) (s s' : S.Splitting) :

                                                                  A splitting of an extension S is N-conjugate to another iff there exists n : N such that the section homomorphism is a conjugate of the other section homomorphism by S.inl n.

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

                                                                      A splitting of an extension S is N-conjugate to another iff there exists n : N such that the section homomorphism is a conjugate of the other section homomorphism by S.inl n.

                                                                      Equations
                                                                        Instances For
                                                                          def SemidirectProduct.toGroupExtension {N : Type u_1} {G : Type u_3} [Group G] [Group N] (φ : G →* MulAut N) :
                                                                          GroupExtension N (N ⋊[φ] G) G

                                                                          The group extension associated to the semidirect product

                                                                          Equations
                                                                            Instances For
                                                                              def SemidirectProduct.inr_splitting {N : Type u_1} {G : Type u_3} [Group G] [Group N] (φ : G →* MulAut N) :

                                                                              A canonical splitting of the group extension associated to the semidirect product

                                                                              Equations
                                                                                Instances For