Derivatives for Containers in Univalent Foundations
Cubical.HITs.S1.Properties
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.S1.Properties

    module Cubical.HITs.S1.Properties where
    
    open import Cubical.Foundations.Prelude
    open import Cubical.Foundations.GroupoidLaws
    open import Cubical.Foundations.Equiv
    open import Cubical.Foundations.HLevels
    open import Cubical.Foundations.Isomorphism
    open import Cubical.Foundations.Univalence
    
    open import Cubical.HITs.S1.Base
    open import Cubical.HITs.PropositionalTruncation as PropTrunc hiding ( rec ; elim )
    
    rec : ∀ {ℓ} {A : Type ℓ} (b : A) (l : b ≡ b) → S¹ → A
    rec b l base     = b
    rec b l (loop i) = l i
    
    elim : ∀ {ℓ} (C : S¹ → Type ℓ) (b : C base) (l : PathP (λ i → C (loop i)) b b) → (x : S¹) → C x
    elim _ b l base     = b
    elim _ b l (loop i) = l i
    
    isConnectedS¹ : (s : S¹) → ∥ base ≡ s ∥₁
    isConnectedS¹ base = ∣ refl ∣₁
    isConnectedS¹ (loop i) =
      squash₁ ∣ (λ j → loop (i ∧ j)) ∣₁ ∣ (λ j → loop (i ∨ ~ j)) ∣₁ i
    
    isGroupoidS¹ : isGroupoid S¹
    isGroupoidS¹ s t =
      PropTrunc.rec isPropIsSet
        (λ p →
          subst (λ s → isSet (s ≡ t)) p
            (PropTrunc.rec isPropIsSet
              (λ q → subst (λ t → isSet (base ≡ t)) q isSetΩS¹)
              (isConnectedS¹ t)))
        (isConnectedS¹ s)
    
    IsoFunSpaceS¹ : ∀ {ℓ} {A : Type ℓ} → Iso (S¹ → A) (Σ[ x ∈ A ] x ≡ x)
    Iso.fun IsoFunSpaceS¹ f = (f base) , (cong f loop)
    Iso.inv IsoFunSpaceS¹ (x , p) base = x
    Iso.inv IsoFunSpaceS¹ (x , p) (loop i) = p i
    Iso.rightInv IsoFunSpaceS¹ (x , p) = refl
    Iso.leftInv IsoFunSpaceS¹ f = funExt λ {base → refl ; (loop i) → refl}
    
    Made with Material for MkDocs