1 | initial version |

Half of your question is easier to answer. I bet if you do

```
var('theta,x,Psi')
y=cos(theta)^2*sin(theta)^2*cos(Psi)
y.subs_expr(cos(theta)^2*sin(theta)^2==x)
```

you won't get the `theta |-->`

bit. That is because you are defining a function, not just an expression, in your example.

For substituting more advanced expressions, you will probably have to use wildcards. Note that

```
sage: y.subs_expr(cos(theta)^2==x)
x*cos(Psi)*sin(theta)^2
```

works; it's the fact that your expression isn't just one thing, but a product, that probably messes things up.

```
sage: y.subs({cos(theta)^2*sin(theta)^2*w0:x*w0})
x*cos(Psi)
```

but keep in mind that for your more complex expression you may need to have a more complicated use of wildcards. Good luck!

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.