try to test if all substitution preserve the type