The composition of PlusEmpty F and G, [x]F[G[x]], is a PlusEmpty
The product of PlusEmpty F and G, [x](F[x], G[x]]), is a PlusEmpty
The product of PlusEmpty F and G, [x](F[x], G[x]]), is a PlusEmpty
The product of Plus F and G, [x](F[x], G[x]]), is a Plus
The product of Plus F and G, [x](F[x], G[x]]), is a Plus
Typeclass that permits testing whether some type with an empty representation is in fact empty.