On Behavioural Equivalence of Data Types