I really do not like the nasty β trick on the Scns constructor:
data S (P : ΠΠSet) : U → Set where
Scp : {ty : U} → S P ty
Schg : {ty : U}(i j : Constr ty)
→ P (typeOf ty i) (typeOf ty j)
→ S P ty
Scns : {ty : U}(i : Constr ty)
→ All (contr P ∘ β) (typeOf ty i)
→ S P ty
Maybe, making S into a bifunctor will make things simpler.
Something in the lines of:
data S (P : ΠΠSet)(Q : AASet)(ty : U) : Set where
Scp : S P ty
Schg : (i j : Constr ty)
→ P (typeOf ty i) (typeOf ty j)
→ S P ty
Scns : (i : Constr ty)
→ All (contr Q) (typeOf ty i)
→ S P ty
I really do not like the nasty
β
trick on the Scns constructor:Maybe, making S into a bifunctor will make things simpler. Something in the lines of: