sagecomputer-algebra-systemssymbolic-computation

Can I substitute using a symbolic equation in Sage?


I am using the following map in Sage:

f = lambda x: sgn(x)*sgn(x);

which evaluates to f(x) = 0 for x=0 and f(x)=1 for x!=0;

In symbolic results, sgn(x)^2, sgn(x)^4 and sgn(x)^8, etc. are being treated as unequal, even though they are equal for all values of x. Is there a way that I can substitute something like:

sgn(x)^2 == sgn(x)^4 == sgn(x)^8

for all occurrences of these relations, and for all symbolic values of x?

I could create a new substitution rule for every symbol, e.g.

result.subs(sgn(c)^2 == sgn(c)^4).subs(sgn(d)^2 == sgn(d)^4)...

and so on, but that seems hard to control.


Solution

  • Apparently Sage allows for the use of wildcards in substitution (here's the example that tipped me off). So I did something like:

    var('a,b,c,d,e,f');
    w = SR.wild(0);
    result = f(a,b,c,d,e,f).subs(sgn(w)^4 == sgn(w)^2).subs(sgn(w)^8 == sgn(w)^2);
    

    And it worked! Much easier.