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.
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 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.
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.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
OrderAddMonoidHomClass F α β
states that F
is a type of ordered monoid homomorphisms.
You should also extend this typeclass when you extend OrderAddMonoidHom
.
- map_zero : ∀ (f : F), f 0 = 0
- monotone : ∀ (f : F), Monotone ⇑f
An
OrderAddMonoidHom
is a monotone function.
Instances
α →*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.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
OrderMonoidHomClass F α β
states that F
is a type of ordered monoid homomorphisms.
You should also extend this typeclass when you extend OrderMonoidHom
.
- map_one : ∀ (f : F), f 1 = 1
- monotone : ∀ (f : F), Monotone ⇑f
An
OrderMonoidHom
is a monotone function.
Instances
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 β
.
Instances For
Turn an element of a type F
satisfying OrderMonoidHomClass F α β
into an actual
OrderMonoidHom
. This is declared as the default coercion from F
to α →*o β
.
Instances For
Equations
- (_ : OrderHomClass F α β) = (_ : RelHomClass F (fun (x x_1 : α) => x ≤ x_1) fun (x x_1 : β) => x ≤ x_1)
Equations
- (_ : OrderHomClass F α β) = (_ : RelHomClass F (fun (x x_1 : α) => x ≤ x_1) fun (x x_1 : β) => x ≤ x_1)
Any type satisfying OrderAddMonoidHomClass
can be cast into OrderAddMonoidHom
via
OrderAddMonoidHomClass.toOrderAddMonoidHom
Equations
- instCoeTCOrderAddMonoidHom = { coe := OrderAddMonoidHomClass.toOrderAddMonoidHom }
Any type satisfying OrderMonoidHomClass
can be cast into OrderMonoidHom
via
OrderMonoidHomClass.toOrderMonoidHom
.
Equations
- instCoeTCOrderMonoidHom = { 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.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
OrderMonoidWithZeroHomClass F α β
states that F
is a type of
ordered monoid with zero homomorphisms.
You should also extend this typeclass when you extend OrderMonoidWithZeroHom
.
- map_one : ∀ (f : F), f 1 = 1
- map_zero : ∀ (f : F), f 0 = 0
- monotone : ∀ (f : F), Monotone ⇑f
An
OrderMonoidWithZeroHom
is a monotone function.
Instances
Turn an element of a type F
satisfying OrderMonoidWithZeroHomClass F α β
into an actual
OrderMonoidWithZeroHom
. This is declared as the default coercion from F
to α →+*₀o β
.
Instances For
Equations
- (_ : OrderMonoidHomClass F α β) = (_ : OrderMonoidHomClass F α β)
Equations
- instCoeTCOrderMonoidWithZeroHom = { coe := OrderMonoidWithZeroHomClass.toOrderMonoidWithZeroHom }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- (_ : OrderAddMonoidHomClass (α →+o β) α β) = (_ : OrderAddMonoidHomClass (α →+o β) α β)
Equations
- (_ : OrderMonoidHomClass (α →*o β) α β) = (_ : OrderMonoidHomClass (α →*o β) α β)
Reinterpret an ordered additive monoid homomorphism as an order homomorphism.
Equations
- OrderAddMonoidHom.toOrderHom f = { toFun := f.toFun, monotone' := (_ : Monotone f.toFun) }
Instances For
Reinterpret an ordered monoid homomorphism as an order homomorphism.
Equations
- OrderMonoidHom.toOrderHom f = { toFun := f.toFun, monotone' := (_ : Monotone f.toFun) }
Instances For
Copy of an OrderAddMonoidHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Copy of an OrderMonoidHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
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' := (_ : Monotone src_1.toFun) }
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' := (_ : Monotone src_1.toFun) }
Instances For
Equations
- OrderAddMonoidHom.instInhabitedOrderAddMonoidHom α = { default := OrderAddMonoidHom.id α }
Equations
- OrderMonoidHom.instInhabitedOrderMonoidHom α = { default := OrderMonoidHom.id α }
Composition of OrderAddMonoidHom
s as an OrderAddMonoidHom
Equations
- One or more equations did not get rendered due to their size.
Instances For
Composition of OrderMonoidHom
s as an OrderMonoidHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
0
is the homomorphism sending all elements to 0
.
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
.
Equations
- One or more equations did not get rendered due to their size.
For two ordered monoid morphisms f
and g
, their product is the ordered monoid morphism
sending a
to f a * g a
.
Equations
- One or more equations did not get rendered due to their size.
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
- One or more equations did not get rendered due to their size.
Equations
- (_ : OrderMonoidWithZeroHomClass (α →*₀o β) α β) = (_ : OrderMonoidWithZeroHomClass (α →*₀o β) α β)
Reinterpret an ordered monoid with zero homomorphism as an order monoid homomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Copy of an OrderMonoidWithZeroHom
with a new toFun
equal to the old one. Useful to fix
definitional equalities.
Equations
- One or more equations did not get rendered due to their size.
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' := (_ : Monotone src_1.toFun) }
Instances For
Equations
- OrderMonoidWithZeroHom.instInhabitedOrderMonoidWithZeroHom α = { default := OrderMonoidWithZeroHom.id α }
Composition of OrderMonoidWithZeroHom
s as an OrderMonoidWithZeroHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
For two ordered monoid morphisms f
and g
, their product is the ordered monoid morphism
sending a
to f a * g a
.
Equations
- One or more equations did not get rendered due to their size.