Documentation

Mathlib.Algebra.Category.Ring.Basic

Category instances for Semiring, Ring, CommSemiring, and CommRing. #

We introduce the bundled categories:

@[reducible, inline]
abbrev SemiRingCat :
Type (u + 1)

The category of semirings.

Equations
@[reducible, inline]
abbrev SemiRingCatMax :
Type ((max u1 u2) + 1)

An alias for Semiring.{max u v}, to deal around unification issues.

Equations
@[reducible, inline]
abbrev SemiRingCat.AssocRingHom (M : Type u_1) (N : Type u_2) [Semiring M] [Semiring N] :
Type (max u_1 u_2)

RingHom doesn't actually assume associativity. This alias is needed to make the category theory machinery work. We use the same trick in MonCat.AssocMonoidHom.

Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • X.instSemiring = X.str
instance SemiRingCat.instFunLike {X : SemiRingCat} {Y : SemiRingCat} :
FunLike (X Y) X Y
Equations
  • SemiRingCat.instFunLike = CategoryTheory.ConcreteCategory.instFunLike
Equations
  • =
theorem SemiRingCat.coe_comp {X : SemiRingCat} {Y : SemiRingCat} {Z : SemiRingCat} {f : X Y} {g : Y Z} :
@[simp]
theorem SemiRingCat.ext {X : SemiRingCat} {Y : SemiRingCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled SemiRing from the underlying type and typeclass.

Equations
@[simp]
theorem SemiRingCat.coe_of (R : Type u) [Semiring R] :
(SemiRingCat.of R) = R
@[simp]
theorem SemiRingCat.coe_comp_of {X : Type u} {Y : Type u} {Z : Type u} [Semiring X] [Semiring Y] [Semiring Z] (f : X →+* Y) (g : Y →+* Z) :
(CategoryTheory.CategoryStruct.comp f g) = (g.comp f)
theorem SemiRingCat.ext_of_iff {X : Type u} {Y : Type u} [Semiring X] [Semiring Y] {f : X →+* Y} {g : X →+* Y} :
f = g ∀ (x : X), f x = g x
theorem SemiRingCat.ext_of {X : Type u} {Y : Type u} [Semiring X] [Semiring Y] (f : X →+* Y) (g : X →+* Y) (h : ∀ (x : X), f x = g x) :
f = g
@[simp]
theorem SemiRingCat.RingEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [Semiring X] [Semiring Y] (e : X ≃+* Y) :
e = e
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.

Typecheck a RingHom as a morphism in SemiRingCat.

Equations
@[simp]
theorem SemiRingCat.ofHom_apply {R : Type u} {S : Type u} [Semiring R] [Semiring S] (f : R →+* S) (x : R) :
@[simp]
theorem SemiRingCat.ofHom_apply' {R : Type u} {S : Type u} [Semiring R] [Semiring S] (f : R →+* S) (x : R) :

A variant of ofHom_apply that makes simpNF happy

@[simp]
theorem RingEquiv.toSemiRingCatIso_inv {X : Type u} {Y : Type u} [Semiring X] [Semiring Y] (e : X ≃+* Y) :
e.toSemiRingCatIso.inv = e.symm.toRingHom
@[simp]
theorem RingEquiv.toSemiRingCatIso_hom {X : Type u} {Y : Type u} [Semiring X] [Semiring Y] (e : X ≃+* Y) :
e.toSemiRingCatIso.hom = e.toRingHom

Ring equivalence are isomorphisms in category of semirings

Equations
  • e.toSemiRingCatIso = { hom := e.toRingHom, inv := e.symm.toRingHom, hom_inv_id := , inv_hom_id := }
@[reducible, inline]
abbrev RingCat :
Type (u + 1)

The category of rings.

Equations
instance RingCat.instRingα (X : RingCat) :
Ring X
Equations
  • X.instRingα = X.str
instance RingCat.instRing (X : RingCat) :
Ring X
Equations
  • X.instRing = X.str
instance RingCat.instFunLike {X : RingCat} {Y : RingCat} :
FunLike (X Y) X Y
Equations
  • RingCat.instFunLike = CategoryTheory.ConcreteCategory.instFunLike
instance RingCat.instRingHomClass {X : RingCat} {Y : RingCat} :
RingHomClass (X Y) X Y
Equations
  • =
theorem RingCat.coe_comp {X : RingCat} {Y : RingCat} {Z : RingCat} {f : X Y} {g : Y Z} :
@[simp]
theorem RingCat.forget_map {X : RingCat} {Y : RingCat} (f : X Y) :
theorem RingCat.ext {X : RingCat} {Y : RingCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g
def RingCat.of (R : Type u) [Ring R] :

Construct a bundled RingCat from the underlying type and typeclass.

Equations
def RingCat.ofHom {R : Type u} {S : Type u} [Ring R] [Ring S] (f : R →+* S) :

Typecheck a RingHom as a morphism in RingCat.

Equations
theorem RingCat.ofHom_apply {R : Type u} {S : Type u} [Ring R] [Ring S] (f : R →+* S) (x : R) :
(RingCat.ofHom f) x = f x
instance RingCat.instRingα_1 (R : RingCat) :
Ring R
Equations
  • R.instRingα_1 = R.str
@[simp]
theorem RingCat.coe_of (R : Type u) [Ring R] :
(RingCat.of R) = R
@[simp]
theorem RingCat.ofHom_apply' {R : Type u} {S : Type u} [Ring R] [Ring S] (f : R →+* S) (x : R) :
(RingCat.ofHom f) x = f x

A variant of ofHom_apply that makes simpNF happy

@[simp]
theorem RingCat.coe_comp_of {X : Type u} {Y : Type u} {Z : Type u} [Ring X] [Ring Y] [Ring Z] (f : X →+* Y) (g : Y →+* Z) :
(CategoryTheory.CategoryStruct.comp f g) = (g.comp f)
theorem RingCat.ext_of_iff {X : Type u} {Y : Type u} [Ring X] [Ring Y] {f : X →+* Y} {g : X →+* Y} :
f = g ∀ (x : X), f x = g x
theorem RingCat.ext_of {X : Type u} {Y : Type u} [Ring X] [Ring Y] (f : X →+* Y) (g : X →+* Y) (h : ∀ (x : X), f x = g x) :
f = g
@[simp]
theorem RingCat.RingEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [Ring X] [Ring Y] (e : X ≃+* Y) :
e = e
Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline]
abbrev CommSemiRingCat :
Type (u + 1)

The category of commutative semirings.

Equations
Equations
  • X.instCommSemiringα = X.str
Equations
  • X.instCommSemiring = X.str
Equations
  • CommSemiRingCat.instFunLike = CategoryTheory.ConcreteCategory.instFunLike
Equations
  • =
theorem CommSemiRingCat.ext {X : CommSemiRingCat} {Y : CommSemiRingCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled CommSemiRingCat from the underlying type and typeclass.

Equations
@[simp]
theorem CommSemiRingCat.RingEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [CommSemiring X] [CommSemiring Y] (e : X ≃+* Y) :
e = e
theorem CommSemiRingCat.ofHom_apply {R : Type u} {S : Type u} [CommSemiring R] [CommSemiring S] (f : R →+* S) (x : R) :
@[simp]
theorem CommSemiRingCat.ofHom_apply' {R : Type u} {S : Type u} [CommSemiring R] [CommSemiring S] (f : R →+* S) (x : R) :

A variant of ofHom_apply that makes simpNF happy

Equations
  • R.instCommSemiringα_1 = R.str
@[simp]
@[simp]
theorem CommSemiRingCat.coe_comp_of {X : Type u} {Y : Type u} {Z : Type u} [CommSemiring X] [CommSemiring Y] [CommSemiring Z] (f : X →+* Y) (g : Y →+* Z) :
(CategoryTheory.CategoryStruct.comp f g) = (g.comp f)
theorem CommSemiRingCat.ext_of_iff {X : Type u} {Y : Type u} [CommSemiring X] [CommSemiring Y] {f : X →+* Y} {g : X →+* Y} :
f = g ∀ (x : X), f x = g x
theorem CommSemiRingCat.ext_of {X : Type u} {Y : Type u} [CommSemiring X] [CommSemiring Y] (f : X →+* Y) (g : X →+* Y) (h : ∀ (x : X), f x = g x) :
f = g

The forgetful functor from commutative rings to (multiplicative) commutative monoids.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem RingEquiv.toCommSemiRingCatIso_hom {X : Type u} {Y : Type u} [CommSemiring X] [CommSemiring Y] (e : X ≃+* Y) :
e.toCommSemiRingCatIso.hom = e.toRingHom
@[simp]
theorem RingEquiv.toCommSemiRingCatIso_inv {X : Type u} {Y : Type u} [CommSemiring X] [CommSemiring Y] (e : X ≃+* Y) :
e.toCommSemiRingCatIso.inv = e.symm.toRingHom

Ring equivalence are isomorphisms in category of commutative semirings

Equations
  • e.toCommSemiRingCatIso = { hom := e.toRingHom, inv := e.symm.toRingHom, hom_inv_id := , inv_hom_id := }
@[reducible, inline]
abbrev CommRingCat :
Type (u + 1)

The category of commutative rings.

Equations
Equations
  • X.instCommRing = X.str
Equations
  • X.instCommRing' = X.str
instance CommRingCat.instFunLike {X : CommRingCat} {Y : CommRingCat} :
FunLike (X Y) X Y
Equations
  • CommRingCat.instFunLike = CategoryTheory.ConcreteCategory.instFunLike
Equations
  • =
theorem CommRingCat.coe_comp {X : CommRingCat} {Y : CommRingCat} {Z : CommRingCat} {f : X Y} {g : Y Z} :
@[simp]

Specialization of ConcreteCategory.id_apply because simp can't see through the defeq.

@[simp]
theorem CommRingCat.comp_apply {R : CommRingCat} {S : CommRingCat} {T : CommRingCat} (f : R S) (g : S T) (x : R) :
@[simp]
theorem CommRingCat.ext {X : CommRingCat} {Y : CommRingCat} {f : X Y} {g : X Y} (w : ∀ (x : X), f x = g x) :
f = g

Construct a bundled CommRingCat from the underlying type and typeclass.

Equations
instance CommRingCat.instFunLike' {X : Type u_1} [CommRing X] {Y : CommRingCat} :
Equations
  • CommRingCat.instFunLike' = CategoryTheory.ConcreteCategory.instFunLike
instance CommRingCat.instFunLike'' {X : CommRingCat} {Y : Type u_1} [CommRing Y] :
FunLike (X CommRingCat.of Y) (↑X) Y
Equations
  • CommRingCat.instFunLike'' = CategoryTheory.ConcreteCategory.instFunLike
Equations
  • CommRingCat.instFunLike''' = CategoryTheory.ConcreteCategory.instFunLike

Typecheck a RingHom as a morphism in CommRingCat.

Equations
@[simp]
theorem CommRingCat.RingEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [CommRing X] [CommRing Y] (e : X ≃+* Y) :
e = e
theorem CommRingCat.ofHom_apply {R : Type u} {S : Type u} [CommRing R] [CommRing S] (f : R →+* S) (x : R) :
@[simp]
theorem CommRingCat.ofHom_apply' {R : Type u} {S : Type u} [CommRing R] [CommRing S] (f : R →+* S) (x : R) :

A variant of ofHom_apply that makes simpNF happy

Equations
  • R.instCommRingα = R.str
@[simp]
theorem CommRingCat.coe_of (R : Type u) [CommRing R] :
(CommRingCat.of R) = R
@[simp]
theorem CommRingCat.coe_comp_of {X : Type u} {Y : Type u} {Z : Type u} [CommRing X] [CommRing Y] [CommRing Z] (f : X →+* Y) (g : Y →+* Z) :
(CategoryTheory.CategoryStruct.comp f g) = (g.comp f)
theorem CommRingCat.ext_of_iff {X : Type u} {Y : Type u} [CommRing X] [CommRing Y] {f : X →+* Y} {g : X →+* Y} :
f = g ∀ (x : X), f x = g x
theorem CommRingCat.ext_of {X : Type u} {Y : Type u} [CommRing X] [CommRing Y] (f : X →+* Y) (g : X →+* Y) (h : ∀ (x : X), f x = g x) :
f = g

The forgetful functor from commutative rings to (multiplicative) commutative monoids.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem RingEquiv.toRingCatIso_hom {X : Type u} {Y : Type u} [Ring X] [Ring Y] (e : X ≃+* Y) :
e.toRingCatIso.hom = e.toRingHom
@[simp]
theorem RingEquiv.toRingCatIso_inv {X : Type u} {Y : Type u} [Ring X] [Ring Y] (e : X ≃+* Y) :
e.toRingCatIso.inv = e.symm.toRingHom
def RingEquiv.toRingCatIso {X : Type u} {Y : Type u} [Ring X] [Ring Y] (e : X ≃+* Y) :

Build an isomorphism in the category RingCat from a RingEquiv between RingCats.

Equations
  • e.toRingCatIso = { hom := e.toRingHom, inv := e.symm.toRingHom, hom_inv_id := , inv_hom_id := }
@[simp]
theorem RingEquiv.toCommRingCatIso_inv {X : Type u} {Y : Type u} [CommRing X] [CommRing Y] (e : X ≃+* Y) :
e.toCommRingCatIso.inv = e.symm.toRingHom
@[simp]
theorem RingEquiv.toCommRingCatIso_hom {X : Type u} {Y : Type u} [CommRing X] [CommRing Y] (e : X ≃+* Y) :
e.toCommRingCatIso.hom = e.toRingHom

Build an isomorphism in the category CommRingCat from a RingEquiv between CommRingCats.

Equations
  • e.toCommRingCatIso = { hom := e.toRingHom, inv := e.symm.toRingHom, hom_inv_id := , inv_hom_id := }

Build a RingEquiv from an isomorphism in the category RingCat.

Equations

Build a RingEquiv from an isomorphism in the category CommRingCat.

Equations
@[simp]
theorem CategoryTheory.Iso.commRingIsoToRingEquiv_toRingHom {X : CommRingCat} {Y : CommRingCat} (i : X Y) :
i.commRingCatIsoToRingEquiv.toRingHom = i.hom
@[simp]
theorem CategoryTheory.Iso.commRingIsoToRingEquiv_symm_toRingHom {X : CommRingCat} {Y : CommRingCat} (i : X Y) :
i.commRingCatIsoToRingEquiv.symm.toRingHom = i.inv
@[simp]
theorem CategoryTheory.Iso.commRingIsoToRingEquiv_apply {X : CommRingCat} {Y : CommRingCat} (i : X Y) (x : X) :
i.commRingCatIsoToRingEquiv x = i.hom x
@[simp]
theorem CategoryTheory.Iso.commRingIsoToRingEquiv_symm_apply {X : CommRingCat} {Y : CommRingCat} (i : X Y) (y : Y) :
i.commRingCatIsoToRingEquiv.symm y = i.inv y
def ringEquivIsoRingIso {X : Type u} {Y : Type u} [Ring X] [Ring Y] :

Ring equivalences between RingCats are the same as (isomorphic to) isomorphisms in RingCat.

Equations
  • ringEquivIsoRingIso = { hom := fun (e : X ≃+* Y) => e.toRingCatIso, inv := fun (i : RingCat.of X RingCat.of Y) => i.ringCatIsoToRingEquiv, hom_inv_id := , inv_hom_id := }

Ring equivalences between CommRingCats are the same as (isomorphic to) isomorphisms in CommRingCat.

Equations
  • One or more equations did not get rendered due to their size.

@[simp] lemmas for RingHom.comp and categorical identities.

@[simp]
theorem RingHom.comp_id_semiringCat {G : SemiRingCat} {H : Type u} [Semiring H] (f : G →+* H) :
@[simp]
theorem RingHom.comp_id_ringCat {G : RingCat} {H : Type u} [Ring H] (f : G →+* H) :
@[simp]
@[simp]
theorem RingHom.comp_id_commRingCat {G : CommRingCat} {H : Type u} [CommRing H] (f : G →+* H) :