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)

  opaque
    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 ]