Congruence relations on rings

module ring-theory.congruence-relations-rings where
Imports
open import foundation.binary-relations
open import foundation.dependent-pair-types
open import foundation.equivalence-relations
open import foundation.equivalences
open import foundation.propositions
open import foundation.universe-levels

open import group-theory.congruence-relations-abelian-groups
open import group-theory.congruence-relations-monoids

open import ring-theory.congruence-relations-semirings
open import ring-theory.rings

Idea

A congruence relation on a ring R is a congruence relation on the underlying semiring of R.

Definition

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

  is-congruence-Ring :
    {l2 : Level}  congruence-Ab l2 (ab-Ring R)  UU (l1  l2)
  is-congruence-Ring = is-congruence-Semiring (semiring-Ring R)

  is-congruence-eq-rel-Ring :
    {l2 : Level} (S : Eq-Rel l2 (type-Ring R))  UU (l1  l2)
  is-congruence-eq-rel-Ring S =
    is-congruence-eq-rel-Semiring (semiring-Ring R) S

congruence-Ring :
  {l1 : Level} (l2 : Level) (R : Ring l1)  UU (l1  lsuc l2)
congruence-Ring l2 R = congruence-Semiring l2 (semiring-Ring R)

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

  congruence-ab-congruence-Ring : congruence-Ab l2 (ab-Ring R)
  congruence-ab-congruence-Ring =
    congruence-additive-monoid-congruence-Semiring (semiring-Ring R) S

  eq-rel-congruence-Ring : Eq-Rel l2 (type-Ring R)
  eq-rel-congruence-Ring =
    eq-rel-congruence-Semiring (semiring-Ring R) S

  prop-congruence-Ring : Rel-Prop l2 (type-Ring R)
  prop-congruence-Ring = prop-congruence-Semiring (semiring-Ring R) S

  sim-congruence-Ring : (x y : type-Ring R)  UU l2
  sim-congruence-Ring = sim-congruence-Semiring (semiring-Ring R) S

  is-prop-sim-congruence-Ring :
    (x y : type-Ring R)  is-prop (sim-congruence-Ring x y)
  is-prop-sim-congruence-Ring =
    is-prop-sim-congruence-Semiring (semiring-Ring R) S

  refl-congruence-Ring :
    is-reflexive-Rel-Prop prop-congruence-Ring
  refl-congruence-Ring = refl-congruence-Semiring (semiring-Ring R) S

  symm-congruence-Ring :
    is-symmetric-Rel-Prop prop-congruence-Ring
  symm-congruence-Ring = symm-congruence-Semiring (semiring-Ring R) S

  equiv-symm-congruence-Ring :
    (x y : type-Ring R) 
    sim-congruence-Ring x y  sim-congruence-Ring y x
  equiv-symm-congruence-Ring =
    equiv-symm-congruence-Semiring (semiring-Ring R) S

  trans-congruence-Ring :
    is-transitive-Rel-Prop prop-congruence-Ring
  trans-congruence-Ring =
    trans-congruence-Semiring (semiring-Ring R) S

  add-congruence-Ring :
    is-congruence-Ab (ab-Ring R) eq-rel-congruence-Ring
  add-congruence-Ring = add-congruence-Semiring (semiring-Ring R) S

  left-add-congruence-Ring :
    (x : type-Ring R) {y z : type-Ring R} 
    sim-congruence-Ring y z 
    sim-congruence-Ring (add-Ring R x y) (add-Ring R x z)
  left-add-congruence-Ring =
    left-add-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  right-add-congruence-Ring :
    {x y : type-Ring R}  sim-congruence-Ring x y 
    (z : type-Ring R) 
    sim-congruence-Ring (add-Ring R x z) (add-Ring R y z)
  right-add-congruence-Ring =
    right-add-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  sim-right-subtraction-zero-congruence-Ring : (x y : type-Ring R)  UU l2
  sim-right-subtraction-zero-congruence-Ring =
    sim-right-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  map-sim-right-subtraction-zero-congruence-Ring :
    {x y : type-Ring R}  sim-congruence-Ring x y 
    sim-right-subtraction-zero-congruence-Ring x y
  map-sim-right-subtraction-zero-congruence-Ring =
    map-sim-right-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  map-inv-sim-right-subtraction-zero-congruence-Ring :
    {x y : type-Ring R} 
    sim-right-subtraction-zero-congruence-Ring x y  sim-congruence-Ring x y
  map-inv-sim-right-subtraction-zero-congruence-Ring =
    map-inv-sim-right-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  sim-left-subtraction-zero-congruence-Ring : (x y : type-Ring R)  UU l2
  sim-left-subtraction-zero-congruence-Ring =
    sim-left-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  map-sim-left-subtraction-zero-congruence-Ring :
    {x y : type-Ring R}  sim-congruence-Ring x y 
    sim-left-subtraction-zero-congruence-Ring x y
  map-sim-left-subtraction-zero-congruence-Ring =
    map-sim-left-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  map-inv-sim-left-subtraction-zero-congruence-Ring :
    {x y : type-Ring R}  sim-left-subtraction-zero-congruence-Ring x y 
    sim-congruence-Ring x y
  map-inv-sim-left-subtraction-zero-congruence-Ring =
    map-inv-sim-left-subtraction-zero-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  neg-congruence-Ring :
    {x y : type-Ring R}  sim-congruence-Ring x y 
    sim-congruence-Ring (neg-Ring R x) (neg-Ring R y)
  neg-congruence-Ring =
    neg-congruence-Ab
      ( ab-Ring R)
      ( congruence-ab-congruence-Ring)

  mul-congruence-Ring :
    is-congruence-Monoid
      ( multiplicative-monoid-Ring R)
      ( eq-rel-congruence-Ring)
  mul-congruence-Ring = pr2 S

construct-congruence-Ring :
  {l1 l2 : Level} (R : Ring l1) 
  (S : Eq-Rel l2 (type-Ring R)) 
  is-congruence-Ab (ab-Ring R) S 
  is-congruence-Monoid (multiplicative-monoid-Ring R) S 
  congruence-Ring l2 R
pr1 (pr1 (construct-congruence-Ring R S H K)) = S
pr2 (pr1 (construct-congruence-Ring R S H K)) = H
pr2 (construct-congruence-Ring R S H K) = K