Skip to content

Commit

Permalink
Congruence relations on rings and semirings (#494)
Browse files Browse the repository at this point in the history
  • Loading branch information
EgbertRijke committed Mar 9, 2023
1 parent 77df1e6 commit 5adb594
Show file tree
Hide file tree
Showing 10 changed files with 400 additions and 57 deletions.
2 changes: 2 additions & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -781,6 +781,8 @@
- [Algebras of rings](ring-theory.algebras-rings.md)
- [Binomial theorem for rings](ring-theory.binomial-theorem-rings.md)
- [Binomial theorem for semirings](ring-theory.binomial-theorem-semirings.md)
- [Congruence relations on rings](ring-theory.congruence-relations-rings.md)
- [Congruence relations on semirings](ring-theory.congruence-relations-semirings.md)
- [Dependent products of rings](ring-theory.dependent-products-rings.md)
- [Division rings](ring-theory.division-rings.md)
- [Homomorphisms of rings](ring-theory.homomorphisms-rings.md)
Expand Down
7 changes: 3 additions & 4 deletions src/group-theory/congruence-relations-abelian-groups.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ A congruence relation on an abelian group `A` is a congruence relation on the un
## Definition

```agda
is-congruence-Eq-Rel-Ab :
is-congruence-Ab :
{l1 l2 : Level} (A : Ab l1) → Eq-Rel l2 (type-Ab A) → UU (l1 ⊔ l2)
is-congruence-Eq-Rel-Ab A = is-congruence-Eq-Rel-Group (group-Ab A)
is-congruence-Ab A = is-congruence-Group (group-Ab A)
congruence-Ab : {l : Level} (l2 : Level) (A : Ab l) → UU (l ⊔ lsuc l2)
congruence-Ab l2 A = congruence-Group l2 (group-Ab A)
Expand Down Expand Up @@ -89,8 +89,7 @@ module _
is-transitive-Rel-Prop prop-congruence-Ab
trans-congruence-Ab = trans-congruence-Group (group-Ab A) R
add-congruence-Ab :
is-congruence-Eq-Rel-Ab A eq-rel-congruence-Ab
add-congruence-Ab : is-congruence-Ab A eq-rel-congruence-Ab
add-congruence-Ab = mul-congruence-Group (group-Ab A) R
left-add-congruence-Ab :
Expand Down
10 changes: 5 additions & 5 deletions src/group-theory/congruence-relations-groups.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ A congruence relation on a group `G` is an equivalence relation `≡` on `G` suc
## Definition

```agda
is-congruence-Eq-Rel-Group :
is-congruence-Group :
{l1 l2 : Level} (G : Group l1) →
Eq-Rel l2 (type-Group G) → UU (l1 ⊔ l2)
is-congruence-Eq-Rel-Group G R =
is-congruence-Eq-Rel-Semigroup (semigroup-Group G) R
is-congruence-Group G R =
is-congruence-Semigroup (semigroup-Group G) R
congruence-Group :
{l : Level} (l2 : Level) (G : Group l) → UU (l ⊔ lsuc l2)
congruence-Group l2 G =
Σ (Eq-Rel l2 (type-Group G)) (is-congruence-Eq-Rel-Group G)
Σ (Eq-Rel l2 (type-Group G)) (is-congruence-Group G)
module _
{l1 l2 : Level} (G : Group l1) (R : congruence-Group l2 G)
Expand Down Expand Up @@ -92,7 +92,7 @@ module _
trans-congruence-Group = trans-Eq-Rel eq-rel-congruence-Group
mul-congruence-Group :
is-congruence-Eq-Rel-Group G eq-rel-congruence-Group
is-congruence-Group G eq-rel-congruence-Group
mul-congruence-Group = pr2 R
left-mul-congruence-Group :
Expand Down
17 changes: 10 additions & 7 deletions src/group-theory/congruence-relations-monoids.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,20 @@ open import foundation.universe-levels

## Idea

A congruence relation on a monoid `G` is an equivalence relation `` on `G` such that for every `x1 x2 y1 y2 : G` such that `x1 ≡ x2` and `y1 ≡ y2` we have `x1 · y1 ≡ x2 · y2`.
A congruence relation on a monoid `M` is a congruence relation on the
underlying semigroup of `M`.

## Definition

```agda
is-congruence-Eq-Rel-Monoid :
is-congruence-Monoid :
{l1 l2 : Level} (M : Monoid l1) → Eq-Rel l2 (type-Monoid M) → UU (l1 ⊔ l2)
is-congruence-Eq-Rel-Monoid M R =
is-congruence-Eq-Rel-Semigroup (semigroup-Monoid M) R
is-congruence-Monoid M R =
is-congruence-Semigroup (semigroup-Monoid M) R
congruence-Monoid : {l : Level} (l2 : Level) (M : Monoid l) → UU (l ⊔ lsuc l2)
congruence-Monoid l2 M =
Σ (Eq-Rel l2 (type-Monoid M)) (is-congruence-Eq-Rel-Monoid M)
Σ (Eq-Rel l2 (type-Monoid M)) (is-congruence-Monoid M)
module _
{l1 l2 : Level} (M : Monoid l1) (R : congruence-Monoid l2 M)
Expand All @@ -59,12 +60,14 @@ module _
symm-congruence-Monoid = symm-Eq-Rel eq-rel-congruence-Monoid
equiv-symm-congruence-Monoid :
(x y : type-Monoid M) → sim-congruence-Monoid x y ≃ sim-congruence-Monoid y x
(x y : type-Monoid M) →
sim-congruence-Monoid x y ≃ sim-congruence-Monoid y x
equiv-symm-congruence-Monoid x y = equiv-symm-Eq-Rel eq-rel-congruence-Monoid
trans-congruence-Monoid : is-transitive-Rel-Prop prop-congruence-Monoid
trans-congruence-Monoid = trans-Eq-Rel eq-rel-congruence-Monoid
mul-congruence-Monoid : is-congruence-Eq-Rel-Monoid M eq-rel-congruence-Monoid
mul-congruence-Monoid :
is-congruence-Monoid M eq-rel-congruence-Monoid
mul-congruence-Monoid = pr2 R
```
24 changes: 12 additions & 12 deletions src/group-theory/congruence-relations-semigroups.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ A congruence relation on a semigroup `G` is an equivalence relation `≡` on `G`
## Definition

```agda
is-congruence-Eq-Rel-Semigroup-Prop :
is-congruence-Semigroup-Prop :
{l1 l2 : Level} (G : Semigroup l1) →
Eq-Rel l2 (type-Semigroup G) → Prop (l1 ⊔ l2)
is-congruence-Eq-Rel-Semigroup-Prop G R =
is-congruence-Semigroup-Prop G R =
Π-Prop'
( type-Semigroup G)
( λ x1 →
Expand All @@ -53,22 +53,22 @@ is-congruence-Eq-Rel-Semigroup-Prop G R =
( mul-Semigroup G x1 y1)
( mul-Semigroup G x2 y2)))))))
is-congruence-Eq-Rel-Semigroup :
is-congruence-Semigroup :
{l1 l2 : Level} (G : Semigroup l1) →
Eq-Rel l2 (type-Semigroup G) → UU (l1 ⊔ l2)
is-congruence-Eq-Rel-Semigroup G R =
type-Prop (is-congruence-Eq-Rel-Semigroup-Prop G R)
is-congruence-Semigroup G R =
type-Prop (is-congruence-Semigroup-Prop G R)
is-prop-is-congruence-Eq-Rel-Semigroup :
is-prop-is-congruence-Semigroup :
{l1 l2 : Level} (G : Semigroup l1) (R : Eq-Rel l2 (type-Semigroup G)) →
is-prop (is-congruence-Eq-Rel-Semigroup G R)
is-prop-is-congruence-Eq-Rel-Semigroup G R =
is-prop-type-Prop (is-congruence-Eq-Rel-Semigroup-Prop G R)
is-prop (is-congruence-Semigroup G R)
is-prop-is-congruence-Semigroup G R =
is-prop-type-Prop (is-congruence-Semigroup-Prop G R)
congruence-Semigroup :
{l : Level} (l2 : Level) (G : Semigroup l) → UU (l ⊔ lsuc l2)
congruence-Semigroup l2 G =
Σ (Eq-Rel l2 (type-Semigroup G)) (is-congruence-Eq-Rel-Semigroup G)
Σ (Eq-Rel l2 (type-Semigroup G)) (is-congruence-Semigroup G)
module _
{l1 l2 : Level} (G : Semigroup l1) (R : congruence-Semigroup l2 G)
Expand Down Expand Up @@ -104,7 +104,7 @@ module _
trans-congruence-Semigroup = trans-Eq-Rel eq-rel-congruence-Semigroup
mul-congruence-Semigroup :
is-congruence-Eq-Rel-Semigroup G eq-rel-congruence-Semigroup
is-congruence-Semigroup G eq-rel-congruence-Semigroup
mul-congruence-Semigroup = pr2 R
```

Expand Down Expand Up @@ -136,7 +136,7 @@ is-contr-total-relate-same-elements-congruence-Semigroup G R =
is-contr-total-Eq-subtype
( is-contr-total-relate-same-elements-Eq-Rel
( eq-rel-congruence-Semigroup G R))
( is-prop-is-congruence-Eq-Rel-Semigroup G)
( is-prop-is-congruence-Semigroup G)
( eq-rel-congruence-Semigroup G R)
( refl-relate-same-elements-congruence-Semigroup G R)
( mul-congruence-Semigroup G R)
Expand Down
2 changes: 1 addition & 1 deletion src/group-theory/normal-subgroups.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ module _
sim-left-sim-congruence-Normal-Subgroup x y
mul-congruence-Normal-Subgroup :
is-congruence-Eq-Rel-Group G eq-rel-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
Expand Down
2 changes: 1 addition & 1 deletion src/group-theory/subgroups-abelian-groups.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ module _
( normal-subgroup-Subgroup-Ab A B)
add-congruence-Subgroup-Ab :
is-congruence-Eq-Rel-Group
is-congruence-Group
( group-Ab A)
( eq-rel-congruence-Subgroup-Ab)
add-congruence-Subgroup-Ab =
Expand Down
182 changes: 182 additions & 0 deletions src/ring-theory/congruence-relations-rings.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
# Congruence relations on rings

```agda
module ring-theory.congruence-relations-rings where
```

<details><summary>Imports</summary>

```agda
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
```

</details>

## Idea

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

## Definition

```agda
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
```

0 comments on commit 5adb594

Please sign in to comment.