Hi & thanks for your answers Manuel,
Using your idea of separating the lattice and conversion from the
definition of multiplication, you can at least save yourself the class
instances:
type family Join a b :: *
is more flexible, as I am sure there are other applications, where we
don't want a lattice, but some other structure.
http://www.cse.unsw.edu.au/~pls/thesis/aja-thesis.pdf