Skip to content

Classical.Structures.Group.Conjugation

Conjugation and normality

This is the Classical.Structures.Group.Conjugation module of the Agda Universal Algebra Library.

For a group ๐‘ฎ this module develops conjugation โ€” first of elements (conj g x = g โˆ™ x โˆ™ g โปยน), then of subgroups โ€” and the normality predicate, the ingredients from which Classical.Structures.Group.NormalCore builds the normal core Core_G(H) as a complete-lattice meet.

Two design points deserve comment.

  • The conjugate of a subgroup is defined as an image, not a preimage. We take conjugate g B = { x โˆฃ โˆƒ h โˆˆ B , x โ‰ˆ conj g h }, the โ‰ˆ-saturated image of B under conj g, rather than the preimage { x โˆฃ conj (g โปยน) x โˆˆ B }. Over a setoid carrier the image form is superior: it respects the setoid equality by construction (no hypothesis on B needed), and it is a subuniverse whenever B is a bare subuniverse. For equality-respecting B the two forms agree.
  • Normality is the pointwise property โˆ€ g x โ†’ x โˆˆ B โ†’ conj g x โˆˆ B. The bridge lemmas normal-conjugate-โІ and normal-โІ-conjugate recover the equivalent formulation "every conjugate of B coincides with B" when B respects the equality.

All proofs are small equational chains over the group axioms; the derived cancellation laws (\\-leftDividesสณ and friends) come from the standard library's Algebra.Properties.Group applied to the bundle view โŸจ ๐‘ฎ โŸฉแตแต– of Classical.Bundles.Group, which is what the bundle bridge exists for.

{-# OPTIONS --without-K --exact-split --safe #-}

module Classical.Structures.Group.Conjugation where

open import Agda.Primitive using () renaming ( Set to Type )

-- Imports from the Agda Standard Library ---------------------------------------
open import Data.Fin.Patterns             using  ( 0F ; 1F )
open import Data.Product                  using  ( _,_ ; _ร—_ ; โˆƒ-syntax
                                                 ; projโ‚ ; projโ‚‚ )
open import Function                      using  ( Func )
open import Level                         using  ( Level ; _โŠ”_ ; lift )
open import Relation.Binary               using  ( Setoid )
open import Relation.Binary.Definitions   using  ( _Respects_ )
open import Relation.Unary                using  ( Pred ; _โˆˆ_ ; _โІ_ )

import Algebra.Properties.Group as GroupProperties
import Relation.Binary.Reasoning.Setoid as SetoidReasoning

-- Imports from the Agda Universal Algebra Library ------------------------------
open import Classical.Bundles.Group           using  ( โŸจ_โŸฉแตแต– )
open import Classical.Signatures.Group        using  ( โˆ™-Op ; ฮต-Op ; โปยน-Op )
open import Classical.Structures.Group.Basic  using  ( Group ; module Group-Op )
open import Classical.Structures.Group.Subgroups
open import Setoid.Algebras.Basic             using ( Algebra ; ๐•Œ[_] ; ๐”ป[_] )
                                              renaming ( _^_ to _ฬ‚_ )
open import Setoid.Subalgebras.Subuniverses   using ( Subuniverses )

open Func renaming ( to to _โŸจ$โŸฉ_ ; cong to โ‰ˆcong )

private variable โ„“ โ„“' : Level

Conjugation of elements

Conj ๐‘ฎ packages conjugation in the group ๐‘ฎ; opening it puts conj and its algebra of laws in scope. The laws say: conjugation by a fixed g is a group endomorphism (conj-ฮต, conj-โˆ™-hom, conj-โปยน), and as g varies it is a left action of the group on itself (conj-action-ฮต, conj-action-โˆ™) by โ‰ˆ-automorphisms (conj-cong, with conj-conjโปยน and conjโปยน-conj the two inverse laws).

module Conjugate {ฮฑ ฯ : Level} (๐’ข@(๐‘ฎ , eqns) : Group ฮฑ ฯ) where

  open Setoid ๐”ป[ ๐‘ฎ ]  using ( _โ‰ˆ_ )
                      renaming ( refl to โ‰ˆrefl ; sym to โ‰ˆsym ; trans to โ‰ˆtrans )
  open SetoidReasoning ๐”ป[ ๐‘ฎ ]
  open Group-Op ๐’ข using ( _โˆ™_ ; ฮต ; _โปยน ; โˆ™-cong ; โปยน-cong
                        ; assoc-law ; idหก-law ; idสณ-law ; invหก-law ; invสณ-law )
  open GroupProperties โŸจ ๐’ข โŸฉแตแต–
    using ( ฮตโปยนโ‰ˆฮต ; โปยน-involutive ; โปยน-anti-homo-โˆ™ ; \\-leftDividesสณ )

  -- Conjugation of the element x by the element g.
  conj : ๐•Œ[ ๐‘ฎ ] โ†’ ๐•Œ[ ๐‘ฎ ] โ†’ ๐•Œ[ ๐‘ฎ ]
  conj g x = g โˆ™ x โˆ™ g โปยน

  infixl 30 conj-syntax

  conj-syntax : ๐•Œ[ ๐‘ฎ ] โ†’ ๐•Œ[ ๐‘ฎ ] โ†’ ๐•Œ[ ๐‘ฎ ]
  conj-syntax = conj

  syntax conj-syntax g x = x ^ g

  -- Conjugation is a congruence in the conjugated element ...
  conj-cong : โˆ€ g {x y} โ†’ x โ‰ˆ y โ†’ x ^ g โ‰ˆ y ^ g
  conj-cong g xโ‰ˆy = โˆ™-cong (โˆ™-cong โ‰ˆrefl xโ‰ˆy) โ‰ˆrefl

  -- ... and in the conjugating element.
  conj-congแต : โˆ€ {g h} x โ†’ g โ‰ˆ h โ†’ x ^ g โ‰ˆ x ^ h
  conj-congแต x gโ‰ˆh = โˆ™-cong (โˆ™-cong gโ‰ˆh โ‰ˆrefl) (โปยน-cong gโ‰ˆh)

  -- Conjugation fixes the identity element.
  conj-ฮต : โˆ€ g โ†’ ฮต ^ g  โ‰ˆ ฮต
  conj-ฮต g = begin
    g โˆ™ ฮต โˆ™ g โปยน  โ‰ˆโŸจ โˆ™-cong (idสณ-law g) โ‰ˆrefl โŸฉ
    g โˆ™ g โปยน      โ‰ˆโŸจ invสณ-law g โŸฉ
    ฮต             โˆŽ

  -- Conjugation by g is multiplicative.
  conj-โˆ™-hom : โˆ€ g x y โ†’ (x โˆ™ y) ^ g โ‰ˆ (x ^ g) โˆ™ (y ^ g)
  conj-โˆ™-hom g x y = begin
    (x โˆ™ y) ^ g                        โ‰ˆห˜โŸจ โˆ™-cong (assoc-law g x y) โ‰ˆrefl โŸฉ
    g โˆ™ x โˆ™ y โˆ™ g โปยน                   โ‰ˆโŸจ assoc-law (g โˆ™ x) y (g โปยน) โŸฉ
    g โˆ™ x โˆ™ (y โˆ™ g โปยน)                 โ‰ˆห˜โŸจ โˆ™-cong โ‰ˆrefl (\\-leftDividesสณ g (y โˆ™ g โปยน)) โŸฉ
    g โˆ™ x โˆ™ (g โปยน โˆ™ (g โˆ™ (y โˆ™ g โปยน)))  โ‰ˆห˜โŸจ โˆ™-cong โ‰ˆrefl (โˆ™-cong โ‰ˆrefl (assoc-law g y (g โปยน))) โŸฉ
    g โˆ™ x โˆ™ (g โปยน โˆ™ (y ^ g))           โ‰ˆห˜โŸจ assoc-law (g โˆ™ x) (g โปยน) (y ^ g) โŸฉ
    (x ^ g) โˆ™ (y ^ g)                  โˆŽ

  -- Conjugation by g commutes with inversion.
  conj-โปยน : โˆ€ g x โ†’ (x โปยน) ^ g โ‰ˆ (x ^ g) โปยน
  conj-โปยน g x = begin
    (x โปยน) ^ g              โ‰ˆโŸจ assoc-law g (x โปยน) (g โปยน) โŸฉ
    g โˆ™ (x โปยน โˆ™ g โปยน)       โ‰ˆห˜โŸจ โˆ™-cong (โปยน-involutive g) (โปยน-anti-homo-โˆ™ g x) โŸฉ
    (g โปยน) โปยน โˆ™ (g โˆ™ x) โปยน  โ‰ˆห˜โŸจ โปยน-anti-homo-โˆ™ (g โˆ™ x) (g โปยน) โŸฉ
    (x ^ g) โปยน โˆŽ

  -- Varying the conjugator: conjugation is a left action of the group on itself.
  conj-action-โˆ™ : โˆ€ g h x โ†’ x ^ (g โˆ™ h) โ‰ˆ (x ^ h) ^ g
  conj-action-โˆ™ g h x = begin
    x ^ (g โˆ™ h)                โ‰ˆโŸจ โ‰ˆrefl โŸฉ
    g โˆ™ h โˆ™ x โˆ™ (g โˆ™ h) โปยน     โ‰ˆโŸจ โˆ™-cong โ‰ˆrefl (โปยน-anti-homo-โˆ™ g h) โŸฉ
    g โˆ™ h โˆ™ x โˆ™ (h โปยน โˆ™ g โปยน)  โ‰ˆห˜โŸจ assoc-law (g โˆ™ h โˆ™ x) (h โปยน) (g โปยน) โŸฉ
    g โˆ™ h โˆ™ x โˆ™ h โปยน โˆ™ g โปยน    โ‰ˆโŸจ โˆ™-cong (โˆ™-cong (assoc-law g h x) โ‰ˆrefl) โ‰ˆrefl โŸฉ
    g โˆ™ (h โˆ™ x) โˆ™ h โปยน โˆ™ g โปยน  โ‰ˆโŸจ โˆ™-cong (assoc-law g (h โˆ™ x) (h โปยน)) โ‰ˆrefl โŸฉ
    g โˆ™ (h โˆ™ x โˆ™ h โปยน) โˆ™ g โปยน  โ‰ˆโŸจ โ‰ˆrefl โŸฉ
    (x ^ h) ^ g  โˆŽ

  conj-action-ฮต : โˆ€ x โ†’ x ^ ฮต โ‰ˆ x
  conj-action-ฮต x = begin
    ฮต โˆ™ x โˆ™ ฮต โปยน  โ‰ˆโŸจ โˆ™-cong (idหก-law x) ฮตโปยนโ‰ˆฮต โŸฉ
    x โˆ™ ฮต         โ‰ˆโŸจ idสณ-law x โŸฉ
    x             โˆŽ

  -- Conjugating by g undoes conjugating by g โปยน, and vice versa.
  conj-conjโปยน : โˆ€ g x โ†’ x ^ (g โปยน) ^ g โ‰ˆ x
  conj-conjโปยน g x = begin
    x ^ (g โปยน) ^ g    โ‰ˆห˜โŸจ conj-action-โˆ™ g (g โปยน) x โŸฉ
    x ^ (g โˆ™ g โปยน)    โ‰ˆโŸจ conj-congแต x (invสณ-law g) โŸฉ
    x ^ ฮต             โ‰ˆโŸจ conj-action-ฮต x โŸฉ
    x                 โˆŽ

  conjโปยน-conj : โˆ€ g x โ†’ x ^ g ^ (g โปยน) โ‰ˆ x
  conjโปยน-conj g x = begin
    x ^ g ^ (g โปยน)  โ‰ˆห˜โŸจ conj-action-โˆ™ (g โปยน) g x โŸฉ
    x ^ (g โปยน โˆ™ g)  โ‰ˆโŸจ conj-congแต x (invหก-law g) โŸฉ
    x ^ ฮต           โ‰ˆโŸจ conj-action-ฮต x โŸฉ
    x               โˆŽ

Conjugation of subgroups

The conjugate of a subset B by g is the โ‰ˆ-saturated image of B under conj g. It respects the setoid equality by construction, and is a subuniverse whenever B is (via the endomorphism laws above), so conjugation maps subgroups to subgroups.

  -- The conjugate subset g B gโปยน.
  conjugate : ๐•Œ[ ๐‘ฎ ] โ†’ Pred ๐•Œ[ ๐‘ฎ ] โ„“ โ†’ Pred ๐•Œ[ ๐‘ฎ ] (ฮฑ โŠ” ฯ โŠ” โ„“)
  conjugate g B x = โˆƒ[ h ] (h โˆˆ B ร— x โ‰ˆ h ^ g)

  infixl 30 conjugate-syntax

  conjugate-syntax : ๐•Œ[ ๐‘ฎ ] โ†’ Pred ๐•Œ[ ๐‘ฎ ] โ„“ โ†’ Pred ๐•Œ[ ๐‘ฎ ] (ฮฑ โŠ” ฯ โŠ” โ„“)
  conjugate-syntax = conjugate

  syntax conjugate-syntax g B = [ B ]^ g

  -- The conjugate respects the setoid equality, with no hypothesis on B.
  conjugate-respects : โˆ€ g (B : Pred ๐•Œ[ ๐‘ฎ ] โ„“) โ†’ [ B ]^ g Respects _โ‰ˆ_
  conjugate-respects g B xโ‰ˆy (h , hโˆˆB , xโ‰ˆc) = h , hโˆˆB , โ‰ˆtrans (โ‰ˆsym xโ‰ˆy) xโ‰ˆc

  -- Conjugation of an element lands in the conjugate of any subset containing it.
  mem-conjugate : โˆ€ g {B : Pred ๐•Œ[ ๐‘ฎ ] โ„“} {x} โ†’ x โˆˆ B โ†’ x ^ g โˆˆ [ B ]^ g
  mem-conjugate g xโˆˆB = _ , xโˆˆB , โ‰ˆrefl

  -- Conjugation of subsets is monotone.
  conjugate-mono : โˆ€ g {B : Pred ๐•Œ[ ๐‘ฎ ] โ„“} {C : Pred ๐•Œ[ ๐‘ฎ ] โ„“'} โ†’ B โІ C โ†’ [ B ]^ g โІ [ C ]^ g
  conjugate-mono g BโІC (h , hโˆˆB , xโ‰ˆc) = h , BโІC hโˆˆB , xโ‰ˆc

  -- The conjugate of a subuniverse is a subuniverse.
  conjugate-isSubuniverse : (g : ๐•Œ[ ๐‘ฎ ]) (B : Pred ๐•Œ[ ๐‘ฎ ] โ„“)
    โ†’  B โˆˆ Subuniverses ๐‘ฎ โ†’ [ B ]^ g โˆˆ Subuniverses ๐‘ฎ
  conjugate-isSubuniverse g B B-sub โˆ™-Op a im =
    hโ‚€ โˆ™ hโ‚ , sub-โˆ™-closed ๐’ข B B-sub hโ‚€โˆˆB hโ‚โˆˆB , eq
    where
    hโ‚€ hโ‚ : ๐•Œ[ ๐‘ฎ ]
    hโ‚€ = im 0F .projโ‚
    hโ‚ = im 1F .projโ‚

    hโ‚€โˆˆB : hโ‚€ โˆˆ B
    hโ‚€โˆˆB = im 0F .projโ‚‚ .projโ‚

    hโ‚โˆˆB : hโ‚ โˆˆ B
    hโ‚โˆˆB = im 1F .projโ‚‚ .projโ‚

    eq : (โˆ™-Op ฬ‚  ๐‘ฎ) a โ‰ˆ (hโ‚€ โˆ™ hโ‚) ^ g
    eq = begin
      (โˆ™-Op ฬ‚  ๐‘ฎ) a      โ‰ˆโŸจ interp-tuple-โˆ™ ๐’ข a โŸฉ
      a 0F โˆ™ a 1F       โ‰ˆโŸจ โˆ™-cong (im 0F .projโ‚‚ .projโ‚‚) (im 1F .projโ‚‚ .projโ‚‚) โŸฉ
      hโ‚€ ^ g โˆ™ hโ‚ ^ g   โ‰ˆห˜โŸจ conj-โˆ™-hom g hโ‚€ hโ‚ โŸฉ
      (hโ‚€ โˆ™ hโ‚) ^ g     โˆŽ

  conjugate-isSubuniverse g B B-sub ฮต-Op a im = ฮต , sub-ฮต-closed ๐’ข B B-sub , eq
    where
    eq : (ฮต-Op ฬ‚  ๐‘ฎ) a โ‰ˆ ฮต ^ g
    eq = begin
      (ฮต-Op ฬ‚  ๐‘ฎ) a  โ‰ˆโŸจ interp-tuple-ฮต ๐’ข a โŸฉ
      ฮต             โ‰ˆห˜โŸจ conj-ฮต g โŸฉ
      ฮต ^ g         โˆŽ

  conjugate-isSubuniverse g B B-sub โปยน-Op a im = h โปยน , sub-โปยน-closed ๐’ข B B-sub hโˆˆB , eq
    where
    h : ๐•Œ[ ๐‘ฎ ]
    h = im 0F .projโ‚

    hโˆˆB : h โˆˆ B
    hโˆˆB = im 0F .projโ‚‚ .projโ‚

    eq : (โปยน-Op ฬ‚  ๐‘ฎ) a โ‰ˆ (h โปยน) ^ g
    eq = begin
      (โปยน-Op ฬ‚  ๐‘ฎ) a  โ‰ˆโŸจ interp-tuple-โปยน ๐’ข a โŸฉ
      a 0F โปยน        โ‰ˆโŸจ โปยน-cong (im 0F .projโ‚‚ .projโ‚‚) โŸฉ
      (h ^ g) โปยน     โ‰ˆห˜โŸจ conj-โปยน g h โŸฉ
      (h โปยน) ^ g     โˆŽ

The normality predicate

A subset is normal when it is closed under conjugation by every group element. The property is stated for bare predicates; for โ‰ˆ-respecting subgroups it is equivalent to each conjugate coinciding with the subgroup, and the three bridge lemmas make both directions available in the form each client needs.

  -- The normality predicate: closure under conjugation, pointwise.
  IsNormal : Pred ๐•Œ[ ๐‘ฎ ] โ„“ โ†’ Type (ฮฑ โŠ” โ„“)
  IsNormal B = โˆ€ g {x} โ†’ x โˆˆ B โ†’ x ^ g โˆˆ B

  -- For a respecting subset, normality bounds every conjugate above by B ...
  normal-conjugate-โІ : {B : Pred ๐•Œ[ ๐‘ฎ ] โ„“}
    โ†’  B Respects _โ‰ˆ_ โ†’ IsNormal B โ†’ โˆ€ g โ†’ [ B ]^ g โІ B
  normal-conjugate-โІ resp nrmB g (h , hโˆˆB , xโ‰ˆc) = resp (โ‰ˆsym xโ‰ˆc) (nrmB g hโˆˆB)

  -- ... and below by B (this direction needs no respect hypothesis) ...
  normal-โІ-conjugate : {B : Pred ๐•Œ[ ๐‘ฎ ] โ„“} โ†’ IsNormal B โ†’ โˆ€ g โ†’ B โІ [ B ]^ g
  normal-โІ-conjugate nrmB g {x} xโˆˆB = x ^ (g โปยน) , nrmB (g โปยน) xโˆˆB , โ‰ˆsym (conj-conjโปยน g x)

  -- ... and conversely, a subset above all of its conjugates is normal.
  conjugate-โІ-normal : {B : Pred ๐•Œ[ ๐‘ฎ ] โ„“} โ†’ (โˆ€ g โ†’ [ B ]^ g โІ B) โ†’ IsNormal B
  conjugate-โІ-normal cnj g xโˆˆB = cnj g (mem-conjugate g xโˆˆB)

  -- The trivial subgroup and the full subgroup are normal.
  trivialSubgroupIsnormal : IsNormal (trivialSubgroup ๐’ข .projโ‚)
  trivialSubgroupIsnormal g xโ‰ˆฮต = โ‰ˆtrans (conj-cong g xโ‰ˆฮต) (conj-ฮต g)

  fullSubgroupIsnormal : (โ„“ : Level) โ†’ IsNormal (projโ‚ (fullSubgroup ๐’ข โ„“))
  fullSubgroupIsnormal โ„“ _ _ = lift _