Decidable subgroups of groups

module group-theory.decidable-subgroups where
Imports
open import foundation.binary-relations
open import foundation.decidable-subtypes
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.sets
open import foundation.subtype-identity-principle
open import foundation.subtypes
open import foundation.universe-levels

open import group-theory.groups
open import group-theory.homomorphisms-groups
open import group-theory.semigroups
open import group-theory.subgroups

Idea

A decidable subgroup of a group G is a subgroup of G defined by a decidable predicate on the type of elements of G.

Definitions

Decidable subsets of groups

decidable-subset-Group :
  (l : Level) {l1 : Level} (G : Group l1)  UU ((lsuc l)  l1)
decidable-subset-Group l G = decidable-subtype l (type-Group G)

is-set-decidable-subset-Group :
  (l : Level) {l1 : Level} (G : Group l1)  is-set (decidable-subset-Group l G)
is-set-decidable-subset-Group l G = is-set-decidable-subtype

module _
  {l1 l2 : Level} (G : Group l1) (P : decidable-subset-Group l2 G)
  where

  subset-decidable-subset-Group : subset-Group l2 G
  subset-decidable-subset-Group = subtype-decidable-subtype P

Decidable subgroups of groups

module _
  {l1 l2 : Level} (G : Group l1) (P : decidable-subset-Group l2 G)
  where

  contains-unit-decidable-subset-group-Prop : Prop l2
  contains-unit-decidable-subset-group-Prop =
    contains-unit-subset-group-Prop G (subset-decidable-subset-Group G P)

  contains-unit-decidable-subset-Group : UU l2
  contains-unit-decidable-subset-Group =
    contains-unit-subset-Group G (subset-decidable-subset-Group G P)

  is-prop-contains-unit-decidable-subset-Group :
    is-prop contains-unit-decidable-subset-Group
  is-prop-contains-unit-decidable-subset-Group =
    is-prop-contains-unit-subset-Group G (subset-decidable-subset-Group G P)

  is-closed-under-mul-decidable-subset-group-Prop : Prop (l1  l2)
  is-closed-under-mul-decidable-subset-group-Prop =
    is-closed-under-mul-subset-group-Prop G
      ( subset-decidable-subset-Group G P)

  is-closed-under-mul-decidable-subset-Group : UU (l1  l2)
  is-closed-under-mul-decidable-subset-Group =
    is-closed-under-mul-subset-Group G (subset-decidable-subset-Group G P)

  is-prop-is-closed-under-mul-decidable-subset-Group :
    is-prop is-closed-under-mul-decidable-subset-Group
  is-prop-is-closed-under-mul-decidable-subset-Group =
    is-prop-is-closed-under-mul-subset-Group G
      ( subset-decidable-subset-Group G P)

  is-closed-under-inv-decidable-subset-group-Prop : Prop (l1  l2)
  is-closed-under-inv-decidable-subset-group-Prop =
    is-closed-under-inv-subset-group-Prop G
      ( subset-decidable-subset-Group G P)

  is-closed-under-inv-decidable-subset-Group : UU (l1  l2)
  is-closed-under-inv-decidable-subset-Group =
    is-closed-under-inv-subset-Group G (subset-decidable-subset-Group G P)

  is-prop-is-closed-under-inv-decidable-subset-Group :
    is-prop is-closed-under-inv-decidable-subset-Group
  is-prop-is-closed-under-inv-decidable-subset-Group =
    is-prop-is-closed-under-inv-subset-Group G
      ( subset-decidable-subset-Group G P)

  is-subgroup-decidable-subset-group-Prop : Prop (l1  l2)
  is-subgroup-decidable-subset-group-Prop =
    is-subgroup-subset-group-Prop G (subset-decidable-subset-Group G P)

  is-subgroup-decidable-subset-Group : UU (l1  l2)
  is-subgroup-decidable-subset-Group =
    is-subgroup-subset-Group G (subset-decidable-subset-Group G P)

  is-prop-is-subgroup-decidable-subset-Group :
    is-prop is-subgroup-decidable-subset-Group
  is-prop-is-subgroup-decidable-subset-Group =
    is-prop-is-subgroup-subset-Group G (subset-decidable-subset-Group G P)

Decidable-Subgroup :
  (l : Level) {l1 : Level} (G : Group l1)  UU ((lsuc l)  l1)
Decidable-Subgroup l G =
  type-subtype (is-subgroup-decidable-subset-group-Prop {l2 = l} G)

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  decidable-subset-Decidable-Subgroup : decidable-subset-Group l2 G
  decidable-subset-Decidable-Subgroup =
    inclusion-subtype (is-subgroup-decidable-subset-group-Prop G) H

  subset-Decidable-Subgroup : subset-Group l2 G
  subset-Decidable-Subgroup =
    subtype-decidable-subtype decidable-subset-Decidable-Subgroup

  is-subgroup-subset-Decidable-Subgroup :
    is-subgroup-subset-Group G subset-Decidable-Subgroup
  is-subgroup-subset-Decidable-Subgroup = pr2 H

  subgroup-Decidable-Subgroup : Subgroup l2 G
  pr1 subgroup-Decidable-Subgroup = subset-Decidable-Subgroup
  pr2 subgroup-Decidable-Subgroup = is-subgroup-subset-Decidable-Subgroup

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

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

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

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

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

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

  is-prop-is-in-Decidable-Subgroup :
    (x : type-Group G)  is-prop (is-in-Decidable-Subgroup x)
  is-prop-is-in-Decidable-Subgroup =
    is-prop-is-in-Subgroup G subgroup-Decidable-Subgroup

  is-subgroup-Decidable-Subgroup :
    is-subgroup-decidable-subset-Group G decidable-subset-Decidable-Subgroup
  is-subgroup-Decidable-Subgroup =
    is-subgroup-Subgroup G subgroup-Decidable-Subgroup

  contains-unit-Decidable-Subgroup :
    contains-unit-decidable-subset-Group G decidable-subset-Decidable-Subgroup
  contains-unit-Decidable-Subgroup =
    contains-unit-Subgroup G subgroup-Decidable-Subgroup

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

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

is-emb-decidable-subset-Decidable-Subgroup :
  {l1 l2 : Level} (G : Group l1) 
    is-emb (decidable-subset-Decidable-Subgroup {l2 = l2} G)
is-emb-decidable-subset-Decidable-Subgroup G =
  is-emb-inclusion-subtype (is-subgroup-decidable-subset-group-Prop G)

The underlying group of a decidable subgroup

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  type-group-Decidable-Subgroup : UU (l1  l2)
  type-group-Decidable-Subgroup =
    type-group-Subgroup G (subgroup-Decidable-Subgroup G H)

  map-inclusion-Decidable-Subgroup :
    type-group-Decidable-Subgroup  type-Group G
  map-inclusion-Decidable-Subgroup =
    map-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H)

  eq-decidable-subgroup-eq-group :
    {x y : type-group-Decidable-Subgroup} 
    ( map-inclusion-Decidable-Subgroup x 
      map-inclusion-Decidable-Subgroup y) 
    x  y
  eq-decidable-subgroup-eq-group =
    eq-subgroup-eq-group G (subgroup-Decidable-Subgroup G H)

  set-group-Decidable-Subgroup : Set (l1  l2)
  set-group-Decidable-Subgroup =
    set-group-Subgroup G (subgroup-Decidable-Subgroup G H)

  mul-Decidable-Subgroup :
    (x y : type-group-Decidable-Subgroup)  type-group-Decidable-Subgroup
  mul-Decidable-Subgroup = mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  associative-mul-Decidable-Subgroup :
    (x y z : type-group-Decidable-Subgroup) 
    Id (mul-Decidable-Subgroup (mul-Decidable-Subgroup x y) z)
       (mul-Decidable-Subgroup x (mul-Decidable-Subgroup y z))
  associative-mul-Decidable-Subgroup =
    associative-mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  unit-Decidable-Subgroup : type-group-Decidable-Subgroup
  unit-Decidable-Subgroup = unit-Subgroup G (subgroup-Decidable-Subgroup G H)

  left-unit-law-mul-Decidable-Subgroup :
    (x : type-group-Decidable-Subgroup) 
    Id (mul-Decidable-Subgroup unit-Decidable-Subgroup x) x
  left-unit-law-mul-Decidable-Subgroup =
    left-unit-law-mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  right-unit-law-mul-Decidable-Subgroup :
    (x : type-group-Decidable-Subgroup) 
    Id (mul-Decidable-Subgroup x unit-Decidable-Subgroup) x
  right-unit-law-mul-Decidable-Subgroup =
    right-unit-law-mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  inv-Decidable-Subgroup :
    type-group-Decidable-Subgroup  type-group-Decidable-Subgroup
  inv-Decidable-Subgroup = inv-Subgroup G (subgroup-Decidable-Subgroup G H)

  left-inverse-law-mul-Decidable-Subgroup :
    ( x : type-group-Decidable-Subgroup) 
    Id ( mul-Decidable-Subgroup (inv-Decidable-Subgroup x) x)
       ( unit-Decidable-Subgroup)
  left-inverse-law-mul-Decidable-Subgroup =
    left-inverse-law-mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  right-inverse-law-mul-Decidable-Subgroup :
    (x : type-group-Decidable-Subgroup) 
    Id ( mul-Decidable-Subgroup x (inv-Decidable-Subgroup x))
       ( unit-Decidable-Subgroup)
  right-inverse-law-mul-Decidable-Subgroup =
    right-inverse-law-mul-Subgroup G (subgroup-Decidable-Subgroup G H)

  semigroup-Decidable-Subgroup : Semigroup (l1  l2)
  semigroup-Decidable-Subgroup =
    semigroup-Subgroup G (subgroup-Decidable-Subgroup G H)

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

The inclusion of the underlying group of a subgroup into the ambient group

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  preserves-mul-inclusion-Decidable-Subgroup :
    preserves-mul-Group
      ( group-Decidable-Subgroup G H)
      ( G)
      ( map-inclusion-Decidable-Subgroup G H)
  preserves-mul-inclusion-Decidable-Subgroup =
    preserves-mul-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H)

  preserves-unit-inclusion-Decidable-Subgroup :
    preserves-unit-Group
      ( group-Decidable-Subgroup G H)
      ( G)
      ( map-inclusion-Decidable-Subgroup G H)
  preserves-unit-inclusion-Decidable-Subgroup =
    preserves-unit-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H)

  preserves-inverses-inclusion-Decidable-Subgroup :
    preserves-inverses-Group
      ( group-Decidable-Subgroup G H)
      ( G)
      ( map-inclusion-Decidable-Subgroup G H)
  preserves-inverses-inclusion-Decidable-Subgroup =
    preserves-inverses-inclusion-Subgroup G
      ( subgroup-Decidable-Subgroup G H)

  hom-inclusion-Decidable-Subgroup :
    type-hom-Group (group-Decidable-Subgroup G H) G
  hom-inclusion-Decidable-Subgroup =
    hom-inclusion-Subgroup G (subgroup-Decidable-Subgroup G H)

Properties

Extensionality of the type of all subgroups

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  has-same-elements-Decidable-Subgroup :
    {l3 : Level}  Decidable-Subgroup l3 G  UU (l1  l2  l3)
  has-same-elements-Decidable-Subgroup K =
    has-same-elements-decidable-subtype
      ( decidable-subset-Decidable-Subgroup G H)
      ( decidable-subset-Decidable-Subgroup G K)

  extensionality-Decidable-Subgroup :
    (K : Decidable-Subgroup l2 G) 
    (H  K)  has-same-elements-Decidable-Subgroup K
  extensionality-Decidable-Subgroup =
    extensionality-type-subtype
      ( is-subgroup-decidable-subset-group-Prop G)
      ( is-subgroup-Decidable-Subgroup G H)
      ( λ x  pair id id)
      ( extensionality-decidable-subtype
        ( decidable-subset-Decidable-Subgroup G H))

Every subgroup induces two equivalence relations

The equivalence relation where x ~ y if and only if there exists u : H such that xu = y

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  right-sim-Decidable-Subgroup : (x y : type-Group G)  UU l2
  right-sim-Decidable-Subgroup =
    right-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  is-prop-right-sim-Decidable-Subgroup :
    (x y : type-Group G)  is-prop (right-sim-Decidable-Subgroup x y)
  is-prop-right-sim-Decidable-Subgroup =
    is-prop-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  prop-right-eq-rel-Decidable-Subgroup :
    (x y : type-Group G)  Prop l2
  prop-right-eq-rel-Decidable-Subgroup =
    prop-right-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H)

  refl-right-sim-Decidable-Subgroup :
    is-reflexive-Rel-Prop prop-right-eq-rel-Decidable-Subgroup
  refl-right-sim-Decidable-Subgroup =
    refl-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  symm-right-sim-Decidable-Subgroup :
    is-symmetric-Rel-Prop prop-right-eq-rel-Decidable-Subgroup
  symm-right-sim-Decidable-Subgroup =
    symmetric-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  trans-right-sim-Decidable-Subgroup :
    is-transitive-Rel-Prop prop-right-eq-rel-Decidable-Subgroup
  trans-right-sim-Decidable-Subgroup =
    transitive-right-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  right-eq-rel-Decidable-Subgroup : Eq-Rel l2 (type-Group G)
  right-eq-rel-Decidable-Subgroup =
    right-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H)

The equivalence relation where x ~ y if and only if there exists u : H such that ux = y

module _
  {l1 l2 : Level} (G : Group l1) (H : Decidable-Subgroup l2 G)
  where

  left-sim-Decidable-Subgroup : (x y : type-Group G)  UU l2
  left-sim-Decidable-Subgroup =
    left-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  is-prop-left-sim-Decidable-Subgroup :
    (x y : type-Group G)  is-prop (left-sim-Decidable-Subgroup x y)
  is-prop-left-sim-Decidable-Subgroup =
    is-prop-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  prop-left-eq-rel-Decidable-Subgroup : (x y : type-Group G)  Prop l2
  prop-left-eq-rel-Decidable-Subgroup =
    prop-left-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H)

  refl-left-sim-Decidable-Subgroup :
    is-reflexive-Rel-Prop prop-left-eq-rel-Decidable-Subgroup
  refl-left-sim-Decidable-Subgroup =
    refl-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  symmetric-left-sim-Decidable-Subgroup :
    is-symmetric-Rel-Prop prop-left-eq-rel-Decidable-Subgroup
  symmetric-left-sim-Decidable-Subgroup =
    symmetric-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  transitive-left-sim-Decidable-Subgroup :
    is-transitive-Rel-Prop prop-left-eq-rel-Decidable-Subgroup
  transitive-left-sim-Decidable-Subgroup =
    transitive-left-sim-Subgroup G (subgroup-Decidable-Subgroup G H)

  left-eq-rel-Decidable-Subgroup : Eq-Rel l2 (type-Group G)
  left-eq-rel-Decidable-Subgroup =
    left-eq-rel-Subgroup G (subgroup-Decidable-Subgroup G H)