Ordered monoid and group homomorphisms #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines morphisms between (additive) ordered monoids.
Types of morphisms #
order_add_monoid_hom
: Ordered additive monoid homomorphisms.order_monoid_hom
: Ordered monoid homomorphisms.order_monoid_with_zero_hom
: Ordered monoid with zero homomorphisms.
Typeclasses #
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 order_group_hom
-- the idea is that order_monoid_hom
is used.
The constructor for order_monoid_hom
needs a proof of map_one
as well as map_mul
; a separate
constructor order_monoid_hom.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 order_monoid_hom
. When
they can be inferred from the type it is faster to use this method than to use type class inference.
Tags #
ordered monoid, ordered group, monoid with zero
- to_add_monoid_hom : α →+ β
- monotone' : monotone self.to_add_monoid_hom.to_fun
α →+o β
is the type of monotone functions α → β
that preserve the ordered_add_comm_monoid
structure.
order_add_monoid_hom
is also used for ordered group homomorphisms.
When possible, instead of parametrizing results over (f : α →+o β)
,
you should parametrize over (F : Type*) [order_add_monoid_hom_class F α β] (f : F)
.
When you extend this structure, make sure to extend order_add_monoid_hom_class
.
Instances for order_add_monoid_hom
- coe : F → Π (a : α), (λ (_x : α), β) a
- coe_injective' : function.injective order_add_monoid_hom_class.coe
- map_add : ∀ (f : F) (x y : α), ⇑f (x + y) = ⇑f x + ⇑f y
- map_zero : ∀ (f : F), ⇑f 0 = 0
- monotone : ∀ (f : F), monotone ⇑f
order_add_monoid_hom_class F α β
states that F
is a type of ordered monoid homomorphisms.
You should also extend this typeclass when you extend order_add_monoid_hom
.
Instances of this typeclass
Instances of other typeclasses for order_add_monoid_hom_class
- order_add_monoid_hom_class.has_sizeof_inst
- to_monoid_hom : α →* β
- monotone' : monotone self.to_monoid_hom.to_fun
α →*o β
is the type of functions α → β
that preserve the ordered_comm_monoid
structure.
order_monoid_hom
is also used for ordered group homomorphisms.
When possible, instead of parametrizing results over (f : α →*o β)
,
you should parametrize over (F : Type*) [order_monoid_hom_class F α β] (f : F)
.
When you extend this structure, make sure to extend order_monoid_hom_class
.
Instances for order_monoid_hom
- coe : F → Π (a : α), (λ (_x : α), β) a
- coe_injective' : function.injective order_monoid_hom_class.coe
- map_mul : ∀ (f : F) (x y : α), ⇑f (x * y) = ⇑f x * ⇑f y
- map_one : ∀ (f : F), ⇑f 1 = 1
- monotone : ∀ (f : F), monotone ⇑f
order_monoid_hom_class F α β
states that F
is a type of ordered monoid homomorphisms.
You should also extend this typeclass when you extend order_monoid_hom
.
Instances of this typeclass
Instances of other typeclasses for order_monoid_hom_class
- order_monoid_hom_class.has_sizeof_inst
Equations
- order_add_monoid_hom_class.to_order_hom_class = {coe := order_add_monoid_hom_class.coe _inst_5, coe_injective' := _, map_rel := _}
Equations
- order_monoid_hom_class.to_order_hom_class = {coe := order_monoid_hom_class.coe _inst_5, coe_injective' := _, map_rel := _}
- to_monoid_with_zero_hom : α →*₀ β
- monotone' : monotone self.to_monoid_with_zero_hom.to_fun
order_monoid_with_zero_hom α β
is the type of functions α → β
that preserve
the monoid_with_zero
structure.
order_monoid_with_zero_hom
is also used for group homomorphisms.
When possible, instead of parametrizing results over (f : α →+ β)
,
you should parametrize over (F : Type*) [order_monoid_with_zero_hom_class F α β] (f : F)
.
When you extend this structure, make sure to extend order_monoid_with_zero_hom_class
.
Instances for order_monoid_with_zero_hom
- coe : F → Π (a : α), (λ (_x : α), β) a
- coe_injective' : function.injective order_monoid_with_zero_hom_class.coe
- map_mul : ∀ (f : F) (x y : α), ⇑f (x * y) = ⇑f x * ⇑f y
- map_one : ∀ (f : F), ⇑f 1 = 1
- map_zero : ∀ (f : F), ⇑f 0 = 0
- monotone : ∀ (f : F), monotone ⇑f
order_monoid_with_zero_hom_class F α β
states that F
is a type of
ordered monoid with zero homomorphisms.
You should also extend this typeclass when you extend order_monoid_with_zero_hom
.
Instances of this typeclass
Instances of other typeclasses for order_monoid_with_zero_hom_class
- order_monoid_with_zero_hom_class.has_sizeof_inst
Equations
- order_monoid_with_zero_hom_class.to_order_monoid_hom_class = {coe := order_monoid_with_zero_hom_class.coe _inst_5, coe_injective' := _, map_mul := _, map_one := _, monotone := _}
Equations
- order_add_monoid_hom.order_add_monoid_hom_class = {coe := λ (f : α →+o β), f.to_add_monoid_hom.to_fun, coe_injective' := _, map_add := _, map_zero := _, monotone := _}
Equations
- order_monoid_hom.order_monoid_hom_class = {coe := λ (f : α →*o β), f.to_monoid_hom.to_fun, coe_injective' := _, map_mul := _, map_one := _, monotone := _}
Helper instance for when there's too many metavariables to apply
fun_like.has_coe_to_fun
directly.
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Reinterpret an ordered additive monoid homomorphism as an order homomorphism.
Equations
- f.to_order_hom = {to_fun := f.to_add_monoid_hom.to_fun, monotone' := _}
Reinterpret an ordered monoid homomorphism as an order homomorphism.
Equations
- f.to_order_hom = {to_fun := f.to_monoid_hom.to_fun, monotone' := _}
Copy of an order_monoid_hom
with a new to_fun
equal to the old one. Useful to fix
definitional equalities.
Copy of an order_monoid_hom
with a new to_fun
equal to the old one. Useful to fix
definitional equalities.
The identity map as an ordered additive monoid homomorphism.
Equations
- order_add_monoid_hom.id α = {to_add_monoid_hom := {to_fun := (add_monoid_hom.id α).to_fun, map_zero' := _, map_add' := _}, monotone' := _}
The identity map as an ordered monoid homomorphism.
Equations
- order_monoid_hom.id α = {to_monoid_hom := {to_fun := (monoid_hom.id α).to_fun, map_one' := _, map_mul' := _}, monotone' := _}
Equations
- order_add_monoid_hom.inhabited α = {default := order_add_monoid_hom.id α _inst_5}
Equations
- order_monoid_hom.inhabited α = {default := order_monoid_hom.id α _inst_5}
Composition of order_add_monoid_hom
s as an order_add_monoid_hom
Composition of order_monoid_hom
s as an order_monoid_hom
.
1
is the homomorphism sending all elements to 1
.
1
is the homomorphism sending all elements to 1
.
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
- order_add_monoid_hom.mk' f hf map_mul = {to_add_monoid_hom := {to_fun := (add_monoid_hom.mk' f map_mul).to_fun, map_zero' := _, map_add' := _}, monotone' := hf}
Makes an ordered group homomorphism from a proof that the map preserves multiplication.
Equations
- order_monoid_hom.mk' f hf map_mul = {to_monoid_hom := {to_fun := (monoid_hom.mk' f map_mul).to_fun, map_one' := _, map_mul' := _}, monotone' := hf}
Equations
- order_monoid_with_zero_hom.order_monoid_with_zero_hom_class = {coe := λ (f : α →*₀o β), f.to_monoid_with_zero_hom.to_fun, coe_injective' := _, map_mul := _, map_one := _, map_zero := _, monotone := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Reinterpret an ordered monoid with zero homomorphism as an order monoid homomorphism.
Equations
- f.to_order_monoid_hom = {to_monoid_hom := {to_fun := f.to_monoid_with_zero_hom.to_fun, map_one' := _, map_mul' := _}, monotone' := _}
Copy of an order_monoid_with_zero_hom
with a new to_fun
equal to the old one. Useful to fix
definitional equalities.
The identity map as an ordered monoid with zero homomorphism.
Equations
- order_monoid_with_zero_hom.id α = {to_monoid_with_zero_hom := {to_fun := (monoid_with_zero_hom.id α).to_fun, map_zero' := _, map_one' := _, map_mul' := _}, monotone' := _}
Equations
- order_monoid_with_zero_hom.inhabited α = {default := order_monoid_with_zero_hom.id α _inst_5}
Composition of order_monoid_with_zero_hom
s as an order_monoid_with_zero_hom
.
For two ordered monoid morphisms f
and g
, their product is the ordered monoid morphism
sending a
to f a * g a
.