# Order preserving maps between large posets
```agda
module order-theory.order-preserving-maps-large-posets where
```
<details><summary>Imports</summary>
```agda
open import foundation.universe-levels
open import order-theory.large-posets
open import order-theory.order-preserving-maps-large-preorders
open import order-theory.similarity-of-elements-large-posets
```
</details>
## Idea
An **order preserving map** between [large posets](order-theory.large-posets.md)
`P` and `Q` consists of a map
```text
f : type-Large-Poset P l1 → type-Large-Poset Q (γ l1)
```
for each [universe level](foundation.universe-levels.md) `l1`, such that `x ≤ y`
implies `f x ≤ f y` for any two elements `x y : P`. The function
`γ : Level → Level` that specifies the universe level of `f x` in terms of the
universe level of `x` is called the **universe level reindexing function** of
the order preserving map `f`.
## Definitions
### The predicate that a map between large posets is order preserving
```agda
module _
{αP αQ : Level → Level} {βP βQ : Level → Level → Level} {γ : Level → Level}
(P : Large-Poset αP βP) (Q : Large-Poset αQ βQ)
where
preserves-order-map-Large-Poset :
({l : Level} → type-Large-Poset P l → type-Large-Poset Q (γ l)) →
UUω
preserves-order-map-Large-Poset =
preserves-order-map-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
```
### The type of order preserving maps between large posets
```agda
module _
{αP αQ : Level → Level} {βP βQ : Level → Level → Level}
(γ : Level → Level)
(P : Large-Poset αP βP) (Q : Large-Poset αQ βQ)
where
hom-Large-Poset : UUω
hom-Large-Poset =
hom-Large-Preorder γ
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
module _
{αP αQ γ : Level → Level} {βP βQ : Level → Level → Level}
(P : Large-Poset αP βP) (Q : Large-Poset αQ βQ) (f : hom-Large-Poset γ P Q)
where
map-hom-Large-Poset :
{l : Level} → type-Large-Poset P l → type-Large-Poset Q (γ l)
map-hom-Large-Poset =
map-hom-Large-Preorder f
preserves-order-hom-Large-Poset :
preserves-order-map-Large-Poset P Q map-hom-Large-Poset
preserves-order-hom-Large-Poset =
preserves-order-hom-Large-Preorder f
```
### The identity order preserving map on a large poset
```agda
module _
{αP : Level → Level} {βP : Level → Level → Level} (P : Large-Poset αP βP)
where
id-hom-Large-Poset : hom-Large-Poset (λ l → l) P P
id-hom-Large-Poset = id-hom-Large-Preorder (large-preorder-Large-Poset P)
```
### Composition of order preserving maps between large posets
```agda
module _
{αP αQ αR γg γf : Level → Level} {βP βQ βR : Level → Level → Level}
(P : Large-Poset αP βP)
(Q : Large-Poset αQ βQ)
(R : Large-Poset αR βR)
(g : hom-Large-Poset γg Q R)
(f : hom-Large-Poset γf P Q)
where
map-comp-hom-Large-Poset :
{l1 : Level} → type-Large-Poset P l1 → type-Large-Poset R (γg (γf l1))
map-comp-hom-Large-Poset =
map-comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( large-preorder-Large-Poset R)
( g)
( f)
preserves-order-comp-hom-Large-Poset :
preserves-order-map-Large-Poset P R map-comp-hom-Large-Poset
preserves-order-comp-hom-Large-Poset =
preserves-order-comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( large-preorder-Large-Poset R)
( g)
( f)
comp-hom-Large-Poset : hom-Large-Poset (λ l → γg (γf l)) P R
comp-hom-Large-Poset =
comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( large-preorder-Large-Poset R)
( g)
( f)
```
### Homotopies of order preserving maps between large posets
Given two order preserving maps `f g : hom-Large-Poset γ P Q` with the same
universe level reindexing `γ`, a **homotopy of order preserving maps** from `f`
to `g` is a pointwise identification of the underlying maps of `f` and `g`.
```agda
module _
{αP αQ γ : Level → Level} {βP βQ : Level → Level → Level}
(P : Large-Poset αP βP) (Q : Large-Poset αQ βQ)
where
htpy-hom-Large-Poset : (f g : hom-Large-Poset γ P Q) → UUω
htpy-hom-Large-Poset =
htpy-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
refl-htpy-hom-Large-Poset :
(f : hom-Large-Poset γ P Q) → htpy-hom-Large-Poset f f
refl-htpy-hom-Large-Poset =
refl-htpy-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
```
## Properties
### Composition of order preserving maps is associative
```agda
module _
{αP αQ αR αS γh γg γf : Level → Level} {βP βQ βR βS : Level → Level → Level}
(P : Large-Poset αP βP)
(Q : Large-Poset αQ βQ)
(R : Large-Poset αR βR)
(S : Large-Poset αS βS)
(h : hom-Large-Poset γh R S)
(g : hom-Large-Poset γg Q R)
(f : hom-Large-Poset γf P Q)
where
associative-comp-hom-Large-Poset :
htpy-hom-Large-Poset P S
( comp-hom-Large-Poset P Q S (comp-hom-Large-Poset Q R S h g) f)
( comp-hom-Large-Poset P R S h (comp-hom-Large-Poset P Q R g f))
associative-comp-hom-Large-Poset =
associative-comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( large-preorder-Large-Poset R)
( large-preorder-Large-Poset S)
( h)
( g)
( f)
```
### Composition of order preserving maps satisfies left and right unit laws
```agda
module _
{αP αQ γf : Level → Level} {βP βQ : Level → Level → Level}
(P : Large-Poset αP βP)
(Q : Large-Poset αQ βQ)
(f : hom-Large-Poset γf P Q)
where
left-unit-law-comp-hom-Large-Poset :
htpy-hom-Large-Poset P Q
( comp-hom-Large-Poset P Q Q (id-hom-Large-Poset Q) f)
( f)
left-unit-law-comp-hom-Large-Poset =
left-unit-law-comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( f)
right-unit-law-comp-hom-Large-Poset :
htpy-hom-Large-Poset P Q
( comp-hom-Large-Poset P P Q f (id-hom-Large-Poset P))
( f)
right-unit-law-comp-hom-Large-Poset =
right-unit-law-comp-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( f)
```
### Order preserving maps preserve similarity of elements
```agda
module _
{αP αQ γf : Level → Level} {βP βQ : Level → Level → Level}
(P : Large-Poset αP βP)
(Q : Large-Poset αQ βQ)
(f : hom-Large-Poset γf P Q)
where
preserves-sim-hom-Large-Poset :
{l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) →
sim-Large-Poset P x y →
sim-Large-Poset Q
( map-hom-Large-Poset P Q f x)
( map-hom-Large-Poset P Q f y)
preserves-sim-hom-Large-Poset =
preserves-sim-hom-Large-Preorder
( large-preorder-Large-Poset P)
( large-preorder-Large-Poset Q)
( f)
```
## See also
- [Order preserving maps](order-theory.order-preserving-maps-large-posets.md)
between large posets
- [Similarity](order-theory.similarity-of-order-preserving-maps-large-posets.md)
of order preserving maps between large posets