Derivative.Basics.Unit
{-# OPTIONS --safe #-} module Derivative.Basics.Unit where open import Derivative.Prelude open import Cubical.Foundations.Univalence private variable β : Level A : Type β isContr-π* : isContr (π* {β}) isContr-π* .fst = β’ isContr-π* .snd _ = refl isOfHLevel-π* : β n β isOfHLevel n (π* {β}) isOfHLevel-π* n = isContrβisOfHLevel n isContr-π* isProp-π* : isProp (π* {β}) isProp-π* = isOfHLevel-π* 1 isSet-π* : isSet (π* {β}) isSet-π* = isOfHLevel-π* 2 π*-unit-Γ-left-equiv : (π* {β} Γ A) β A π*-unit-Γ-left-equiv = strictEquiv (Ξ» { (β’ , a) β a }) (Ξ» a β (β’ , a)) isContrββπ* : isContr A β A β π* {β} isContrββπ* contr-A = (const β’) , is-equiv-const where is-equiv-const : isEquiv (Ξ» _ β β’) is-equiv-const .equiv-proof β’ .fst = contr-A .fst , refl is-equiv-const .equiv-proof β’ .snd (a , p) = Ξ£PathP (contr-A .snd a , Ξ» i j β β’) isContrββ‘π* : isContr A β A β‘ π* isContrββ‘π* contr-A = ua $ isContrββπ* contr-A Ξ π*-equiv : β {βA} (A : π* {β} β Type βA) β (β t β A t) β (A β’) Ξ π*-equiv A = strictIsoToEquiv iso module Ξ π*-equiv where iso : Iso _ _ iso .Iso.fun = _$ β’ iso .Iso.inv = const iso .Iso.rightInv _ = refl iso .Iso.leftInv _ = refl