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).