Hello, @Cyrille! The problem here is that you misused the `assume`

command. The `assume`

command is used to establish restrictions on symbolic variables, and its use depends on the case you are solving. For example, consider the following integral:

$$
\int_1^a\frac{1}{x}\;dx
$$

This will converge or diverge depending on the value of $a$, so no specific answer can be given in this case, without knowing more information about $a$. The `assume`

command takes care of this. If you suppose (assume) that $a>1$, for example, you get

$$
\int_1^a\frac{1}{x}\;dx=\log(a)
$$

The corresponding Sage code would be

```
var('a')
assume(a>1)
integrate(1/x, 1, a)
```

If you suppose (assume) $a<0$, the integral will diverge. The corresponding Sage code would be

```
var('a')
assume(a>1)
integrate(1/x, 1, a)
```

(Consider `assume`

the equivalent of the hypotheses of a theorem, proposition, lemma, etc.: you can't prove or even apply the theorem without knowing the hypothesis are true.)

In the particular case of your question, it is of no help to know that $0\le a\le1$. For example, $a=1/2$ satisfies the assumption, but $x^{1/2}$ can't be computed for every real value of $x$, so extra restrictions should apply in order to invert the function.

However, consider the restriction (hypothesis or assumption) that $a\in\mathbb{Z}$. In that case, the function $x^n$ is meaningful on the whole set $\mathbb{R}$, except maybe for $x=0$, which Sage can handle, and thus it can be inverted.

**My suggestion: Don't worry about when to use the **`assume`

command; Sage will tell you when it needs it.

For example, continuing with your question, the code

```
var('x,y,a')
U(x) = x^a
V(x) = solve(x == U(y), y)[0].rhs()
show(V)
```

will print a very long traceback, most of which is useless for you, except for the last line, which says:

```
TypeError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(a>0)', see `assume?` for more details)
Is a an integer?
```

There you go, the Maxima part of Sage is asking whether the variable $a$ is an integer or not. Then you declare $a$ to be indeed integer with an `assume`

:

```
var('x,y,a')
assume(a, 'integer')
U(x) = x^a
V(x) = solve(x == U(y), y)[0].rhs()
show(V)
```

In general, when you get a large traceback, ignore most of it, except the last line, or perhaps the last three lines.