-------------------------------------------------------------------------------- title: Directed families on posets author: Ayberk Tosun date-started: 2024-05-06 -------------------------------------------------------------------------------- This module contains generalizations of notions from the `Locales.DirectedFamily` module in which things were defined only for frames. That module is now obsolete and should be removed in favour of this one. \begin{code} {-# OPTIONS --safe --without-K --lossy-unification #-} open import Slice.Family open import UF.FunExt open import UF.PropTrunc open import UF.SubtypeClassifier module Locales.DirectedFamily-Poset (pt : propositional-truncations-exist) (fe : Fun-Ext) where open import Locales.Frame pt fe hiding (is-directed) open import MLTT.Spartan open import UF.Logic open AllCombinators pt fe open PropositionalTruncation pt \end{code} We work in a module parameterized by two posets `P` and `Q`. \begin{code} module Directed-Families-On-Posets (P : Poset 𝓤 𝓥) (Q : Poset 𝓤' 𝓥') where \end{code} We denote the carrier sets of `P` and `Q` by `∣P∣` and `∣Q∣` respectively. \begin{code} ∣P∣ = ∣ P ∣ₚ ∣Q∣ = ∣ Q ∣ₚ open import Locales.DirectedFamily pt fe (λ x y → x ≤[ P ] y) using () renaming (is-directed to is-directed₁) open import Locales.DirectedFamily pt fe (λ x y → x ≤[ Q ] y) using (is-closed-under-binary-upper-bounds) renaming (is-directed to is-directed₂) \end{code} Given any monotone function `f : P → Q` and any directed family `S`, the image of `f` on `S` is also a directed family. \begin{code} monotone-image-on-directed-set-is-directed : ((f , _) : P ─m→ Q) → (S : Fam 𝓤 ∣ P ∣ₚ) → is-directed₁ S holds → is-directed₂ ⁅ f x ∣ x ε S ⁆ holds monotone-image-on-directed-set-is-directed (f , 𝓂) S (ι , υ) = ι , † where † : is-closed-under-binary-upper-bounds ⁅ f x ∣ x ε S ⁆ holds † i j = ∥∥-rec ∃-is-prop ‡ (υ i j) where ‡ : Σ k ꞉ index S , (S [ i ] ≤[ P ] S [ k ]) holds × ((S [ j ] ≤[ P ] S [ k ]) holds) → ∃ k ꞉ index S , (f (S [ i ]) ≤[ Q ] f (S [ k ]) ∧ (f (S [ j ]) ≤[ Q ] f (S [ k ]))) holds ‡ (k , p , q) = ∣ k , (𝓂 (S [ i ] , S [ k ]) p , 𝓂 (S [ j ] , S [ k ]) q) ∣ \end{code}