Here is one idea: perhaps I can rewrite `PolynomialSpeciesElement.action` 
so that it actually returns a gap action.  (it makes my brain spin every 
time I have to translate between species and group actions)

On Sunday, 1 June 2025 at 11:21:46 UTC+2 Martin R wrote:

> Ideally, I would like to define this in terms of generators of associated 
> permutation groups.  It is easy to see that it is sufficient to implement 
> it, when F is a transitive action.  Note, however, that H is not 
> necessarily transitive, even if F is.
>
> To see (part of) the problem, replace the set Y in the example with a set 
> of 2k pairs (i.e., in the example above, we have k=2), and F by the action 
> of S_{2k} that relabels cycles.  We then obtain an action on a set with 
> (2k-1)! elements.  (It's not hard to see that it has 2^{k-1} (k-1)! fixed 
> points.)
>
> A priori, the actions F and G are given as formal sums of permutation 
> groups (i.e., the stabilizer subgroups), which is quite efficient.  In the 
> example, F corresponds to the cyclic permutation group with generator 
> (1,...,2k). To implement the above, I turn then into actual actions.  In 
> particular, I actually compute the sets X and Y, and they are simply too 
> large.
>
> However, even optimizing the helper function _stabilizer_subgroups would 
> be very interesting.
>
> Best wishes,
>
> Martin
> On Sunday, 1 June 2025 at 10:53:00 UTC+2 Martin R wrote:
>
>> > I think the point is that Y is assumed to be {1,2,...,N}.  So the 
>> action G is a homomorphism from S_n to S_N.  The action F is a homomorphism 
>> from S_N to the symmetric group on X.  We can compose these two 
>> homomorphisms to get an action of S_n on X.
>>
>> Yes, that's correct.
>>
>> Here is an example that can be done by hand.  Examples are easier to 
>> understand when X and Y are sets of combinatorial objects.  I replaced them 
>> with numbers above for simplicity of the definition.
>>
>> Let N=4 and let n=2.  Let G be the action of S_2 on 
>> Y={(12),(21),(ab),(ba)} which switches the positions in the tuples, defined 
>> by 
>> (1,2) *_G (1,2) = (2,1) and  
>> (1,2) *_G (a,b) = (b,a).
>>
>> Let F be the action of S_4 on cycles (or cyclic permutations, if you 
>> prefer) of length 4, that relabels the elements of a cycle (or, if you 
>> prefer, acting by conjugation).  That is., X={(1,2,3,4), (1,2,4,3), 
>> (1,3,2,4), (1,3,4,2), (1,4,2,3), (1,4,3,2)}, and, for example,
>>
>> (2,1) *_F (1,2,3,4) = (2,1,3,4)
>>
>> Then the functorial composition is an action of S_2 on the set X.  The 
>> most intuitive way to see it is to think of X as the set of cyclic 
>> permutations of Y, and S_2 acts by swapping the positions in the tuples.  
>> For example:
>>
>> (1,2) *_H ((12), (ab), (21), (ba)) = ((21), (ba), (12), (ab), so that's a 
>> fixed point, whereas
>> (1,2) *_H ((12), (21), (ab), (ba)) = ((21), (12), (ba), (ab) is not.
>>
>> Does this help?
>> On Sunday, 1 June 2025 at 01:39:18 UTC+2 dmo...@deductivepress.ca wrote:
>>
>>> I was confused, too, but I think the point is that Y is assumed to be 
>>> {1,2,...,N}.  So the action G is a homomorphism from S_n to S_N.  The 
>>> action F is a homomorphism from S_N to the symmetric group on X.  We can 
>>> compose these two homomorphisms to get an action of S_n on X.
>>>
>>> On May 31, 2025, at 6:06 PM, Dima Pasechnik <dim...@gmail.com> wrote:
>>>
>>> On Sat, May 31, 2025 at 2:57 PM 'Martin R' via sage-devel
>>> <sage-...@googlegroups.com> wrote:
>>>
>>>
>>> Dear permutation group / gap experts!
>>>
>>> I would enjoy some expert help to implement the so called functorial 
>>> composition of species. The operation is easy to define even without 
>>> mentioning combinatorial species, as follows:
>>>
>>> Let Y = {1,2,...,N}
>>>
>>> Let G: S_n x Y -> Y be a (left) action of the symmetric group S_n on Y.
>>> Let F: S_N x X -> X be a (left) action of S_N on X.
>>>
>>> Then we can define an action H: S_n x X -> X as follows:
>>>
>>> For pi in S_n, let G_pi be the permutation of Y induced by the action G. 
>>>  Then,
>>>
>>> pi *_H x := G_pi *_F  x.
>>>
>>>
>>> Should the last x be y? Anyhow, I am completely lost here - are X and
>>> Y arbitrary? Or is Y a subset of X?
>>> An example might help.
>>>
>>> Dima
>>>
>>>
>>> Currently, https://github.com/sagemath/sage/pull/40186 implements this 
>>> in a very naive way. It involves three functions:
>>>
>>>
>>> sage.rings.lazy_species.FunctorialCompositionSpeciesElement.__init__.coefficient
>>> (implementing the above)
>>> sage.rings.species.PolynomialSpeciesElement.action
>>> (used to turn a species into the corresponding action)
>>> sage.rings.species._stabilizer_subgroups
>>> (used to turn an action into a combinatorial species - i.e., a formal 
>>> sum of stabilizer subgroups)
>>>
>>> I would not be surprised if all three of them could be improved by 
>>> applying some permutation-group-knowledge which I am lacking.  In fact, I 
>>> tried to code this quickly, so it is quite likely that I even missed the 
>>> most obvious things and did it completely backwards.
>>>
>>> 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+...@googlegroups.com.
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/sage-devel/31413384-37a7-4666-8099-7e526ad03dd9n%40googlegroups.com
>>> .
>>>
>>>
>>> -- 
>>> 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+...@googlegroups.com.
>>>
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/sage-devel/CAAWYfq0B1%3DDsnU1dEFAf%3DZbsVTDViDVjZAkYYoWL19NzFagUFA%40mail.gmail.com
>>> .
>>>
>>>
>>>

-- 
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/09e510ca-e281-413a-9ab0-fd97a4735af4n%40googlegroups.com.

Reply via email to