Structures · Algebra
DivInvMonoid
A DivInvMonoid is a Monoid with operations / and ⁻¹ satisfying
div_eq_mul_inv : ∀ a b, a / b = a * b⁻¹.
This deduplicates the name div_eq_mul_inv.
The default for div is such that a / b = a * b⁻¹ holds by definition.
Adding div as a field rather than defining a / b := a * b⁻¹ allows us to
avoid certain classes of unification failures, for example:
Let Foo X be a type with a ∀ X, Div (Foo X) instance but no
∀ X, Inv (Foo X), e.g. when Foo X is a EuclideanDomain. Suppose we
also have an instance ∀ X [Cromulent X], GroupWithZero (Foo X). Then the
(/) coming from GroupWithZero.div cannot be definitionally equal to
the (/) coming from Foo.Div.
In the same way, adding a zpow field makes it possible to avoid definitional failures
in diamonds. See the definition of Monoid and Note [forgetful inheritance] for more
explanations on this.
- Defined in
- Mathlib.Algebra.Group.Defs
- Shape
- One type argument · adds div_eq_mul_inv, zpow_zero', zpow_succ', zpow_neg'
Extends4
Extended by5
Concrete types that are instances21
- Real
- Complex
- ENNReal
- Filter.Germ
- Matrix
- HahnSeries
- DomMulAct
- Units
- EReal
- CauSeq.Completion.Cauchy
- ConjAct
- Rack.EnvelGroup
- Prod
- OrderDual
- ULift
- MulOpposite
- Lex
- AddOpposite
- Colex
- Multiplicative
- WithZero
How is a type an instance?
Loading the hierarchy index…
Assumed by130
- div_eq_mul_inv
- one_div
- zpow_natCast
- mul_div_assoc
- zpow_ofNat
- zpow_negSucc
- ConjAct.toConjAct
- zpow_zero
- mul_one_div
- zpow_one
- inv_eq_one_div
- mul_div
- division_def
- Continuous.div_const
- ConjAct.ofConjAct
- Filter.Tendsto.div_const
- zpow_neg_one
- div_eq_mul_one_div
- mul_div_assoc'
- div_mem
- zpow_mem
- leOnePart_def
- map_zpow'
- oneLePart_def
- map_div'
- ConjAct.ofConjAct_toConjAct
- DivInvMonoid.zpow_neg'
- ConjAct.toConjAct_smul
- oneLePart_eq_self
- ContinuousOn.div_const
- isAddCyclic_additive_iff
- ContMDiffWithinAt.div_const
- zpow_two
- ContinuousAt.div_const
- mapClusterPt_atTop_zpow_iff_pow
- one_le_zpow
- oneLePart_eq_one
- smul_div_assoc
- MulOpposite.op_zpow
- one_le_leOnePart
- DivInvMonoid.zpow_zero'
- oneLePart_mono
- MulOpposite.op_div
- ConjAct.ofConjAct_inv
- ConjAct.smul_def
- zpow_neg_coe_of_pos
- map_comp_zpow'
- one_lt_zpow
- toMul_zsmul
- Specializes.zpow