Groups with an adjoined zero element #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file describes structures that are not usually studied on their own right in mathematics, namely a special sort of monoid: apart from a distinguished “zero element” they form a group, or in other words, they are groups with an adjoined zero element.
Examples are:
- division rings;
- the value monoid of a multiplicative valuation;
- in particular, the non-negative real numbers.
Main definitions #
Various lemmas about group_with_zero
and comm_group_with_zero
.
To reduce import dependencies, the type-classes themselves are in
algebra.group_with_zero.defs
.
Implementation details #
As is usual in mathlib, we extend the inverse function to the zero element,
and require 0⁻¹ = 0
.
To match one_mul_eq_id
.
To match mul_one_eq_id
.
In a monoid with zero, if zero equals one, then zero is the only element.
In a monoid with zero, if zero equals one, then zero is the unique element.
Somewhat arbitrarily, we define the default element to be 0
.
All other elements will be provably equal to it, but not necessarily definitionally equal.
Equations
- unique_of_zero_eq_one h = {to_inhabited := {default := 0}, uniq := _}
In a monoid with zero, zero equals one if and only if all elements of that semiring are equal.
Alias of the forward direction of subsingleton_iff_zero_eq_one
.
In a monoid with zero, either zero and one are nonequal, or zero is the only element.
An element of a cancel_monoid_with_zero
fixed by right multiplication by an element other
than one must be zero.
An element of a cancel_monoid_with_zero
fixed by left multiplication by an element other
than one must be zero.
Equations
- group_with_zero.to_division_monoid = {mul := group_with_zero.mul _inst_1, mul_assoc := _, one := group_with_zero.one _inst_1, one_mul := _, mul_one := _, npow := group_with_zero.npow _inst_1, npow_zero' := _, npow_succ' := _, inv := has_inv.inv (div_inv_monoid.to_has_inv G₀), div := group_with_zero.div _inst_1, div_eq_mul_inv := _, zpow := group_with_zero.zpow _inst_1, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, inv_inv := _, mul_inv_rev := _, inv_eq_of_mul := _}
Equations
- group_with_zero.to_cancel_monoid_with_zero = {mul := group_with_zero.mul _inst_1, mul_assoc := _, one := group_with_zero.one _inst_1, one_mul := _, mul_one := _, npow := group_with_zero.npow _inst_1, npow_zero' := _, npow_succ' := _, zero := group_with_zero.zero _inst_1, zero_mul := _, mul_zero := _, mul_left_cancel_of_ne_zero := _, mul_right_cancel_of_ne_zero := _}
Multiplying a
by itself and then by its inverse results in a
(whether or not a
is zero).
Multiplying a
by its inverse and then by itself results in a
(whether or not a
is zero).
Multiplying a⁻¹
by a
twice results in a
(whether or not a
is zero).
Multiplying a
by itself and then dividing by itself results in a
, whether or not a
is
zero.
Dividing a
by itself and then multiplying by itself results in a
, whether or not a
is
zero.
Dividing a
by the result of dividing a
by itself results in
a
(whether or not a
is zero).