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鈥檒l occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement Adams operator for lazy power series #36396
Conversation
I think this implementation is mostly correct. For multivariate series, you would just need to pass multiple parameters, just like you would for polynomials. So something like scaled = self(*[g**p for g in self.parent().gens()]) I think will work for all cases. Also your test for variables in the base ring is not sufficient as This will also not work differently for a base ring of You can also do a shortcut for |
I think plethystic exponential and logarithm for lazy symmetric functions are already implemented in I am currently a bit confused why the Adams operator is an operator on (lazy) power series and not on (lazy) symmetric functions. |
Well, I want to look at symmetric functions acting by plethysm on lazy power series rings with polynomial coefficients. I think that there is currently no good way to do that in sage. Unless maybe by looking at symmetric functions with coefficients in lazy formal power series, which sound heavy. |
more generally, one could make symmetric functions acts on all rings endowed with Adams operators. |
src/sage/rings/lazy_series.py
Outdated
def func(cf): | ||
return cf.subs(D) | ||
|
||
return scaled.map_coefficients(func) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe turning around the logic is easier?
scaled = self(*[g**p for g in self.parent().gens()])
try:
vars = self.base_ring().gens()
except AttributeError:
return scaled
D = {v: v**p for v in vars}
return scaled.map_coefficients(lambda c: c.subs(D))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let me again mention that basically all reasonable base rings have a gens()
attribute. So the try-except
block is effectively worthless (although perhaps it is okay to have it for the rare (if it even exists) commutative ring that does not implement gens()
). The good news is that subs
also works fine on things like ZZ
and QQ
. It introduces an inefficiency, but I doubt it is a big one.
@fchapoton: Out of curiousity: do you dislike the syntax Possibly you have overlooked #36396 (comment) |
yes, I do not like anything that requires the preparser to enter the game. |
OK. What about the other comment - I don't understand the logic? |
well, the code has since changed according to Travis suggestions. I am not sure I understand you concern there. |
I don't understand why you introduce the variable
which is a bit shorter (in fact, half the length) and makes it - at least for me - much clearer what's happening. In fact, it is also unclear to me which This is the reason why I only put the (I also really dislike introducing the local |
ok, I understand and changed accordingly to your suggestion. The Using lambda functions is not good practice according to pep8. |
Could you point me to the location where pep8 says this? I could only find the statement that you should not bind lambda expressions to names. |
I doubt an |
I think it is not a big issue, but (of course) this fails for lazy power series with coefficients being lazy Dirichlet series:
It might even be a good thing to fail. However, wouldn't it make more sense to check whether
There is another problem: there are two methods on symmetric functions with almost the same name, but quite different definition: |
In the long term, one should use I do not see anything in the ring of symmetric functions:
EDIT: |
The
The
It seems to me that the
|
The alias |
If I understand correctly, formal power series do not form a bialgebra in a natural way, right? Still - shouldn't this method be called
|
We are talking about lambda ring structures. There are two natural lambda rings structures on the ring of symmetric functions. One acts on every homogeneous component, seen as the character ring of the group Sn. The other acts on the full ring, where tensor product comes from parabolic induction. They are both legitimate, and we cannot use the same name for both. So it's not simple to standardize the names. |
Sorry, I am not fluent enough in the terminology, that's why I am asking. How are these two called in I think that it would in fact be wonderful if you could include this background in the documentation. At least superficially, |
I would prefer to keep the name I have chosen. Otherwise, one could use "inner_adams_operator" and "outer_adams_operator", but this is a bit awkward. I am not eager to add explanations about Lambda rings, as long as we do not have the category of Lambda rings.. Is there anything else to fix ? |
I just realized that very likely,
|
Could you explain to me why it shouldn't be called I am not asking for documentation of |
I am not sure this conversation is leading anywhere, but thanks for your time and attention. The Frobenius operator, in my mind, is taking something to the power p, where p is a prime number or a power of a prime number. On the other hand, I want to introduce a general mechanism for "plethystic actions of |
So, would you agree to the following?
I think it would be really bad to call something PS: I just realize that in |
It's a quite a mess. I do not see an easy way out. My point of view : every procedure
Some of these things are related : [F] and [B] for the "inner Adams" and [E] and [C] for the "outer Adams". So there is one notational conflict in symmetric functions, and maybe unhappy choices made in the past. Damn.. |
Documentation preview for this PR (built with commit 9967f59; changes) is ready! 馃帀 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your patience!
Here is a first sketch to implement Adams operators on Lazy formal power series.
also working in the multivariate case.
This will be useful to implement plethystic Exp and Log later.
馃摑 Checklist