Locales.Compactness.Properties
--- title: Properties of compactness author: Ayberk Tosun date-started: 2024-07-19 date-completed: 2024-07-31 dates-updated: [2024-09-05] --- We collect properties related to compactness in locale theory in this module. This includes the equivalences to two alternative definitions of the notion of compactness, which we denote `is-compact-open'` and `is-compact-open''`.{-# OPTIONS --safe --without-K #-} open import MLTT.Spartan hiding (J) open import UF.Base open import UF.Classifiers open import UF.FunExt open import UF.PropTrunc open import UF.Sets open import UF.Subsingletons open import UF.Subsingletons-FunExt open import UF.Subsingletons-Properties open import UF.SubtypeClassifier module Locales.Compactness.Properties (pt : propositional-truncations-exist) (fe : Fun-Ext) (pe : Prop-Ext) where open import Fin.Kuratowski pt open import Fin.Type open import Locales.Compactness.Definition pt fe open import Locales.Frame pt fe renaming (β¨_β© to β¨_β©β) hiding (β ) open import Locales.WayBelowRelation.Definition pt fe open import MLTT.List using (member; []; _β·_; List; in-head; in-tail; length) open import MLTT.List-Properties open import Slice.Family open import Taboos.FiniteSubsetTaboo pt fe open import UF.Equiv hiding (_β ) open import UF.EquivalenceExamples open import UF.ImageAndSurjection pt open import UF.Logic open import UF.Powerset-Fin pt open import UF.Powerset-MultiUniverse open import UF.Sets-Properties open import Notation.UnderlyingType open AllCombinators pt fe open Locale open PropositionalTruncation pt\section{Preliminaries} We define a frame instance of the `Underlying-Type` typeclass to avoid name clashes.instance underlying-type-of-frame : Underlying-Type (Frame π€ π₯ π¦) (π€ Μ ) β¨_β© {{underlying-type-of-frame}} (A , _) = AGiven a family `S`, we denote the type of its subfamilies by `SubFam S`.SubFam : {A : π€ Μ } {π¦ : Universe} β Fam π¦ A β π¦ βΊ Μ SubFam {_} {A} {π¦} (I , Ξ±) = Ξ£ J κ π¦ Μ , (J β I)Given any list, the type of elements that fall in the list is a Kuratowski-finite type.list-members-is-Kuratowski-finite : {X : π€ Μ } β (xs : List X) β is-Kuratowski-finite (Ξ£ x κ X , β₯ member x xs β₯) list-members-is-Kuratowski-finite {π€} {A} xs = β£ length xs , nth xs , nth-is-surjection xs β£ where open list-indexing ptTODO: The function `nth` above should be placed in a more appropriate module. \section{Alternative definition of compactness} Compactness could have been alternatively defined as:is-compact-open' : (X : Locale π€ π₯ π¦) β β¨ πͺ X β© β Ξ© (π€ β π₯ β π¦ βΊ) is-compact-open' {π€} {π₯} {π¦} X U = β±― S κ Fam π¦ β¨ πͺ X β© , U β€ (β[ πͺ X ] S) β (Ζ (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U β€ (β[ πͺ X ] β S [ h j ] β£ j βΆ J β)) holds) where open PosetNotation (poset-of (πͺ X))This is much closer to the βevery cover has a finite subcoverβ definition from point-set topology. It is easy to show that this implies the standard definition of compactness, but we need a bit of preparation first. Given a family `S`, we denote by `family-of-lists S` the family of families of lists of `S`.module some-lemmas-on-directification (F : Frame π€ π₯ π¦) where family-of-lists : Fam π¦ β¨ F β© β Fam π¦ (Fam π¦ β¨ F β©) family-of-lists S = List (index S) , h where h : List (index S) β Fam π¦ β¨ F β© h is = (Ξ£ i κ index S , β₯ member i is β₯) , S [_] β prβUsing this, we can give an alternative definition of the directification of a family:directifyβ : Fam π¦ β¨ F β© β Fam π¦ β¨ F β© directifyβ S = β β[ F ] T β£ T Ξ΅ family-of-lists S βThe function `directifyβ` is equal to `directify` as expected.directifyβ-is-equal-to-directify : (S : Fam π¦ β¨ F β©) β directifyβ S [_] βΌ directify F S [_] directifyβ-is-equal-to-directify S [] = directifyβ S [ [] ] οΌβ¨ β β© π[ F ] οΌβ¨reflβ© directify F S [ [] ] β where β : (directifyβ S [ [] ] β€[ poset-of F ] π[ F ]) holds β = β[ F ]-least (family-of-lists S [ [] ]) (π[ F ] , Ξ» { (_ , ΞΌ) β π-elim (β₯β₯-rec π-is-prop not-in-empty-list ΞΌ)}) β = only-π-is-below-π F (directifyβ S [ [] ]) β directifyβ-is-equal-to-directify S (i β· is) = directifyβ S [ i β· is ] οΌβ¨ β β© S [ i ] β¨[ F ] directifyβ S [ is ] οΌβ¨ β ‘ β© S [ i ] β¨[ F ] directify F S [ is ] οΌβ¨reflβ© directify F S [ i β· is ] β where open PosetNotation (poset-of F) open PosetReasoning (poset-of F) open Joins (Ξ» x y β x β€[ poset-of F ] y) IH = directifyβ-is-equal-to-directify S is Ξ² : ((S [ i ] β¨[ F ] directifyβ S [ is ]) is-an-upper-bound-of (family-of-lists S [ i β· is ])) holds Ξ² (j , β£ΞΌβ£) = β₯β₯-rec (holds-is-prop (S [ j ] β€ (S [ i ] β¨[ F ] directifyβ S [ is ]))) β β£ΞΌβ£ where β : member j (i β· is) β (S [ j ] β€ (S [ i ] β¨[ F ] directifyβ S [ is ])) holds β in-head = β¨[ F ]-upperβ (S [ j ]) (directifyβ S [ is ]) β (in-tail ΞΌ) = family-of-lists S [ i β· is ] [ j , ΞΌβ² ] οΌβ¨ refl β©β S [ j ] β€β¨ β β© directifyβ S [ is ] β€β¨ β ‘ β© S [ i ] β¨[ F ] directifyβ S [ is ] β where ΞΌβ² : β₯ member j (i β· is) β₯ ΞΌβ² = β£ in-tail ΞΌ β£ β = β[ F ]-upper (family-of-lists S [ is ]) (j , β£ ΞΌ β£) β ‘ = β¨[ F ]-upperβ (S [ i ]) (directifyβ S [ is ]) Ξ³ : ((directifyβ S [ i β· is ]) is-an-upper-bound-of (family-of-lists S [ is ])) holds Ξ³ (k , ΞΌ) = β₯β₯-rec (holds-is-prop (S [ k ] β€ directifyβ S [ i β· is ])) β’ ΞΌ where β’ : member k is β (S [ k ] β€ directifyβ S [ i β· is ]) holds β’ ΞΌ = β[ F ]-upper (family-of-lists S [ i β· is ]) (k , β£ in-tail ΞΌ β£) β : (directifyβ S [ i β· is ] β€ (S [ i ] β¨[ F ] directifyβ S [ is ])) holds β = β[ F ]-least (family-of-lists S [ i β· is ]) ((S [ i ] β¨[ F ] directifyβ S [ is ]) , Ξ²) β‘ : ((S [ i ] β¨[ F ] directifyβ S [ is ]) β€ directifyβ S [ i β· is ]) holds β‘ = β¨[ F ]-least β‘β β‘β where β‘β : (S [ i ] β€ directifyβ S [ i β· is ]) holds β‘β = β[ F ]-upper (family-of-lists S [ i β· is ]) (i , β£ in-head β£) β‘β : (directifyβ S [ is ] β€ directifyβ S [ i β· is ]) holds β‘β = β[ F ]-least (family-of-lists S [ is ]) (directifyβ S [ i β· is ] , Ξ³) β = β€-is-antisymmetric (poset-of F) β β‘ β ‘ = ap (Ξ» - β S [ i ] β¨[ F ] -) IHUsing the equality between `directify` and `directifyβ`, we can now easily show how to obtain a subcover, from which it follows that `is-compact` implies `is-compact'`.module characterization-of-compactnessβ (X : Locale π€ π₯ π¦) where open PosetNotation (poset-of (πͺ X)) open PosetReasoning (poset-of (πͺ X)) open some-lemmas-on-directification (πͺ X) finite-subcover-through-directification : (U : β¨ πͺ X β©) β (S : Fam π¦ β¨ πͺ X β©) β (is : List (index S)) β (U β€ directify (πͺ X) S [ is ]) holds β Ξ£ (J , Ξ²) κ SubFam S , is-Kuratowski-finite J Γ (U β€ (β[ πͺ X ] β S [ Ξ² j ] β£ j βΆ J β)) holds finite-subcover-through-directification U S is p = T , π , q where T : SubFam S T = (Ξ£ i κ index S , β₯ member i is β₯) , prβ π : is-Kuratowski-finite (index T) π = list-members-is-Kuratowski-finite is β = directifyβ-is-equal-to-directify S is β»ΒΉ q : (U β€ (β[ πͺ X ] β S [ T [ x ] ] β£ x βΆ index T β)) holds q = U β€β¨ p β© directify (πͺ X) S [ is ] οΌβ¨ β β©β directifyβ S [ is ] οΌβ¨ refl β©β β[ πͺ X ] β S [ T [ x ] ] β£ x βΆ index T β βIt follows from this that `is-compact-open` implies `is-compact-open'`.compact-open-implies-compact-open' : (U : β¨ πͺ X β©) β is-compact-open X U holds β is-compact-open' X U holds compact-open-implies-compact-open' U ΞΊ S q = β₯β₯-functor β (ΞΊ Sβ Ξ΄ p) where open JoinNotation (join-of (πͺ X)) Xβ = poset-of (πͺ X) Sβ : Fam π¦ β¨ πͺ X β© Sβ = directify (πͺ X) S Ξ΄ : is-directed (πͺ X) (directify (πͺ X) S) holds Ξ΄ = directify-is-directed (πͺ X) S p : (U β€[ Xβ ] (β[ πͺ X ] Sβ)) holds p = U β€β¨ β β© β[ πͺ X ] S οΌβ¨ β ‘ β©β β[ πͺ X ] Sβ β where β = q β ‘ = directify-preserves-joins (πͺ X) S β : Ξ£ is κ index Sβ , (U β€[ Xβ ] Sβ [ is ]) holds β Ξ£ (J , Ξ²) κ SubFam S , is-Kuratowski-finite J Γ (U β€[ Xβ ] (ββ¨ j βΆ J β© S [ Ξ² j ])) holds β = uncurry (finite-subcover-through-directification U S)We now prove the converse which is a bit more difficult. We start with some preparation. Given a subset `P : β¨ πͺ X β© β Ξ©` and a family `S : Fam π€ β¨ πͺ X β©`, the type `Upper-Bound-Data P S` is the type of indices `i` of `S` such that `S [ i ]` is an upper bound of the subset `P`.module characterization-of-compactnessβ (X : Locale (π€ βΊ) π€ π€) where open some-lemmas-on-directification (πͺ X) open PosetNotation (poset-of (πͺ X)) open PosetReasoning (poset-of (πͺ X)) open Joins (Ξ» x y β x β€ y) Upper-Bound-Data : π {π£} β¨ πͺ X β© β Fam π€ β¨ πͺ X β© β π€ βΊ β π£ Μ Upper-Bound-Data P S = Ξ£ i κ index S , (β±― x κ β¨ πͺ X β© , P x β x β€ S [ i ]) holdsWe now define the truncated version of this which we denote `has-upper-bound-in`:has-upper-bound-in : π {π£} β¨ πͺ X β© β Fam π€ β¨ πͺ X β© β Ξ© (π€ βΊ β π£) has-upper-bound-in P S = β₯ Upper-Bound-Data P S β₯Ξ©Given a family `S`, we denote by `Οβ S` the subset corresponding to the image of the family.Οβ : Fam π€ β¨ πͺ X β© β β¨ πͺ X β© β Ξ© (π€ βΊ) Οβ S U = U βimage (S [_]) , being-in-the-image-is-prop U (S [_]) where open Equality carrier-of-[ poset-of (πͺ X) ]-is-setGiven a Kuratowski-finite family `S`, the subset `Οβ S` is a Kuratowski-finite subset.Οβ-of-Kuratowski-finite-subset-is-Kuratowski-finite : (S : Fam π€ β¨ πͺ X β©) β is-Kuratowski-finite (index S) β is-Kuratowski-finite-subset (Οβ S) Οβ-of-Kuratowski-finite-subset-is-Kuratowski-finite S = β₯β₯-functor β where β : Ξ£ n κ β , Fin n β index S β Ξ£ n κ β , Fin n β image (S [_]) β (n , h , Ο) = n , hβ² , Ο where hβ² : Fin n β image (S [_]) hβ² = corestriction (S [_]) β h Ο : is-surjection hβ² Ο = β-is-surjection Ο (corestrictions-are-surjections (S [_]))We are now ready to prove our main lemma stating that every directed family `S` contains at least one upper bound of every Kuratowski-finite subset.open binary-unions-of-subsets pt directed-families-have-upper-bounds-of-Kuratowski-finite-subsets : (S : Fam π€ β¨ πͺ X β©) β is-directed (πͺ X) S holds β (P : π β¨ πͺ X β©) β (β¨ P β© β Οβ S) β has-upper-bound-in β¨ P β© S holds directed-families-have-upper-bounds-of-Kuratowski-finite-subsets S πΉ (P , π) Ο = Kuratowski-finite-subset-induction pe fe β¨ πͺ X β© Ο R i Ξ² Ξ³ Ξ΄ (P , π) Ο where R : π β¨ πͺ X β© β π€ βΊ Μ R Q = β¨ Q β© β Οβ S β has-upper-bound-in β¨ Q β© S holds i : (Q : π β¨ πͺ X β©) β is-prop (R Q) i Q = Ξ -is-prop fe Ξ» _ β holds-is-prop (has-upper-bound-in β¨ Q β© S) Ο : is-set β¨ πͺ X β© Ο = carrier-of-[ poset-of (πͺ X) ]-is-set open singleton-Kuratowski-finite-subsets Ο Ξ² : R β [π] Ξ² _ = β₯β₯-functor (Ξ» i β i , Ξ» _ β π-elim) (directedness-entails-inhabitation (πͺ X) S πΉ) Ξ³ : (U : β¨ πͺ X β©) β R β΄ U β΅[π] Ξ³ U ΞΌ = β₯β₯-functor β (ΞΌ U refl) where β : Ξ£ i κ index S , S [ i ] οΌ U β Upper-Bound-Data β¨ β΄ U β΅[π] β© S β (i , q) = i , Ο where Ο : (V : β¨ πͺ X β© ) β U οΌ V β (V β€ S [ i ]) holds Ο V p = V οΌβ¨ p β»ΒΉ β©β U οΌβ¨ q β»ΒΉ β©β S [ i ] β Ξ΄ : (π β¬ : π β¨ πͺ X β©) β R π β R β¬ β R (π βͺ[π] β¬) Ξ΄ π@(A , _) β¬@(B , _) Ο Ο ΞΉ = β₯β₯-recβ (holds-is-prop (has-upper-bound-in (A βͺ B) S)) β (Ο ΞΉβ) (Ο ΞΉβ) where ΞΉβ : A β Οβ S ΞΉβ V ΞΌ = ΞΉ V β£ inl ΞΌ β£ ΞΉβ : B β Οβ S ΞΉβ V ΞΌ = ΞΉ V β£ inr ΞΌ β£ β : Upper-Bound-Data A S β Upper-Bound-Data B S β has-upper-bound-in (A βͺ B) S holds β (i , ΞΎ) (j , ΞΆ) = β₯β₯-functor β‘ (prβ πΉ i j) where β‘ : (Ξ£ k κ index S , (S [ i ] β€[ poset-of (πͺ X) ] S [ k ]) holds Γ (S [ j ] β€[ poset-of (πͺ X) ] S [ k ]) holds) β Upper-Bound-Data (A βͺ B) S β‘ (k , p , q) = k , β’ where β’ : (U : β¨ πͺ X β©) β U β (A βͺ B) β (U β€ S [ k ]) holds β’ U = β₯β₯-rec (holds-is-prop (U β€ S [ k ])) β where β : A U holds + B U holds β (U β€ S [ k ]) holds β (inl ΞΌ) = U β€β¨ ΞΎ U ΞΌ β© S [ i ] β€β¨ p β© S [ k ] β β (inr ΞΌ) = U β€β¨ ΞΆ U ΞΌ β© S [ j ] β€β¨ q β© S [ k ] βFrom this, we get that directed families contain at least one upper bound of their Kuratowski-finite subfamilies.directed-families-have-upper-bounds-of-Kuratowski-finite-subfamilies : (S : Fam π€ β¨ πͺ X β©) β is-directed (πͺ X) S holds β (π₯ : SubFam S) β is-Kuratowski-finite (index π₯) β has-upper-bound-in (Οβ β S [ π₯ [ j ] ] β£ j βΆ index π₯ β) S holds directed-families-have-upper-bounds-of-Kuratowski-finite-subfamilies S πΉ π₯ π = directed-families-have-upper-bounds-of-Kuratowski-finite-subsets S πΉ (Οβ β S [ π₯ [ j ] ] β£ j βΆ index π₯ β , πβ²) β where πβ² : is-Kuratowski-finite-subset (Οβ β S [ π₯ [ j ] ] β£ j βΆ index π₯ β) πβ² = Οβ-of-Kuratowski-finite-subset-is-Kuratowski-finite β S [ π₯ [ j ] ] β£ j βΆ index π₯ β π β : Οβ β S [ π₯ [ j ] ] β£ j βΆ index π₯ β β Οβ S β U = β₯β₯-functor β‘ where β‘ : Ξ£ j κ index π₯ , S [ π₯ [ j ] ] οΌ U β Ξ£ i κ index S , S [ i ] οΌ U β‘ (i , p) = π₯ [ i ] , pIt easily follows from this that `is-compact-open'` implies `is-compact-open`.compact-open'-implies-compact-open : (U : β¨ πͺ X β©) β is-compact-open' X U holds β is-compact-open X U holds compact-open'-implies-compact-open U ΞΊ S Ξ΄ p = β₯β₯-rec β-is-prop β (ΞΊ S p) where β : Ξ£ (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U β€ (β[ πͺ X ] β S [ h j ] β£ j βΆ J β)) holds β β i κ index S , (U β€ S [ i ]) holds β ((J , h) , π , c) = β₯β₯-functor β‘ Ξ³ where Sβ² : Fam π€ β¨ πͺ X β© Sβ² = β S [ h j ] β£ j βΆ J β β‘ : Upper-Bound-Data (Οβ Sβ²) S β Ξ£ (Ξ» i β (U β€ S [ i ]) holds) β‘ (i , q) = i , β’ where Ο : ((S [ i ]) is-an-upper-bound-of Sβ²) holds Ο j = q (Sβ² [ j ]) β£ j , refl β£ β = c β ‘ = β[ πͺ X ]-least β S [ h j ] β£ j βΆ J β (S [ i ] , Ο) β’ : (U β€ S [ i ]) holds β’ = U β€β¨ β β© β[ πͺ X ] β S [ h j ] β£ j βΆ J β β€β¨ β ‘ β© S [ i ] β Ξ³ : has-upper-bound-in (Οβ Sβ²) S holds Ξ³ = directed-families-have-upper-bounds-of-Kuratowski-finite-subfamilies S Ξ΄ (J , h) π\section{Another alternative definition} We now provide another variant of the definition `is-compact-open'`, which we show to be equivalent. This one says exactly that every cover has a Kuratowski-finite subcover.is-compact-open'' : (X : Locale π€ π₯ π¦) β β¨ πͺ X β© β Ξ© (π€ β π¦ βΊ) is-compact-open'' {π€} {π₯} {π¦} X U = β±― S κ Fam π¦ β¨ πͺ X β© , (U οΌβ β[ πͺ X ] S) β (Ζ (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U οΌ β[ πͺ X ] β S [ h j ] β£ j βΆ J β)) where open PosetNotation (poset-of (πͺ X)) open Equality carrier-of-[ poset-of (πͺ X) ]-is-set module characterization-of-compactnessβ (X : Locale π€ π₯ π¦) where open PosetNotation (poset-of (πͺ X)) open PosetReasoning (poset-of (πͺ X)) open some-lemmas-on-directification (πͺ X)To see that `is-compact-open'` implies `is-compact-open''`, notice first that for every open `U : β¨ πͺ X β©` and family `S`, we have that `U β€ β S` if and only if `U οΌ β { U β§ Sα΅’ β£ i : index S}`.distribute-inside-coverβ : (U : β¨ πͺ X β©) (S : Fam π¦ β¨ πͺ X β©) β U οΌ β[ πͺ X ] β U β§[ πͺ X ] (S [ i ]) β£ i βΆ index S β β (U β€ (β[ πͺ X ] S)) holds distribute-inside-coverβ U S p = connecting-lemmaβ (πͺ X) β where β = p β ‘ : β[ πͺ X ] β U β§[ πͺ X ] S [ i ] β£ i βΆ index S β οΌ U β§[ πͺ X ] (β[ πͺ X ] S) β ‘ = distributivity (πͺ X) U S β»ΒΉ β : U οΌ U β§[ πͺ X ] (β[ πͺ X ] S) β = U οΌβ¨ β β© β[ πͺ X ] β U β§[ πͺ X ] S [ i ] β£ i βΆ index S β οΌβ¨ β ‘ β© U β§[ πͺ X ] (β[ πͺ X ] S) β distribute-inside-coverβ : (U : β¨ πͺ X β©) (S : Fam π¦ β¨ πͺ X β©) β (U β€ (β[ πͺ X ] S)) holds β U οΌ β[ πͺ X ] β U β§[ πͺ X ] (S [ i ]) β£ i βΆ index S β distribute-inside-coverβ U S p = U οΌβ¨ β β© U β§[ πͺ X ] (β[ πͺ X ] S) οΌβ¨ β ‘ β© β[ πͺ X ] β U β§[ πͺ X ] (S [ i ]) β£ i βΆ index S β β where β = connecting-lemmaβ (πͺ X) p β ‘ = distributivity (πͺ X) U SThe backward implication follows easily from these two lemmas.compact-open''-implies-compact-open' : (U : β¨ πͺ X β©) β is-compact-open'' X U holds β is-compact-open' X U holds compact-open''-implies-compact-open' U ΞΊ S p = β₯β₯-functor β β’ where q : U οΌ β[ πͺ X ] β U β§[ πͺ X ] (S [ i ]) β£ i βΆ index S β q = distribute-inside-coverβ U S p β’ : β (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U οΌ β[ πͺ X ] β U β§[ πͺ X ] S [ h j ] β£ j βΆ J β) β’ = ΞΊ β U β§[ πͺ X ] (S [ i ]) β£ i βΆ index S β q β : Ξ£ (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U οΌ β[ πͺ X ] β U β§[ πͺ X ] S [ h j ] β£ j βΆ J β) β Ξ£ (J , h) κ SubFam S , is-Kuratowski-finite J Γ (U β€ (β[ πͺ X ] β S [ h j ] β£ j βΆ J β)) holds β (π₯@(J , h) , π , p) = π₯ , π , distribute-inside-coverβ U β S [ h j ] β£ j βΆ J β pNow, the forward implication:compact-open'-implies-compact-open'' : (U : β¨ πͺ X β©) β is-compact-open' X U holds β is-compact-open'' X U holds compact-open'-implies-compact-open'' U ΞΊ S p = β₯β₯-functor β (ΞΊ S c) where open Joins (Ξ» x y β x β€ y) open PosetNotation (poset-of (πͺ X)) renaming (_β€_ to _β€β_) c : (U β€β (β[ πͺ X ] S)) holds c = reflexivity+ (poset-of (πͺ X)) p β : (Ξ£ F κ SubFam S , is-Kuratowski-finite (index F) Γ (U β€β (β[ πͺ X ] β S [ F [ j ] ] β£ j βΆ index F β)) holds) β Ξ£ F κ SubFam S , is-Kuratowski-finite (index F) Γ (U οΌ β[ πͺ X ] β S [ F [ j ] ] β£ j βΆ index F β) β (F , π , q) = F , π , r where Ο : cofinal-in (πͺ X) β S [ F [ j ] ] β£ j βΆ index F β S holds Ο j = β£ F [ j ] , β€-is-reflexive (poset-of (πͺ X)) (S [ F [ j ] ]) β£ β’ : ((β[ πͺ X ] β S [ F [ j ] ] β£ j βΆ index F β) β€β U) holds β’ = β[ πͺ X ] β S [ F [ j ] ] β£ j βΆ index F β β€β¨ β β© β[ πͺ X ] S οΌβ¨ β ‘ β©β U β where β = cofinal-implies-join-covered (πͺ X) _ _ Ο β ‘ = p β»ΒΉ r : U οΌ β[ πͺ X ] β S [ F [ j ] ] β£ j βΆ index F β r = β€-is-antisymmetric (poset-of (πͺ X)) q β’In the above proof, I have implemented a simplification that Tom de Jong suggested in a code review.