Ayberk Tosun, 12 September 2023
Split out from the now-deprecated `CompactRegular` module.
\begin{code}
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import MLTT.Spartan hiding (π)
open import UF.PropTrunc
open import UF.FunExt
open import UF.Size
module Locales.WellInside (pt : propositional-truncations-exist)
(fe : Fun-Ext)
(sr : Set-Replacement pt) where
\end{code}
Importation of foundational UF stuff.
\begin{code}
open import UF.SubtypeClassifier
open import UF.Logic
open import Locales.Frame pt fe
open AllCombinators pt fe
open PropositionalTruncation pt
\end{code}
\begin{code}
well-insideβ : (F : Frame π€ π₯ π¦) β β¨ F β© β β¨ F β© β π€ Μ
well-insideβ F U V =
Ξ£ W κ β¨ F β© , (U β§[ F ] W οΌ π[ F ]) Γ (V β¨[ F ] W οΌ π[ F ])
infix 4 well-insideβ
syntax well-insideβ F U V = U ββ[ F ] V
\end{code}
Because well inside is not propositional, we have to truncate it to get a
relation.
\begin{code}
well-inside : (F : Frame π€ π₯ π¦) β β¨ F β© β β¨ F β© β Ξ© π€
well-inside F U V = β₯ U ββ[ F ] V β₯Ξ©
infix 4 well-inside
syntax well-inside F U V = U β[ F ] V
\end{code}
Proposition. Let `U, V : πͺ(X)`. If `U β V` then `U β€ V`.
\begin{code}
well-inside-implies-below : (F : Frame π€ π₯ π¦)
β (U V : β¨ F β©)
β (U β[ F ] V β (U β€[ poset-of F ] V)) holds
well-inside-implies-below F U V = β₯β₯-rec (holds-is-prop (U β€[ poset-of F ] V)) Ξ³
where
_β_ = Ξ» U V β U β§[ F ] V
Ξ³ : U ββ[ F ] V β (U β€[ poset-of F ] V) holds
Ξ³ (W , cβ , cβ) = connecting-lemmaβ F Ξ΄
where
Ξ΄ : U οΌ U β§[ F ] V
Ξ΄ = U οΌβ¨ π-right-unit-of-β§ F U β»ΒΉ β©
U β π[ F ] οΌβ¨ ap (U β_) (cβ β»ΒΉ) β©
U β (V β¨[ F ] W) οΌβ¨ binary-distributivity F U V W β©
(U β V) β¨[ F ] (U β W) οΌβ¨ ap (Ξ» - β binary-join F (U β V) -) cβ β©
(U β V) β¨[ F ] π[ F ] οΌβ¨ π-left-unit-of-β¨ F (U β V) β©
U β V β
\end{code}
The set `ββ(U) β‘ { V β£ U β V}` is upwards-closed.
\begin{code}
ββ-is-upwards-closed : (F : Frame π€ π₯ π¦)
β {U V W : β¨ F β©}
β (U β[ F ] V) holds
β (V β€[ poset-of F ] W) holds
β (U β[ F ] W) holds
ββ-is-upwards-closed F {U} {V} {W} p q =
β₯β₯-rec (holds-is-prop (U β[ F ] W)) Ξ³ p
where
open PosetReasoning (poset-of F)
Ξ³ : U ββ[ F ] V β (U β[ F ] W) holds
Ξ³ (T , cβ , cβ) = β£ T , cβ , dβ β£
where
Ξ² : (π[ F ] β€[ poset-of F ] (W β¨[ F ] T)) holds
Ξ² = π[ F ] οΌβ¨ cβ β»ΒΉ β©β
V β¨[ F ] T β€β¨ β¨[ F ]-left-monotone q β©
W β¨[ F ] T β
dβ : W β¨[ F ] T οΌ π[ F ]
dβ = only-π-is-above-π F (W β¨[ F ] T) Ξ²
\end{code}
The set `ββ(U) β‘ { V | V β U}` is downwards-closed.
\begin{code}
ββ-is-downwards-closed : (F : Frame π€ π₯ π¦)
β {U V W : β¨ F β©}
β (V β[ F ] W) holds
β (U β€[ poset-of F ] V) holds
β (U β[ F ] W) holds
ββ-is-downwards-closed F {U} {V} {W} p q = β₯β₯-rec β₯β₯-is-prop Ξ³ p
where
open PosetReasoning (poset-of F)
Ξ³ : V ββ[ F ] W β (U β[ F ] W) holds
Ξ³ (T , cβ , cβ) = β£ T , (only-π-is-below-π F (U β§[ F ] T) Ξ² , cβ) β£
where
Ξ² : ((U β§[ F ] T) β€[ poset-of F ] π[ F ]) holds
Ξ² = U β§[ F ] T β€β¨ β§[ F ]-left-monotone q β©
V β§[ F ] T οΌβ¨ cβ β©β
π[ F ] β
\end{code}