Hi Mark, Travis and Darij, @ Travis: Thanks for catching the SR bug and for pointing me to the fact pfaffian is now implemented in sage. Last time I checked (not so recently), it wasn't:)
@ Mark: As I said, the denominators that *are not* power series are vandermondes or C Weyl denominators. For vandermondes, I suppose I could do the polynomial division in something (I don't know how to do it in sage and obtain a polynomial per se, but I can certainly do it in mathematica. In sage, it shouldn't be too difficult either) and then take the result, which will be symmetric, and use that. As a side note, uglier denominators might involve infinite q symbols like \prod_{i<j} (t x_i x_j; q). This would be the Macdonald level. If infinite q symbols are implemented in sage in a way compatible with symmetric functions (I reason this might be hard), please let me know. Otherwise, I suppose I can expand as a power series in q, which is a headache (given the amount of infinite q symbols involved). As for the ring, I want the very base ring/field to be R = Q(t) (or Q(q,t)), as you suggested. But if you build S = R['x1,x2,y1,y2'], take a poly f in here, lift it to symmetric functions (in the same 4 variables over R) then how do you tell sage you want the coefficient of only the schur function in the x's? (which again should be a nice factor times a schur function in the y's). @Darij: I didn't know about inject_variables(), but it looks like a neat shorthand trick. Thanks. db On Tuesday, March 4, 2014 8:29:27 PM UTC+1, Dan Betea wrote: > > > > On Tuesday, March 4, 2014 5:16:14 PM UTC+1, Mark Shimozono wrote: >> >> Dan, >> >> Before giving any "sage advice" I need to know how bad the >> "real denominators" will get. >> >> A special trick can be used if the denominators are limited to >> (x_i - x_j). >> > > 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. > > >> >> 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. >> > To post to this group, send email to sage-comb...@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.