Join preserving maps between posets
Content created by Fredrik Bakke.
Created on 2024-11-20.
Last modified on 2024-11-20.
module order-theory.join-preserving-maps-posets where
Imports
open import foundation.booleans open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.evaluation-functions open import foundation.function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.homotopies open import foundation.homotopy-induction open import foundation.identity-types open import foundation.propositions open import foundation.raising-universe-levels open import foundation.small-types open import foundation.strictly-involutive-identity-types open import foundation.subtype-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels open import order-theory.least-upper-bounds-posets open import order-theory.order-preserving-maps-posets open import order-theory.posets
Idea
A map f : P → Q
between the underlying types of two
posets is said to be
join preserving¶
if for every pair of elements x, y : P
with a
least upper bound z
, we have
f z
is the least upper bound of f x
and f y
.
Definitions
The predicate of preserving a join
module _ {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) (f : type-Poset P → type-Poset Q) (x y : type-Poset P) where preserves-join-Poset : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) preserves-join-Poset = (s : has-least-binary-upper-bound-Poset P x y) → is-least-binary-upper-bound-Poset Q (f x) (f y) (f (pr1 s)) is-prop-preserves-join-Poset : is-prop preserves-join-Poset is-prop-preserves-join-Poset = is-prop-Π ( λ s → is-prop-is-least-binary-upper-bound-Poset Q ( f x) ( f y) ( f (pr1 s))) preserves-join-prop-Poset : Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) preserves-join-prop-Poset = preserves-join-Poset , is-prop-preserves-join-Poset
Join preserving maps
module _ {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) where preserves-joins-Poset : (type-Poset P → type-Poset Q) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) preserves-joins-Poset f = (x y : type-Poset P) (s : has-least-binary-upper-bound-Poset P x y) → is-least-binary-upper-bound-Poset Q (f x) (f y) (f (pr1 s)) is-prop-preserves-joins-Poset : (f : type-Poset P → type-Poset Q) → is-prop (preserves-joins-Poset f) is-prop-preserves-joins-Poset f = is-prop-Π ( λ x → is-prop-Π (is-prop-preserves-join-Poset P Q f x)) preserves-joins-prop-Poset : (type-Poset P → type-Poset Q) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) preserves-joins-prop-Poset f = ( preserves-joins-Poset f , is-prop-preserves-joins-Poset f) join-preserving-hom-Poset : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) join-preserving-hom-Poset = Σ (type-Poset P → type-Poset Q) (preserves-joins-Poset) map-join-preserving-hom-Poset : join-preserving-hom-Poset → type-Poset P → type-Poset Q map-join-preserving-hom-Poset = pr1 preserves-joins-join-preserving-hom-Poset : (f : join-preserving-hom-Poset) → preserves-joins-Poset (map-join-preserving-hom-Poset f) preserves-joins-join-preserving-hom-Poset = pr2 sup-map-join-preserving-hom-Poset : (f : join-preserving-hom-Poset) {x y : type-Poset P} → has-least-binary-upper-bound-Poset P x y → has-least-binary-upper-bound-Poset Q ( map-join-preserving-hom-Poset f x) ( map-join-preserving-hom-Poset f y) sup-map-join-preserving-hom-Poset f {x} {y} s = ( map-join-preserving-hom-Poset f (pr1 s) , preserves-joins-join-preserving-hom-Poset f x y s)
Properties
Join preserving maps preserve order
module _ {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) where abstract preserves-order-preserves-joins-Poset : {f : type-Poset P → type-Poset Q} → preserves-joins-Poset P Q f → preserves-order-Poset P Q f preserves-order-preserves-joins-Poset {f} H x y p = pr1 ( pr2 ( H x y (y , is-least-binary-upper-bound-leq-Poset P x y p) (f y)) ( refl-leq-Poset Q (f y)))
Homotopies of join preserving maps
module _ {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) where htpy-join-preserving-hom-Poset : (f g : join-preserving-hom-Poset P Q) → UU (l1 ⊔ l3) htpy-join-preserving-hom-Poset f g = map-join-preserving-hom-Poset P Q f ~ map-join-preserving-hom-Poset P Q g refl-htpy-join-preserving-hom-Poset : (f : join-preserving-hom-Poset P Q) → htpy-join-preserving-hom-Poset f f refl-htpy-join-preserving-hom-Poset f = refl-htpy htpy-eq-join-preserving-hom-Poset : (f g : join-preserving-hom-Poset P Q) → f = g → htpy-join-preserving-hom-Poset f g htpy-eq-join-preserving-hom-Poset f .f refl = refl-htpy-join-preserving-hom-Poset f is-torsorial-htpy-join-preserving-hom-Poset : (f : join-preserving-hom-Poset P Q) → is-torsorial (htpy-join-preserving-hom-Poset f) is-torsorial-htpy-join-preserving-hom-Poset f = is-torsorial-Eq-subtype ( is-torsorial-htpy (map-join-preserving-hom-Poset P Q f)) ( is-prop-preserves-joins-Poset P Q) ( map-join-preserving-hom-Poset P Q f) ( refl-htpy) ( preserves-joins-join-preserving-hom-Poset P Q f) is-equiv-htpy-eq-join-preserving-hom-Poset : (f g : join-preserving-hom-Poset P Q) → is-equiv (htpy-eq-join-preserving-hom-Poset f g) is-equiv-htpy-eq-join-preserving-hom-Poset f = fundamental-theorem-id ( is-torsorial-htpy-join-preserving-hom-Poset f) ( htpy-eq-join-preserving-hom-Poset f) extensionality-join-preserving-hom-Poset : (f g : join-preserving-hom-Poset P Q) → (f = g) ≃ htpy-join-preserving-hom-Poset f g pr1 (extensionality-join-preserving-hom-Poset f g) = htpy-eq-join-preserving-hom-Poset f g pr2 (extensionality-join-preserving-hom-Poset f g) = is-equiv-htpy-eq-join-preserving-hom-Poset f g eq-htpy-join-preserving-hom-Poset : (f g : join-preserving-hom-Poset P Q) → htpy-join-preserving-hom-Poset f g → f = g eq-htpy-join-preserving-hom-Poset f g = map-inv-is-equiv (is-equiv-htpy-eq-join-preserving-hom-Poset f g)
The identity join preserving map
module _ {l1 l2 : Level} (P : Poset l1 l2) where preserves-joins-id-hom-Poset : preserves-joins-Poset P P (id {A = type-Poset P}) preserves-joins-id-hom-Poset x y s = pr2 s id-join-preserving-hom-Poset : join-preserving-hom-Poset P P id-join-preserving-hom-Poset = id , preserves-joins-id-hom-Poset
Composing join preserving maps
module _ {l1 l2 l3 l4 l5 l6 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) (R : Poset l5 l6) where preserves-joins-comp-join-preserving-hom-Poset : (g : join-preserving-hom-Poset Q R) (f : join-preserving-hom-Poset P Q) → preserves-joins-Poset P R ( map-join-preserving-hom-Poset Q R g ∘ map-join-preserving-hom-Poset P Q f) preserves-joins-comp-join-preserving-hom-Poset g f x y s = preserves-joins-join-preserving-hom-Poset Q R g ( map-join-preserving-hom-Poset P Q f x) ( map-join-preserving-hom-Poset P Q f y) ( sup-map-join-preserving-hom-Poset P Q f s) comp-join-preserving-hom-Poset : (g : join-preserving-hom-Poset Q R) (f : join-preserving-hom-Poset P Q) → join-preserving-hom-Poset P R comp-join-preserving-hom-Poset g f = map-join-preserving-hom-Poset Q R g ∘ map-join-preserving-hom-Poset P Q f , preserves-joins-comp-join-preserving-hom-Poset g f
Unit laws for composition of join preserving maps
module _ {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) where left-unit-law-comp-join-preserving-hom-Poset : (f : join-preserving-hom-Poset P Q) → comp-join-preserving-hom-Poset P Q Q (id-join-preserving-hom-Poset Q) f = f left-unit-law-comp-join-preserving-hom-Poset f = eq-htpy-join-preserving-hom-Poset P Q ( comp-join-preserving-hom-Poset P Q Q (id-join-preserving-hom-Poset Q) f) ( f) ( refl-htpy) right-unit-law-comp-join-preserving-hom-Poset : (f : join-preserving-hom-Poset P Q) → comp-join-preserving-hom-Poset P P Q f (id-join-preserving-hom-Poset P) = f right-unit-law-comp-join-preserving-hom-Poset f = eq-htpy-join-preserving-hom-Poset P Q ( comp-join-preserving-hom-Poset P P Q f (id-join-preserving-hom-Poset P)) ( f) ( refl-htpy)
Associativity of composition of join preserving maps
module _ {l1 l2 l3 l4 l5 l6 l7 l8 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) (R : Poset l5 l6) (S : Poset l7 l8) (h : join-preserving-hom-Poset R S) (g : join-preserving-hom-Poset Q R) (f : join-preserving-hom-Poset P Q) where associative-comp-join-preserving-hom-Poset : comp-join-preserving-hom-Poset P Q S ( comp-join-preserving-hom-Poset Q R S h g) ( f) = comp-join-preserving-hom-Poset P R S ( h) ( comp-join-preserving-hom-Poset P Q R g f) associative-comp-join-preserving-hom-Poset = eq-htpy-join-preserving-hom-Poset P S ( comp-join-preserving-hom-Poset P Q S ( comp-join-preserving-hom-Poset Q R S h g) ( f)) ( comp-join-preserving-hom-Poset P R S ( h) ( comp-join-preserving-hom-Poset P Q R g f)) ( refl-htpy) involutive-eq-associative-comp-join-preserving-hom-Poset : comp-join-preserving-hom-Poset P Q S ( comp-join-preserving-hom-Poset Q R S h g) ( f) =ⁱ comp-join-preserving-hom-Poset P R S ( h) ( comp-join-preserving-hom-Poset P Q R g f) involutive-eq-associative-comp-join-preserving-hom-Poset = involutive-eq-eq associative-comp-join-preserving-hom-Poset
Recent changes
- 2024-11-20. Fredrik Bakke. Two fixed point theorems (#1227).