I don't think looking at the Lisp representation of %union(...) is very
helpful to understanding its semantics. Reading the code of simp-%union
might help a bit for an implementor. But for a *user*, %union is
documented in the to_poly_solve section of the
manual<http://maxima.sourceforge.net/docs/manual/en/maxima_79.html>
.
-s