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
              • σ.equivComp equiv = { toFun := equiv σ, rightInverse_rightHom := }
              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
                • σ.equivComp equiv = { toFun := equiv σ, rightInverse_rightHom := }
                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
                  • One or more equations did not get rendered due to their size.
                  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
                    • One or more equations did not get rendered due to their size.
                    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
                        • One or more equations did not get rendered due to their size.
                        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