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.
Notation #
→+o: Bundled ordered additive monoid homs. Also use for additive groups homs.→*o: Bundled ordered monoid homs. Also use for groups homs.→*₀o: Bundled ordered monoid with zero homs. Also use for groups with zero homs.
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 #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*) [OrderAddMonoidHomClass F α β] (f : F).
When you extend this structure, make sure to extend OrderAddMonoidHomClass.
- toFun : α → β
- map_zero' : (↑self.toAddMonoidHom).toFun 0 = 0
- monotone' : Monotone (↑self.toAddMonoidHom).toFun
An
OrderAddMonoidHomis a monotone function.
Instances For
An OrderAddMonoidHom is a monotone function.
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 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*) [OrderMonoidHomClass F α β] (f : F).
When you extend this structure, make sure to extend OrderMonoidHomClass.
- toFun : α → β
- map_one' : (↑self.toMonoidHom).toFun 1 = 1
- monotone' : Monotone (↑self.toMonoidHom).toFun
An
OrderMonoidHomis a monotone function.
Instances For
An OrderMonoidHom is a monotone function.
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 OrderAddMonoidHomClass F α β into an actual
OrderAddMonoidHom. This is declared as the default coercion from F to α →+o β.
Equations
- ↑f = let __src := ↑f; { toAddMonoidHom := __src, monotone' := ⋯ }
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 = let __src := ↑f; { toMonoidHom := __src, monotone' := ⋯ }
Instances For
Any type satisfying OrderAddMonoidHomClass can be cast into OrderAddMonoidHom via
OrderAddMonoidHomClass.toOrderAddMonoidHom
Equations
- instCoeTCOrderAddMonoidHomOfOrderHomClassOfAddMonoidHomClass = { coe := OrderMonoidHomClass.toOrderAddMonoidHom }
Any type satisfying OrderMonoidHomClass can be cast into OrderMonoidHom via
OrderMonoidHomClass.toOrderMonoidHom.
Equations
- instCoeTCOrderMonoidHomOfOrderHomClassOfMonoidHomClass = { coe := OrderMonoidHomClass.toOrderMonoidHom }
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 parametrize over (F : Type*) [OrderMonoidWithZeroHomClass F α β] (f : F).
When you extend this structure, make sure to extend OrderMonoidWithZeroHomClass.
- toFun : α → β
- map_zero' : (↑self.toMonoidWithZeroHom).toFun 0 = 0
- map_one' : (↑self.toMonoidWithZeroHom).toFun 1 = 1
- monotone' : Monotone (↑self.toMonoidWithZeroHom).toFun
An
OrderMonoidWithZeroHomis a monotone function.
Instances For
An OrderMonoidWithZeroHom is a monotone function.
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 = let __src := ↑f; { toMonoidWithZeroHom := __src, monotone' := ⋯ }
Instances For
Equations
- instCoeTCOrderMonoidWithZeroHomOfOrderHomClassOfMonoidWithZeroHomClass = { coe := OrderMonoidWithZeroHomClass.toOrderMonoidWithZeroHom }
See also NonnegHomClass.apply_nonneg.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Reinterpret an ordered additive monoid homomorphism as an order homomorphism.
Equations
- f.toOrderHom = { toFun := (↑f.toAddMonoidHom).toFun, monotone' := ⋯ }
Instances For
Reinterpret an ordered monoid homomorphism as an order homomorphism.
Equations
- f.toOrderHom = { toFun := (↑f.toMonoidHom).toFun, 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 = let __src := f.copy f' h; { toFun := f', map_zero' := ⋯, map_add' := ⋯, 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 = let __src := f.copy f' h; { toFun := f', map_one' := ⋯, map_mul' := ⋯, monotone' := ⋯ }
Instances For
The identity map as an ordered additive monoid homomorphism.
Equations
- OrderAddMonoidHom.id α = let __src := AddMonoidHom.id α; let __src_1 := OrderHom.id; { toAddMonoidHom := __src, monotone' := ⋯ }
Instances For
The identity map as an ordered monoid homomorphism.
Equations
- OrderMonoidHom.id α = let __src := MonoidHom.id α; let __src_1 := OrderHom.id; { toMonoidHom := __src, monotone' := ⋯ }
Instances For
Equations
- OrderAddMonoidHom.instInhabited α = { default := OrderAddMonoidHom.id α }
Equations
- OrderMonoidHom.instInhabited α = { default := OrderMonoidHom.id α }
Composition of OrderAddMonoidHoms as an OrderAddMonoidHom
Equations
- f.comp g = let __src := f.comp ↑g; let __src_1 := f.toOrderHom.comp ↑g; { toAddMonoidHom := __src, monotone' := ⋯ }
Instances For
Composition of OrderMonoidHoms as an OrderMonoidHom.
Equations
- f.comp g = let __src := f.comp ↑g; let __src_1 := f.toOrderHom.comp ↑g; { toMonoidHom := __src, monotone' := ⋯ }
Instances For
0 is the homomorphism sending all elements to 0.
Equations
- OrderAddMonoidHom.instZero = { zero := let __src := 0; { toAddMonoidHom := __src, monotone' := ⋯ } }
1 is the homomorphism sending all elements to 1.
Equations
- OrderMonoidHom.instOne = { one := let __src := 1; { toMonoidHom := __src, monotone' := ⋯ } }
For two ordered additive monoid morphisms f and g, their product is the ordered
additive monoid morphism sending a to f a + g a.
For two ordered monoid morphisms f and g, their product is the ordered monoid morphism
sending a to f a * g a.
Makes an ordered additive group homomorphism from a proof that the map preserves addition.
Equations
- OrderAddMonoidHom.mk' f hf map_mul = let __src := AddMonoidHom.mk' f map_mul; { toAddMonoidHom := __src, monotone' := hf }
Instances For
Makes an ordered group homomorphism from a proof that the map preserves multiplication.
Equations
- OrderMonoidHom.mk' f hf map_mul = let __src := MonoidHom.mk' f map_mul; { toMonoidHom := __src, monotone' := hf }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
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 = let __src := f.toOrderMonoidHom.copy f' h; let __src := 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 α = let __src := MonoidWithZeroHom.id α; let __src_1 := OrderHom.id; { toMonoidWithZeroHom := __src, monotone' := ⋯ }
Instances For
Equations
- OrderMonoidWithZeroHom.instInhabited α = { default := OrderMonoidWithZeroHom.id α }
Composition of OrderMonoidWithZeroHoms as an OrderMonoidWithZeroHom.
Equations
- f.comp g = let __src := f.comp ↑g; let __src_1 := f.toOrderMonoidHom.comp ↑g; { toMonoidWithZeroHom := __src, 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.