Congruence relations on rings #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines congruence relations on rings, which extend con
and add_con
on monoids and
additive monoids.
Most of the time you likely want to use the ideal.quotient
API that is built on top of this.
Main Definitions #
ring_con R
: the type of congruence relations respecting+
and*
.ring_con_gen r
: the inductively defined smallest ring congruence relation containing a given binary relation.
TODO #
- Use this for
ring_quot
too. - Copy across more API from
con
andadd_con
ingroup_theory/congruence.lean
, such as:- The
complete_lattice
structure. - The
con_gen_eq
lemma, stating thatring_con_gen r = Inf {s : ring_con M | ∀ x y, r x y → s x y}
.
- The
- to_setoid : setoid R
- add' : ∀ {w x y z : R}, setoid.r w x → setoid.r y z → setoid.r (w + y) (x + z)
- mul' : ∀ {w x y z : R}, setoid.r w x → setoid.r y z → setoid.r (w * y) (x * z)
A congruence relation on a type with an addition and multiplication is an equivalence relation which preserves both.
Instances for ring_con
- ring_con.has_sizeof_inst
- ring_con.has_coe_to_fun
- ring_con.inhabited
- of : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} (x y : R), r x y → ring_con_gen.rel r x y
- refl : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} (x : R), ring_con_gen.rel r x x
- symm : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} {x y : R}, ring_con_gen.rel r x y → ring_con_gen.rel r y x
- trans : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} {x y z : R}, ring_con_gen.rel r x y → ring_con_gen.rel r y z → ring_con_gen.rel r x z
- add : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} {w x y z : R}, ring_con_gen.rel r w x → ring_con_gen.rel r y z → ring_con_gen.rel r (w + y) (x + z)
- mul : ∀ {R : Type u_2} [_inst_1 : has_add R] [_inst_2 : has_mul R] {r : R → R → Prop} {w x y z : R}, ring_con_gen.rel r w x → ring_con_gen.rel r y z → ring_con_gen.rel r (w * y) (x * z)
The inductively defined smallest ring congruence relation containing a given binary relation.
A coercion from a congruence relation to its underlying binary relation.
Equations
Defining the quotient by a congruence relation of a type with addition and multiplication.
Instances for ring_con.quotient
- ring_con.quotient.has_coe_t
- ring_con.quotient.has_add
- ring_con.quotient.has_mul
- ring_con.quotient.has_zero
- ring_con.quotient.has_one
- ring_con.quotient.has_smul
- ring_con.quotient.has_neg
- ring_con.quotient.has_sub
- ring_con.has_zsmul
- ring_con.has_nsmul
- ring_con.nat.has_pow
- ring_con.quotient.has_nat_cast
- ring_con.quotient.has_int_cast
- ring_con.quotient.inhabited
- ring_con.quotient.non_unital_non_assoc_semiring
- ring_con.quotient.non_assoc_semiring
- ring_con.quotient.non_unital_semiring
- ring_con.quotient.semiring
- ring_con.quotient.comm_semiring
- ring_con.quotient.non_unital_non_assoc_ring
- ring_con.quotient.non_assoc_ring
- ring_con.quotient.non_unital_ring
- ring_con.quotient.ring
- ring_con.quotient.comm_ring
- ring_con.is_scalar_tower_right
- ring_con.smul_comm_class
- ring_con.smul_comm_class'
- ring_con.quotient.distrib_mul_action
- ring_con.quotient.mul_semiring_action
- ring_con.quotient.algebra
Coercion from a type with addition and multiplication to its quotient by a congruence relation.
See Note [use has_coe_t].
Equations
Basic notation #
The basic algebraic notation, 0
, 1
, +
, *
, -
, ^
, descend naturally under the quotient
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Algebraic structure #
The operations above on the quotient by c : ring_con R
preseverse the algebraic structure of R
.
Equations
Equations
Equations
- ring_con.quotient.semiring c = function.surjective.semiring quotient.mk' _ _ _ _ _ _ _ _
Equations
- ring_con.quotient.comm_semiring c = function.surjective.comm_semiring quotient.mk' _ _ _ _ _ _ _ _
Equations
Equations
- ring_con.quotient.non_assoc_ring c = function.surjective.non_assoc_ring quotient.mk' _ _ _ _ _ _ _ _ _ _ _
Equations
- ring_con.quotient.non_unital_ring c = function.surjective.non_unital_ring quotient.mk' _ _ _ _ _ _ _ _
Equations
- ring_con.quotient.ring c = function.surjective.ring quotient.mk' _ _ _ _ _ _ _ _ _ _ _ _
Equations
- ring_con.quotient.comm_ring c = function.surjective.comm_ring quotient.mk' _ _ _ _ _ _ _ _ _ _ _ _
Equations
- ring_con.quotient.distrib_mul_action c = {to_mul_action := {to_has_smul := {smul := has_smul.smul (ring_con.quotient.has_smul c)}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}
Equations
- ring_con.quotient.mul_semiring_action c = {to_distrib_mul_action := {to_mul_action := {to_has_smul := {smul := has_smul.smul (ring_con.quotient.has_smul c)}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}, smul_one := _, smul_mul := _}