Order homomorphisms #
This file defines order homomorphisms, which are bundled monotone functions. A preorder
homomorphism f : α →o β
is a function α → β
along with a proof that ∀ x y, x ≤ y → f x ≤ f y
.
Main definitions #
In this file we define the following bundled monotone maps:
OrderHom α β
a.k.a.α →o β
: Preorder homomorphism. AnOrderHom α β
is a functionf : α → β
such thata₁ ≤ a₂ → f a₁ ≤ f a₂
OrderEmbedding α β
a.k.a.α ↪o β
: Relation embedding. AnOrderEmbedding α β
is an embeddingf : α ↪ β
such thata ≤ b ↔ f a ≤ f b
. Defined as an abbreviation of@RelEmbedding α β (≤) (≤)
.OrderIso
: Relation isomorphism. AnOrderIso α β
is an equivalencef : α ≃ β
such thata ≤ b ↔ f a ≤ f b
. Defined as an abbreviation of@RelIso α β (≤) (≤)
.
We also define many OrderHom
s. In some cases we define two versions, one with ₘ
suffix and
one without it (e.g., OrderHom.compₘ
and OrderHom.comp
). This means that the former
function is a "more bundled" version of the latter. We can't just drop the "less bundled" version
because the more bundled version usually does not work with dot notation.
OrderHom.id
: identity map asα →o α
;OrderHom.curry
: an order isomorphism betweenα × β →o γ
andα →o β →o γ
;OrderHom.comp
: composition of two bundled monotone maps;OrderHom.compₘ
: composition of bundled monotone maps as a bundled monotone map;OrderHom.const
: constant function as a bundled monotone map;OrderHom.prod
: combineα →o β
andα →o γ
intoα →o β × γ
;OrderHom.prodₘ
: a more bundled version ofOrderHom.prod
;OrderHom.prodIso
: order isomorphism betweenα →o β × γ
and(α →o β) × (α →o γ)
;OrderHom.diag
: diagonal embedding ofα
intoα × α
as a bundled monotone map;OrderHom.onDiag
: restrict a monotone mapα →o α →o β
to the diagonal;OrderHom.fst
: projectionProd.fst : α × β → α
as a bundled monotone map;OrderHom.snd
: projectionProd.snd : α × β → β
as a bundled monotone map;OrderHom.prodMap
:prod.map f g
as a bundled monotone map;Pi.evalOrderHom
: evaluation of a function at a pointFunction.eval i
as a bundled monotone map;OrderHom.coeFnHom
: coercion to function as a bundled monotone map;OrderHom.apply
: application of anOrderHom
at a point as a bundled monotone map;OrderHom.pi
: combine a family of monotone mapsf i : α →o π i
into a monotone mapα →o Π i, π i
;OrderHom.piIso
: order isomorphism betweenα →o Π i, π i
andΠ i, α →o π i
;OrderHom.subtype.val
: embeddingSubtype.val : Subtype p → α
as a bundled monotone map;OrderHom.dual
: reinterpret a monotone mapα →o β
as a monotone mapαᵒᵈ →o βᵒᵈ
;OrderHom.dualIso
: order isomorphism betweenα →o β
and(αᵒᵈ →o βᵒᵈ)ᵒᵈ
;OrderHom.compl
: order isomorphismα ≃o αᵒᵈ
given by taking complements in a boolean algebra;
We also define two functions to convert other bundled maps to α →o β
:
OrderEmbedding.toOrderHom
: convertα ↪o β
toα →o β
;RelHom.toOrderHom
: convert aRelHom
between strict orders to anOrderHom
.
Tags #
monotone map, bundled morphism
Notation for an OrderHom
.
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
An order embedding is an embedding f : α ↪ β
such that a ≤ b ↔ (f a) ≤ (f b)
.
This definition is an abbreviation of RelEmbedding (≤) (≤)
.
Instances For
Notation for an OrderEmbedding
.
Equations
- «term_↪o_» = Lean.ParserDescr.trailingNode `term_↪o_ 25 25 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ↪o ") (Lean.ParserDescr.cat `term 26))
Instances For
An order isomorphism is an equivalence such that a ≤ b ↔ (f a) ≤ (f b)
.
This definition is an abbreviation of RelIso (≤) (≤)
.
Instances For
Notation for an OrderIso
.
Equations
- «term_≃o_» = Lean.ParserDescr.trailingNode `term_≃o_ 25 25 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≃o ") (Lean.ParserDescr.cat `term 26))
Instances For
OrderHomClass F α b
asserts that F
is a type of ≤
-preserving morphisms.
Equations
- OrderHomClass F α β = RelHomClass F (fun x x_1 => x ≤ x_1) fun x x_1 => x ≤ x_1
Instances For
- coe : F → α → β
- inv : F → β → α
- left_inv : ∀ (e : F), Function.LeftInverse (EquivLike.inv e) (EquivLike.coe e)
- right_inv : ∀ (e : F), Function.RightInverse (EquivLike.inv e) (EquivLike.coe e)
- coe_injective' : ∀ (e g : F), EquivLike.coe e = EquivLike.coe g → EquivLike.inv e = EquivLike.inv g → e = g
An order isomorphism respects
≤
.
OrderIsoClass F α β
states that F
is a type of order isomorphisms.
You should extend this class when you extend OrderIso
.
Instances
Turn an element of a type F
satisfying OrderIsoClass F α β
into an actual
OrderIso
. This is declared as the default coercion from F
to α ≃o β
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any type satisfying OrderIsoClass
can be cast into OrderIso
via
OrderIsoClass.toOrderIso
.
Equations
- instCoeTCOrderIso = { coe := OrderIsoClass.toOrderIso }
Equations
- OrderIsoClass.toOrderHomClass = let src := EquivLike.toEmbeddingLike; RelHomClass.mk (_ : ∀ (f : F) (x x_1 : α), x ≤ x_1 → ↑f x ≤ ↑f x_1)
Turn an element of a type F
satisfying OrderHomClass F α β
into an actual
OrderHom
. This is declared as the default coercion from F
to α →o β
.
Instances For
Any type satisfying OrderHomClass
can be cast into OrderHom
via
OrderHomClass.toOrderHom
.
Equations
- OrderHomClass.instCoeTCOrderHom = { coe := OrderHomClass.toOrderHom }
Equations
- OrderHom.instOrderHomClassOrderHomToLEToLE = RelHomClass.mk (_ : ∀ (f : α →o β) (x x_1 : α), x ≤ x_1 → OrderHom.toFun f x ≤ OrderHom.toFun f x_1)
See Note [custom simps projection]. We give this manually so that we use toFun
as the
projection directly instead.
Equations
- OrderHom.Simps.coe f = ↑f
Instances For
One can lift an unbundled monotone function to a bundled one.
Equations
Copy of an OrderHom
with a new toFun
equal to the old one. Useful to fix definitional
equalities.
Equations
- OrderHom.copy f f' h = { toFun := f', monotone' := (_ : Monotone f') }
Instances For
The preorder structure of α →o β
is pointwise inequality: f ≤ g ↔ ∀ a, f a ≤ g a
.
Equations
- OrderHom.instPreorderOrderHom = Preorder.lift OrderHom.toFun
Equations
- OrderHom.instPartialOrderOrderHomToPreorder = PartialOrder.lift OrderHom.toFun (_ : ∀ (f g : α →o β), ↑f = ↑g → f = g)
Given two bundled monotone maps f
, g
, f.prod g
is the map x ↦ (f x, g x)
bundled as a
OrderHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given two bundled monotone maps f
, g
, f.prod g
is the map x ↦ (f x, g x)
bundled as a
OrderHom
. This is a fully bundled version.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Diagonal embedding of α
into α × α
as an OrderHom
.
Equations
- OrderHom.diag = OrderHom.prod OrderHom.id OrderHom.id
Instances For
Restriction of f : α →o α →o β
to the diagonal.
Equations
- OrderHom.onDiag f = OrderHom.comp (↑(RelIso.symm OrderHom.curry) f) OrderHom.diag
Instances For
Order isomorphism between the space of monotone maps to β × γ
and the product of the spaces
of monotone maps to β
and γ
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluation of an unbundled function at a point (Function.eval
) as an OrderHom
.
Equations
- Pi.evalOrderHom i = { toFun := Function.eval i, monotone' := (_ : Monotone (Function.eval i)) }
Instances For
The "forgetful functor" from α →o β
to α → β
that takes the underlying function,
is monotone.
Equations
Instances For
Function application fun f => f a
(for fixed a
) is a monotone function from the
monotone function space α →o β
to β
. See also Pi.evalOrderHom
.
Equations
- OrderHom.apply x = OrderHom.comp (Pi.evalOrderHom x) OrderHom.coeFnHom
Instances For
Construct a bundled monotone map α →o Π i, π i
from a family of monotone maps
f i : α →o π i
.
Equations
- OrderHom.pi f = { toFun := fun x i => ↑(f i) x, monotone' := (_ : ∀ (x x_1 : α), x ≤ x_1 → ∀ (i : ι), ↑(f i) x ≤ ↑(f i) x_1) }
Instances For
Order isomorphism between bundled monotone maps α →o Π i, π i
and families of bundled monotone
maps Π i, α →o π i
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Subtype.val
as a bundled monotone function.
Equations
- OrderHom.Subtype.val p = { toFun := Subtype.val, monotone' := (_ : ∀ (x x_1 : Subtype p), x ≤ x_1 → x ≤ x_1) }
Instances For
Subtype.impEmbedding
as an order embedding.
Equations
- One or more equations did not get rendered due to their size.
Instances For
There is a unique monotone map from a subsingleton to itself.
Lift an order homomorphism f : α →o β
to an order homomorphism WithBot α →o WithBot β
.
Equations
- OrderHom.withBotMap f = { toFun := WithBot.map ↑f, monotone' := (_ : Monotone (WithBot.map ↑f)) }
Instances For
Lift an order homomorphism f : α →o β
to an order homomorphism WithTop α →o WithTop β
.
Equations
- OrderHom.withTopMap f = { toFun := WithTop.map ↑f, monotone' := (_ : Monotone (WithTop.map ↑f)) }
Instances For
Embeddings of partial orders that preserve <
also preserve ≤
.
Equations
- RelEmbedding.orderEmbeddingOfLTEmbedding f = { toEmbedding := f.toEmbedding, map_rel_iff' := (_ : ∀ {a b : α}, ↑f a ≤ ↑f b ↔ a ≤ b) }
Instances For
A preorder which embeds into a well-founded preorder is itself well-founded.
A preorder which embeds into a preorder in which (· > ·)
is well-founded
also has (· > ·)
well-founded.
To define an order embedding from a partial order to a preorder it suffices to give a function
together with a proof that it satisfies f a ≤ f b ↔ a ≤ b
.
Equations
Instances For
A strictly monotone map from a linear order is an order embedding.
Equations
- OrderEmbedding.ofStrictMono f h = OrderEmbedding.ofMapLEIff f (_ : ∀ (x x_1 : α), f x ≤ f x_1 ↔ x ≤ x_1)
Instances For
Embedding of a subtype into the ambient type as an OrderEmbedding
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Convert an OrderEmbedding
to an OrderHom
.
Equations
- OrderEmbedding.toOrderHom f = { toFun := ↑f, monotone' := (_ : Monotone ↑f) }
Instances For
A bundled expression of the fact that a map between partial orders that is strictly monotone is weakly monotone.
Equations
- RelHom.toOrderHom f = { toFun := ↑f, monotone' := (_ : Monotone ↑f) }
Instances For
Reinterpret an order isomorphism as an order embedding.
Equations
Instances For
Identity order isomorphism.
Equations
- OrderIso.refl α = RelIso.refl fun x x_1 => x ≤ x_1
Instances For
Inverse of an order isomorphism.
Equations
Instances For
Composition of two order isomorphisms is an order isomorphism.
Equations
- OrderIso.trans e e' = RelIso.trans e e'
Instances For
The order isomorphism between a type and its double dual.
Equations
Instances For
Converts a RelIso (<) (<)
into an OrderIso
.
Equations
- OrderIso.ofRelIsoLT e = { toEquiv := e.toEquiv, map_rel_iff' := (_ : ∀ (a a_1 : α), ↑e a ≤ ↑e a_1 ↔ a ≤ a_1) }
Instances For
To show that f : α → β
, g : β → α
make up an order isomorphism of linear orders,
it suffices to prove cmp a (g b) = cmp (f a) b
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
To show that f : α →o β
and g : β →o α
make up an order isomorphism it is enough to show
that g
is the inverse of f
Equations
- One or more equations did not get rendered due to their size.
Instances For
Order isomorphism between α → β
and β
, where α
has a unique element.
Equations
- OrderIso.funUnique α β = { toEquiv := Equiv.funUnique α β, map_rel_iff' := (_ : ∀ (a a_1 : α → β), a default ≤ a_1 default ↔ a ≤ a_1) }
Instances For
If e
is an equivalence with monotone forward and inverse maps, then e
is an
order isomorphism.
Equations
- Equiv.toOrderIso e h₁ h₂ = { toEquiv := e, map_rel_iff' := (_ : ∀ {a b : α}, ↑e a ≤ ↑e b ↔ a ≤ b) }
Instances For
A strictly monotone function with a right inverse is an order isomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Note that this goal could also be stated (Disjoint on f) a b
Note that this goal could also be stated (Codisjoint on f) a b
Taking the dual then adding ⊥
is the same as adding ⊤
then taking the dual.
This is the order iso form of WithBot.ofDual
, as proven by coe_toDualTopEquiv_eq
.
Equations
- WithBot.toDualTopEquiv = OrderIso.refl (WithBot αᵒᵈ)
Instances For
Taking the dual then adding ⊤
is the same as adding ⊥
then taking the dual.
This is the order iso form of WithTop.ofDual
, as proven by coe_toDualBotEquiv_eq
.
Equations
- WithTop.toDualBotEquiv = OrderIso.refl (WithTop αᵒᵈ)
Instances For
A version of Equiv.optionCongr
for WithTop
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A version of Equiv.optionCongr
for WithBot
.
Equations
- One or more equations did not get rendered due to their size.