I would like to advertise https://github.com/sagemath/sage/pull/38544, implementing https://en.wikipedia.org/wiki/Combinatorial_species, and as a side request the discussion of one important design question, https://github.com/sagemath/sage/pull/38544#issuecomment-2481392240.
The pull request is building on the lazy series framework built with Travis, and the polynomial species class built with Mainak in the last few years. It is a replacement for the combinatorial species framework redesigned and ported to Sage by Mike Hansen in 2008. You can do fun stuff like the examples below with the package. I am a bit proud of the fact that there is no other CAS that can do such things. I would like to discuss the design question linked to above in a setting a bit broader than on a hidden PR, because I can imagine that it has consequences I cannot foresee yet. So, please join :-) Best wishes, Martin EXAMPLES:: Let E be the species of sets and G be the species of graphs. Then the species of connected graphs Gc satisfies E(Gc) = G. Thus we can compute Gc in a few lines: sage: L.<X> = LazySpecies(QQ) sage: E = L.Sets() sage: Ep = E.restrict(1) sage: G = L.Graphs() sage: Gc = Ep.revert()(G-1) sage: Gc X + E_2 + (E_3+X*E_2) + (E_4+E_2(E_2)+E_2^2+E_2(X^2)+X*E_3+X^2*E_2) + (E_5+3*E_2*E_3+X*E_4+2*X*E_2(E_2)+4*X*E_2(X^2)+5*X^3*E_2+P_5+3*X*E_2^2+X^2*E_3) + (E_6+3*E_2*E_4+E_2(E_3)+8*X*E_2*E_3+E_3(E_2)+3*E_2*E_2(E_2)+10*E_2*E_2(X^2)+E_3^2+X^2*E_4+16*X^2*E_2^2+5*X^3*E_3+5*E_2(X*E_2)+21*X^4*E_2+X*P_5+2*P_6+2*Pb_6+2*E_2^3+X*E_5+12*X^2*E_2(X^2)+4*E_2(X^3)+2*E_3(X^2)+2*X^2*E_2(E_2)+8*X^6) + (E_7+3*E_2*E_5+3*E_3*E_4+X*E_6+8*X*E_2*E_4+4*E_3*E_2(E_2)+9*E_2^2*E_3+10*E_3*E_2(X^2)+2*X*E_3(E_2)+10*X*E_2*E_2(E_2)+27*X*E_2^3+3*X*E_3^2+X^2*E_5+39*X^2*E_2*E_3+5*X^3*E_4+2*X*E_2(E_3)+112*X^3*E_2^2+21*X^4*E_3+22*X*E_2(X*E_2)+76*X*E_2*E_2(X^2)+6*X^3*E_2(E_2)+2*E_2*P_5+193*X^5*E_2+2*X*P_6+10*X*E_3(X^2)+10*X*Pb_6+74*X^3*E_2(X^2)+2*P_7+50*X*E_2(X^3)+X^2*P_5+144*X^7) + O^8 You want connected graphs where any leaves are labelled with elements of sort Y? Do the math (eg., Proposition 14 https://arxiv.org/abs/2505.03665, due to Gessel and Li) sage: L2.<X, Y> = LazySpecies(QQ) sage: E2 = E.restrict(2, 2) sage: Gcleaves = (Gc(X*E(Y-X)) - X*Y + X^2 - E2(X)) sage: Gcleaves.truncate(6) X + (E_3(X)+X*E_2(Y)) + (E_4(X)+E_2(E_2(X))+E_2(X)^2+X*Y*E_2(X)+E_2(X*Y)+X*E_3(Y)) + (E_5(X)+3*E_2(X)*E_3(X)+2*X*E_2(E_2(X))+2*X*E_2(X)^2+P_5(X)+2*X*E_2(X^2)+X*Y*E_3(X)+4*X^2*Y*E_2(X)+X*E_2(X)*E_2(Y)+2*X*E_2(X*Y)+X^2*Y*E_2(Y)+X*E_4(Y)) sage: Gcleaves.isotype_generating_series() X + (X^3+X*Y^2) + (3*X^4+X^3*Y+X^2*Y^2+X*Y^3) + (11*X^5+5*X^4*Y+3*X^3*Y^2+X^2*Y^3+X*Y^4) + (61*X^6+29*X^5*Y+14*X^4*Y^2+5*X^3*Y^3+2*X^2*Y^4+X*Y^5) + O(X,Y)^7 Best wishes, Martin -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/sage-devel/2917441a-2949-416b-ba32-a6d1d43ee743n%40googlegroups.com.