a = b
|a, b||%||elements of the type|
If returns true, then and are guaranteed to represent the same element of the type. The behavior if returns false depends on the type, since a full equality test might not be available. At least, it is guaranteed that and do not share the same memory location in that case. The semantics of is the boolean negation of .