-
-
Notifications
You must be signed in to change notification settings - Fork 488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CycleIndexSeries derivative, integral, exponential methods are not combinatorial #14846
Comments
comment:1
For the patchbot: apply trac_14846_cis_deriv_int_exp_methods.patch |
comment:3
I have uploaded a new version of the patch which makes a small change: rather than building the terms of the derivative of a CycleIndexSeries using an opaque list concatenation, I have used the CycleIndexSeriesRing.term method. |
Branch: u/agd/cis_deriv_int_exp_methods |
comment:5
Please make it clear whether the patch or the git branch should be merged. In the latter case, change the milestone to sage-6.0. |
Changed branch from u/agd/cis_deriv_int_exp_methods to none |
This comment has been minimized.
This comment has been minimized.
comment:8
Rebased patch to apply over 5.12.beta4. |
Author: Andrew Gainer-Dewar |
comment:9
Attachment: trac_14846_cis_deriv_int_exp_methods.patch.gz Could you please add doctests to the three _lps functions ? |
Work Issues: documentation |
comment:10
Skeletal doctests added for the three lps* functions. I have no idea whether this is the right way to test this sort of method, but at least it's a test. Additionally, I've switched back over to using Git to manage this—the old Mercurial workflow is just too confusing. How do I tell the build bot to ignore the attachments and only use the branch? |
Branch: u/agd/cis/deriv |
Commit: |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Reviewer: mantepse |
Dependencies: 15673 |
comment:25
Replying to @mwhansen:
Ah, yes, this is an important point. I sometimes forget that other people might have used my code… =D
I don't yet understand everything that's happening with #15673, but I'm starting to take a look at it. I'm definitely open to the idea, though—better series code will make all our work easier! I've taken a look at your rebased version of this, and have a few thoughts up-front:
I've updated the ticket branch to use your code with these changes. I've also set a dependency on #15673. (Evidently, I bungled the ticket modifications a bit, but I think it's all sorted now.) New commits:
|
Changed dependencies from 15673 to #15673 |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:28
Cool, your changes look good to me! |
comment:30
While #15673 looks like it will bring some much-needed improvements to the algebraic machinery of species in Sage, it also looks like it's going to take a while to implement. I've been fielding questions from other researchers who would like to use the code in #14347, which definitely depends on this one, so I'd be very grateful if we could move forward on this one now. I will, of course, be happy to revisit the issue in the context of #15673 once that situation stabilizes! |
Changed dependencies from #15673 to none |
comment:32
I agree. I wonder what happened to #16137. |
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:35
Since #15673 seems to have died on the vine, I have rebuilt the code for this commit on top of current mainline Sage 6.7. All doctests in |
comment:37
I played with the code and the examples, and found myself happy. For example,
Thanks for the code and thanks for the patience! |
Changed branch from u/agd/cis/deriv to |
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 not 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.Component: combinatorics
Keywords: LazyPowerSeries, species
Work Issues: documentation
Author: Andrew Gainer-Dewar
Branch/Commit:
ab9c7d1
Reviewer: Martin Rubey
Issue created by migration from https://trac.sagemath.org/ticket/14846
The text was updated successfully, but these errors were encountered: