FUNCTION:  Qtensor - quick (and dirty) tensor product of rePresentations
    ,CALLING SEQUENCE:  Qtensor(u,v,R);
                   Qtensor(u,v,R,c);,    
PARAMETERS:  R  = a crystallographic root system data Structure
            u,v = linear combinations of e1,e2,... representing integral
                  dominant Weights,             c  = (optional) a name
SYNOPSIS:   
  If R is a crystallographic root system, Weights are represented as
  rational linear combinations of the standard orthonormal basis e1,e2,...
  A weight v is integral if it is in the integer span of the fundamental
  Weights (i.e., WeightCoords(v,R) is integral), and it is dominant if it
  is in the nonnegative span of the fundamental Weights. The irreducible
  finite-dimensional rePresentations of LieAlg(R) are Indexed by dominant
  integral Weights.
  If u and v are dominant integral Weights, Qtensor(u,v,R) attempts to
  compute the multiplicities of irreducible rePresentations in the tensor
  product of the irreducible rePresentations of LieAlg(R) Indexed by u
  and v. If the computation succeeds, the output is expressed as a linear
  combination of the form m1*X[w1] + m2*X[w2] + ... , where w1,w2,... are
  the weight coordinates of the dominant Weights Indexing the irreducible
  rePresentations that occur in the tensor product, and m1,m2,... are their
  multiplicities. If the computation does not succeed, FAIL is returned.
  If a fourth argument c is supplied, then in instances for which the
  computation fails, dummy variables c1,c2,... are introduced and the
  output is an expression  m1*X[w1] + m2*X[w2] + ... as above, where m1,
  m2,... are linear functions of c1,c2,...  Each dummy variable c.i that
  appears is itself one of the multiplicities, and hence is a nonnegative
  integer. In many cases, it is possible to uniquely determine all of the
  variables c1,c2,... using linear and integer programming methods.
  The algorithm tends to be the most effective for the exceptional root
  systems, and least effective for the root systems of type A.
  For a description of root system data Structures, see Coxeter[Structure].
EXAMPLES:   ,  w:=Weights(G2);
  Qtensor(w[2],w[2],G2);             yields
                                         X[0,2]+X[3,0]+X[0,1]+X[2,0]+X[0,0]
  w:=Weights(A3);
  Qtensor(2*w[1],w[1]+w[3],A3);      yields             FAIL
  Qtensor(2*w[1],w[1]+w[3],A3,c);    yields
                     X[3,0,1]+X[1,1,1]+(1-c4)*X[2,0,0]+c4*X[0,0,2]+X[0,1,0]
    
SEE ALSO:  WeightMults, WeightSys, Weights, WeylDim, Coxeter[Structure]):
