module GpdCont.SymmetricContainer.Base where

open import GpdCont.Prelude
open import Cubical.Foundations.HLevels

record SymmetricContainer ( : Level) : Type (ℓ-suc ) where
  field
    Shape : Type 
    Pos : Shape  Type 

  field
    is-groupoid-shape : isGroupoid Shape
    is-set-pos :  s  isSet (Pos s)

  ShapeGroupoid : hGroupoid 
  ShapeGroupoid .fst = Shape
  ShapeGroupoid .snd = is-groupoid-shape

  PosSet : (s : Shape)  hSet 
  PosSet s .fst = Pos s
  PosSet s .snd = is-set-pos s

mkSymmetricContainer :  {}  (S : hGroupoid ) (P :  S   hSet )  SymmetricContainer 
mkSymmetricContainer S P .SymmetricContainer.Shape =  S 
mkSymmetricContainer S P .SymmetricContainer.Pos = ⟨_⟩  P
mkSymmetricContainer S P .SymmetricContainer.is-groupoid-shape = str S
mkSymmetricContainer S P .SymmetricContainer.is-set-pos = str  P

syntax mkSymmetricContainer S  s  P) = [ s  S  P ]