Ordered monoid and group homomorphisms #
This file defines morphisms between (additive) ordered monoids.
Types of morphisms #
OrderAddMonoidHom
: Ordered additive monoid homomorphisms.OrderMonoidHom
: Ordered monoid homomorphisms.OrderMonoidWithZeroHom
: Ordered monoid with zero homomorphisms.OrderAddMonoidIso
: Ordered additive monoid isomorphisms.OrderMonoidIso
: Ordered monoid isomorphisms.
Notation #
→+o
: Bundled ordered additive monoid homs. Also use for additive group homs.→*o
: Bundled ordered monoid homs. Also use for group homs.→*₀o
: Bundled ordered monoid with zero homs. Also use for group with zero homs.≃+o
: Bundled ordered additive monoid isos. Also use for additive group isos.≃*o
: Bundled ordered monoid isos. Also use for group isos.≃*₀o
: Bundled ordered monoid with zero isos. Also use for group with zero isos.
Implementation notes #
There's a coercion from bundled homs to fun, and the canonical notation is to use the bundled hom as a function via this coercion.
There is no OrderGroupHom
-- the idea is that OrderMonoidHom
is used.
The constructor for OrderMonoidHom
needs a proof of map_one
as well as map_mul
; a separate
constructor OrderMonoidHom.mk'
will construct ordered group homs (i.e. ordered monoid homs
between ordered groups) given only a proof that multiplication is preserved,
Implicit {}
brackets are often used instead of type class []
brackets. This is done when the
instances can be inferred because they are implicit arguments to the type OrderMonoidHom
. When
they can be inferred from the type it is faster to use this method than to use type class inference.
Removed typeclasses #
This file used to define typeclasses for order-preserving (additive) monoid homomorphisms:
OrderAddMonoidHomClass
, OrderMonoidHomClass
, and OrderMonoidWithZeroHomClass
.
In https://github.com/leanprover-community/mathlib4/pull/10544 we migrated from these typeclasses
to assumptions like [FunLike F M N] [MonoidHomClass F M N] [OrderHomClass F M N]
,
making some definitions and lemmas irrelevant.
Tags #
ordered monoid, ordered group, monoid with zero
α →+o β
is the type of monotone functions α → β
that preserve the OrderedAddCommMonoid
structure.
OrderAddMonoidHom
is also used for ordered group homomorphisms.
When possible, instead of parametrizing results over (f : α →+o β)
,
you should parametrize over
(F : Type*) [FunLike F M N] [MonoidHomClass F M N] [OrderHomClass F M N] (f : F)
.
- toFun : α → β
- monotone' : Monotone (↑self.toAddMonoidHom).toFun
An
OrderAddMonoidHom
is a monotone function.
Instances For
Infix notation for OrderAddMonoidHom
.
Equations
- «term_→+o_» = Lean.ParserDescr.trailingNode `«term_→+o_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →+o ") (Lean.ParserDescr.cat `term 25))
Instances For
α ≃+o β
is the type of monotone isomorphisms α ≃ β
that preserve the OrderedAddCommMonoid
structure.
OrderAddMonoidIso
is also used for ordered group isomorphisms.
When possible, instead of parametrizing results over (f : α ≃+o β)
,
you should parametrize over
(F : Type*) [FunLike F M N] [AddEquivClass F M N] [OrderIsoClass F M N] (f : F)
.
- toFun : α → β
- invFun : β → α
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
An
OrderAddMonoidIso
respects≤
.
Instances For
Infix notation for OrderAddMonoidIso
.
Equations
- «term_≃+o_» = Lean.ParserDescr.trailingNode `«term_≃+o_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≃+o ") (Lean.ParserDescr.cat `term 25))
Instances For
α →*o β
is the type of functions α → β
that preserve the OrderedCommMonoid
structure.
OrderMonoidHom
is also used for ordered group homomorphisms.
When possible, instead of parametrizing results over (f : α →*o β)
,
you should parametrize over
(F : Type*) [FunLike F M N] [MonoidHomClass F M N] [OrderHomClass F M N] (f : F)
.
- toFun : α → β
- monotone' : Monotone (↑self.toMonoidHom).toFun
An
OrderMonoidHom
is a monotone function.
Instances For
Infix notation for OrderMonoidHom
.
Equations
- «term_→*o_» = Lean.ParserDescr.trailingNode `«term_→*o_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →*o ") (Lean.ParserDescr.cat `term 25))
Instances For
Turn an element of a type F
satisfying OrderHomClass F α β
and MonoidHomClass F α β
into an actual OrderMonoidHom
. This is declared as the default coercion from F
to α →*o β
.
Equations
- ↑f = { toMonoidHom := ↑f, monotone' := ⋯ }
Instances For
Turn an element of a type F
satisfying OrderHomClass F α β
and AddMonoidHomClass F α β
into an actual OrderAddMonoidHom
.
This is declared as the default coercion from F
to α →+o β
.
Equations
- ↑f = { toAddMonoidHom := ↑f, monotone' := ⋯ }
Instances For
Any type satisfying OrderMonoidHomClass
can be cast into OrderMonoidHom
via
OrderMonoidHomClass.toOrderMonoidHom
.
Equations
- instCoeTCOrderMonoidHomOfOrderHomClassOfMonoidHomClass = { coe := OrderMonoidHomClass.toOrderMonoidHom }
Any type satisfying OrderAddMonoidHomClass
can be cast into OrderAddMonoidHom
via
OrderAddMonoidHomClass.toOrderAddMonoidHom
Equations
- instCoeTCOrderAddMonoidHomOfOrderHomClassOfAddMonoidHomClass = { coe := OrderMonoidHomClass.toOrderAddMonoidHom }
α ≃*o β
is the type of isomorphisms α ≃ β
that preserve the OrderedCommMonoid
structure.
OrderMonoidIso
is also used for ordered group isomorphisms.
When possible, instead of parametrizing results over (f : α ≃*o β)
,
you should parametrize over
(F : Type*) [FunLike F M N] [MulEquivClass F M N] [OrderIsoClass F M N] (f : F)
.
- toFun : α → β
- invFun : β → α
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
An
OrderMonoidIso
respects≤
.
Instances For
Infix notation for OrderMonoidIso
.
Equations
- «term_≃*o_» = Lean.ParserDescr.trailingNode `«term_≃*o_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≃*o ") (Lean.ParserDescr.cat `term 25))
Instances For
Turn an element of a type F
satisfying OrderIsoClass F α β
and MulEquivClass F α β
into an actual OrderMonoidIso
. This is declared as the default coercion from F
to α ≃*o β
.
Equations
- ↑f = { toMulEquiv := ↑f, map_le_map_iff' := ⋯ }
Instances For
Turn an element of a type F
satisfying OrderIsoClass F α β
and AddEquivClass F α β
into an actual OrderAddMonoidIso
.
This is declared as the default coercion from F
to α ≃+o β
.
Equations
- ↑f = { toAddEquiv := ↑f, map_le_map_iff' := ⋯ }
Instances For
Any type satisfying OrderMonoidHomClass
can be cast into OrderMonoidHom
via
OrderMonoidHomClass.toOrderMonoidHom
.
Equations
- instCoeTCOrderMonoidHomOfOrderHomClassOfMonoidHomClass_1 = { coe := OrderMonoidHomClass.toOrderMonoidHom }
Any type satisfying OrderAddMonoidHomClass
can be cast into OrderAddMonoidHom
via
OrderAddMonoidHomClass.toOrderAddMonoidHom
Equations
- instCoeTCOrderAddMonoidHomOfOrderHomClassOfAddMonoidHomClass_1 = { coe := OrderMonoidHomClass.toOrderAddMonoidHom }
Any type satisfying OrderMonoidIsoClass
can be cast into OrderMonoidIso
via
OrderMonoidIsoClass.toOrderMonoidIso
.
Equations
- instCoeTCOrderMonoidIsoOfOrderIsoClassOfMulEquivClass = { coe := OrderMonoidIsoClass.toOrderMonoidIso }
Any type satisfying OrderAddMonoidIsoClass
can be cast into OrderAddMonoidIso
via
OrderAddMonoidIsoClass.toOrderAddMonoidIso
Equations
- instCoeTCOrderAddMonoidIsoOfOrderIsoClassOfAddEquivClass = { coe := OrderMonoidIsoClass.toOrderAddMonoidIso }
OrderMonoidWithZeroHom α β
is the type of functions α → β
that preserve
the MonoidWithZero
structure.
OrderMonoidWithZeroHom
is also used for group homomorphisms.
When possible, instead of parametrizing results over (f : α →+ β)
,
you should parameterize over
(F : Type*) [FunLike F M N] [MonoidWithZeroHomClass F M N] [OrderHomClass F M N] (f : F)
.
- toFun : α → β
- monotone' : Monotone (↑self.toMonoidWithZeroHom).toFun
An
OrderMonoidWithZeroHom
is a monotone function.
Instances For
Infix notation for OrderMonoidWithZeroHom
.
Equations
- «term_→*₀o_» = Lean.ParserDescr.trailingNode `«term_→*₀o_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " →*₀o ") (Lean.ParserDescr.cat `term 25))
Instances For
Turn an element of a type F
satisfying OrderHomClass F α β
and MonoidWithZeroHomClass F α β
into an actual OrderMonoidWithZeroHom
.
This is declared as the default coercion from F
to α →+*₀o β
.
Equations
- ↑f = { toMonoidWithZeroHom := ↑f, monotone' := ⋯ }
Instances For
Equations
- instCoeTCOrderMonoidWithZeroHomOfOrderHomClassOfMonoidWithZeroHomClass = { coe := OrderMonoidWithZeroHomClass.toOrderMonoidWithZeroHom }
See also NonnegHomClass.apply_nonneg
.
Reinterpret an ordered monoid homomorphism as an order homomorphism.
Equations
- f.toOrderHom = { toFun := (↑f.toMonoidHom).toFun, monotone' := ⋯ }
Instances For
Reinterpret an ordered additive monoid homomorphism as an order homomorphism.
Equations
- f.toOrderHom = { toFun := (↑f.toAddMonoidHom).toFun, monotone' := ⋯ }
Instances For
Copy of an OrderMonoidHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = { toFun := f', map_one' := ⋯, map_mul' := ⋯, monotone' := ⋯ }
Instances For
Copy of an OrderAddMonoidHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = { toFun := f', map_zero' := ⋯, map_add' := ⋯, monotone' := ⋯ }
Instances For
The identity map as an ordered monoid homomorphism.
Equations
- OrderMonoidHom.id α = { toMonoidHom := MonoidHom.id α, monotone' := ⋯ }
Instances For
The identity map as an ordered additive monoid homomorphism.
Equations
- OrderAddMonoidHom.id α = { toAddMonoidHom := AddMonoidHom.id α, monotone' := ⋯ }
Instances For
Equations
- OrderMonoidHom.instInhabited α = { default := OrderMonoidHom.id α }
Equations
- OrderAddMonoidHom.instInhabited α = { default := OrderAddMonoidHom.id α }
Composition of OrderMonoidHom
s as an OrderMonoidHom
.
Equations
- f.comp g = { toMonoidHom := f.comp ↑g, monotone' := ⋯ }
Instances For
Composition of OrderAddMonoidHom
s as an OrderAddMonoidHom
Equations
- f.comp g = { toAddMonoidHom := f.comp ↑g, monotone' := ⋯ }
Instances For
1
is the homomorphism sending all elements to 1
.
Equations
- OrderMonoidHom.instOne = { one := let __src := 1; { toMonoidHom := __src, monotone' := ⋯ } }
0
is the homomorphism sending all elements to 0
.
Equations
- OrderAddMonoidHom.instZero = { zero := let __src := 0; { toAddMonoidHom := __src, monotone' := ⋯ } }
For two ordered monoid morphisms f
and g
, their product is the ordered monoid morphism
sending a
to f a * g a
.
For two ordered additive monoid morphisms f
and g
, their product is the ordered
additive monoid morphism sending a
to f a + g a
.
Makes an ordered group homomorphism from a proof that the map preserves multiplication.
Equations
- OrderMonoidHom.mk' f hf map_mul = { toMonoidHom := MonoidHom.mk' f map_mul, monotone' := hf }
Instances For
Makes an ordered additive group homomorphism from a proof that the map preserves addition.
Equations
- OrderAddMonoidHom.mk' f hf map_mul = { toAddMonoidHom := AddMonoidHom.mk' f map_mul, monotone' := hf }
Instances For
The identity map as an ordered monoid isomorphism.
Equations
- OrderMonoidIso.refl α = { toMulEquiv := MulEquiv.refl α, map_le_map_iff' := ⋯ }
Instances For
The identity map as an ordered additive monoid isomorphism.
Equations
- OrderAddMonoidIso.refl α = { toAddEquiv := AddEquiv.refl α, map_le_map_iff' := ⋯ }
Instances For
Equations
- OrderMonoidIso.instInhabited α = { default := OrderMonoidIso.refl α }
Equations
- OrderAddMonoidIso.instInhabited α = { default := OrderAddMonoidIso.refl α }
Transitivity of multiplication-preserving order isomorphisms
Equations
- f.trans g = { toMulEquiv := (↑f).trans ↑g, map_le_map_iff' := ⋯ }
Instances For
Transitivity of addition-preserving order isomorphisms
Equations
- f.trans g = { toAddEquiv := (↑f).trans ↑g, map_le_map_iff' := ⋯ }
Instances For
Makes an ordered group isomorphism from a proof that the map preserves multiplication.
Equations
- OrderMonoidIso.mk' f hf map_mul = { toMulEquiv := MulEquiv.mk' f map_mul, map_le_map_iff' := ⋯ }
Instances For
Makes an ordered additive group isomorphism from a proof that the map preserves addition.
Equations
- OrderAddMonoidIso.mk' f hf map_mul = { toAddEquiv := AddEquiv.mk' f map_mul, map_le_map_iff' := ⋯ }
Instances For
Reinterpret an ordered monoid with zero homomorphism as an order monoid homomorphism.
Equations
- f.toOrderMonoidHom = { toFun := (↑f.toMonoidWithZeroHom).toFun, map_one' := ⋯, map_mul' := ⋯, monotone' := ⋯ }
Instances For
Copy of an OrderMonoidWithZeroHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- f.copy f' h = { toFun := f', map_one' := ⋯, map_mul' := ⋯, monotone' := ⋯ }
Instances For
The identity map as an ordered monoid with zero homomorphism.
Equations
- OrderMonoidWithZeroHom.id α = { toMonoidWithZeroHom := MonoidWithZeroHom.id α, monotone' := ⋯ }
Instances For
Equations
- OrderMonoidWithZeroHom.instInhabited α = { default := OrderMonoidWithZeroHom.id α }
Composition of OrderMonoidWithZeroHom
s as an OrderMonoidWithZeroHom
.
Equations
- f.comp g = { toMonoidWithZeroHom := f.comp ↑g, monotone' := ⋯ }
Instances For
For two ordered monoid morphisms f
and g
, their product is the ordered monoid morphism
sending a
to f a * g a
.