match - pattern matching
|
Calling Sequence
|
|
match(expr = pattern, v, 's')
match(expr = pattern, {v1, v2, ..., vN}, 's')
|
|
Parameters
|
|
expr
|
-
|
expression of type algebraic to be matched
|
pattern
|
-
|
pattern (also of type algebraic) to match
|
v
|
-
|
name of the main variable
|
's'
|
-
|
name of the return argument
|
{v1, v2, ..., vN}
|
-
|
names of the main variables
|
|
|
|
|
Description
|
|
•
|
The match(expr = pattern, v, 's') calling sequence returns true if it can match expr to pattern for some values of the variables (excluding the main variable, v). Otherwise, it returns false.
|
•
|
The match(expr = pattern, {v1, v2, ..., vN}, 's') calling sequence returns true if it can match expr to pattern for some values of the variables (excluding the main variables, {v1, v2, ..., vN}). Otherwise, it returns false.
|
|
Note: In the multiple main variable case, the pattern specified must be a polynomial in all, or all but one of, the main variables. That is, type(pattern, polynom(anything, vI)) must be true for (N - 1) values of I in the range 1, 2, ..., N. Otherwise, the match command returns false.
|
•
|
If the match is successful, s is assigned a substitution set such that .
|
•
|
The main variables must be matched exactly in the pattern. In other words, the main variables cannot be substituted for any value.
|
•
|
The match command attempts to compute expressions to satisfy the pattern, as opposed to the typematch command that matches the form of the objects.
|
|
|
Examples
|
|
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
| (3) |
>
|
|
| (4) |
In the multiple main variable case, if the pattern is not a polynomial in (all but one of) the main variables, the match command always returns false.
>
|
|
| (5) |
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
The pattern is polynomial in one of the two main variables, and suitable values can be found for all non-main variables in the following example.
>
|
|
| (10) |
>
|
|
| (11) |
|
|