Dan, > The denominators are mostly vandermondes. However, there is something in > type C (symplectic) which will have a vandermonde in the x's and a Weyl > type C denominator in the y's. But that's probably a subject for a > different email altogether, because multivariate Laurent power series are > not implemented in sage as far as I can tell.
There's no problem as long as the ultimate answer has no denominators in x and y. You make your series using an extra variable z to control the total degree, so that the coefficients will be polynomial in t, x_i, y_j and suitably antisymmetric in x's and y's, take the coefficient of z that you want to work with, divide by the Vandermonde-like denominators in a big polynomial ring with all variables. The answer is now a polynomial symmetric in x and y. The following can get you started partially. --Mark R = QQ['t,x1,x2,y1,y2'] R.inject_variables() P = PowerSeriesRing(R, 'z') P.inject_variables() Rt = QQ['t'] Ry = Rt['y1,y2'] Rx = Ry['x1,x2'] Symyt = SymmetricFunctions(Ry) sx = Symyt.s() Symt = SymmetricFunctions(Rt) st = Symt.s() st2 = st.tensor(st) def to_tensor(p): # convert from big polynomial ring to iterated polynomial ring pc = Rx(p.subs({R.gen(0):Rt.gen(0),R.gen(1):Rx.gen(0),R.gen(2):Rx.gen(1),R.gen(3):Ry.gen(0),R.gen(4):Ry.gen(1)})) # convert to symmetric function in x px = sx.from_polynomial(pc) # and then convert the coefficients to symmetric functions in y return st2.sum([tensor([st.monomial(mu), st.from_polynomial(px[mu]) ]) for mu in px.support()]) N = 5 f = (1-z*x1*y1*t)**(-1)*(1-z*x2*y2*t)**(-1)-(1-z*x1*y2*t)**(-1)*(1-z*x2*y1*t)**(-1) denom = (x1-x2)*(y1-y2) ans = st2.sum([to_tensor(R(f[i]/denom)) for i in range(N)]) print ans > > > > Your toy example involves (1 - t x_i y_j)^{-1} > > which is no problem at all using geometric series in an extra variable. > > > > --Mark > > > > > Sorry for asking a somewhat related question to one I asked a while ago, > > > but I find myself in the situation of trying to expand a certain > > > multivariate symmetric series (polynomial after cutoff) in certain > > classes > > > of symmetric functions and can't seem to get it working. > > > > > > The following is true: > > > > > > \sum_{\lambda} \product_{i=1...n} (1-t^{\lambda_i + n - i + 1}) > > s_{\lambda} > > > (x_1,...,x_n) s_{\lambda} (y_1,...,y_n) = \\ > > > > > > \frac {1} {\prod_{i < j} (x_i - x_j) (y_i - y_j)} \det_{i,j} ( \frac > > {1-t} > > > {(1-t x_i y_j) (1-x_i y_j)} ) > > > > > > Proof is simple, but generalizations to Hall Littlewood or Macdonald > > > polynomials (with non trivial proofs) exist due to Warnaar and > > > Noumi-Kirillov. > > > > > > Question: Suppose I don't know the identity but suspect something along > > > those lines is true. How do I expand the right hand side (a quotient of > > a > > > determinant by the 2 vandermondes) in Schur functions (in x's say) and > > > recover the coefficients (schur functions in y's times some products of > > 1 - > > > q^? ) > > > > > > I tried the following naive idea (suggested some time ago in a slightly > > > different context) and failed. Basically, using power series rings. > > > > > > n=2 # number of variables > > > # setup of the rings > > > R1.<t> = QQ[] > > > R1 = FractionField(R1) > > > dp = n+4 > > > R = PowerSeriesRing(R1, n, 'z', default_prec = dp) > > > S = PowerSeriesRing(R, n, 'x', default_prec=dp) > > > Sym = SymmetricFunctions(R) > > > > > > # set up the determinant divided by the vandermondes > > > M = matrix(SR,2, [(1-R1.gen(0)) / ( (1 - > > > R1.gen(0)*S.gen(0)*S.base_ring().gen(0)) * (1 - > > > S.gen(0)*S.base_ring().gen(0)) ), (1-R1.gen(0)) / ( (1 - > > > R1.gen(0)*S.gen(0)*S.base_ring().gen(1)) * (1 - > > > S.gen(0)*S.base_ring().gen(1)) ), (1-R1.gen(0)) / ( (1 - > > > R1.gen(0)*S.gen(1)*S.base_ring().gen(0)) * (1 - > > > S.gen(1)*S.base_ring().gen(0)) ), (1-R1.gen(0)) / ( (1 - > > > R1.gen(0)*S.gen(1)*S.base_ring().gen(1)) * (1 - > > > S.gen(1)*S.base_ring().gen(1)) )]) > > > > > > h = M.det() > > > h *= prod( 1/(S.gen(i) - S.gen(j)) for i in range(n) for j in > > range(i+1,n)) > > > h *= prod( 1/(S.base_ring().gen(i) - S.base_ring().gen(j)) for i in > > > range(n) for j in range(i+1,n)) > > > > > > Schur = Sym.schur() > > > > > > #do the expansion > > > Schur_det_expansion = Schur(Sym.from_polynomial(h.polynomial())) > > > > > > # for a small partition lambda print the coefficient > > > la = Partition([2,1]) > > > print Schur_det_expansion.coefficient(la) > > > > > > The errors I get are varied. If I do the determinant first (the case > > > above), there's an error saying symbolic ring is not the same as the > > power > > > series ring (I suppose the determinant returns an element of symbolic > > ring > > > and sees a power series inside). If I divide by the vandermondes first, > > > well those are not power series so the error claims I can only divide by > > a > > > unit (and x_i - x_j ain't a unit). But the two errors of course cancel > > each > > > other in theory (the vandermondes divide the determinant) and the end > > > result makes sense as exemplified by the theorem I stated. > > > > > > I was deliberately stating this problem in the simplest case to avoid > > > cumbersome notations, but the next step is to go to Hall-Littlewood and > > > beyond. > > > > > > As a side question, are there routines that compute Pfaffians in sage? > > > > > > Can anybody help? Please?:) > > > > > > Thanks, > > > > > > Dan > > > > > > -- > > > You received this message because you are subscribed to the Google > > Groups "sage-combinat-devel" group. > > > To unsubscribe from this group and stop receiving emails from it, send > > an email to sage-combinat-devel+unsubscr...@googlegroups.com <javascript:>. > > > > > To post to this group, send email to > > > sage-comb...@googlegroups.com<javascript:>. > > > > > Visit this group at http://groups.google.com/group/sage-combinat-devel. > > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > > > > > > > > > -- > You received this message because you are subscribed to the Google Groups > "sage-combinat-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-combinat-devel+unsubscr...@googlegroups.com. > To post to this group, send email to sage-combinat-devel@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-combinat-devel. > For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-combinat-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-combinat-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-combinat-devel. For more options, visit https://groups.google.com/groups/opt_out.