# Questions about the parameters in the output of solve

I am writing a program that, among other things, has to solve many systems of polynomial equations (of degree <= 3) determined by the data entered by the user. Each system of equations consists of 3 equations in 3 variables. Sometimes the equations in a given system are redundant, and therefore the output of solve contains parameters (free variables). Is there any way to know which variables in the output of solve are the parameters (without having to look at the actual output in Sage)?

Here is a simple example.

```
x,y=var('x,y',domain=RR);
eqn1=x+y==1;eqn2=2*x+2*y==2;
soln=solve([eqn1,eqn2],x,y,solution_dict=True);
soln
```

The output is

```
[{x: -r6 + 1, y: r6}]
```

How do I know which variable is the free variable in this case (without looking at the output)? Is it true that the free variable(s) in the output of solve will always be the "last variable(s)" (in the alphabetical order), `y`

in this case? Is there a `is_free_variable`

function (similar to the `is_integer`

function)? In my program, I need to be able to identify the free variables in the solution of solve, `y`

in this case, without looking at the output, and substitute those variables by a few numerical values.

I understand that the `solve`

function in Sage uses the corresponding Maxima function. It seems that Sage does not recognize the Maxima function `%rnum_list`

(which gives the list of parameters introduced in the solutions by `solve`

and `algsys`

). Is there a Sage function that does the same as `%rnum_list`

?

Thanks,

Aldo

With respect to your last question, possible

`maxima_calculus("%rnum_list")`

?The "free variable" in your example is r6, and the solution is described by giving how both x and y depend on it. It is certainly not the case that the "alphabetically largest" variable can always be chosen as a free variable, as the system [x==x, y==0] shows.