A trait for representing equivalence relations. It is important to
distinguish between a type that can be compared for equality or
equivalence and a representation of equivalence on some type. This
trait is for representing the latter.
An equivalence
relation is a binary relation on a type. This relation is exposed as
the equiv
method of the Equiv
trait. This
relation must be:
- reflexive:
equiv(x, x) == true
, for any x
of
type T
.
- symmetric:
equiv(x, y) == equiv(y, x)
, for any
x
and y
of type T
.
- transitive: if
equiv(x, y) == true
and equiv(y, z) == true
then equiv(x, z) == true
, for any x
, y
,
and z
of type T
.