> Why is getting two new parameters better than the current output of
> solve?

The main point is that it has a more clear and robust structure.
We *always* know what we can expect from this routine. And this is
very important if we want to process the output further deep within
some other algorithm. (That was the main reason why I wrote this code.)

I think also it's faster than generic solve because it does one
special thing only. (I did not really measure it but I claim that
my code which solves sometimes rather large systems has become faster.)

> >>> solve(m*s-v)
> {a0: a2 + 2*a3 + 1/2, a1: -2*a2 - 3*a3 - 1/4}

This is of course the same, just formulated in a very unhandy
way to work with it automatically. The "new" parameters are
implicit here and explicit in the other code.