Re: Re: Bug in Solve?
- To: mathgroup at smc.vnet.net
- Subject: [mg17523] Re: [mg17458] Re: [mg17395] Bug in Solve?
- From: Daniel Lichtblau <danl>
- Date: Mon, 10 May 1999 19:53:24 -0400
- References: <19990511070226.020565@tuins.tuins.ac.jp>
- Sender: owner-wri-mathgroup at wolfram.com
Andrzej Kozlowski wrote: > > Thanks. I would like to ask you a purely mathematical question. Suppose > we have a finitely generated algebra of characteristic zero and we > consider some element of its algebraic closure explicitely given in terms > the generators using radicals and powers . Can we check that this is in > fact the zero element? In other words I am trying to express the > folowing problem in abstract terms: we are given an expression in > several variables involving radicals and powers. Is there an algebraic > algorithm that would check if this expression is identically 0? (I mean > without substituting numerical values for the "variables" and doing > approaximate computations). I would be very surprised if there was though > I can't remember any theorems saying that this is undecidable in general. > If there isn't then the only approach would be seem to be to substitute > numerical values for the parameters and perform numerical checks. I guess > something like this could (in principle) be implemented, couldn't it? > > On the other hand, one thing Mathematica could definitely do in such > cases, is to issue a warning. This is why I thought this behaviour might > be called "a bug": Mathematica making any false statements without a > suitable warning should probably be considered a bug. > I am not certain this is even well defined as stated. How does one distinguish between different radical functions that satisfy the same minimal polynomial? With algebraic numbers over the rationals (or algebraic extensions thereof) one can use the Archimidean property of real numbers and root separation to impose some ordering upon a family of algebraic numbers with identical minimal polynomial. What about over function fields? I do not know if there is any sensible approach. In the problem that prompted this thread Solve internally has the following system. In[2]:= Solve[{1+a*b+rad1*rad2==0,rad1^2==1+a^2,rad2^2==1+b^2}, {a,rad1,rad2}] // InputForm Out[2]//InputForm= {{a -> b, rad1 -> -Sqrt[1 + b^2], rad2 -> Sqrt[1 + b^2]}, {a -> b, rad1 -> -Sqrt[1 + b^2], rad2 -> Sqrt[1 + b^2]}, {a -> b, rad1 -> Sqrt[1 + b^2], rad2 -> -Sqrt[1 + b^2]}, {a -> b, rad1 -> Sqrt[1 + b^2], rad2 -> -Sqrt[1 + b^2]}} In atuality rad1 and rad2 are eliminated, I just wanted to show what one gets for these as well so it becomes explicit that the radicals will be negatives of one another in all "solutions". (In this simple example I was able to strengthen the automatic verification to discard the solution a->b, by the way. So that improvement will appear in a future release.) In general we'd have symbolic radical functions floating around, and it is not always clear how they are related to the input. For example, in this problem maybe one can see that we require a solution where both radicals take the "positive" branch simultaneously (and so our solution set should be empty). Is there any tactic that can always make such a determination in more general settings? I for one am not aware of how to do this. Daniel Lichtblau Wolfram Research