module Cubical.Categories.LocallySmall.Displayed.Instances.Graph.Presheaf.GloballySmall.Base where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Function
open import Cubical.Data.Sigma.More
open import Cubical.Categories.LocallySmall.Variables
open import Cubical.Categories.LocallySmall.Category.Base
open import Cubical.Categories.LocallySmall.Category.Small
open import Cubical.Categories.LocallySmall.Functor
open import Cubical.Categories.LocallySmall.NaturalTransformation.IntoFiberCategory
open import Cubical.Categories.LocallySmall.Presheaf.GloballySmall.IntoFiberCategory.Base
open import Cubical.Categories.LocallySmall.Displayed.Category.Small
open import Cubical.Categories.LocallySmall.Displayed.HLevels
open import Cubical.Categories.LocallySmall.Displayed.Functor.Base
open import Cubical.Categories.LocallySmall.Displayed.Instances.Sets.Base
open import Cubical.Categories.LocallySmall.Displayed.Instances.StructureOver.Base
open SmallCategoryᴰ
module _ (C : SmallCategory ℓC ℓC') (P : Presheaf C ℓP) where
open StructureOver
private
module C = SmallCategory C
module P = PresheafNotation P
ElementStr : StructureOver C.cat (mapω' P.p[_]) _
ElementStr .Hom[_][_,_] f (liftω p) (liftω q) = (f P.⋆ q) ≡ p
ElementStr .idᴰ = P.⋆IdL _
ElementStr ._⋆ᴰ_ fy≡x gz≡y =
P.⋆Assoc _ _ _
∙ cong (_ P.⋆_) gz≡y
∙ fy≡x
ElementStr .isPropHomᴰ = P.isSetPsh _ _
Element : SmallCategoryᴰ C ℓP ℓP
Element = smallcatᴰ _ (StructureOver→Catᴰ ElementStr)
hasPropHomsElement : hasPropHoms (Element .catᴰ)
hasPropHomsElement = hasPropHomsStructureOver ElementStr
private
module ∫Element = Category (∫C Element)
test-Element : ∀ x p y q
→ ∫Element.Hom[ (x , liftω p) , (y , liftω q) ] ≡ fiber (P._⋆ q) p
test-Element x p y q = refl
module _ where
open SmallCategoryVariables
open SmallCategory
module _
{P : Presheaf C ℓP}
{Q : Presheaf D ℓQ}
{F : Functor (C .cat) (D .cat)}
(α : PshHet {C = C} {D = D} F P Q)
where
open NatTransDefs (C ^opsmall) SET
open NatTrans
PshHet→ElementFunctorᴰ :
Functorᴰ F (Element C P .catᴰ) (Element D Q .catᴰ)
PshHet→ElementFunctorᴰ =
mkPropHomsFunctor (hasPropHomsElement D Q)
(λ (liftω p) → liftω (α .N-ob _ p))
(λ {yᴰ = py} f⋆p≡p' →
(sym $ cong (λ z → z .snd (py .Liftω.lowerω)) (α .N-hom _))
∙ cong (α .N-ob _) f⋆p≡p')
module _ (F : Functor (C .cat) (D .cat))(c : C .ob) where
open Functor
Functor→ElementFunctorᴰ :
Functorᴰ F
(Element C (C [-, c ]) .catᴰ)
(Element D (D [-, F .F-ob (liftω c) .Liftω.lowerω ]) .catᴰ)
Functor→ElementFunctorᴰ =
PshHet→ElementFunctorᴰ {C = C}{D = D}
{Q = D [-, F-ob F (liftω c) .Liftω.lowerω ]}
(Functor→PshHet F c)