Groups with an adjoined zero element #
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 GroupWithZero and CommGroupWithZero.
To reduce import dependencies, the type-classes themselves are in
Algebra.GroupWithZero.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.
Equations
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
- uniqueOfZeroEqOne h = { toInhabited := { default := 0 }, uniq := (_ : ∀ (a : M₀), a = 0) }
Instances For
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, zero equals one if and only if all elements of that semiring are equal.
In a monoid with zero, either zero and one are nonequal, or zero is the only element.
An element of a CancelMonoidWithZero fixed by right multiplication by an element other
than one must be zero.
An element of a CancelMonoidWithZero fixed by left multiplication by an element other
than one must be zero.
Equations
- GroupWithZero.toCancelMonoidWithZero = let src := inst; CancelMonoidWithZero.mk
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).
Order dual #
Equations
- instMulZeroClassOrderDual = h
Equations
- instMulZeroOneClassOrderDual = h
Equations
- (_ : NoZeroDivisors αᵒᵈ) = h
Equations
- instSemigroupWithZeroOrderDual = h
Equations
- instMonoidWithZeroOrderDual = h
Equations
- instCancelMonoidWithZeroOrderDual = h
Equations
- instCommMonoidWithZeroOrderDual = h
Equations
- instCancelCommMonoidWithZeroOrderDual = h
Equations
- instGroupWithZeroOrderDual = h
Equations
- instCommGroupWithZeroOrderDual = h
Lexicographic order #
Equations
- instMulZeroClassLex = h
Equations
- instMulZeroOneClassLex = h
Equations
- (_ : NoZeroDivisors (Lex α)) = h
Equations
- instSemigroupWithZeroLex = h
Equations
- instMonoidWithZeroLex = h
Equations
- instCancelMonoidWithZeroLex = h
Equations
- instCommMonoidWithZeroLex = h
Equations
- instCancelCommMonoidWithZeroLex = h
Equations
- instGroupWithZeroLex = h
Equations
- instCommGroupWithZeroLex = h