Type Inference
With weak typing, type inference is needed. (But ML, which is strongly typed, also uses a kind of type inference.)
The resulting type can be determined from the types of the arguments, and the nature of the operations.
Contagion provides one method for type inference:
With strong typing, means for determining type equivalence are needed.
Here x and y have structurally equivalent types.
C and C++ recognize structurally equivalent types as equivalent.
In Modula, most structurally equivalent types are not automatically considered equivalent, but they can be declared equivalent.