topoly vs. to_poly



> (%i1) load(topoly)$
> (%i2) load(polynomialp)$
> (%i3) load("D:
> \\volker\\CVS\\maxima\\maxima\\share\\contrib\\topoly_solver.mac")$
> (%i4) eq : sqrt(x-2) = x-14$
> (%i5) to_poly_solve(eq,[x]);
> (%o5)                             [[x = 18]]
> 
> But I didn't get the clou of to_poly and elim_allbut. In the above 
> example, how can I use 
> their information to judge whether 11 is a solution of eq or not?

The function to_poly_solve uses the inequalities in the second list
returned by to_poly to remove spurious solutions (at least that is
what is should happen!). Simple example:

The (real) solution set to sqrt(x) = -1 is empty:

  (%i6) to_poly_solve(sqrt(x) = -1,x);
  (%o6) []

The function to_poly gives

  (%i7) to_poly(sqrt(x) = -1);
  (%o7) [[%g2+1,x=%g2^2],[-%pi/2<carg(%g2),carg(%g2)<=%pi/2]]

Solving [%g2+1,x=%g2^2] gives the solution [%g2 = -1, x = 1]. But
when %g2 = -1, the constraints [-%pi/2<carg(%g2),carg(%g2)<=%pi/2]
aren't happy, so the solution set is empty. 

So, to answer your question, either (1) trust that to_poly_solve
correctly rejects all spurious solutions or (2) use to_poly and 
elim_allbut and check each solution as you did. Maybe I answered
your question?

Fun example:

(%i11) eq : [max(x,y)-min(8*y,x-y) = 2, abs(x+y) = 9];
(%o11) [max(x,y)-min(8*y,x-y)=2,abs(y+x)=9]

(%i12) sol : to_poly_solve(eq,[x,y]);
(%o12) [[x=74/9,y=7/9],[x=7,y=2]]

(%i13) for si in sol do print(subst(si, eq));
[2=2,9=9] 
[2=2,9=9] 

BW