Tom de Jong, late February - early March 2020.
Jan - Mar 2022: Some additions, most notably on embeddings.
We define the way-below relation and the notion of a compact element in a
directed complete poset.
Contents
* Basic properties of the way-below relation and its interaction with the order.
* Definition of a compact element as an element that is way below itself.
* The compact elements are closed under existing finite joins.
* In an embedding-projection pair, the embedding preserves and reflects the
way-below relation, and hence, compact elements.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
module DomainTheory.Basics.WayBelow
(pt : propositional-truncations-exist)
(fe : Fun-Ext)
(๐ฅ : Universe)
where
open PropositionalTruncation pt
open import UF.Equiv
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import DomainTheory.Basics.Dcpo pt fe ๐ฅ
open import DomainTheory.Basics.Miscelanea pt fe ๐ฅ
way-below : (๐ : DCPO {๐ค} {๐ฃ}) โ โจ ๐ โฉ โ โจ ๐ โฉ โ ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ
way-below ๐ x y = (I : ๐ฅ ฬ ) (ฮฑ : I โ โจ ๐ โฉ) (ฮด : is-Directed ๐ ฮฑ)
โ y โโจ ๐ โฉ โ ๐ ฮด
โ โ i ๊ I , x โโจ ๐ โฉ ฮฑ i
is-way-upperbound : (๐ : DCPO {๐ค} {๐ฃ}) {I : ๐ฅ ฬ } (x : โจ ๐ โฉ) (ฮฑ : I โ โจ ๐ โฉ)
โ ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ
is-way-upperbound ๐ {I} x ฮฑ = (i : I) โ ฮฑ i โชโจ ๐ โฉ x
syntax way-below ๐ x y = x โชโจ ๐ โฉ y
โช-to-โ : (๐ : DCPO {๐ค} {๐ฃ}) {x y : โจ ๐ โฉ} โ x โชโจ ๐ โฉ y โ x โโจ ๐ โฉ y
โช-to-โ ๐ {x} {y} u = โฅโฅ-rec (prop-valuedness ๐ x y) ฮณ g
where
ฮฑ : ๐{๐ฅ} โ โจ ๐ โฉ
ฮฑ โ = y
ฮณ : (ฮฃ i ๊ ๐ , x โโจ ๐ โฉ ฮฑ i) โ x โโจ ๐ โฉ y
ฮณ (โ , l) = l
g : โ i ๊ ๐ , x โโจ ๐ โฉ ฮฑ i
g = u ๐ ฮฑ ฮด (โ-is-upperbound ๐ ฮด โ)
where
ฮด : is-Directed ๐ ฮฑ
ฮด = (โฃ โ โฃ , ฮต)
where
ฮต : (i j : ๐)
โ โ k ๊ ๐ , ฮฑ i โโจ ๐ โฉ ฮฑ k ร ฮฑ j โโจ ๐ โฉ ฮฑ k
ฮต โ โ = โฃ โ , reflexivity ๐ y , reflexivity ๐ y โฃ
โ-โช-โ-to-โช : (๐ : DCPO {๐ค} {๐ฃ}) {a b c d : โจ ๐ โฉ}
โ a โโจ ๐ โฉ b
โ b โชโจ ๐ โฉ c
โ c โโจ ๐ โฉ d
โ a โชโจ ๐ โฉ d
โ-โช-โ-to-โช ๐ {a} {b} {c} {d} lโ u lโ I ฮฑ ฮด m = ฮณ
where
ฮณ : โ i ๊ I , a โโจ ๐ โฉ ฮฑ i
ฮณ = โฅโฅ-functor g h
where
g : (ฮฃ i ๊ I , b โโจ ๐ โฉ ฮฑ i)
โ (ฮฃ i ๊ I , a โโจ ๐ โฉ ฮฑ i)
g (i , u) = (i , v)
where
v = a โโจ ๐ โฉ[ lโ ]
b โโจ ๐ โฉ[ u ]
ฮฑ i โโจ ๐ โฉ
h : โ i ๊ I , b โโจ ๐ โฉ ฮฑ i
h = u I ฮฑ ฮด l
where
l = c โโจ ๐ โฉ[ lโ ]
d โโจ ๐ โฉ[ m ]
โ ๐ ฮด โโจ ๐ โฉ
โ-โช-to-โช : (๐ : DCPO {๐ค} {๐ฃ}) {x y z : โจ ๐ โฉ}
โ x โโจ ๐ โฉ y
โ y โชโจ ๐ โฉ z
โ x โชโจ ๐ โฉ z
โ-โช-to-โช ๐ {x} {y} {z} l u = โ-โช-โ-to-โช ๐ l u (reflexivity ๐ z)
โช-โ-to-โช : (๐ : DCPO {๐ค} {๐ฃ}) {x y z : โจ ๐ โฉ}
โ x โชโจ ๐ โฉ y
โ y โโจ ๐ โฉ z
โ x โชโจ ๐ โฉ z
โช-โ-to-โช ๐ {x} {y} {z} = โ-โช-โ-to-โช ๐ (reflexivity ๐ x)
โช-is-prop-valued : (๐ : DCPO {๐ค} {๐ฃ}) {x y : โจ ๐ โฉ} โ is-prop (x โชโจ ๐ โฉ y)
โช-is-prop-valued ๐ = ฮ โ-is-prop fe (ฮป I ฮฑ ฮด u โ โฅโฅ-is-prop)
โช-is-antisymmetric : (๐ : DCPO {๐ค} {๐ฃ}) {x y : โจ ๐ โฉ}
โ x โชโจ ๐ โฉ y โ y โชโจ ๐ โฉ x โ x ๏ผ y
โช-is-antisymmetric ๐ {x} {y} u v =
antisymmetry ๐ x y (โช-to-โ ๐ u) (โช-to-โ ๐ v)
โช-is-transitive : (๐ : DCPO {๐ค} {๐ฃ}) {x y z : โจ ๐ โฉ}
โ x โชโจ ๐ โฉ y โ y โชโจ ๐ โฉ z โ x โชโจ ๐ โฉ z
โช-is-transitive ๐ {x} {y} {z} u v I ฮฑ ฮด l = u I ฮฑ ฮด k
where
k = y โโจ ๐ โฉ[ โช-to-โ ๐ v ]
z โโจ ๐ โฉ[ l ]
โ ๐ ฮด โโจ ๐ โฉ
\end{code}
An element is called compact if it way below itself.
\begin{code}
is-compact : (๐ : DCPO {๐ค} {๐ฃ}) โ โจ ๐ โฉ โ ๐ฅ โบ โ ๐ค โ ๐ฃ ฬ
is-compact ๐ x = x โชโจ ๐ โฉ x
being-compact-is-prop : (๐ : DCPO {๐ค} {๐ฃ}) (x : โจ ๐ โฉ)
โ is-prop (is-compact ๐ x)
being-compact-is-prop ๐ x = โช-is-prop-valued ๐
compact-โ-โ-โช : (๐ : DCPO {๐ค} {๐ฃ}) {x : โจ ๐ โฉ}
โ is-compact ๐ x
โ {y : โจ ๐ โฉ}
โ (x โโจ ๐ โฉ y) โ (x โชโจ ๐ โฉ y)
compact-โ-โ-โช ๐ {x} c {y} =
logically-equivalent-props-are-equivalent
(prop-valuedness ๐ x y) (โช-is-prop-valued ๐)
(โช-โ-to-โช ๐ c)
(โช-to-โ ๐)
\end{code}
The compact elements are closed under existing finite joins.
\begin{code}
module _ where
open import DomainTheory.Basics.Pointed pt fe ๐ฅ
โฅ-is-compact : (๐ : DCPOโฅ {๐ค} {๐ฃ}) โ is-compact (๐ โป) (โฅ ๐)
โฅ-is-compact ๐ I ฮฑ ฮด _ = โฅโฅ-functor h (inhabited-if-Directed (๐ โป) ฮฑ ฮด)
where
h : I โ ฮฃ i ๊ I , โฅ ๐ โโช ๐ โซ ฮฑ i
h i = (i , โฅ-is-least ๐ (ฮฑ i))
โฅ-โช : (๐ : DCPOโฅ {๐ค} {๐ฃ}) (x : โช ๐ โซ) โ โฅ ๐ โชโจ ๐ โป โฉ x
โฅ-โช ๐ x = โช-โ-to-โช (๐ โป) (โฅ-is-compact ๐) (โฅ-is-least ๐ x)
binary-join-is-compact : (๐ : DCPO {๐ค} {๐ฃ}) {x y z : โจ ๐ โฉ}
โ x โโจ ๐ โฉ z โ y โโจ ๐ โฉ z
โ ((d : โจ ๐ โฉ) โ x โโจ ๐ โฉ d โ y โโจ ๐ โฉ d โ z โโจ ๐ โฉ d)
โ is-compact ๐ x โ is-compact ๐ y โ is-compact ๐ z
binary-join-is-compact
๐ {x} {y} {z} x-below-z y-below-z z-lb-of-ubs x-cpt y-cpt = ฮณ
where
ฮณ : is-compact ๐ z
ฮณ I ฮฑ ฮด z-below-โฮฑ = โฅโฅ-recโ โ-is-prop f
(x-cpt I ฮฑ ฮด (x โโจ ๐ โฉ[ x-below-z ]
z โโจ ๐ โฉ[ z-below-โฮฑ ]
โ ๐ ฮด โโจ ๐ โฉ))
(y-cpt I ฮฑ ฮด (y โโจ ๐ โฉ[ y-below-z ]
z โโจ ๐ โฉ[ z-below-โฮฑ ]
โ ๐ ฮด โโจ ๐ โฉ))
where
f : (ฮฃ i ๊ I , x โโจ ๐ โฉ ฮฑ i)
โ (ฮฃ j ๊ I , y โโจ ๐ โฉ ฮฑ j)
โ (โ k ๊ I , z โโจ ๐ โฉ ฮฑ k)
f (i , x-below-ฮฑแตข) (j , y-below-ฮฑโฑผ) =
โฅโฅ-functor g (semidirected-if-Directed ๐ ฮฑ ฮด i j)
where
g : (ฮฃ k ๊ I , (ฮฑ i โโจ ๐ โฉ ฮฑ k) ร (ฮฑ j โโจ ๐ โฉ ฮฑ k))
โ ฮฃ k ๊ I , z โโจ ๐ โฉ ฮฑ k
g (k , lแตข , lโฑผ) =
(k , z-lb-of-ubs (ฮฑ k)
(x โโจ ๐ โฉ[ x-below-ฮฑแตข ]
ฮฑ i โโจ ๐ โฉ[ lแตข ]
ฮฑ k โโจ ๐ โฉ)
(y โโจ ๐ โฉ[ y-below-ฮฑโฑผ ]
ฮฑ j โโจ ๐ โฉ[ lโฑผ ]
ฮฑ k โโจ ๐ โฉ))
\end{code}
If we have a continuous section s with continuous retraction r, then y โช s x
implies r y โช x for all elements x and y.
\begin{code}
module _
(๐ : DCPO {๐ค} {๐ฃ})
(๐ : DCPO {๐ค'} {๐ฃ'})
(ฯ : ๐ continuous-retract-of ๐)
where
open _continuous-retract-of_ ฯ
continuous-retraction-โช-criterion : (y : โจ ๐ โฉ) (x : โจ ๐ โฉ)
โ y โชโจ ๐ โฉ s x
โ r y โชโจ ๐ โฉ x
continuous-retraction-โช-criterion y x y-way-below-sx I ฮฑ ฮด x-below-โฮฑ =
โฅโฅ-functor h (y-way-below-sx I (s โ ฮฑ) ฮต l)
where
ฮต : is-Directed ๐ (s โ ฮฑ)
ฮต = image-is-directed' ๐ ๐ ๐ค ฮด
l : s x โโจ ๐ โฉ โ ๐ ฮต
l = s x โโจ ๐ โฉ[ monotone-if-continuous ๐ ๐ ๐ค x (โ ๐ ฮด) x-below-โฮฑ ]
s (โ ๐ ฮด) โโจ ๐ โฉ[ continuous-โ-โ ๐ ๐ ๐ค ฮด ]
โ ๐ ฮต โโจ ๐ โฉ
h : (ฮฃ i ๊ I , y โโจ ๐ โฉ s (ฮฑ i))
โ (ฮฃ i ๊ I , r y โโจ ๐ โฉ ฮฑ i)
h (i , u) = (i , v)
where
v = r y โโจ ๐ โฉ[ monotone-if-continuous ๐ ๐ ๐ฃ y (s (ฮฑ i)) u ]
r (s (ฮฑ i)) โโจ ๐ โฉ[ ๏ผ-to-โ ๐ (s-section-of-r (ฮฑ i)) ]
ฮฑ i โโจ ๐ โฉ
\end{code}
In an embedding-projection pair, the embedding preserves and reflects the
way-below relation, and hence, compact elements.
\begin{code}
module _
(๐ : DCPO {๐ค} {๐ฃ} )
(๐ : DCPO {๐ค'} {๐ฃ'})
(ฮต : โจ ๐ โฉ โ โจ ๐ โฉ)
(ฮต-is-continuous : is-continuous ๐ ๐ ฮต)
(ฯ : โจ ๐ โฉ โ โจ ๐ โฉ)
(ฯ-is-continuous : is-continuous ๐ ๐ ฯ)
(ฯ-ฮต-retraction : (x : โจ ๐ โฉ) โ ฯ (ฮต x) ๏ผ x)
(ฮต-ฯ-deflation : (y : โจ ๐ โฉ) โ ฮต (ฯ y) โโจ ๐ โฉ y)
where
embeddings-preserve-โช : (x y : โจ ๐ โฉ) โ x โชโจ ๐ โฉ y โ ฮต x โชโจ ๐ โฉ ฮต y
embeddings-preserve-โช x y x-way-below-y I ฮฑ ฮด ฮตx-below-โฮฑ =
โฅโฅ-functor h (x-way-below-y I (ฯ โ ฮฑ) ฮด' y-below-โฯฮฑ)
where
ฮด' : is-Directed ๐ (ฯ โ ฮฑ)
ฮด' = image-is-directed' ๐ ๐ (ฯ , ฯ-is-continuous) ฮด
y-below-โฯฮฑ = y โโจ ๐ โฉ[ โฆ
1โฆ ]
ฯ (ฮต y) โโจ ๐ โฉ[ โฆ
2โฆ ]
ฯ (โ ๐ ฮด) โโจ ๐ โฉ[ โฆ
3โฆ ]
โ ๐ ฮด' โโจ ๐ โฉ
where
โฆ
1โฆ = ๏ผ-to-โ ๐ ((ฯ-ฮต-retraction y) โปยน)
โฆ
2โฆ = monotone-if-continuous ๐ ๐ (ฯ , ฯ-is-continuous) (ฮต y) (โ ๐ ฮด)
ฮตx-below-โฮฑ
โฆ
3โฆ = continuous-โ-โ ๐ ๐ (ฯ , ฯ-is-continuous) ฮด
h : (ฮฃ i ๊ I , x โโจ ๐ โฉ ฯ (ฮฑ i))
โ (ฮฃ i ๊ I , ฮต x โโจ ๐ โฉ ฮฑ i)
h (i , u) = (i , (ฮต x โโจ ๐ โฉ[ โฆ
1โฆ ]
ฮต (ฯ (ฮฑ i)) โโจ ๐ โฉ[ โฆ
2โฆ ]
ฮฑ i โโจ ๐ โฉ))
where
โฆ
1โฆ = monotone-if-continuous ๐ ๐ (ฮต , ฮต-is-continuous) x (ฯ (ฮฑ i)) u
โฆ
2โฆ = ฮต-ฯ-deflation (ฮฑ i)
embeddings-preserve-compactness : (x : โจ ๐ โฉ)
โ is-compact ๐ x โ is-compact ๐ (ฮต x)
embeddings-preserve-compactness x = embeddings-preserve-โช x x
embeddings-reflect-โช : (x y : โจ ๐ โฉ) โ ฮต x โชโจ ๐ โฉ ฮต y โ x โชโจ ๐ โฉ y
embeddings-reflect-โช x y l = transport (ฮป - โ - โชโจ ๐ โฉ y) (ฯ-ฮต-retraction x) lem
where
lem : ฯ (ฮต x) โชโจ ๐ โฉ y
lem = continuous-retraction-โช-criterion ๐ ๐ ฯ (ฮต x) y l
where
ฯ : ๐ continuous-retract-of ๐
ฯ = record
{ s = ฮต
; r = ฯ
; s-section-of-r = ฯ-ฮต-retraction
; s-is-continuous = ฮต-is-continuous
; r-is-continuous = ฯ-is-continuous
}
embeddings-reflect-compactness : (x : โจ ๐ โฉ)
โ is-compact ๐ (ฮต x)
โ is-compact ๐ x
embeddings-reflect-compactness x = embeddings-reflect-โช x x
\end{code}