--------------------------------------------------------------------------------
title:          Directed families
author:         Ayberk Tosun
date-started:   2024-03-02
--------------------------------------------------------------------------------

Many constructions and theorems related to directed families have been developed
in the `Locales.Frame` module, even though they concern only the underlying
order of frames. This is a new module in which I will be collecting such proofs
and constructions that involve only the order of a given frame.

\begin{code}

{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
open import UF.SubtypeClassifier

module Locales.DirectedFamily
        (pt : propositional-truncations-exist)
        (fe : Fun-Ext)
        {X : 𝓤  ̇}
        (_≤_ : X  X  Ω 𝓥)
       where

open import Slice.Family
open import UF.Logic

open AllCombinators pt fe
open PropositionalTruncation pt

\end{code}

\section{Directed families}

Alias for the order just to be able to declare fixity without warnings.

\begin{code}

infix 7 _⊑_
_⊑_ = _≤_

\end{code}

Definition of directedness.

\begin{code}

is-closed-under-binary-upper-bounds : Fam 𝓦 X  Ω (𝓥  𝓦)
is-closed-under-binary-upper-bounds S =
  i  I ,  j  I , Ǝₚ k  I , ((S [ i ]  S [ k ])  (S [ j ])  (S [ k ]))
  where
   I = index S

is-directed : (S : Fam 𝓦 X)  Ω (𝓥  𝓦)
is-directed S =  index S ∥Ω  is-closed-under-binary-upper-bounds S

directed-implies-inhabited : (S : Fam 𝓦 X)
                            (is-directed S   index S ∥Ω) holds
directed-implies-inhabited S (ι , _) = ι

directed-implies-closed-under-binary-upper-bounds
 : (S : Fam 𝓦 X)
  (is-directed S
  is-closed-under-binary-upper-bounds S) holds
directed-implies-closed-under-binary-upper-bounds S (_ , υ) = υ

\end{code}