Derivatives for Containers in Univalent Foundations
Cubical.HITs.Nullification.Base
Initializing search
    phijor/derivatives
    • Overview
    • Library
    phijor/derivatives
    • Overview
      • Derivative.Bag
      • Derivative.Adjunction
      • Derivative.Basics.Sum
      • Derivative.Basics.Unit
      • Derivative.Basics.W
      • Derivative.Basics.Decidable
      • Derivative.Basics.Embedding
      • Derivative.Basics.Equiv
      • Derivative.Basics.Maybe
      • Derivative.Basics.Sigma
      • Derivative.Category
      • Derivative.ChainRule
      • Derivative.Container
      • Derivative.Derivative
      • Derivative.Indexed.Mu
      • Derivative.Indexed.ChainRule
      • Derivative.Indexed.Container
      • Derivative.Indexed.Derivative
      • Derivative.Indexed.MuRule
      • Derivative.Indexed.Univalence
      • Derivative.Isolated.Base
      • Derivative.Isolated
      • Derivative.Isolated.S1
      • Derivative.Isolated.Sum
      • Derivative.Isolated.W
      • Derivative.Isolated.DependentGrafting
      • Derivative.Isolated.Grafting
      • Derivative.Isolated.Maybe
      • Derivative.Isolated.Sigma
      • Derivative.Prelude
      • Derivative.Properties
      • Derivative.Remove

    Cubical.HITs.Nullification.Base

    module Cubical.HITs.Nullification.Base where
    
    open import Cubical.Foundations.Prelude
    open import Cubical.Foundations.Function
    open import Cubical.Foundations.Equiv.PathSplit
    open isPathSplitEquiv
    
    module _ {ℓα ℓs} {A : Type ℓα} (S : A → Type ℓs) where
      isNull : ∀ {ℓ} (X : Type ℓ) → Type (ℓ-max (ℓ-max ℓα ℓs) ℓ)
      isNull X = (α : A) → isPathSplitEquiv (const {A = X} {B = S α})
    
      data Null {ℓ} (X : Type ℓ) : Type (ℓ-max (ℓ-max ℓα ℓs) ℓ) where
        ∣_∣ : X → Null X
        -- the image of every map (S α → Null S X) is contractible in Null S X
        hub   : (α : A) → (f : (S α) → Null X) → Null X
        spoke : (α : A) → (f : (S α) → Null X) (s : S α) → hub α f ≡ f s
        -- the image of every map (S α → x ≡ y) for x y : X is contractible in x ≡ y
        ≡hub   : ∀ {x y} {α} (p : S α → x ≡ y) → x ≡ y
        ≡spoke : ∀ {x y} {α} (p : S α → x ≡ y) (s : S α) → ≡hub p ≡ p s
    
      isNull-Null : ∀ {ℓ} {X : Type ℓ} → isNull (Null X)
      fst (sec (isNull-Null α)) f =     hub   α f
      snd (sec (isNull-Null α)) f i s = spoke α f s i
      fst (secCong (isNull-Null α) x y) p i     = ≡hub   (funExt⁻ p) i
      snd (secCong (isNull-Null α) x y) p i j s = ≡spoke (funExt⁻ p) s i j
    
    Made with Material for MkDocs