[Maxima] Rules and Patterns

Martin Schönecker ms_usenet at gmx.de
Wed Apr 1 07:15:16 CDT 2009

This is a case where a pattern seems to match, but it doesn't match!? 
Anybody knows why?


/*Declare patterns for f and for an atom.*/

(%i1) matchdeclare(
     fpat, fp,
     atompat, atom
(%o1) done
(%i2) fp(e) := (atom(e) and e=f);
(%o2) fp(e):=atom(e) and e=f

(%i3) expr: a*b*f;
(%o3) a*b*f

/*Declare a rule that tests for a product of an atom and f.
Return the factors as well as the pattern match results.*/

(%i4) defrule(
     baz(atompat, atom(atompat), fpat, fp(fpat))
fpat*atompat partitions `product'
(%o4) prodrul:atompat*fpat->baz(atompat,atom(atompat),fpat,fp(fpat))

/*Why does the rule think it applies, and the patterns do not match at 
the same time?*/

(%i5) apply1(expr, prodrul);
(%o5) baz(a*b,false,f,true)

More information about the Maxima mailing list