e.g., I can't think how to get rid of the existentially bound types in the node AstCastS :: (NumScalar r1, RealFrac r1, NumScalar r2, RealFrac r2) => AstTensor ms s (TKS sh r1) -> AstTensor ms s (TKS sh r2) for which the interpretation in the simplest interpreter is just "realToFrac" (which totally needs to be monomorphised for the RULES to fire)