Question: How to make solve() not be affected by earlier calls to solve? Error, (in is/duplicates:-Normal) too many levels of recursion

Just found strange bug in Maple. 

If I do solve(eq1...) then solve(eq2,...) then the second solve now gives internal error.

But If I do (from clean start)  just solve(eq2,...) then it times out ok, No internal error. So clearly the first call to solve changed something in internal memory/cache to do this.

Is there a way to correctly "clear" solve cache or its memory tables after each call, so that earlier calls to solve do not affect future calls behavior? Was going to add this to my collection of maple bugs post, but thought a new question will be better to make it easier to reply.

The problem is that these internal Maple errors can not be cought by try/catch. Which means the whole program crashes and there is no way to continue automatically.

restart;

interface(version);

`Standard Worksheet Interface, Maple 2025.1, Linux, June 12 2025 Build ID 1932578`

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1881 and is the same as the version installed in this computer, created 2025, October 7, 16:4 hours Pacific Time.`

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 29 and is the same as the version installed in this computer, created June 23, 2025, 10:25 hours Eastern Time.`

solve timesout OK if no call made before it

 

restart;

kernelopts('assertlevel'=2):

eq_2:=1 = -X*((1/2/(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y*(2*Y
*a+2*a*y0)+1/2/(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0*(
2*Y*a+2*a*y0))/(-2*X*Y*a-2*X*a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)-(-a*Y
-a*y0+(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y+(2*X*Y*a+2*
X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0)/(-2*X*Y*a-2*X*a*y0-2*Y*a*
x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)^2*(-2*Y*a-2*a*y0))/Y/((-a+1/2/(2*X*Y*a+2*X*a*
y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y*(2*X*a+2*a*x0-2*Y-2*y0)+(2*X*Y*a
+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)+1/2/(2*X*Y*a+2*X*a*y0+2*Y*a
*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0*(2*X*a+2*a*x0-2*Y-2*y0))/(-2*X*Y*a-2*X*
a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)-(-a*Y-a*y0+(2*X*Y*a+2*X*a*y0+2*Y*a
*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y+(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2
-2*Y*y0-y0^2)^(1/2)*y0)/(-2*X*Y*a-2*X*a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0
^2)^2*(-2*X*a-2*a*x0+2*Y+2*y0)):
try
    timelimit(30,solve(identity(eq_2,X),[x0,y0]));
catch:
    print("good. No crash");
end try;

"good. No crash"

 

 

Same solve gives internal error when calling another solve before it

 

restart;

kernelopts('assertlevel'=2):

 

 

eq_1:=1 = -X*(1/2*(2*X*Y^3-4*X*Y^2*a+6*X*Y^2*y0-8*X*Y*a*y0+6*X*Y*y0^2-4*X*a*y0^2+2*X*
y0^3+2*Y^3*x0-4*Y^2*a*x0+6*Y^2*x0*y0-8*Y*a*x0*y0+6*Y*x0*y0^2-4*a*x0*y0^2+2*x0*
y0^3+2*X*Y+2*X*y0+2*Y*x0+2*x0*y0)/(X^2*Y*a+X^2*a*y0+2*X*Y*a*x0+2*X*a*x0*y0+Y*a*
x0^2+a*x0^2*y0+X^3+3*X^2*x0+3*X*x0^2+x0^3)-1/2*(X^2*Y^3-2*X^2*Y^2*a+3*X^2*Y^2*
y0-4*X^2*Y*a*y0+3*X^2*Y*y0^2-2*X^2*a*y0^2+X^2*y0^3+2*X*Y^3*x0-4*X*Y^2*a*x0+6*X*
Y^2*x0*y0-8*X*Y*a*x0*y0+6*X*Y*x0*y0^2-4*X*a*x0*y0^2+2*X*x0*y0^3-Y^3*a^2+Y^3*x0^
2-3*Y^2*a^2*y0-2*Y^2*a*x0^2+3*Y^2*x0^2*y0-3*Y*a^2*y0^2-4*Y*a*x0^2*y0+3*Y*x0^2*
y0^2-a^2*y0^3-2*a*x0^2*y0^2+x0^2*y0^3+X^2*Y+X^2*y0+2*X*Y*x0+2*X*x0*y0+Y*x0^2+x0
^2*y0)/(X^2*Y*a+X^2*a*y0+2*X*Y*a*x0+2*X*a*x0*y0+Y*a*x0^2+a*x0^2*y0+X^3+3*X^2*x0
+3*X*x0^2+x0^3)^2*(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0+3*X^2+6*X*x0+3*x0^2))/Y/
(1/2*(3*X^2*Y^2-4*X^2*Y*a+6*X^2*Y*y0-4*X^2*a*y0+3*X^2*y0^2+6*X*Y^2*x0-8*X*Y*a*
x0+12*X*Y*x0*y0-8*X*a*x0*y0+6*X*x0*y0^2-3*Y^2*a^2+3*Y^2*x0^2-6*Y*a^2*y0-4*Y*a*
x0^2+6*Y*x0^2*y0-3*a^2*y0^2-4*a*x0^2*y0+3*x0^2*y0^2+X^2+2*X*x0+x0^2)/(X^2*Y*a+X
^2*a*y0+2*X*Y*a*x0+2*X*a*x0*y0+Y*a*x0^2+a*x0^2*y0+X^3+3*X^2*x0+3*X*x0^2+x0^3)-1
/2*(X^2*Y^3-2*X^2*Y^2*a+3*X^2*Y^2*y0-4*X^2*Y*a*y0+3*X^2*Y*y0^2-2*X^2*a*y0^2+X^2
*y0^3+2*X*Y^3*x0-4*X*Y^2*a*x0+6*X*Y^2*x0*y0-8*X*Y*a*x0*y0+6*X*Y*x0*y0^2-4*X*a*
x0*y0^2+2*X*x0*y0^3-Y^3*a^2+Y^3*x0^2-3*Y^2*a^2*y0-2*Y^2*a*x0^2+3*Y^2*x0^2*y0-3*
Y*a^2*y0^2-4*Y*a*x0^2*y0+3*Y*x0^2*y0^2-a^2*y0^3-2*a*x0^2*y0^2+x0^2*y0^3+X^2*Y+X
^2*y0+2*X*Y*x0+2*X*x0*y0+Y*x0^2+x0^2*y0)/(X^2*Y*a+X^2*a*y0+2*X*Y*a*x0+2*X*a*x0*
y0+Y*a*x0^2+a*x0^2*y0+X^3+3*X^2*x0+3*X*x0^2+x0^3)^2*(X^2*a+2*X*a*x0+a*x0^2)):
timelimit(30,solve(identity(eq_1,X),[x0,y0]));

[]

 

 

#now try same solve as in first example

eq_2:=1 = -X*((1/2/(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y*(2*Y
*a+2*a*y0)+1/2/(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0*(
2*Y*a+2*a*y0))/(-2*X*Y*a-2*X*a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)-(-a*Y
-a*y0+(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y+(2*X*Y*a+2*
X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0)/(-2*X*Y*a-2*X*a*y0-2*Y*a*
x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)^2*(-2*Y*a-2*a*y0))/Y/((-a+1/2/(2*X*Y*a+2*X*a*
y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y*(2*X*a+2*a*x0-2*Y-2*y0)+(2*X*Y*a
+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)+1/2/(2*X*Y*a+2*X*a*y0+2*Y*a
*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*y0*(2*X*a+2*a*x0-2*Y-2*y0))/(-2*X*Y*a-2*X*
a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0^2)-(-a*Y-a*y0+(2*X*Y*a+2*X*a*y0+2*Y*a
*x0+2*a*x0*y0-Y^2-2*Y*y0-y0^2)^(1/2)*Y+(2*X*Y*a+2*X*a*y0+2*Y*a*x0+2*a*x0*y0-Y^2
-2*Y*y0-y0^2)^(1/2)*y0)/(-2*X*Y*a-2*X*a*y0-2*Y*a*x0-2*a*x0*y0+Y^2+2*Y*y0+a^2+y0
^2)^2*(-2*X*a-2*a*x0+2*Y+2*y0)):
try
    timelimit(30,solve(identity(eq_2,X),[x0,y0]));
catch:
    print("good. No crash");
end try;

Error, (in is/duplicates:-Normal) too many levels of recursion

 

 

Download second_sovle_fail_maple_2025_1_oct_21_2025.mw

Please Wait...