Combinatorial Logarithm

This file provides the cycle index series for the virtual species \(\Omega\), the ‘combinatorial logarithm’, defined to be the compositional inverse of the species \(E^{+}\) of nonempty sets:

\[\Omega \circ E^{+} = E^{+} \circ \Omega = X.\]


This module is now deprecated. Please use sage.combinat.species.generating_series.CycleIndexSeriesRing.exponential() instead of CombinatorialLogarithmSeries().


  • Andrew Gainer-Dewar (2013): initial version
sage.combinat.species.combinatorial_logarithm.CombinatorialLogarithmSeries(R=Rational Field)

Return the cycle index series of the virtual species \(\Omega\), the compositional inverse of the species \(E^{+}\) of nonempty sets.

The notion of virtual species is treated thoroughly in [BLL]. The specific algorithm used here to compute the cycle index of \(\Omega\) is found in [Labelle].


The virtual species \(\Omega\) is ‘properly virtual’, in the sense that its cycle index has negative coefficients:

sage: from sage.combinat.species.combinatorial_logarithm import CombinatorialLogarithmSeries
sage: CombinatorialLogarithmSeries().coefficients(4)
doctest:...: DeprecationWarning: CombinatorialLogarithmSeries is deprecated, use CycleIndexSeriesRing(R).logarithm_series() or CycleIndexSeries().logarithm() instead
See for details.
[0, p[1], -1/2*p[1, 1] - 1/2*p[2], 1/3*p[1, 1, 1] - 1/3*p[3]]

Its defining property is that \(\Omega \circ E^{+} = E^{+} \circ \Omega = X\) (that is, that composition with \(E^{+}\) in both directions yields the multiplicative identity \(X\)):

sage: Eplus = sage.combinat.species.set_species.SetSpecies(min=1).cycle_index_series()
sage: CombinatorialLogarithmSeries().compose(Eplus).coefficients(4)
[0, p[1], 0, 0]