Normal subgroups

module group-theory.normal-subgroups where
Imports
open import foundation.binary-relations
open import foundation.binary-transport
open import foundation.dependent-pair-types
open import foundation.embeddings
open import foundation.equivalence-relations
open import foundation.equivalences
open import foundation.functions
open import foundation.identity-types
open import foundation.propositions
open import foundation.subtype-identity-principle
open import foundation.subtypes
open import foundation.universe-levels

open import group-theory.congruence-relations-groups
open import group-theory.conjugation
open import group-theory.groups
open import group-theory.subgroups

open import order-theory.large-posets
open import order-theory.large-preorders
open import order-theory.posets
open import order-theory.preorders

Idea

A normal subgroup of G is a subgroup H of G which is closed under conjugation.

Definition

is-normal-subgroup-Prop :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G)  Prop (l1  l2)
is-normal-subgroup-Prop G H =
  Π-Prop
    ( type-Group G)
    ( λ g 
      Π-Prop
        ( type-Subgroup G H)
        ( λ h 
          subset-Subgroup G H
            ( conjugation-Group G g (inclusion-Subgroup G H h))))

is-normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G)  UU (l1  l2)
is-normal-Subgroup G H = type-Prop (is-normal-subgroup-Prop G H)

is-prop-is-normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) 
  is-prop (is-normal-Subgroup G H)
is-prop-is-normal-Subgroup G H =
  is-prop-type-Prop (is-normal-subgroup-Prop G H)

is-normal-Subgroup' :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G)  UU (l1  l2)
is-normal-Subgroup' G H =
  (x : type-Group G) (y : type-Subgroup G H) 
  is-in-Subgroup G H
    ( conjugation-Group' G x (inclusion-Subgroup G H y))

is-normal-is-normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) 
  is-normal-Subgroup G H  is-normal-Subgroup' G H
is-normal-is-normal-Subgroup G H K x y =
  tr
    ( is-in-Subgroup G H)
    ( inv (htpy-conjugation-Group G x (inclusion-Subgroup G H y)))
    ( K (inv-Group G x) y)

is-normal-is-normal-Subgroup' :
  {l1 l2 : Level} (G : Group l1) (H : Subgroup l2 G) 
  is-normal-Subgroup' G H  is-normal-Subgroup G H
is-normal-is-normal-Subgroup' G H K x y =
  tr
    ( is-in-Subgroup G H)
    ( inv (htpy-conjugation-Group' G x (inclusion-Subgroup G H y)))
    ( K (inv-Group G x) y)

Normal-Subgroup :
  {l1 : Level} (l2 : Level) (G : Group l1)  UU (l1  lsuc l2)
Normal-Subgroup l2 G = Σ (Subgroup l2 G) (is-normal-Subgroup G)

module _
  {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G)
  where

  subgroup-Normal-Subgroup : Subgroup l2 G
  subgroup-Normal-Subgroup = pr1 N

  subset-Normal-Subgroup : subset-Group l2 G
  subset-Normal-Subgroup = subset-Subgroup G subgroup-Normal-Subgroup

  type-Normal-Subgroup : UU (l1  l2)
  type-Normal-Subgroup = type-Subgroup G subgroup-Normal-Subgroup

  inclusion-Normal-Subgroup : type-Normal-Subgroup  type-Group G
  inclusion-Normal-Subgroup =
    inclusion-Subgroup G subgroup-Normal-Subgroup

  is-emb-inclusion-Normal-Subgroup : is-emb inclusion-Normal-Subgroup
  is-emb-inclusion-Normal-Subgroup =
    is-emb-inclusion-Subgroup G subgroup-Normal-Subgroup

  emb-inclusion-Normal-Subgroup : type-Normal-Subgroup  type-Group G
  emb-inclusion-Normal-Subgroup =
    emb-inclusion-Subgroup G subgroup-Normal-Subgroup

  is-in-Normal-Subgroup : type-Group G  UU l2
  is-in-Normal-Subgroup = is-in-Subgroup G subgroup-Normal-Subgroup

  is-closed-under-eq-Normal-Subgroup :
    {x y : type-Group G} 
    is-in-Normal-Subgroup x  (x  y)  is-in-Normal-Subgroup y
  is-closed-under-eq-Normal-Subgroup =
    is-closed-under-eq-subtype subset-Normal-Subgroup

  is-closed-under-eq-Normal-Subgroup' :
    {x y : type-Group G} 
    is-in-Normal-Subgroup y  (x  y)  is-in-Normal-Subgroup x
  is-closed-under-eq-Normal-Subgroup' =
    is-closed-under-eq-subtype' subset-Normal-Subgroup

  is-prop-is-in-Normal-Subgroup :
    (g : type-Group G)  is-prop (is-in-Normal-Subgroup g)
  is-prop-is-in-Normal-Subgroup =
    is-prop-is-in-Subgroup G subgroup-Normal-Subgroup

  is-in-normal-subgroup-inclusion-Normal-Subgroup :
    (x : type-Normal-Subgroup) 
    is-in-Normal-Subgroup (inclusion-Normal-Subgroup x)
  is-in-normal-subgroup-inclusion-Normal-Subgroup =
    is-in-subgroup-inclusion-Subgroup G subgroup-Normal-Subgroup

  is-subgroup-Normal-Subgroup :
    is-subgroup-subset-Group G subset-Normal-Subgroup
  is-subgroup-Normal-Subgroup =
    is-subgroup-Subgroup G subgroup-Normal-Subgroup

  contains-unit-Normal-Subgroup : is-in-Normal-Subgroup (unit-Group G)
  contains-unit-Normal-Subgroup =
    contains-unit-Subgroup G subgroup-Normal-Subgroup

  unit-Normal-Subgroup : type-Normal-Subgroup
  unit-Normal-Subgroup = unit-Subgroup G subgroup-Normal-Subgroup

  is-closed-under-mul-Normal-Subgroup :
    is-closed-under-mul-subset-Group G subset-Normal-Subgroup
  is-closed-under-mul-Normal-Subgroup =
    is-closed-under-mul-Subgroup G subgroup-Normal-Subgroup

  mul-Normal-Subgroup :
    type-Normal-Subgroup  type-Normal-Subgroup  type-Normal-Subgroup
  mul-Normal-Subgroup = mul-Subgroup G subgroup-Normal-Subgroup

  is-closed-under-inv-Normal-Subgroup :
    is-closed-under-inv-subset-Group G subset-Normal-Subgroup
  is-closed-under-inv-Normal-Subgroup =
    is-closed-under-inv-Subgroup G subgroup-Normal-Subgroup

  inv-Normal-Subgroup : type-Normal-Subgroup  type-Normal-Subgroup
  inv-Normal-Subgroup = inv-Subgroup G subgroup-Normal-Subgroup

  is-closed-under-inv-Normal-Subgroup' :
    (x : type-Group G) 
    is-in-Normal-Subgroup (inv-Group G x)  is-in-Normal-Subgroup x
  is-closed-under-inv-Normal-Subgroup' =
    is-closed-under-inv-Subgroup' G subgroup-Normal-Subgroup

  is-in-normal-subgroup-left-factor-Normal-Subgroup :
    (x y : type-Group G) 
    is-in-Normal-Subgroup (mul-Group G x y) 
    is-in-Normal-Subgroup y  is-in-Normal-Subgroup x
  is-in-normal-subgroup-left-factor-Normal-Subgroup =
    is-in-subgroup-left-factor-Subgroup G subgroup-Normal-Subgroup

  is-in-normal-subgroup-right-factor-Normal-Subgroup :
    (x y : type-Group G) 
    is-in-Normal-Subgroup (mul-Group G x y) 
    is-in-Normal-Subgroup x  is-in-Normal-Subgroup y
  is-in-normal-subgroup-right-factor-Normal-Subgroup =
    is-in-subgroup-right-factor-Subgroup G subgroup-Normal-Subgroup

  group-Normal-Subgroup : Group (l1  l2)
  group-Normal-Subgroup = group-Subgroup G subgroup-Normal-Subgroup

  is-normal-subgroup-Normal-Subgroup :
    (x y : type-Group G)  is-in-Normal-Subgroup y 
    is-in-Normal-Subgroup (conjugation-Group G x y)
  is-normal-subgroup-Normal-Subgroup x y p = pr2 N x (y , p)

  is-normal-subgroup-Normal-Subgroup' :
    (x y : type-Group G)  is-in-Normal-Subgroup y 
    is-in-Normal-Subgroup (conjugation-Group' G x y)
  is-normal-subgroup-Normal-Subgroup' x y p =
    is-normal-is-normal-Subgroup G
      ( subgroup-Normal-Subgroup)
      ( λ x y  is-normal-subgroup-Normal-Subgroup x (pr1 y) (pr2 y))
      ( x)
      ( pair y p)

  closure-property-Normal-Subgroup :
    {x y z : type-Group G} 
    is-in-Normal-Subgroup y 
    is-in-Normal-Subgroup (mul-Group G x z) 
    is-in-Normal-Subgroup (mul-Group G (mul-Group G x y) z)
  closure-property-Normal-Subgroup {x} {y} {z} p q =
    is-closed-under-eq-Normal-Subgroup
      ( is-closed-under-mul-Normal-Subgroup
        ( conjugation-Group G x y)
        ( mul-Group G x z)
        ( is-normal-subgroup-Normal-Subgroup x y p)
        ( q))
      ( ( associative-mul-Group G
          ( mul-Group G x y)
          ( inv-Group G x)
          ( mul-Group G x z)) 
        ( ap
          ( mul-Group G (mul-Group G x y))
          ( isretr-mul-inv-Group G x z)))

  closure-property-Normal-Subgroup' :
    {x y z : type-Group G} 
    is-in-Normal-Subgroup y 
    is-in-Normal-Subgroup (mul-Group G x z) 
    is-in-Normal-Subgroup (mul-Group G x (mul-Group G y z))
  closure-property-Normal-Subgroup' {x} {y} {z} p q =
    is-closed-under-eq-Normal-Subgroup
      ( closure-property-Normal-Subgroup p q)
      ( associative-mul-Group G x y z)

  conjugation-Normal-Subgroup :
    type-Group G  type-Normal-Subgroup  type-Normal-Subgroup
  pr1 (conjugation-Normal-Subgroup y u) =
    conjugation-Group G y (inclusion-Normal-Subgroup u)
  pr2 (conjugation-Normal-Subgroup y u) =
    is-normal-subgroup-Normal-Subgroup y (pr1 u) (pr2 u)

  conjugation-Normal-Subgroup' :
    type-Group G  type-Normal-Subgroup  type-Normal-Subgroup
  pr1 (conjugation-Normal-Subgroup' y u) =
    conjugation-Group' G y (inclusion-Normal-Subgroup u)
  pr2 (conjugation-Normal-Subgroup' y u) =
    is-normal-subgroup-Normal-Subgroup' y (pr1 u) (pr2 u)

Properties

Extensionality of the type of all normal subgroups

module _
  {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G)
  where

  has-same-elements-Normal-Subgroup :
    {l3 : Level}  Normal-Subgroup l3 G  UU (l1  l2  l3)
  has-same-elements-Normal-Subgroup K =
    has-same-elements-Subgroup G
      ( subgroup-Normal-Subgroup G N)
      ( subgroup-Normal-Subgroup G K)

  extensionality-Normal-Subgroup :
    (K : Normal-Subgroup l2 G) 
    (N  K)  has-same-elements-Normal-Subgroup K
  extensionality-Normal-Subgroup =
    extensionality-type-subtype
      ( is-normal-subgroup-Prop G)
      ( λ x y 
        is-normal-subgroup-Normal-Subgroup G N x (pr1 y) (pr2 y))
      ( λ x  pair id id)
      ( extensionality-Subgroup G (subgroup-Normal-Subgroup G N))

  eq-has-same-elements-Normal-Subgroup :
    (K : Normal-Subgroup l2 G) 
    has-same-elements-Normal-Subgroup K  N  K
  eq-has-same-elements-Normal-Subgroup K =
    map-inv-equiv (extensionality-Normal-Subgroup K)

The containment relation of normal subgroups

contains-Normal-Subgroup-Prop :
  {l1 l2 l3 : Level} (G : Group l1) 
  Normal-Subgroup l2 G  Normal-Subgroup l3 G  Prop (l1  l2  l3)
contains-Normal-Subgroup-Prop G H K =
  contains-Subgroup-Prop G
    ( subgroup-Normal-Subgroup G H)
    ( subgroup-Normal-Subgroup G K)

contains-Normal-Subgroup :
  {l1 l2 l3 : Level} (G : Group l1) 
  Normal-Subgroup l2 G  Normal-Subgroup l3 G  UU (l1  l2  l3)
contains-Normal-Subgroup G H K =
  contains-Subgroup G
    ( subgroup-Normal-Subgroup G H)
    ( subgroup-Normal-Subgroup G K)

refl-contains-Normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) (H : Normal-Subgroup l2 G) 
  contains-Normal-Subgroup G H H
refl-contains-Normal-Subgroup G H =
  refl-contains-Subgroup G (subgroup-Normal-Subgroup G H)

transitive-contains-Normal-Subgroup :
  {l1 l2 l3 l4 : Level} (G : Group l1) (H : Normal-Subgroup l2 G)
  (K : Normal-Subgroup l3 G) (L : Normal-Subgroup l4 G) 
  contains-Normal-Subgroup G K L  contains-Normal-Subgroup G H K 
  contains-Normal-Subgroup G H L
transitive-contains-Normal-Subgroup G H K L =
  transitive-contains-Subgroup G
    ( subgroup-Normal-Subgroup G H)
    ( subgroup-Normal-Subgroup G K)
    ( subgroup-Normal-Subgroup G L)

antisymmetric-contains-Normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) (H K : Normal-Subgroup l2 G) 
  contains-Normal-Subgroup G H K 
  contains-Normal-Subgroup G K H  H  K
antisymmetric-contains-Normal-Subgroup G H K α β =
  eq-has-same-elements-Normal-Subgroup G H K  x  (α x , β x))

Normal-Subgroup-Large-Preorder :
  {l1 : Level} (G : Group l1) 
  Large-Preorder  l2  l1  lsuc l2)  l2 l3  l1  l2  l3)
type-Large-Preorder (Normal-Subgroup-Large-Preorder G) l2 =
  Normal-Subgroup l2 G
leq-Large-Preorder-Prop (Normal-Subgroup-Large-Preorder G) H K =
  contains-Normal-Subgroup-Prop G H K
refl-leq-Large-Preorder (Normal-Subgroup-Large-Preorder G) =
  refl-contains-Normal-Subgroup G
transitive-leq-Large-Preorder (Normal-Subgroup-Large-Preorder G) =
  transitive-contains-Normal-Subgroup G

Normal-Subgroup-Preorder :
  {l1 : Level} (l2 : Level) (G : Group l1) 
  Preorder (l1  lsuc l2) (l1  l2)
Normal-Subgroup-Preorder l2 G =
  preorder-Large-Preorder (Normal-Subgroup-Large-Preorder G) l2

Normal-Subgroup-Large-Poset :
  {l1 : Level} (G : Group l1) 
  Large-Poset  l2  l1  lsuc l2)  l2 l3  l1  l2  l3)
large-preorder-Large-Poset (Normal-Subgroup-Large-Poset G) =
  Normal-Subgroup-Large-Preorder G
antisymmetric-leq-Large-Poset (Normal-Subgroup-Large-Poset G) =
  antisymmetric-contains-Normal-Subgroup G

Normal-Subgroup-Poset :
  {l1 : Level} (l2 : Level) (G : Group l1) 
  Poset (l1  lsuc l2) (l1  l2)
Normal-Subgroup-Poset l2 G =
  poset-Large-Poset (Normal-Subgroup-Large-Poset G) l2

Normal subgroups are in 1-1 correspondence with congruence relations on groups

The standard similarity relation obtained from a normal subgroup

module _
  {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G)
  where

  sim-congruence-Normal-Subgroup : (x y : type-Group G)  UU l2
  sim-congruence-Normal-Subgroup =
    right-sim-Subgroup G (subgroup-Normal-Subgroup G N)

  is-prop-sim-congruence-Normal-Subgroup :
    (x y : type-Group G) 
    is-prop (sim-congruence-Normal-Subgroup x y)
  is-prop-sim-congruence-Normal-Subgroup =
    is-prop-right-sim-Subgroup G (subgroup-Normal-Subgroup G N)

  prop-congruence-Normal-Subgroup :
    (x y : type-Group G)  Prop l2
  prop-congruence-Normal-Subgroup =
    prop-right-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N)

The left equivalence relation obtained from a normal subgroup

  left-eq-rel-congruence-Normal-Subgroup :
    Eq-Rel l2 (type-Group G)
  left-eq-rel-congruence-Normal-Subgroup =
    left-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N)

  left-sim-congruence-Normal-Subgroup :
    type-Group G  type-Group G  UU l2
  left-sim-congruence-Normal-Subgroup =
    left-sim-Subgroup G (subgroup-Normal-Subgroup G N)

The left similarity relation of a normal subgroup relates the same elements as the standard similarity relation

  left-sim-sim-congruence-Normal-Subgroup :
    (x y : type-Group G) 
    sim-congruence-Normal-Subgroup x y 
    left-sim-congruence-Normal-Subgroup x y
  left-sim-sim-congruence-Normal-Subgroup x y H =
    is-closed-under-eq-Normal-Subgroup G N
      ( is-normal-subgroup-Normal-Subgroup G N y
        ( inv-Group G (left-div-Group G x y))
        ( is-closed-under-inv-Normal-Subgroup G N
          ( left-div-Group G x y)
          ( H)))
      ( ( ap (conjugation-Group G y) (inv-left-div-Group G x y) 
        ( conjugation-left-div-Group G y x)))

  sim-left-sim-congruence-Normal-Subgroup :
    (x y : type-Group G) 
    left-sim-congruence-Normal-Subgroup x y 
    sim-congruence-Normal-Subgroup x y
  sim-left-sim-congruence-Normal-Subgroup x y H =
    is-closed-under-eq-Normal-Subgroup G N
      ( is-normal-subgroup-Normal-Subgroup' G N x
        ( inv-Group G (right-div-Group G x y))
        ( is-closed-under-inv-Normal-Subgroup G N
          ( right-div-Group G x y)
          ( H)))
      ( ( ap (conjugation-Group' G x) (inv-right-div-Group G x y)) 
        ( conjugation-right-div-Group G y x))

The standard similarity relation is a congruence relation

  refl-congruence-Normal-Subgroup :
    is-reflexive-Rel-Prop prop-congruence-Normal-Subgroup
  refl-congruence-Normal-Subgroup =
    refl-right-sim-Subgroup G (subgroup-Normal-Subgroup G N)

  symm-congruence-Normal-Subgroup :
    is-symmetric-Rel-Prop prop-congruence-Normal-Subgroup
  symm-congruence-Normal-Subgroup =
    symmetric-right-sim-Subgroup G (subgroup-Normal-Subgroup G N)

  trans-congruence-Normal-Subgroup :
    is-transitive-Rel-Prop prop-congruence-Normal-Subgroup
  trans-congruence-Normal-Subgroup =
    transitive-right-sim-Subgroup G (subgroup-Normal-Subgroup G N)

  eq-rel-congruence-Normal-Subgroup : Eq-Rel l2 (type-Group G)
  eq-rel-congruence-Normal-Subgroup =
    right-eq-rel-Subgroup G (subgroup-Normal-Subgroup G N)

  relate-same-elements-left-sim-congruence-Normal-Subgroup :
    relate-same-elements-Eq-Rel
      ( eq-rel-congruence-Normal-Subgroup)
      ( left-eq-rel-congruence-Normal-Subgroup)
  pr1 (relate-same-elements-left-sim-congruence-Normal-Subgroup x y) =
    left-sim-sim-congruence-Normal-Subgroup x y
  pr2 (relate-same-elements-left-sim-congruence-Normal-Subgroup x y) =
    sim-left-sim-congruence-Normal-Subgroup x y

  mul-congruence-Normal-Subgroup :
    is-congruence-Group G eq-rel-congruence-Normal-Subgroup
  mul-congruence-Normal-Subgroup
    {x} {x'} {y} {y'} p q =
    is-closed-under-eq-Normal-Subgroup G N
      ( closure-property-Normal-Subgroup G N p q)
      ( ( ap
          ( mul-Group' G y')
          ( ( inv
              ( associative-mul-Group G
                ( inv-Group G y)
                ( inv-Group G x)
                ( x'))) 
            ( ap
              ( mul-Group' G x')
              ( inv (distributive-inv-mul-Group G x y))))) 
        ( associative-mul-Group G
          ( inv-Group G (mul-Group G x y))
          ( x')
          ( y')))

  congruence-Normal-Subgroup : congruence-Group l2 G
  pr1 congruence-Normal-Subgroup = eq-rel-congruence-Normal-Subgroup
  pr2 congruence-Normal-Subgroup =
    mul-congruence-Normal-Subgroup

  inv-congruence-Normal-Subgroup :
    {x y : type-Group G} 
    sim-congruence-Normal-Subgroup x y 
    sim-congruence-Normal-Subgroup (inv-Group G x) (inv-Group G y)
  inv-congruence-Normal-Subgroup =
    inv-congruence-Group G congruence-Normal-Subgroup

The normal subgroup obtained from a congruence relation

module _
  {l1 l2 : Level} (G : Group l1) (R : congruence-Group l2 G)
  where

  subset-congruence-Group : subset-Group l2 G
  subset-congruence-Group = prop-congruence-Group G R (unit-Group G)

  is-in-subset-congruence-Group : (type-Group G)  UU l2
  is-in-subset-congruence-Group = type-Prop  subset-congruence-Group

  contains-unit-subset-congruence-Group :
    contains-unit-subset-Group G subset-congruence-Group
  contains-unit-subset-congruence-Group = refl-congruence-Group G R

  is-closed-under-mul-subset-congruence-Group :
    is-closed-under-mul-subset-Group G subset-congruence-Group
  is-closed-under-mul-subset-congruence-Group x y H K =
    concatenate-eq-sim-congruence-Group G R
      ( inv (left-unit-law-mul-Group G (unit-Group G)))
      ( mul-congruence-Group G R H K)

  is-closed-under-inv-subset-congruence-Group :
    is-closed-under-inv-subset-Group G subset-congruence-Group
  is-closed-under-inv-subset-congruence-Group x H =
    concatenate-eq-sim-congruence-Group G R
      ( inv (inv-unit-Group G))
      ( inv-congruence-Group G R H)

  subgroup-congruence-Group : Subgroup l2 G
  pr1 subgroup-congruence-Group = subset-congruence-Group
  pr1 (pr2 subgroup-congruence-Group) =
    contains-unit-subset-congruence-Group
  pr1 (pr2 (pr2 subgroup-congruence-Group)) =
    is-closed-under-mul-subset-congruence-Group
  pr2 (pr2 (pr2 subgroup-congruence-Group)) =
    is-closed-under-inv-subset-congruence-Group

  is-normal-subgroup-congruence-Group :
    is-normal-Subgroup G subgroup-congruence-Group
  is-normal-subgroup-congruence-Group x (pair y H) =
    concatenate-eq-sim-congruence-Group G R
      ( inv (conjugation-unit-Group G x))
      ( conjugation-congruence-Group G R x H)

  normal-subgroup-congruence-Group : Normal-Subgroup l2 G
  pr1 normal-subgroup-congruence-Group = subgroup-congruence-Group
  pr2 normal-subgroup-congruence-Group =
    is-normal-subgroup-congruence-Group

The normal subgroup obtained from the congruence relation of a normal subgroup N is N itself

has-same-elements-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) 
  has-same-elements-Normal-Subgroup G
    ( normal-subgroup-congruence-Group G
      ( congruence-Normal-Subgroup G N))
    ( N)
pr1 (has-same-elements-normal-subgroup-congruence-Group G N x) H =
  is-closed-under-eq-Normal-Subgroup G N H
    ( ( ap (mul-Group' G x) (inv-unit-Group G)) 
      ( left-unit-law-mul-Group G x))
pr2 (has-same-elements-normal-subgroup-congruence-Group G N x) H =
  is-closed-under-eq-Normal-Subgroup' G N H
    ( ( ap (mul-Group' G x) (inv-unit-Group G)) 
      ( left-unit-law-mul-Group G x))

isretr-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) (N : Normal-Subgroup l2 G) 
  ( normal-subgroup-congruence-Group G
    ( congruence-Normal-Subgroup G N)) 
  ( N)
isretr-normal-subgroup-congruence-Group G N =
  eq-has-same-elements-Normal-Subgroup G
    ( normal-subgroup-congruence-Group G
      ( congruence-Normal-Subgroup G N))
    ( N)
    ( has-same-elements-normal-subgroup-congruence-Group G N)

The congruence relation of the normal subgroup obtained from a congruence relation R is R itself

relate-same-elements-congruence-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) (R : congruence-Group l2 G) 
  relate-same-elements-congruence-Group G
    ( congruence-Normal-Subgroup G
      ( normal-subgroup-congruence-Group G R))
    ( R)
pr1
  ( relate-same-elements-congruence-normal-subgroup-congruence-Group
    G R x y) H =
  binary-tr
    ( sim-congruence-Group G R)
    ( right-unit-law-mul-Group G x)
    ( issec-mul-inv-Group G x y)
    ( left-mul-congruence-Group G R x H)
pr2
  ( relate-same-elements-congruence-normal-subgroup-congruence-Group
    G R x y) H =
  symm-congruence-Group G R
    ( map-sim-left-div-unit-congruence-Group G R H)

issec-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) (R : congruence-Group l2 G) 
  ( congruence-Normal-Subgroup G
    ( normal-subgroup-congruence-Group G R)) 
  ( R)
issec-normal-subgroup-congruence-Group G R =
  eq-relate-same-elements-congruence-Group G
    ( congruence-Normal-Subgroup G
      ( normal-subgroup-congruence-Group G R))
    ( R)
    ( relate-same-elements-congruence-normal-subgroup-congruence-Group
      G R)

The equivalence of normal subgroups and congruence relations

is-equiv-congruence-Normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) 
  is-equiv (congruence-Normal-Subgroup {l1} {l2} G)
is-equiv-congruence-Normal-Subgroup G =
  is-equiv-has-inverse
    ( normal-subgroup-congruence-Group G)
    ( issec-normal-subgroup-congruence-Group G)
    ( isretr-normal-subgroup-congruence-Group G)

equiv-congruence-Normal-Subgroup :
  {l1 l2 : Level} (G : Group l1) 
  Normal-Subgroup l2 G  congruence-Group l2 G
pr1 (equiv-congruence-Normal-Subgroup G) =
  congruence-Normal-Subgroup G
pr2 (equiv-congruence-Normal-Subgroup G) =
  is-equiv-congruence-Normal-Subgroup G

is-equiv-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) 
  is-equiv (normal-subgroup-congruence-Group {l1} {l2} G)
is-equiv-normal-subgroup-congruence-Group G =
  is-equiv-has-inverse
    ( congruence-Normal-Subgroup G)
    ( isretr-normal-subgroup-congruence-Group G)
    ( issec-normal-subgroup-congruence-Group G)

equiv-normal-subgroup-congruence-Group :
  {l1 l2 : Level} (G : Group l1) 
  congruence-Group l2 G  Normal-Subgroup l2 G
pr1 (equiv-normal-subgroup-congruence-Group G) =
  normal-subgroup-congruence-Group G
pr2 (equiv-normal-subgroup-congruence-Group G) =
  is-equiv-normal-subgroup-congruence-Group G