In Maple version 4.3, we extended the notion of a *type* to include
*structured* types. A structured type is a Maple expression that
describes the type of a composite object. For example, the
type set(`=`), specifies a set of equations, and
the type set(name=algebraic) specifies a set of equations
whose left hand sides are variable names,
and whose right hand sides are algebraic expressions.
In Maple V, all types are now structured types.
The old polynomial type test

type( p, polynom, [x,y], rational )

which tests if p is a polynomial in x and y with rational coefficients becomes

type( p, polynom(rational,[x,y]) )

Because all types are now single objects, one can describe the type of arbitrarily complex objects very concisely. For example, the type

matrix( polynom(algnum), square )

specifies a square matrix whose entries are polynomials (in any number of variables) over an algebraic number field, and the type

[ exp(anything}, {name,name=constant..constant} ]

specifies a list of exactly two objects, the first an exponential (of any type), the second either a variable name, or an equation of the form indicated - the set brackets {}are used to denote alternation. For a more detailed description see type[structure].

bondaren@thsun1.jinr.ru