Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread 'Ruchit Jagodara' via sage-devel
I think this is giving a group isomorphic to the actual quotient group but 
I need the actual quotient group. Therefor, I don't know how to find that 
exact group. Below is one example,

sage: p = PermutationGroup([(2,3,4,5,6,7)])
sage: N = p.minimal_normal_subgroups()[0]
sage: N
Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with 
generators [(2,3,4,5,6,7)])
sage: N.list()
[(), (2,5)(3,6)(4,7)]
sage: p.quotient(N)
Permutation Group with generators [(1,2,3)]
sage: _.list()
[(), (1,2,3), (1,3,2)]

If this is the collection of representative elements(for cosets) then ``1`` 
should not be in any of the permutations.

I need a quotient group structure whose elements(the cosets) have the 
representative element (from the original group) and the normal subgroup 
(which was used to create the quotient group) as their properties or 
available in some other form.
On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik wrote:

>
>
> On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
> sage-...@googlegroups.com> wrote:
> >In case my questions have caused any confusion, I am rephrasing them as 
> >below. 
> >
> >I have a group G and its minimal normal subgroup N. 
> >
> >I want to find G/N. Do you know how I can do that? (I also want G/N to be 
> >an object of the same class as G.)
>
> It's G.quotient(N), no?
>
> >
> >My another question is: How can I find the group operation of a group G?
> >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik wrote:
> >
> >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel
> >>  wrote:
> >> >
> >> > Actually, that won't work according to the implementation.
> >>
> >> sorry, I don't understand what won't work.
> >> Did you mean to ask a different question?
> >>
> >> > Can you please take a look at the code I wrote (although I have not 
> >> written it according to codestyle of sage, yet. But I will do that when 
> the 
> >> code starts working.), where minimum_generating_set is the main 
> function?
> >> >
> >> > Link- 
> >> 
> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
> >> >
> >> > I have implemented this code according to the research paper.
> >>
> >> Sorry, what paper are you talking about?
> >>
> >>
> >> > The algorithm can find the minimum generating set in polynomial time, 
> >> which is very cool! So, I thought it would be good to implement this in 
> >> Sage, especially since the paper has been recently published.
> >> >
> >> > I've almost completed the code, but I'm unsure about how to find the 
> >> Quotient group and its representative elements. I need help with this.
> >> >
> >> > I've outlined my doubts in the code, which you can see in the 
> following 
> >> link:-
> >> >
> >> > 
> >> 
> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L478-L486
> >> >
> >> > GAP has a function named RightCosets that can be used to form a 
> quotient 
> >> group, but there is a problem: how can I find representative elements 
> of 
> >> that group? Additionally, how can I create a Quotient group using 
> >> RightCosets in Sage, given that the algorithm uses a recursive call, 
> and 
> >> the quotient group must have the ParentLibGAP.minimum_generating_set 
> >> function?
> >> > On Wednesday, January 17, 2024 at 2:35:55 PM UTC+5:30 Dima Pasechnik 
> >> wrote:
> >> >>
> >> >> Functions such as Group(), PermutationGroup() take such lists as 
> inputs.
> >> >>
> >> >>
> >> >> On 17 January 2024 06:35:07 GMT, 'Ruchit Jagodara' via sage-devel <
> >> sage-...@googlegroups.com> wrote:
> >> >>>
> >> >>> And to implement the function, I want a function that takes a list 
> of 
> >> generators and returns a group. Does anyone know of any function that 
> can 
> >> do this?
> >> >>> On Friday, January 12, 2024 at 8:38:18 PM UTC+5:30 Ruchit Jagodara 
> >> wrote:
> >> 
> >>  I am implementing the minimum_generating_set function in Sage, but 
> I 
> >> am facing some issues, such as where I should implement that function 
> as my 
> >> implementation uses some gap methods. And I found one class 
> ParentLibGAP 
> >> which can be used for this but I am not sure because I found that 
> >> PermutationGroup class is not derived from this class so if I implement 
> >> this function here then function will not be available for this group 
> (And 
> >> I don't know if there are many more), plus I have to use some functions 
> of 
> >> GroupMixinLibGAP class, so can you please suggest me a location or any 
> fix 
> >> for this.
> >> >
> >> > --
> >> > 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 on the web visit 
> >> 
> https://groups.google.com/d/msgid

Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread David Roe
You can lift elements via the quotient map to get representatives of each
coset.  I'm not sure that this is wrapped in Sage, but using gap directly
you have:

sage: Pgap = p._libgap_()
sage: Ngap = N._libgap_()
sage: phi = Pgap.NaturalHomomorphismByNormalSubgroup(Ngap); phi
[ (2,3,4,5,6,7) ] -> [ f1^2 ]
sage: PN = phi.ImagesSource() # the quotient as an isomorphic group
sage: preimages_gens = [phi.PreImagesRepresentative(g) for g in
PN.GeneratorsOfGroup()]
sage: preimages_gens
[(2,4,6)(3,5,7)]
sage: all_preimages = [phi.PreImagesRepresentative(g) for g in PN.List()]
sage: all_preimages
[(), (2,4,6)(3,5,7), (2,6,4)(3,7,5)]

David

On Sat, Feb 3, 2024 at 10:58 AM 'Ruchit Jagodara' via sage-devel <
sage-devel@googlegroups.com> wrote:

> I think this is giving a group isomorphic to the actual quotient group but
> I need the actual quotient group. Therefor, I don't know how to find that
> exact group. Below is one example,
>
> sage: p = PermutationGroup([(2,3,4,5,6,7)])
> sage: N = p.minimal_normal_subgroups()[0]
> sage: N
> Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with
> generators [(2,3,4,5,6,7)])
> sage: N.list()
> [(), (2,5)(3,6)(4,7)]
> sage: p.quotient(N)
> Permutation Group with generators [(1,2,3)]
> sage: _.list()
> [(), (1,2,3), (1,3,2)]
>
> If this is the collection of representative elements(for cosets) then
> ``1`` should not be in any of the permutations.
>
> I need a quotient group structure whose elements(the cosets) have the
> representative element (from the original group) and the normal subgroup
> (which was used to create the quotient group) as their properties or
> available in some other form.
> On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik wrote:
>
>>
>>
>> On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
>> sage-...@googlegroups.com> wrote:
>> >In case my questions have caused any confusion, I am rephrasing them as
>> >below.
>> >
>> >I have a group G and its minimal normal subgroup N.
>> >
>> >I want to find G/N. Do you know how I can do that? (I also want G/N to
>> be
>> >an object of the same class as G.)
>>
>> It's G.quotient(N), no?
>>
>> >
>> >My another question is: How can I find the group operation of a group G?
>> >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik
>> wrote:
>> >
>> >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel
>> >>  wrote:
>> >> >
>> >> > Actually, that won't work according to the implementation.
>> >>
>> >> sorry, I don't understand what won't work.
>> >> Did you mean to ask a different question?
>> >>
>> >> > Can you please take a look at the code I wrote (although I have not
>> >> written it according to codestyle of sage, yet. But I will do that
>> when the
>> >> code starts working.), where minimum_generating_set is the main
>> function?
>> >> >
>> >> > Link-
>> >>
>> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
>> >> >
>> >> > I have implemented this code according to the research paper.
>> >>
>> >> Sorry, what paper are you talking about?
>> >>
>> >>
>> >> > The algorithm can find the minimum generating set in polynomial
>> time,
>> >> which is very cool! So, I thought it would be good to implement this
>> in
>> >> Sage, especially since the paper has been recently published.
>> >> >
>> >> > I've almost completed the code, but I'm unsure about how to find the
>> >> Quotient group and its representative elements. I need help with this.
>> >> >
>> >> > I've outlined my doubts in the code, which you can see in the
>> following
>> >> link:-
>> >> >
>> >> >
>> >>
>> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L478-L486
>> >> >
>> >> > GAP has a function named RightCosets that can be used to form a
>> quotient
>> >> group, but there is a problem: how can I find representative elements
>> of
>> >> that group? Additionally, how can I create a Quotient group using
>> >> RightCosets in Sage, given that the algorithm uses a recursive call,
>> and
>> >> the quotient group must have the ParentLibGAP.minimum_generating_set
>> >> function?
>> >> > On Wednesday, January 17, 2024 at 2:35:55 PM UTC+5:30 Dima Pasechnik
>> >> wrote:
>> >> >>
>> >> >> Functions such as Group(), PermutationGroup() take such lists as
>> inputs.
>> >> >>
>> >> >>
>> >> >> On 17 January 2024 06:35:07 GMT, 'Ruchit Jagodara' via sage-devel <
>> >> sage-...@googlegroups.com> wrote:
>> >> >>>
>> >> >>> And to implement the function, I want a function that takes a list
>> of
>> >> generators and returns a group. Does anyone know of any function that
>> can
>> >> do this?
>> >> >>> On Friday, January 12, 2024 at 8:38:18 PM UTC+5:30 Ruchit Jagodara
>> >> wrote:
>> >> 
>> >>  I am implementing the minimum_generating_set function in Sage,
>> but I
>> >> am facing some issues, such as where I should implement that function
>> as my
>

Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread 'Ruchit Jagodara' via sage-devel
So, why is the quotient function implemented in Sage is 
giving RegularActionHomomorphism of G/N ? Is there any particular reason 
for it?  Should I change it (because I found a FIXME note also, saying that 
gap has a better way to find quotient)? I am implementing some functions 
related to group theory, and I can work on this as well.
On Saturday, February 3, 2024 at 10:24:54 PM UTC+5:30 David Roe wrote:

> You can lift elements via the quotient map to get representatives of each 
> coset.  I'm not sure that this is wrapped in Sage, but using gap directly 
> you have:
>
> sage: Pgap = p._libgap_()
> sage: Ngap = N._libgap_()
> sage: phi = Pgap.NaturalHomomorphismByNormalSubgroup(Ngap); phi
> [ (2,3,4,5,6,7) ] -> [ f1^2 ]
> sage: PN = phi.ImagesSource() # the quotient as an isomorphic group
> sage: preimages_gens = [phi.PreImagesRepresentative(g) for g in 
> PN.GeneratorsOfGroup()]
> sage: preimages_gens
> [(2,4,6)(3,5,7)]
> sage: all_preimages = [phi.PreImagesRepresentative(g) for g in PN.List()]
> sage: all_preimages
> [(), (2,4,6)(3,5,7), (2,6,4)(3,7,5)]
>
> David
>
> On Sat, Feb 3, 2024 at 10:58 AM 'Ruchit Jagodara' via sage-devel <
> sage-...@googlegroups.com> wrote:
>
>> I think this is giving a group isomorphic to the actual quotient group 
>> but I need the actual quotient group. Therefor, I don't know how to find 
>> that exact group. Below is one example,
>>
>> sage: p = PermutationGroup([(2,3,4,5,6,7)])
>> sage: N = p.minimal_normal_subgroups()[0]
>> sage: N
>> Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with 
>> generators [(2,3,4,5,6,7)])
>> sage: N.list()
>> [(), (2,5)(3,6)(4,7)]
>> sage: p.quotient(N)
>> Permutation Group with generators [(1,2,3)]
>> sage: _.list()
>> [(), (1,2,3), (1,3,2)]
>>
>> If this is the collection of representative elements(for cosets) then 
>> ``1`` should not be in any of the permutations.
>>
>> I need a quotient group structure whose elements(the cosets) have the 
>> representative element (from the original group) and the normal subgroup 
>> (which was used to create the quotient group) as their properties or 
>> available in some other form.
>> On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik wrote:
>>
>>>
>>>
>>> On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
>>> sage-...@googlegroups.com> wrote: 
>>> >In case my questions have caused any confusion, I am rephrasing them as 
>>> >below. 
>>> > 
>>> >I have a group G and its minimal normal subgroup N. 
>>> > 
>>> >I want to find G/N. Do you know how I can do that? (I also want G/N to 
>>> be 
>>> >an object of the same class as G.) 
>>>
>>> It's G.quotient(N), no? 
>>>
>>> > 
>>> >My another question is: How can I find the group operation of a group 
>>> G? 
>>> >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik 
>>> wrote: 
>>> > 
>>> >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel 
>>> >>  wrote: 
>>> >> > 
>>> >> > Actually, that won't work according to the implementation. 
>>> >> 
>>> >> sorry, I don't understand what won't work. 
>>> >> Did you mean to ask a different question? 
>>> >> 
>>> >> > Can you please take a look at the code I wrote (although I have not 
>>> >> written it according to codestyle of sage, yet. But I will do that 
>>> when the 
>>> >> code starts working.), where minimum_generating_set is the main 
>>> function? 
>>> >> > 
>>> >> > Link- 
>>> >> 
>>> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
>>>  
>>> >> > 
>>> >> > I have implemented this code according to the research paper. 
>>> >> 
>>> >> Sorry, what paper are you talking about? 
>>> >> 
>>> >> 
>>> >> > The algorithm can find the minimum generating set in polynomial 
>>> time, 
>>> >> which is very cool! So, I thought it would be good to implement this 
>>> in 
>>> >> Sage, especially since the paper has been recently published. 
>>> >> > 
>>> >> > I've almost completed the code, but I'm unsure about how to find 
>>> the 
>>> >> Quotient group and its representative elements. I need help with 
>>> this. 
>>> >> > 
>>> >> > I've outlined my doubts in the code, which you can see in the 
>>> following 
>>> >> link:- 
>>> >> > 
>>> >> > 
>>> >> 
>>> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L478-L486
>>>  
>>> >> > 
>>> >> > GAP has a function named RightCosets that can be used to form a 
>>> quotient 
>>> >> group, but there is a problem: how can I find representative elements 
>>> of 
>>> >> that group? Additionally, how can I create a Quotient group using 
>>> >> RightCosets in Sage, given that the algorithm uses a recursive call, 
>>> and 
>>> >> the quotient group must have the ParentLibGAP.minimum_generating_set 
>>> >> function? 
>>> >> > On Wednesday, January 17, 2024 at 2:35:55 PM UTC+5:30 Dima 
>>> Pasechnik 
>>> >> wrote: 
>>> >> >> 
>>> >> >> Functions such as 

Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread David Joyner
On Sat, Feb 3, 2024 at 1:13 PM 'Ruchit Jagodara' via sage-devel <
sage-devel@googlegroups.com> wrote:

> So, why is the quotient function implemented in Sage is
> giving RegularActionHomomorphism of G/N ? Is there any particular reason
> for it?  Should I change it (because I found a FIXME note also, saying that
> gap has a better way to find quotient)? I am implementing some functions
> related to group theory, and I can work on this as well.
>

The function quotient in the PermutationGroups class is returning another
instance of that class. What you want is in a different Python class.
Instead of "fixing" the quotient function, you can simply implement another
quotient function, call it quotient_to_cosets or something like that.



> On Saturday, February 3, 2024 at 10:24:54 PM UTC+5:30 David Roe wrote:
>
>> You can lift elements via the quotient map to get representatives of each
>> coset.  I'm not sure that this is wrapped in Sage, but using gap directly
>> you have:
>>
>> sage: Pgap = p._libgap_()
>> sage: Ngap = N._libgap_()
>> sage: phi = Pgap.NaturalHomomorphismByNormalSubgroup(Ngap); phi
>> [ (2,3,4,5,6,7) ] -> [ f1^2 ]
>> sage: PN = phi.ImagesSource() # the quotient as an isomorphic group
>> sage: preimages_gens = [phi.PreImagesRepresentative(g) for g in
>> PN.GeneratorsOfGroup()]
>> sage: preimages_gens
>> [(2,4,6)(3,5,7)]
>> sage: all_preimages = [phi.PreImagesRepresentative(g) for g in PN.List()]
>> sage: all_preimages
>> [(), (2,4,6)(3,5,7), (2,6,4)(3,7,5)]
>>
>> David
>>
>> On Sat, Feb 3, 2024 at 10:58 AM 'Ruchit Jagodara' via sage-devel <
>> sage-...@googlegroups.com> wrote:
>>
>>> I think this is giving a group isomorphic to the actual quotient group
>>> but I need the actual quotient group. Therefor, I don't know how to find
>>> that exact group. Below is one example,
>>>
>>> sage: p = PermutationGroup([(2,3,4,5,6,7)])
>>> sage: N = p.minimal_normal_subgroups()[0]
>>> sage: N
>>> Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with
>>> generators [(2,3,4,5,6,7)])
>>> sage: N.list()
>>> [(), (2,5)(3,6)(4,7)]
>>> sage: p.quotient(N)
>>> Permutation Group with generators [(1,2,3)]
>>> sage: _.list()
>>> [(), (1,2,3), (1,3,2)]
>>>
>>> If this is the collection of representative elements(for cosets) then
>>> ``1`` should not be in any of the permutations.
>>>
>>> I need a quotient group structure whose elements(the cosets) have the
>>> representative element (from the original group) and the normal subgroup
>>> (which was used to create the quotient group) as their properties or
>>> available in some other form.
>>> On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik wrote:
>>>


 On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
 sage-...@googlegroups.com> wrote:
 >In case my questions have caused any confusion, I am rephrasing them
 as
 >below.
 >
 >I have a group G and its minimal normal subgroup N.
 >
 >I want to find G/N. Do you know how I can do that? (I also want G/N to
 be
 >an object of the same class as G.)

 It's G.quotient(N), no?

 >
 >My another question is: How can I find the group operation of a group
 G?
 >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik
 wrote:
 >
 >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel
 >>  wrote:
 >> >
 >> > Actually, that won't work according to the implementation.
 >>
 >> sorry, I don't understand what won't work.
 >> Did you mean to ask a different question?
 >>
 >> > Can you please take a look at the code I wrote (although I have
 not
 >> written it according to codestyle of sage, yet. But I will do that
 when the
 >> code starts working.), where minimum_generating_set is the main
 function?
 >> >
 >> > Link-
 >>
 https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
 >> >
 >> > I have implemented this code according to the research paper.
 >>
 >> Sorry, what paper are you talking about?
 >>
 >>
 >> > The algorithm can find the minimum generating set in polynomial
 time,
 >> which is very cool! So, I thought it would be good to implement this
 in
 >> Sage, especially since the paper has been recently published.
 >> >
 >> > I've almost completed the code, but I'm unsure about how to find
 the
 >> Quotient group and its representative elements. I need help with
 this.
 >> >
 >> > I've outlined my doubts in the code, which you can see in the
 following
 >> link:-
 >> >
 >> >
 >>
 https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L478-L486
 >> >
 >> > GAP has a function named RightCosets that can be used to form a
 quotient
 >> group, but there is a

Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread 'Ruchit Jagodara' via sage-devel
Okay , thank you for your help ! : )

On Saturday, February 3, 2024 at 11:59:31 PM UTC+5:30 David Joyner wrote:

> On Sat, Feb 3, 2024 at 1:13 PM 'Ruchit Jagodara' via sage-devel <
> sage-...@googlegroups.com> wrote:
>
>> So, why is the quotient function implemented in Sage is 
>> giving RegularActionHomomorphism of G/N ? Is there any particular reason 
>> for it?  Should I change it (because I found a FIXME note also, saying that 
>> gap has a better way to find quotient)? I am implementing some functions 
>> related to group theory, and I can work on this as well.
>>
>
> The function quotient in the PermutationGroups class is returning another 
> instance of that class. What you want is in a different Python class. 
> Instead of "fixing" the quotient function, you can simply implement another 
> quotient function, call it quotient_to_cosets or something like that. 
>
>  
>
>> On Saturday, February 3, 2024 at 10:24:54 PM UTC+5:30 David Roe wrote:
>>
>>> You can lift elements via the quotient map to get representatives of 
>>> each coset.  I'm not sure that this is wrapped in Sage, but using gap 
>>> directly you have:
>>>
>>> sage: Pgap = p._libgap_()
>>> sage: Ngap = N._libgap_()
>>> sage: phi = Pgap.NaturalHomomorphismByNormalSubgroup(Ngap); phi
>>> [ (2,3,4,5,6,7) ] -> [ f1^2 ]
>>> sage: PN = phi.ImagesSource() # the quotient as an isomorphic group
>>> sage: preimages_gens = [phi.PreImagesRepresentative(g) for g in 
>>> PN.GeneratorsOfGroup()]
>>> sage: preimages_gens
>>> [(2,4,6)(3,5,7)]
>>> sage: all_preimages = [phi.PreImagesRepresentative(g) for g in PN.List()]
>>> sage: all_preimages
>>> [(), (2,4,6)(3,5,7), (2,6,4)(3,7,5)]
>>>
>>> David
>>>
>>> On Sat, Feb 3, 2024 at 10:58 AM 'Ruchit Jagodara' via sage-devel <
>>> sage-...@googlegroups.com> wrote:
>>>
 I think this is giving a group isomorphic to the actual quotient group 
 but I need the actual quotient group. Therefor, I don't know how to find 
 that exact group. Below is one example,

 sage: p = PermutationGroup([(2,3,4,5,6,7)])
 sage: N = p.minimal_normal_subgroups()[0]
 sage: N
 Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with 
 generators [(2,3,4,5,6,7)])
 sage: N.list()
 [(), (2,5)(3,6)(4,7)]
 sage: p.quotient(N)
 Permutation Group with generators [(1,2,3)]
 sage: _.list()
 [(), (1,2,3), (1,3,2)]

 If this is the collection of representative elements(for cosets) then 
 ``1`` should not be in any of the permutations.

 I need a quotient group structure whose elements(the cosets) have the 
 representative element (from the original group) and the normal subgroup 
 (which was used to create the quotient group) as their properties or 
 available in some other form.
 On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik 
 wrote:

>
>
> On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
> sage-...@googlegroups.com> wrote: 
> >In case my questions have caused any confusion, I am rephrasing them 
> as 
> >below. 
> > 
> >I have a group G and its minimal normal subgroup N. 
> > 
> >I want to find G/N. Do you know how I can do that? (I also want G/N 
> to be 
> >an object of the same class as G.) 
>
> It's G.quotient(N), no? 
>
> > 
> >My another question is: How can I find the group operation of a group 
> G? 
> >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik 
> wrote: 
> > 
> >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel 
> >>  wrote: 
> >> > 
> >> > Actually, that won't work according to the implementation. 
> >> 
> >> sorry, I don't understand what won't work. 
> >> Did you mean to ask a different question? 
> >> 
> >> > Can you please take a look at the code I wrote (although I have 
> not 
> >> written it according to codestyle of sage, yet. But I will do that 
> when the 
> >> code starts working.), where minimum_generating_set is the main 
> function? 
> >> > 
> >> > Link- 
> >> 
> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
>  
> >> > 
> >> > I have implemented this code according to the research paper. 
> >> 
> >> Sorry, what paper are you talking about? 
> >> 
> >> 
> >> > The algorithm can find the minimum generating set in polynomial 
> time, 
> >> which is very cool! So, I thought it would be good to implement 
> this in 
> >> Sage, especially since the paper has been recently published. 
> >> > 
> >> > I've almost completed the code, but I'm unsure about how to find 
> the 
> >> Quotient group and its representative elements. I need help with 
> this. 
> >> > 
> >> > I've outlined my doubts in the code, which you can see i

Re: [sage-devel] Re: Implementing minimum_generating_set() function

2024-02-03 Thread Dima Pasechnik
GAP has a function, FactorCosetAction(), for action on cosets of a subgroup. I 
don't think there is a need to   implement anything of this sort directly,  and 
not use it via libgap.

https://docs.gap-system.org/doc/ref/chap41.html#X7FED50ED7ACA5FB2



On 3 February 2024 19:50:55 GMT, 'Ruchit Jagodara' via sage-devel 
 wrote:
>Okay , thank you for your help ! : )
>
>On Saturday, February 3, 2024 at 11:59:31 PM UTC+5:30 David Joyner wrote:
>
>> On Sat, Feb 3, 2024 at 1:13 PM 'Ruchit Jagodara' via sage-devel <
>> sage-...@googlegroups.com> wrote:
>>
>>> So, why is the quotient function implemented in Sage is 
>>> giving RegularActionHomomorphism of G/N ? Is there any particular reason 
>>> for it?  Should I change it (because I found a FIXME note also, saying that 
>>> gap has a better way to find quotient)? I am implementing some functions 
>>> related to group theory, and I can work on this as well.
>>>
>>
>> The function quotient in the PermutationGroups class is returning another 
>> instance of that class. What you want is in a different Python class. 
>> Instead of "fixing" the quotient function, you can simply implement another 
>> quotient function, call it quotient_to_cosets or something like that. 
>>
>>  
>>
>>> On Saturday, February 3, 2024 at 10:24:54 PM UTC+5:30 David Roe wrote:
>>>
 You can lift elements via the quotient map to get representatives of 
 each coset.  I'm not sure that this is wrapped in Sage, but using gap 
 directly you have:

 sage: Pgap = p._libgap_()
 sage: Ngap = N._libgap_()
 sage: phi = Pgap.NaturalHomomorphismByNormalSubgroup(Ngap); phi
 [ (2,3,4,5,6,7) ] -> [ f1^2 ]
 sage: PN = phi.ImagesSource() # the quotient as an isomorphic group
 sage: preimages_gens = [phi.PreImagesRepresentative(g) for g in 
 PN.GeneratorsOfGroup()]
 sage: preimages_gens
 [(2,4,6)(3,5,7)]
 sage: all_preimages = [phi.PreImagesRepresentative(g) for g in PN.List()]
 sage: all_preimages
 [(), (2,4,6)(3,5,7), (2,6,4)(3,7,5)]

 David

 On Sat, Feb 3, 2024 at 10:58 AM 'Ruchit Jagodara' via sage-devel <
 sage-...@googlegroups.com> wrote:

> I think this is giving a group isomorphic to the actual quotient group 
> but I need the actual quotient group. Therefor, I don't know how to find 
> that exact group. Below is one example,
>
> sage: p = PermutationGroup([(2,3,4,5,6,7)])
> sage: N = p.minimal_normal_subgroups()[0]
> sage: N
> Subgroup generated by [(2,5)(3,6)(4,7)] of (Permutation Group with 
> generators [(2,3,4,5,6,7)])
> sage: N.list()
> [(), (2,5)(3,6)(4,7)]
> sage: p.quotient(N)
> Permutation Group with generators [(1,2,3)]
> sage: _.list()
> [(), (1,2,3), (1,3,2)]
>
> If this is the collection of representative elements(for cosets) then 
> ``1`` should not be in any of the permutations.
>
> I need a quotient group structure whose elements(the cosets) have the 
> representative element (from the original group) and the normal subgroup 
> (which was used to create the quotient group) as their properties or 
> available in some other form.
> On Friday, January 19, 2024 at 10:33:21 PM UTC+5:30 Dima Pasechnik 
> wrote:
>
>>
>>
>> On 19 January 2024 15:18:45 GMT, 'Ruchit Jagodara' via sage-devel <
>> sage-...@googlegroups.com> wrote: 
>> >In case my questions have caused any confusion, I am rephrasing them 
>> as 
>> >below. 
>> > 
>> >I have a group G and its minimal normal subgroup N. 
>> > 
>> >I want to find G/N. Do you know how I can do that? (I also want G/N 
>> to be 
>> >an object of the same class as G.) 
>>
>> It's G.quotient(N), no? 
>>
>> > 
>> >My another question is: How can I find the group operation of a group 
>> G? 
>> >On Thursday, January 18, 2024 at 7:13:50 PM UTC+5:30 Dima Pasechnik 
>> wrote: 
>> > 
>> >> On Thu, Jan 18, 2024 at 11:39 AM 'Ruchit Jagodara' via sage-devel 
>> >>  wrote: 
>> >> > 
>> >> > Actually, that won't work according to the implementation. 
>> >> 
>> >> sorry, I don't understand what won't work. 
>> >> Did you mean to ask a different question? 
>> >> 
>> >> > Can you please take a look at the code I wrote (although I have 
>> not 
>> >> written it according to codestyle of sage, yet. But I will do that 
>> when the 
>> >> code starts working.), where minimum_generating_set is the main 
>> function? 
>> >> > 
>> >> > Link- 
>> >> 
>> https://github.com/RuchitJagodara/sage/blob/8b642329b6d579c536511d5f1d1511fb842c9c54/src/sage/groups/libgap_wrapper.pyx#L405C1-L513C1
>>  
>> >> > 
>> >> > I have implemented this code according to the research paper. 
>> >> 
>> >> Sorry, what paper are you talking about? 
>> >> 
>> >> 
>> >> > The algorithm can find the minimum generating set in polyn

[sage-devel] Google Summer of Code: Organization application deadline Feb 6!

2024-02-03 Thread Matthias Koeppe
To get the process started for this year, I have created the page 
https://wiki.sagemath.org/GSoC/2024 by copying last year's page, removing a 
completed project and adding a new project that I hope to mentor this 
summer.

The deadline for our project to apply as a GSoC mentoring organization is 
rapidly approaching: 
https://developers.google.com/open-source/gsoc/timeline#february_6_-_1800_utc

Do we have any volunteers for the administrator role?

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/fc646848-6064-49fc-a6ac-b3c0ad8d4424n%40googlegroups.com.


[sage-devel] Re: Google Summer of Code: Organization application deadline Feb 6!

2024-02-03 Thread 'Travis Scrimshaw' via sage-devel
Thank you for doing that. I updated my projects and removed all of those 
with named mentors as they have not agreed at present (AFAIK) to be a 
potential mentor.

I was expecting to be the main administrator for GSoC again this year. We 
will discuss this on the mentors list.

For the proposal, what we need from the community is a list of projects 
they are willing to mentor. There is no commitment at this time. However, 
it is important for our GSoC proposal that it contains a list of new 
projects each year.

Best,
Travis


On Sunday, February 4, 2024 at 7:19:44 AM UTC+9 Matthias Koeppe wrote:

> To get the process started for this year, I have created the page 
> https://wiki.sagemath.org/GSoC/2024 by copying last year's page, removing 
> a completed project and adding a new project that I hope to mentor this 
> summer.
>
> The deadline for our project to apply as a GSoC mentoring organization is 
> rapidly approaching: 
> https://developers.google.com/open-source/gsoc/timeline#february_6_-_1800_utc
>
> Do we have any volunteers for the administrator role?
>
>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/e7cf5e21-a7ac-4522-b110-fe52fa2ff12an%40googlegroups.com.


[sage-devel] Re: Google Summer of Code: Organization application deadline Feb 6!

2024-02-03 Thread 'Travis Scrimshaw' via sage-devel
For the potential projects, you can either edit the corresponding wiki page 
in Matthias's link or directly post them here (you do not need to be the 
mentor).

Also, I would like to have a list of potential mentors. Any SageMath 
developer can be a mentor for a GSoC project; so if you are willing to be a 
mentor (typically just a few hours a week), please directly email me, post 
it here, or put your name down as a project mentor. (You do not need to 
have a specific project in mind either.)

Best,
Travis

On Sunday, February 4, 2024 at 1:09:07 PM UTC+9 Travis Scrimshaw wrote:

> Thank you for doing that. I updated my projects and removed all of those 
> with named mentors as they have not agreed at present (AFAIK) to be a 
> potential mentor.
>
> I was expecting to be the main administrator for GSoC again this year. We 
> will discuss this on the mentors list.
>
> For the proposal, what we need from the community is a list of projects 
> they are willing to mentor. There is no commitment at this time. However, 
> it is important for our GSoC proposal that it contains a list of new 
> projects each year.
>
> Best,
> Travis
>
>
> On Sunday, February 4, 2024 at 7:19:44 AM UTC+9 Matthias Koeppe wrote:
>
>> To get the process started for this year, I have created the page 
>> https://wiki.sagemath.org/GSoC/2024 by copying last year's page, 
>> removing a completed project and adding a new project that I hope to mentor 
>> this summer.
>>
>> The deadline for our project to apply as a GSoC mentoring organization is 
>> rapidly approaching: 
>> https://developers.google.com/open-source/gsoc/timeline#february_6_-_1800_utc
>>
>> Do we have any volunteers for the administrator role?
>>
>>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/b8badb42-659e-46a4-8ac7-13225dc1af1bn%40googlegroups.com.


[sage-devel] Re: Google Summer of Code: Organization application deadline Feb 6!

2024-02-03 Thread 'Travis Scrimshaw' via sage-devel
Sorry for the multiple messages.

For potential mentors, there is no commitment required at this time.

You can also decide later to add a project and/or be a mentor.

Best,
Travis

On Sunday, February 4, 2024 at 1:17:54 PM UTC+9 Travis Scrimshaw wrote:

> For the potential projects, you can either edit the corresponding wiki 
> page in Matthias's link or directly post them here (you do not need to be 
> the mentor).
>
> Also, I would like to have a list of potential mentors. Any SageMath 
> developer can be a mentor for a GSoC project; so if you are willing to be a 
> mentor (typically just a few hours a week), please directly email me, post 
> it here, or put your name down as a project mentor. (You do not need to 
> have a specific project in mind either.)
>
> Best,
> Travis
>
> On Sunday, February 4, 2024 at 1:09:07 PM UTC+9 Travis Scrimshaw wrote:
>
>> Thank you for doing that. I updated my projects and removed all of those 
>> with named mentors as they have not agreed at present (AFAIK) to be a 
>> potential mentor.
>>
>> I was expecting to be the main administrator for GSoC again this year. We 
>> will discuss this on the mentors list.
>>
>> For the proposal, what we need from the community is a list of projects 
>> they are willing to mentor. There is no commitment at this time. However, 
>> it is important for our GSoC proposal that it contains a list of new 
>> projects each year.
>>
>> Best,
>> Travis
>>
>>
>> On Sunday, February 4, 2024 at 7:19:44 AM UTC+9 Matthias Koeppe wrote:
>>
>>> To get the process started for this year, I have created the page 
>>> https://wiki.sagemath.org/GSoC/2024 by copying last year's page, 
>>> removing a completed project and adding a new project that I hope to mentor 
>>> this summer.
>>>
>>> The deadline for our project to apply as a GSoC mentoring organization 
>>> is rapidly approaching: 
>>> https://developers.google.com/open-source/gsoc/timeline#february_6_-_1800_utc
>>>
>>> Do we have any volunteers for the administrator role?
>>>
>>>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/162019c3-ba9c-4f9f-9a5c-b469b156cb58n%40googlegroups.com.


Re: [sage-devel] Sphinx directives in upper case?

2024-02-03 Thread 'Travis Scrimshaw' via sage-devel
I think it is more confusing to mix the two. I vote for keeping everything 
all uppercase since everything else that is analogous uses all uppercase 
letters.

Best,
Travis

On Wednesday, January 31, 2024 at 9:20:58 PM UTC+9 TB wrote:

> On 25/01/2024 7:06, Kwankyu Lee wrote:
>
> Hi, 
>
> Our developer guide dictates to write Sphinx directives in upper case. So 
> for example, ".. MATH::" instead of ".. math::". By the way, it seems that 
> Sphinx community seems to regard lower case as norm. So my question is: why 
> do we insist upper case? Could anyone point to a discussion thread that 
> decided on this?
>
> More than 13 years ago we have 
> https://github.com/sagemath/sage/issues/10077 and 
> https://github.com/sagemath/sage/issues/10078 that have comments about 
> the case. Some further history might stem from stropping 
> ... For those looking 
> in the docs, one place is here 
> 
> .
>
>
> On 25/01/2024 10:18, Kwankyu Lee wrote:
>
> In my humble opinion,  except  
>
> ".. SEEALSO::", "..WARNING::", ".. TODO::", ".. NOTE::", ".. RUBRIC::", ".. 
> PLOT::", "..TOPIC::", which seek for reader's attention, 
>
> we should use lower case (by default) for all other directives, following 
> Sphinx community's trend. In particular, ".. MATH::" is only distracting.
>
> No strong opinion from me, except maybe for having consistency within a 
> given file. The INPUT and OUTPUT blocks are related, but they are not 
> directives. Do you think they should be?
>
>
> Regards,
>
> TB
>
>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/e3057ac7-1c23-4bc3-ab17-1bce7570369cn%40googlegroups.com.


Re: [sage-devel] Sphinx directives in upper case?

2024-02-03 Thread Kwankyu Lee
I was going to suggest to use uppercase only for header-like directives, 
excluding thereby ".. math::" in particular.

but as Travis expressed, it would be confusing to change a long-held 
tradition, unless there is unanimous agreement. 

So I will stop here. Thanks for the info and opinions.

On Sunday, February 4, 2024 at 1:24:17 PM UTC+9 Travis Scrimshaw wrote:

> I think it is more confusing to mix the two. I vote for keeping everything 
> all uppercase since everything else that is analogous uses all uppercase 
> letters.
>
> Best,
> Travis
>
> On Wednesday, January 31, 2024 at 9:20:58 PM UTC+9 TB wrote:
>
>> On 25/01/2024 7:06, Kwankyu Lee wrote:
>>
>> Hi, 
>>
>> Our developer guide dictates to write Sphinx directives in upper case. So 
>> for example, ".. MATH::" instead of ".. math::". By the way, it seems that 
>> Sphinx community seems to regard lower case as norm. So my question is: why 
>> do we insist upper case? Could anyone point to a discussion thread that 
>> decided on this?
>>
>> More than 13 years ago we have 
>> https://github.com/sagemath/sage/issues/10077 and 
>> https://github.com/sagemath/sage/issues/10078 that have comments about 
>> the case. Some further history might stem from stropping 
>> ... For those looking 
>> in the docs, one place is here 
>> 
>> .
>>
>>
>> On 25/01/2024 10:18, Kwankyu Lee wrote:
>>
>> In my humble opinion,  except  
>>
>> ".. SEEALSO::", "..WARNING::", ".. TODO::", ".. NOTE::", ".. RUBRIC::", ".. 
>> PLOT::", "..TOPIC::", which seek for reader's attention, 
>>
>> we should use lower case (by default) for all other directives, following 
>> Sphinx community's trend. In particular, ".. MATH::" is only distracting.
>>
>> No strong opinion from me, except maybe for having consistency within a 
>> given file. The INPUT and OUTPUT blocks are related, but they are not 
>> directives. Do you think they should be?
>>
>>
>> Regards,
>>
>> TB
>>
>>

-- 
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 on the web visit 
https://groups.google.com/d/msgid/sage-devel/3cbb6eb4-df23-4a2f-b690-63cde8f54d0en%40googlegroups.com.