Integrating function with abs or max



Actually, a simple change to find_breaks should take care of the
nested case, but it doesn't do much good, because a) Compar doesn't
understand how to simplify in many cases b) Solve doesn't understand
how to solve (eg) abs(x)=1 (easy to fix), abs(x)=x^3 (messier to fix,
but doable), etc....

find_breaks(ex) :=
      if atom(ex)
	then {}
      elseif member(inop(ex),'[abs,signum])
         then union({inpart(ex,1)},find_breaks(inpart(ex,1)))
      elseif member(inop(ex),'[min,max])
         then union(pairwise_differences(inargs(ex)), find_breaks(inargs(ex)))
      elseif member(inop(ex),'[floor,ceiling]) then error("Can't
handle floor or ceiling")
      else xreduce('union, setify(map('find_breaks, inargs(ex))))$