--------------------------------------------------------------------------------
title:          Properties of the locale two
author:         Ayberk Tosun
date-started:   2024-03-04
--------------------------------------------------------------------------------

We define the locale corresponding to the two-point discrete space.

\begin{code}

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

open import MLTT.Spartan hiding (𝟚; β‚€; ₁)
open import UF.FunExt
open import UF.PropTrunc
open import UF.Size
open import UF.Subsingletons

module Locales.DiscreteLocale.Two-Properties
        (fe : Fun-Ext)
        (pe : Prop-Ext)
        (pt : propositional-truncations-exist)
        (sr : Set-Replacement pt)
        (𝓀  : Universe)
       where


open import Locales.Compactness.Definition pt fe
open import Locales.DiscreteLocale.Two fe pe pt
open import Locales.Frame pt fe
open import Locales.Sierpinski 𝓀 pe pt fe
open import Locales.SmallBasis pt fe sr
open import Locales.Spectrality.SpectralLocale pt fe
open import Locales.Spectrality.SpectralMap pt fe
open import Locales.Stone pt fe sr
open import Slice.Family
open import UF.Logic
open import UF.Powerset
open import UF.SubtypeClassifier

open AllCombinators pt fe renaming (_∧_ to _βˆ§β‚š_; _∨_ to _βˆ¨β‚š_)
open Locale
open PropositionalSubsetInclusionNotation fe
open PropositionalTruncation pt hiding (_∨_)

\end{code}

Shorthand notation.

\begin{code}

πŸšβ‚— : Locale (𝓀 ⁺) 𝓀 𝓀
πŸšβ‚— = 𝟚-loc 𝓀

\end{code}

The locale two is compact.

\begin{code}

πŸšβ‚—-is-compact : is-compact πŸšβ‚— holds
πŸšβ‚—-is-compact S Ξ΄ p = βˆ₯βˆ₯-recβ‚‚ βˆƒ-is-prop † (p β‚€ ⋆) (p ₁ ⋆)
 where
  open PosetNotation (poset-of (π’ͺ πŸšβ‚—))

  † : Ξ£ i κž‰ index S , β‚€ ∈ (S [ i ])
    β†’ Ξ£ j κž‰ index S , ₁ ∈ (S [ j ])
    β†’ βˆƒ k κž‰ index S , full βŠ† (S [ k ])
  † (i , ΞΌα΅’) (j , ΞΌβ±Ό) = βˆ₯βˆ₯-rec βˆƒ-is-prop Ξ³ (prβ‚‚ Ξ΄ i j)
   where
    Ξ³ : Ξ£ k κž‰ index S , ((S [ i ]) βŠ†β‚š (S [ k ]) βˆ§β‚š (S [ j ]) βŠ†β‚š (S [ k ])) holds
      β†’ βˆƒ k κž‰ index S ,  full βŠ† (S [ k ])
    Ξ³ (k , Ο† , ψ) = ∣ k , Ξ² ∣
     where
      Ξ² : full βŠ† (S [ k ])
      Ξ² β‚€ ⋆ = Ο† β‚€ ΞΌα΅’
      Ξ² ₁ ⋆ = ψ ₁ ΞΌβ±Ό

\end{code}