FUNCTION :  qseries[findhom] - finds a set of potential homogeneous
                               relations among a list of q-series.

CALLING SEQUENCE :  findhom(L,q,n,topshift)
    
PARAMETERS :   L   - list of q-series
               q   - variable           
               n   - positive integer
               topshift - integer greater than -20      

GLOBAL VARIABLE : X, xprint (default=false)

SYNOPSIS :   
   
 findhom(L,q,n,topshift) returns a set of potential homogenous relations
 of order n among the q-series in the list L.
 The value of topshift is usually taken to be zero. Howeverm if
 it appears that spurious relations are being generated then a higher
 value of topshift should be taken.

 This program converts the list of q-series into a list of polynomials
 of a certain degree and then converts these into a matrix. The entries
 in a given row correspond to coefficients of the corrresponding the
 polynomial. The set of relations is then found by computing
 the kernel of the transpose of this matrix.

NOTE: There is a global variable X that is reassigned each time the
function is called. This variable is used to display the relations.
When xprint=true more info is printed.
      

CHANGES :
  1.3: o changed taylor to series so can handle negative exponents
       o works properly when nops(L)=1

EXAMPLES :   

> with(qseries):
> findhom([theta3(q,100),theta4(q,100),theta3(q^2,100), theta4(q^2,100)],q,1,0);
                                      {{}}
> findhom([theta3(q,100),theta4(q,100),theta3(q^2,100), theta4(q^2,100)],q,2,0);
                                   2      2       2         2
                 {-X[1] X[2] + X[4] , X[1]  + X[2]  - 2 X[3] }
> xprint:=true:
> findhom([theta3(q,100),theta4(q,100),theta3(q^2,100), theta4(q^2,100)],q,2,0);
                                # of terms , 31
                        -----RELATIONS----of order---, 2
                                   2      2       2         2
                 {-X[1] X[2] + X[4] , X[1]  + X[2]  - 2 X[3] }

DISCUSSION :

From the session above we see that there is no linear relation between
the functions

theta3(q), theta4(q), theta3(q^2) and theta4(q^2).

However, it appears that there are two quadratic relations.

                                /         2            2\1/2
                           2    |theta3(q)  + theta4(q) |
                   theta3(q ) = |-----------------------|
                                \           2           /

and
                             2                         1/2
                     theta4(q ) = (theta3(q) theta4(q)).

SEE  ALSO :  findnonhom