laplace() and tellsimpafter()



On 2012-11-25, Stavros Macrakis <macrakis at alum.mit.edu> wrote:

> It seems to me that there is no good reason to be defining simplification
> rules on verbs.  Yes, I can construct scenarios where it would be useful
> (see below), but even if someone does that someday, I'd argue it is a very
> very specialized and unusual case.  The usual case is application of
> tellsimp rules during general simplification of whole expressions, in which
> there should be no verbs at all (remember that simplification doesn't reach
> inside lambdas including function definitions).

A useful way (widely used within Maxima) to implement an operator is as
a function which has simplification rules but no function definition.
For these functions, there is no useful distinction between nouns and
verbs, and typically only the verb form is ever used. Surely it should
be possible to define rules for such functions.

Rewriting expressions, as in the code generation example you cited, is
perhaps specialized, but surely not beyond the scope of symbolic
computation -- I think it is needlessly limiting to rule out such
operations.

> So I would suggest that tellsimpafter(f(...),...) should be interpreted as
> applying to the *noun* f.

I dunno -- irregular behavior in the interest of convenience (guessing
what the user wants) generally makes it harder to predict what is the
effect of some operation. I wouldn't want to make it harder to
understand simplification rules ....

> Same for any embedded functions, e.g. tellsimpafter(f(diff(x,y))...).

Well, that just makes it still more difficult to predict the outcome --
I really can't go along with this.

best,

Robert Dodier