diff --git a/src/Categories/Category/Instance/Thinnings.agda b/src/Categories/Category/Instance/Thinnings.agda index e37abeb..fef4546 100644 --- a/src/Categories/Category/Instance/Thinnings.agda +++ b/src/Categories/Category/Instance/Thinnings.agda @@ -4,12 +4,19 @@ module Categories.Category.Instance.Thinnings where open import Categories.Category.Core open import Categories.Category.Helper -open import Data.List.Base using (List) +open import Categories.Object.Initial +open import Data.List.Base using (List; []) +open import Level using (Level) open import Relation.Binary.PropositionalEquality open import Thinning open import Thinning.Properties +private + variable + a : Level + A : Set a + Thinnings : ∀ {a} (A : Set a) → Category a a a Thinnings A = categoryHelper record { Obj = List A @@ -23,3 +30,9 @@ Thinnings A = categoryHelper record ; equiv = isEquivalence ; ∘-resp-≈ = cong₂ _∘_ } + +[]-isInitial : IsInitial (Thinnings A) [] +[]-isInitial = record { !-unique = ¡-unique } + +initial : Initial (Thinnings A) +initial = record { ⊥-is-initial = []-isInitial } diff --git a/src/Thinning.agda b/src/Thinning.agda index ffed3d7..05440f4 100644 --- a/src/Thinning.agda +++ b/src/Thinning.agda @@ -45,3 +45,9 @@ end ∘ end = end include α ∘ include β = include (α ∘ β) include α ∘ exclude β = exclude (α ∘ β) exclude α ∘ β = exclude (α ∘ β) + +-- There is always a Thinning from the empty list to any list. Here we exclude +-- at every step. +¡ : Thinning A [] xs +¡ {xs = []} = end +¡ {xs = x ∷ xs} = exclude ¡ diff --git a/src/Thinning/Properties.agda b/src/Thinning/Properties.agda index a77a20a..6559fc8 100644 --- a/src/Thinning/Properties.agda +++ b/src/Thinning/Properties.agda @@ -2,7 +2,7 @@ module Thinning.Properties where -open import Data.List.Base using (List) +open import Data.List.Base using (List; []) open import Level using (Level) open import Relation.Binary.PropositionalEquality.Core using (_≡_; refl; cong) @@ -48,3 +48,8 @@ assoc (exclude θ) (include φ) (include ψ) = cong exclude (assoc θ φ ψ) assoc (exclude θ) (include φ) (exclude ψ) = cong exclude (assoc (exclude θ) (include φ) ψ) assoc (exclude θ) (exclude φ) (include ψ) = cong exclude (assoc (exclude θ) φ ψ) assoc (exclude θ) (exclude φ) (exclude ψ) = cong exclude (assoc (exclude θ) (exclude φ) ψ) + +-- ¡ is the only Thinning from [] +¡-unique : (θ : Thinning A [] xs) → ¡ ≡ θ +¡-unique end = refl +¡-unique (exclude θ) = cong exclude (¡-unique θ)