Moved from thesis
Type families SubListProof and ElemProof can be made injective, does that help anywhere?
type family
SubListProof = (res :: SubList (xs :: [a]) (ys :: [a])) | res -> xs a where
SubListProof = SubNil
SubListProof = Keep SubListProof
SubListProof = Drop SubListProof
type family
ElemProof = (res :: EffElem eff a xs) | res -> eff a xs where
ElemProof = Here
ElemProof = There ElemProof
Moved from thesis
Type families SubListProof and ElemProof can be made injective, does that help anywhere?