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].