{-# OPTIONS --safe --cubical-compatible --guardedness --exact-split --double-check #-}
module ALMA.SecondPass.FinCatNProjectiveObstruction where
open import Relation.Nullary using (¬_)
open import Data.Nat using (ℕ)
open import ALMA.SecondPass.Cosmos using (Cosmos)
open import ALMA.SecondPass.Terminal using (_≈C_; ≈C-trans; ≈C-sym)
open import ALMA.SecondPass.StrictLift using (StrictLayer; EmbeddingRule; EmbedFamily)
open import ALMA.SecondPass.CumulativeHierarchyLimit
using (Tower; LiftedLimitStructure; LimitLayer; EnrichedTower)
open import ALMA.SecondPass.FinCatNWitness
module FinCatNProjectiveObstruction (m : ℕ) where
open FinCatN m
liftAt-0-collapses-general
: {R : EmbeddingRule}
(ET : EnrichedTower R nIdx)
(x y : Cosmos (StrictLayer.C (Tower.layer (EnrichedTower.tower ET) 0))
(StrictLayer.FC (Tower.layer (EnrichedTower.tower ET) 0)))
→ _≈C_ {C = StrictLayer.C (Tower.layer (EnrichedTower.tower ET) 1)}
{FC = StrictLayer.FC (Tower.layer (EnrichedTower.tower ET) 1)}
(EmbeddingRule.Embed R (Tower.layer (EnrichedTower.tower ET) 0) x
(EmbedFamily.getData (EnrichedTower.fams ET 0) x))
(EmbeddingRule.Embed R (Tower.layer (EnrichedTower.tower ET) 0) y
(EmbedFamily.getData (EnrichedTower.fams ET 0) y))
→ (LLS : LiftedLimitStructure R nIdx ET)
→ _≈C_ {C = StrictLayer.C (LimitLayer.layer∞ (LiftedLimitStructure.limit LLS))}
{FC = StrictLayer.FC (LimitLayer.layer∞ (LiftedLimitStructure.limit LLS))}
(LiftedLimitStructure.liftAt LLS 0 x)
(LiftedLimitStructure.liftAt LLS 0 y)
liftAt-0-collapses-general ET x y collapse LLS =
≈C-trans
(≈C-sym (LiftedLimitStructure.liftAt-step LLS 0 x))
(≈C-trans
(LiftedLimitStructure.liftAt-resp-≈C LLS 1 collapse)
(LiftedLimitStructure.liftAt-step LLS 0 y))
no-injective-liftAt-general
: {R : EmbeddingRule}
(ET : EnrichedTower R nIdx)
(x y : Cosmos (StrictLayer.C (Tower.layer (EnrichedTower.tower ET) 0))
(StrictLayer.FC (Tower.layer (EnrichedTower.tower ET) 0)))
→ _≈C_ {C = StrictLayer.C (Tower.layer (EnrichedTower.tower ET) 1)}
{FC = StrictLayer.FC (Tower.layer (EnrichedTower.tower ET) 1)}
(EmbeddingRule.Embed R (Tower.layer (EnrichedTower.tower ET) 0) x
(EmbedFamily.getData (EnrichedTower.fams ET 0) x))
(EmbeddingRule.Embed R (Tower.layer (EnrichedTower.tower ET) 0) y
(EmbedFamily.getData (EnrichedTower.fams ET 0) y))
→ ¬ (x ≈C y)
→ (LLS : LiftedLimitStructure R nIdx ET)
→ ¬ (∀ {u v : Cosmos (StrictLayer.C (Tower.layer (EnrichedTower.tower ET) 0))
(StrictLayer.FC (Tower.layer (EnrichedTower.tower ET) 0))}
→ _≈C_ {C = StrictLayer.C (LimitLayer.layer∞
(LiftedLimitStructure.limit LLS))}
{FC = StrictLayer.FC (LimitLayer.layer∞
(LiftedLimitStructure.limit LLS))}
(LiftedLimitStructure.liftAt LLS 0 u)
(LiftedLimitStructure.liftAt LLS 0 v)
→ u ≈C v)
no-injective-liftAt-general ET x y collapse x≉y LLS inj =
x≉y (inj (liftAt-0-collapses-general ET x y collapse LLS))