The `a m` (`calc-match`

) [`match`

] function takes a
vector of formulas and a rewrite-rule-style pattern, and produces
a vector of all formulas which match the pattern. The command
prompts you to enter the pattern; as for `a r`, you can enter
a single pattern (i.e., a formula with meta-variables), or a
vector of patterns, or a variable which contains patterns, or
you can give a blank response in which case the patterns are taken
from the top of the stack. The pattern set will be compiled once
and saved if it is stored in a variable. If there are several
patterns in the set, vector elements are kept if they match any
of the patterns.

For example, ``match(a+b, [x, x+y, x-y, 7, x+y+z])'`
will return ``[x+y, x-y, x+y+z]'`.

The `import`

mechanism is not available for pattern sets.

The `a m` command can also be used to extract all vector elements
which satisfy any condition: The pattern ``x :: x>0'` will select
all the positive vector elements.

With the Inverse flag [`matchnot`

], this command extracts all
vector elements which do *not* match the given pattern.

There is also a function ``matches( x, p)'` which
evaluates to 1 if expression

The function `vmatches`

is just like `matches`

, except
that if the match succeeds it returns a vector of assignments to
the meta-variables instead of the number 1. For example,
``vmatches(f(1,2), f(a,b))'` returns ``[a := 1, b := 2]'`.
If the match fails, the function returns the number 0.

Go to the first, previous, next, last section, table of contents.