Ian Ray, 9 August 2023 updated 11 January 2024.
Constructing the two element poset.
\begin{code}
{-# OPTIONS --safe --without-K --exact-split #-}
open import MLTT.Spartan
open import UF.FunExt
open import UF.PropTrunc
open import UF.Subsingletons
open import UF.SubtypeClassifier
module OrderedTypes.TwoElementPoset
(pt : propositional-truncations-exist)
(fe : Fun-Ext)
where
open import Locales.Frame pt fe hiding (𝟚; ₀; ₁)
2-Poset : Poset 𝓤₀ 𝓤₀
2-Poset = (𝟚 , 2-ord , 2-ord-is-partial-order)
where
2-ord : 𝟚 → 𝟚 → Ω 𝓤₀
2-ord ₀ x = (𝟙 , 𝟙-is-prop)
2-ord ₁ ₀ = (𝟘 , 𝟘-is-prop)
2-ord ₁ ₁ = (𝟙 , 𝟙-is-prop)
2-ord-is-partial-order : is-partial-order 𝟚 2-ord
2-ord-is-partial-order = (2-ord-is-preorder , 2-ord-is-antisymmetric)
where
2-ord-is-preorder : is-preorder 2-ord holds
2-ord-is-preorder = (2-ord-is-reflexive , 2-ord-is-transitive)
where
2-ord-is-reflexive : is-reflexive 2-ord holds
2-ord-is-reflexive ₀ = ⋆
2-ord-is-reflexive ₁ = ⋆
2-ord-is-transitive : is-transitive 2-ord holds
2-ord-is-transitive ₀ y z p q = ⋆
2-ord-is-transitive ₁ ₁ ₁ p q = ⋆
2-ord-is-antisymmetric : is-antisymmetric 2-ord
2-ord-is-antisymmetric {₀} {₀} p q = refl
2-ord-is-antisymmetric {₁} {₁} p q = refl
\end{code}