-- Type stuff
mkTyVarSubst, mkTopTyVarSubst,
- substTyWith, substTy, substTheta,
+ substTyWith, substTy, substTheta, deShadowTy,
-- Expression stuff
substExpr
substTy subst ty | isEmptySubst subst = ty
| otherwise = subst_ty subst ty
+deShadowTy :: Type -> Type -- Remove any shadowing from the type
+deShadowTy ty = subst_ty emptySubst ty
+
substTheta :: TyVarSubst -> ThetaType -> ThetaType
substTheta subst theta
| isEmptySubst subst = theta