Contravariant typing
This set of rules leads to the notion of contravariant typing
Again, it ensures that if you have A <= B and a:A and b:B then you can always safely use a where you had b, and
you’ll never have a reference to an instance variable that is unknown or to a function that is not meaningful