ROOT\_OF _ _ _ _ _ _ _ _ _ _ _ _ operator
When the operator solve is unable to find an explicit solution or if that solution would be too complicated, the result is presented as formal root expression using the internal operator root_of and a new local variable. An expression with a top level root_of is implicitly a list with an unknown number of elements since we can't always know how many solutions an equation has. If a substitution is made into such an expression, closed form solutions can emerge. If this occurs, the root_of construct is replaced by an operator one_of. At this point it is of course possible to transform the result if the original solve operator expression into a standard solve solution. To effect this, the operator expand_cases can be used.
solve(a*x^7-x^2+1,x); 7 2 {x=root_of(a*x_ - x_ + 1,x_)} sub(a=0,ws); {x=one_of(1,-1)} expand_cases ws; x=1,x=-1
The components of root_of and one_of expressions can be processed as usual with operators arglength and part. A higher power of a root_of expression with a polynomial as first argument is simplified by using the polynomial as a side relation.