So I promised an explanation around the changes to
BooleanAlgebra[A] since 0.8.2.
The basic idea here is that we wanted to add support for lattices (and semi-lattices,
and heyting algebras). These are structures which generalize boolean algebras but which
are much more general. For example, the
spire.math.Trilean type almost seems like
it could be a boolean algebra, but it violates the law of the excluded middle.
Heyting[A] was introduced to support these types, and "algebra" was dropped from the
name since it seemed redundant;
Bool[A] was chosen to avoid a name conflict with