matchdeclare??



Julien, consider a pattern-matching rule like this:

  tellsimp (foo (aa), bar (aa));

which replaces foo expressions with bar expressions.
matchdeclare tells Maxima for what value of aa and bb
this rule is applied. When there is a preceding

  matchdeclare (aa, mumblep);

the rule is applied when mumblep(aa) returns anything
other than false. That is, matchdeclare specifies the
predicate for matching variables in patterns.

E.g. (1) match a literal integer

  matchdeclare (aa, integerp);

(2) match a symbol

  matchdeclare (aa, symbolp);

(3) match a non-atomic expression

  matchdeclare (aa, lambda ([e], not atom (e)));

In the absence of a matching predicate for aa, only
a literal foo(aa) expression is matched.

Hope this helps. If you have a particular problem in mind,
maybe it would help focus the discussion.

Robert Dodier