Homomorphisms of rings

module ring-theory.homomorphisms-rings where
Imports
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.fundamental-theorem-of-identity-types
open import foundation.homotopies
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.homomorphisms-abelian-groups
open import group-theory.homomorphisms-commutative-monoids
open import group-theory.homomorphisms-monoids

open import ring-theory.homomorphisms-semirings
open import ring-theory.rings

Idea

Ring homomorphisms are maps between rings that preserve the ring structure

Definitions

The predicate that a group homomorphism between rings preserves multiplication

preserves-mul-hom-Ab :
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) 
  type-hom-Ab (ab-Ring R) (ab-Ring S)  UU (l1  l2)
preserves-mul-hom-Ab R S f =
  (x y : type-Ring R) 
  Id
    ( map-hom-Ab (ab-Ring R) (ab-Ring S) f (mul-Ring R x y))
    ( mul-Ring S
      ( map-hom-Ab (ab-Ring R) (ab-Ring S) f x)
      ( map-hom-Ab (ab-Ring R) (ab-Ring S) f y))

is-prop-preserves-mul-hom-Ab :
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) 
  ( f : type-hom-Ab (ab-Ring R) (ab-Ring S)) 
  is-prop (preserves-mul-hom-Ab R S f)
is-prop-preserves-mul-hom-Ab R S f =
  is-prop-Π
    ( λ x 
      is-prop-Π
        ( λ y 
          is-set-type-Ring S
            ( map-hom-Ab (ab-Ring R) (ab-Ring S) f (mul-Ring R x y))
            ( mul-Ring S
              ( map-hom-Ab (ab-Ring R) (ab-Ring S) f x)
              ( map-hom-Ab (ab-Ring R) (ab-Ring S) f y))))

The predicate that a group homomorphism between rings preserves the unit

preserves-unit-hom-Ab :
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) 
  type-hom-Ab (ab-Ring R) (ab-Ring S)  UU l2
preserves-unit-hom-Ab R S f =
  Id (map-hom-Ab (ab-Ring R) (ab-Ring S) f (one-Ring R)) (one-Ring S)

is-prop-preserves-unit-hom-Ab :
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) 
  ( f : type-hom-Ab (ab-Ring R) (ab-Ring S)) 
  is-prop (preserves-unit-hom-Ab R S f)
is-prop-preserves-unit-hom-Ab R S f =
  is-set-type-Ring S
    ( map-hom-Ab (ab-Ring R) (ab-Ring S) f (one-Ring R))
    ( one-Ring S)

The predicate of being a ring homomorphism

module _
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2)
  where

  is-ring-homomorphism-hom-Ab-Prop :
    type-hom-Ab (ab-Ring R) (ab-Ring S)  Prop (l1  l2)
  is-ring-homomorphism-hom-Ab-Prop f =
    is-homomorphism-semiring-hom-Commutative-Monoid-Prop
      ( semiring-Ring R)
      ( semiring-Ring S)
      ( hom-commutative-monoid-hom-Ab (ab-Ring R) (ab-Ring S) f)

  is-ring-homomorphism-hom-Ab :
    type-hom-Ab (ab-Ring R) (ab-Ring S)  UU (l1  l2)
  is-ring-homomorphism-hom-Ab f =
    type-Prop (is-ring-homomorphism-hom-Ab-Prop f)

  is-prop-is-ring-homomorphism-hom-Ab :
    (f : type-hom-Ab (ab-Ring R) (ab-Ring S)) 
    is-prop (is-ring-homomorphism-hom-Ab f)
  is-prop-is-ring-homomorphism-hom-Ab f =
    is-prop-type-Prop (is-ring-homomorphism-hom-Ab-Prop f)

Ring homomorphisms

module _
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2)
  where

  hom-Ring : Set (l1  l2)
  hom-Ring =
    set-subset
      ( hom-Ab (ab-Ring R) (ab-Ring S))
      ( is-ring-homomorphism-hom-Ab-Prop R S)

  type-hom-Ring : UU (l1  l2)
  type-hom-Ring = type-Set hom-Ring

  is-set-type-hom-Ring : is-set type-hom-Ring
  is-set-type-hom-Ring = is-set-type-Set hom-Ring

  module _
    (f : type-hom-Ring)
    where

    hom-ab-hom-Ring : type-hom-Ab (ab-Ring R) (ab-Ring S)
    hom-ab-hom-Ring = pr1 f

    hom-commutative-monoid-hom-Ring :
      type-hom-Commutative-Monoid
        ( additive-commutative-monoid-Ring R)
        ( additive-commutative-monoid-Ring S)
    hom-commutative-monoid-hom-Ring =
      hom-commutative-monoid-hom-Ab (ab-Ring R) (ab-Ring S) hom-ab-hom-Ring

    map-hom-Ring : type-Ring R  type-Ring S
    map-hom-Ring = map-hom-Ab (ab-Ring R) (ab-Ring S) hom-ab-hom-Ring

    preserves-add-hom-Ring :
      preserves-add-Ab (ab-Ring R) (ab-Ring S) map-hom-Ring
    preserves-add-hom-Ring =
      preserves-add-hom-Ab (ab-Ring R) (ab-Ring S) hom-ab-hom-Ring

    preserves-zero-hom-Ring :
      preserves-zero-Ab (ab-Ring R) (ab-Ring S) map-hom-Ring
    preserves-zero-hom-Ring =
      preserves-zero-hom-Ab (ab-Ring R) (ab-Ring S) hom-ab-hom-Ring

    preserves-neg-hom-Ring :
      preserves-negatives-Ab (ab-Ring R) (ab-Ring S) map-hom-Ring
    preserves-neg-hom-Ring =
      preserves-negatives-hom-Ab (ab-Ring R) (ab-Ring S) hom-ab-hom-Ring

    preserves-mul-hom-Ring : preserves-mul-hom-Ab R S hom-ab-hom-Ring
    preserves-mul-hom-Ring = pr1 (pr2 f)

    preserves-unit-hom-Ring : preserves-unit-hom-Ab R S hom-ab-hom-Ring
    preserves-unit-hom-Ring = pr2 (pr2 f)

    is-ring-homomorphism-hom-Ring :
      is-ring-homomorphism-hom-Ab R S hom-ab-hom-Ring
    pr1 is-ring-homomorphism-hom-Ring = preserves-mul-hom-Ring
    pr2 is-ring-homomorphism-hom-Ring = preserves-unit-hom-Ring

    hom-multiplicative-monoid-hom-Ring :
      type-hom-Monoid
        ( multiplicative-monoid-Ring R)
        ( multiplicative-monoid-Ring S)
    pr1 (pr1 hom-multiplicative-monoid-hom-Ring) = map-hom-Ring
    pr2 (pr1 hom-multiplicative-monoid-hom-Ring) = preserves-mul-hom-Ring
    pr2 hom-multiplicative-monoid-hom-Ring = preserves-unit-hom-Ring

    hom-semiring-hom-Ring :
      type-hom-Semiring (semiring-Ring R) (semiring-Ring S)
    pr1 hom-semiring-hom-Ring = hom-commutative-monoid-hom-Ring
    pr2 hom-semiring-hom-Ring = is-ring-homomorphism-hom-Ring

The identity ring homomorphism

module _
  {l : Level} (R : Ring l)
  where

  preserves-mul-id-hom-Ring : preserves-mul-hom-Ab R R (id-hom-Ab (ab-Ring R))
  preserves-mul-id-hom-Ring x y = refl

  preserves-unit-id-hom-Ring : preserves-unit-hom-Ab R R (id-hom-Ab (ab-Ring R))
  preserves-unit-id-hom-Ring = refl

  is-ring-homomorphism-id-hom-Ring :
    is-ring-homomorphism-hom-Ab R R (id-hom-Ab (ab-Ring R))
  pr1 is-ring-homomorphism-id-hom-Ring = preserves-mul-id-hom-Ring
  pr2 is-ring-homomorphism-id-hom-Ring = preserves-unit-id-hom-Ring

  id-hom-Ring : type-hom-Ring R R
  pr1 id-hom-Ring = id-hom-Ab (ab-Ring R)
  pr2 id-hom-Ring = is-ring-homomorphism-id-hom-Ring

Composition of ring homomorphisms

module _
  {l1 l2 l3 : Level} (R : Ring l1) (S : Ring l2) (T : Ring l3)
  (g : type-hom-Ring S T) (f : type-hom-Ring R S)
  where

  hom-ab-comp-hom-Ring : type-hom-Ab (ab-Ring R) (ab-Ring T)
  hom-ab-comp-hom-Ring =
    comp-hom-Ab
      ( ab-Ring R)
      ( ab-Ring S)
      ( ab-Ring T)
      ( hom-ab-hom-Ring S T g)
      ( hom-ab-hom-Ring R S f)

  hom-multiplicative-monoid-comp-hom-Ring :
    type-hom-Monoid
      ( multiplicative-monoid-Ring R)
      ( multiplicative-monoid-Ring T)
  hom-multiplicative-monoid-comp-hom-Ring =
    comp-hom-Monoid
      ( multiplicative-monoid-Ring R)
      ( multiplicative-monoid-Ring S)
      ( multiplicative-monoid-Ring T)
      ( hom-multiplicative-monoid-hom-Ring S T g)
      ( hom-multiplicative-monoid-hom-Ring R S f)

  preserves-mul-comp-hom-Ring : preserves-mul-hom-Ab R T hom-ab-comp-hom-Ring
  preserves-mul-comp-hom-Ring =
    preserves-mul-hom-Monoid
      ( multiplicative-monoid-Ring R)
      ( multiplicative-monoid-Ring T)
      ( hom-multiplicative-monoid-comp-hom-Ring)

  preserves-unit-comp-hom-Ring :
    preserves-unit-hom-Ab R T hom-ab-comp-hom-Ring
  preserves-unit-comp-hom-Ring =
    preserves-unit-hom-Monoid
      ( multiplicative-monoid-Ring R)
      ( multiplicative-monoid-Ring T)
      ( hom-multiplicative-monoid-comp-hom-Ring)

  is-ring-homomorphism-comp-hom-Ring :
    is-ring-homomorphism-hom-Ab R T hom-ab-comp-hom-Ring
  pr1 is-ring-homomorphism-comp-hom-Ring = preserves-mul-comp-hom-Ring
  pr2 is-ring-homomorphism-comp-hom-Ring = preserves-unit-comp-hom-Ring

  comp-hom-Ring : type-hom-Ring R T
  pr1 comp-hom-Ring = hom-ab-comp-hom-Ring
  pr2 comp-hom-Ring = is-ring-homomorphism-comp-hom-Ring

Homotopies of ring homomorphisms

module _
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2)
  where

  htpy-hom-Ring : type-hom-Ring R S  type-hom-Ring R S  UU (l1  l2)
  htpy-hom-Ring f g = map-hom-Ring R S f ~ map-hom-Ring R S g

  refl-htpy-hom-Ring : (f : type-hom-Ring R S)  htpy-hom-Ring f f
  refl-htpy-hom-Ring f = refl-htpy

Properties

Homotopies characterize identifications of ring homomorphisms

module _
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) (f : type-hom-Ring R S)
  where

  htpy-eq-hom-Ring :
    (g : type-hom-Ring R S)  (f  g)  htpy-hom-Ring R S f g
  htpy-eq-hom-Ring .f refl = refl-htpy-hom-Ring R S f

  is-contr-total-htpy-hom-Ring :
    is-contr (Σ (type-hom-Ring R S) (htpy-hom-Ring R S f))
  is-contr-total-htpy-hom-Ring =
    is-contr-total-Eq-subtype
      ( is-contr-total-htpy-hom-Ab
        ( ab-Ring R)
        ( ab-Ring S)
        ( hom-ab-hom-Ring R S f))
      ( is-prop-is-ring-homomorphism-hom-Ab R S)
      ( hom-ab-hom-Ring R S f)
      ( refl-htpy-hom-Ring R S f)
      ( is-ring-homomorphism-hom-Ring R S f)

  is-equiv-htpy-eq-hom-Ring :
    (g : type-hom-Ring R S)  is-equiv (htpy-eq-hom-Ring g)
  is-equiv-htpy-eq-hom-Ring =
    fundamental-theorem-id
      is-contr-total-htpy-hom-Ring
      htpy-eq-hom-Ring

  extensionality-hom-Ring :
    (g : type-hom-Ring R S)  (f  g)  htpy-hom-Ring R S f g
  pr1 (extensionality-hom-Ring g) = htpy-eq-hom-Ring g
  pr2 (extensionality-hom-Ring g) = is-equiv-htpy-eq-hom-Ring g

  eq-htpy-hom-Ring :
    (g : type-hom-Ring R S)  htpy-hom-Ring R S f g  f  g
  eq-htpy-hom-Ring g = map-inv-is-equiv (is-equiv-htpy-eq-hom-Ring g)

Associativity of composition of ring homomorphisms

module _
  { l1 l2 l3 l4 : Level}
  ( R : Ring l1) (S : Ring l2) (T : Ring l3) (U : Ring l4)
  ( h : type-hom-Ring T U)
  ( g : type-hom-Ring S T)
  ( f : type-hom-Ring R S)
  where

  associative-comp-hom-Ring :
    ( comp-hom-Ring R S U (comp-hom-Ring S T U h g) f) 
    ( comp-hom-Ring R T U h (comp-hom-Ring R S T g f))
  associative-comp-hom-Ring =
    eq-htpy-hom-Ring R U
      ( comp-hom-Ring R S U (comp-hom-Ring S T U h g) f)
      ( comp-hom-Ring R T U h (comp-hom-Ring R S T g f))
      ( refl-htpy)

Unit laws for composition of ring homomorphisms

module _
  {l1 l2 : Level} (R : Ring l1) (S : Ring l2) (f : type-hom-Ring R S)
  where

  left-unit-law-comp-hom-Ring : comp-hom-Ring R S S (id-hom-Ring S) f  f
  left-unit-law-comp-hom-Ring =
    eq-htpy-hom-Ring R S
      ( comp-hom-Ring R S S (id-hom-Ring S) f)
      ( f)
      ( refl-htpy)

  right-unit-law-comp-hom-Ring : comp-hom-Ring R R S f (id-hom-Ring R)  f
  right-unit-law-comp-hom-Ring =
    eq-htpy-hom-Ring R S
      ( comp-hom-Ring R R S f (id-hom-Ring R))
      ( f)
      ( refl-htpy)

The underlying morphism of abelian groups of the identity ring homomorphism is the identity homomorphism of abelian groups

id-law-ab-Ring :
  { l1 : Level} (R : Ring l1) 
  Id (hom-ab-hom-Ring R R (id-hom-Ring R)) (id-hom-Ab (ab-Ring R))
id-law-ab-Ring R =
  eq-htpy-hom-Ab
    ( ab-Ring R)
    ( ab-Ring R)
    ( refl-htpy)

The underlying morphism of abelian groups of a composition of ring homomorphisms is a composition of homomorphisms of abelian groups

comp-law-ab-Ring :
  { l1 l2 l3 : Level} (R : Ring l1) (S : Ring l2) (T : Ring l3) 
  ( g : type-hom-Ring S T) (f : type-hom-Ring R S) 
  Id
    ( hom-ab-hom-Ring R T (comp-hom-Ring R S T g f))
    ( comp-hom-Ab
      ( ab-Ring R)
      ( ab-Ring S)
      ( ab-Ring T)
      ( hom-ab-hom-Ring S T g)
      ( hom-ab-hom-Ring R S f))
comp-law-ab-Ring R S T g f =
  eq-htpy-hom-Ab
    ( ab-Ring R)
    ( ab-Ring T)
    ( refl-htpy)