{-# OPTIONS --safe --cubical-compatible --guardedness --exact-split --double-check #-}
module ALMA.SecondPass.FinCatNWitness where
open import Agda.Primitive using (lzero)
open import Agda.Builtin.Equality using (_≡_; refl)
open import Level using (Lift; lift)
open import Relation.Nullary using (¬_)
open import Data.Unit.Polymorphic.Base using (⊤; tt)
open import Data.Product.Base using (proj₁)
open import Data.Nat using (ℕ; suc)
open import Data.Fin using (Fin) renaming (zero to fzero; suc to fsuc)
open import Categories.Category.Core using (Category)
open import Categories.Category.Indiscrete using (Indiscrete)
open import Categories.Functor.Core using (Functor)
open import ALMA.Cosmos.ContCategory using (ContCat)
open import ALMA.SecondPass.Cosmos using (Cosmos; out)
open import ALMA.SecondPass.Terminal using (_≈C_)
open _≈C_
open import ALMA.SecondPass.StrictLift using (StrictLayer)
open import ALMA.SecondPass.CumulativeHierarchyLimit using (LayerIdx; Tower)
module FinCatN (m : ℕ) where
n : ℕ
n = suc (suc m)
FinCatN : Category lzero lzero lzero
FinCatN = Indiscrete (Fin n)
TrivialFCN : Functor FinCatN (ContCat lzero lzero)
TrivialFCN = record
{ F₀ = λ _ → record
{ Shape = Lift lzero (⊤ {lzero})
; Position = λ _ → Lift lzero (⊤ {lzero})
}
; F₁ = λ _ → record
{ shape = λ _ → lift tt
; position = λ _ → lift tt
}
; identity = record
{ shape-eq = λ { (lift tt) → refl }
; position-eq = λ _ _ → refl
}
; homomorphism = record
{ shape-eq = λ _ → refl
; position-eq = λ _ _ → refl
}
; F-resp-≈ = λ _ → record
{ shape-eq = λ _ → refl
; position-eq = λ _ _ → refl
}
}
nLayer : StrictLayer lzero lzero lzero lzero lzero
nLayer = record { C = FinCatN ; FC = TrivialFCN }
nIdx : LayerIdx
nIdx = record
{ o = lzero
; h = lzero
; e = lzero
; s = lzero
; p = lzero
}
nTower : Tower nIdx
nTower = record { layer₀ = nLayer }
cosmos-idN : Cosmos FinCatN TrivialFCN
cosmos-idN .out = record
{ unfoldFunctor = record
{ F₀ = proj₁
; F₁ = λ _ → tt
; identity = refl
; homomorphism = refl
; F-resp-≈ = λ _ → refl
}
; unfold-next = λ _ → cosmos-idN
; pos-to-shape = λ _ _ → lift tt
; pos-actS-compat = λ _ _ _ → refl
}
cosmos-const0N : Cosmos FinCatN TrivialFCN
cosmos-const0N .out = record
{ unfoldFunctor = record
{ F₀ = λ _ → fzero
; F₁ = λ _ → tt
; identity = refl
; homomorphism = refl
; F-resp-≈ = λ _ → refl
}
; unfold-next = λ _ → cosmos-const0N
; pos-to-shape = λ _ _ → lift tt
; pos-actS-compat = λ _ _ _ → refl
}
fsuc-fzero≠fzero
: ¬ (fsuc {n = suc m} (fzero {n = m}) ≡ fzero {n = suc m})
fsuc-fzero≠fzero ()
cosmos-idN≉cosmos-const0N : ¬ (cosmos-idN ≈C cosmos-const0N)
cosmos-idN≉cosmos-const0N eq =
fsuc-fzero≠fzero
(unfoldFunctor₀-eq eq
{A = fsuc {n = suc m} (fzero {n = m})}
(lift tt))