How to compose multi-variate polynomials?



I am working with 6 undergraduates on a Number Theory
project that involves exploring (integer coefficient)
polynomials.  I am a complete beginner in Maxima.

The project involves looking for patterns in polynomials of
the form

f(xvec) = f(x1,x2,...,xN)

where N is a value known at run-time.  The polys
("polynomials") are typically the determinant of an NxN
matrix whose entries have been populated by polys.

================

Among the operations we'll want to do on polys is to factor
them: To see if f is a power of a simpler poly g. For
this, it it may be best to leave f as an *expression*, e.g

f_xvec :  3*x1*x7^4 + ...

We'll also need to *compose* polys, e.g suppose we have
these polynomials:

  H maps 2N-dimensional space to N-dim'al space, and
  f,g1,g2 each map N-dim'al space to N-dim'al space.

We'll want to test if

                H(g1(xvec), g2(xvec))

equals          f(xvec) .

Q1: How can I set-up my polys so that this type of
composition is easy to do?

Q2: How can I define a poly f, so that f is viewed as a
1-variable function, but the variable comes from, say,
3-dim'al space and the output is a point in 3-dim'al space?
So, for instance, I can write

  f(f(f([1,2,3])))  ?

(...except that the input-point [1,2,3] might be some other
kind of Maxima object other than a list.)

          Sincerely,   -Prof.  Jonathan King

PS:  I have figured out that maxima notation

  define(funmake(f, makelist(concat( 'x,j) , j , 1,N)) , ''expression_in_xvec)

makes a fnc f(x1, ..., xN).  But I haven't figured out how
to treat tuple (x1, ..., xN) as a single object, in terms
of polynomial composition.
-- 
Prof. Jonathan LF King   Mathematics dept, Univ. of Florida
<squash at math.ufl.edu>,   <http://www.math.ufl.edu/~squash/>;