open import GpdCont.SymmetricContainer.Base

module GpdCont.SymmetricContainer.EvalHom where

open import GpdCont.Prelude
open import GpdCont.SymmetricContainer.Morphism

import GpdCont.SymmetricContainer.Eval as Eval

open import Cubical.Foundations.HLevels
private
  variable
     : Level
    G H : SymmetricContainer 

open Eval using (⟦_⟧ᵗ ; ⟦_⟧ ; ⟦_⟧-map ; ⟦-⟧ᵗ-Path ; shape ; label)

open Morphism

Hom⟦_⟧ᵗ : (α : Morphism G H)  (X : Type )   G ⟧ᵗ X   H ⟧ᵗ X
Hom⟦ α ⟧ᵗ X p .shape = α .shape-map (p .shape)
Hom⟦ α ⟧ᵗ X p .label = p .label  (α .pos-map (p .shape))

Hom⟦_⟧₀ : (α : Morphism G H)  (X : hGroupoid )    G  X     H  X 
Hom⟦ α ⟧₀ (X , is-gpd-X) = Hom⟦ α ⟧ᵗ X

Hom⟦_⟧₀-natural : (α : Morphism G H)  (X Y : hGroupoid ) (f :  X    Y )  (Hom⟦ α ⟧₀ Y   G ⟧-map X Y f)  ( H ⟧-map X Y f  Hom⟦ α ⟧₀ X)
Hom⟦_⟧₀-natural α X Y f = refl

Hom⟦_⟧₀-id :  (X : hGroupoid ) x  Hom⟦ idMorphism G ⟧₀ X x  x
Hom⟦_⟧₀-id {G = G} X q = refl