#14846: CycleIndexSeries derivative, integral, exponential methods are not
combinatorial
-----------------------------+----------------------------------------------
Reporter: agd | Owner: agd
Type: enhancement | Status: new
Priority: major | Milestone: sage-5.12
Component: combinatorics | Keywords:
Work issues: | Report Upstream: N/A
Reviewers: | Authors:
Merged in: | Dependencies:
Stopgaps: |
-----------------------------+----------------------------------------------
The ''CycleIndexSeries'' class inherits ''derivative'', ''integral'', and
''exponential'' methods from its parent class ''LazyPowerSeries''.
However, these operations (which are perfectly reasonable at the
''LazyPowerSeries'' level) are combinatorially natural. In fact, there is
a differentiation operator on cycle index series, but it's something
entirely different, and anti-differentiation is in general impossible!
In addition to being confusing, this discrepancy has the potential to
hinder work using the ''CycleIndexSeries'' class. The combinatorial
operation of cycle index differentiation is very useful in enumerative
work.
All that said, the existing ''exponential'' and ''derivative'' methods are
used for algebraic magic tricks in some of the existing code, so it's
important not to take it away altogether.
The attached patch makes the following changes:
* Adds ''_lps_derivative'', ''_lps_integral'', and ''_lps_exponential''
methods to ''CycleIndexSeries'' which call up using ''super''.
* Refactors the internal code which previously used ''exponential'' and
''derivative'' to use ''_lps_exponential'' and ''_lps_derivative''
instead.
* Implements a new ''derivative'' method which computes the combinatorial
derivative of a cycle index series.
* Implements a new ''pointing'' method which implements a related
combinatorial operation.
* Implements a new ''integral'' method which raises a
''NotImplementedError'' to prevent any user confusion (since, as explained
in the docstring, there may be infinitely many very distinct cycle indices
with a given derivative).
* Implements a new ''exponential'' method which returns the composition
E(self) for E the cycle index series of ''SetSpecies''.
* Implements a new ''logarithm'' method which returns the composition
Ω(self) for Ω the cycle index series implemented in
''CombinatorialLogarithmSeries''.
Docstrings and doctests are included for everything but the _lps_*
methods, which just call up to ``super``. I'm not sure what a doctest for
these would even look like, but I'm open to suggestions.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14846>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.