*Written as post nine of #100DaysToOffload.*

Today I learned about one of those mathematical concepts that is a seemingly arbitrary extension of another. A *partial equivalence relation* is just an equivalence relation that need not be reflexive.

The best example of a partial equivalence relation is IEEE 754 floats, since `NaN != NaN`

. This is why, in Rust, floats implement `PartialEq`

but not `Eq`

.

I spent some time trying to chase down some old mathematical references that describe partial equivalence relations under that name. Most of them were in Russian journals on semigroup theory, which I am sadly ignorant of.