Differences between revisions 1 and 21 (spanning 20 versions)
Revision 1 as of 2021-08-05 15:32:46
Size: 5914
Editor: anewton
Comment:
Revision 21 as of 2023-05-15 14:35:47
Size: 11177
Editor: anewton
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Sage Interactions - Groups =



This page was first created for Google Summer of Code by Alexis Newton, with mentorship by Mckenzie West.

If you have group-related interactions that you are interested in adding to this page, please do so. You can also contact Alexis Newton at [email protected].
= Sage Interactions - Groups Using the GAP System =

This page was first created for Google Summer of Code 2021 by Alexis Newton, with mentorship by Mckenzie West.

If you have interactions that you are interested in adding to this page, please do so. You can also contact Alexis Newton at [email protected].

The main function of this page is to demonstrate the improved capabilities that we have developed for SageMath during the GSOC Summer 2021. The trac ticket for those developments can be found here: https://trac.sagemath.org/ticket/32196#comment:5.

Note that this ticket has not yet been approved, so in many cases we have defined our main function "order_n" in the Sage cell to be a more rudimentary version of the what is contained in the trac ticket. We do this in order to demonstrate how it may be used. Once the ticket has been pushed through the Sage development process, we will update the page to remove this extraneous code.
 
Line 15: Line 18:
== Basic Commands ==

explanation

=== All groups of order less than or equal to n ===


You can use this interact to call all the lists from the GAP library that are order less than or equal to your desired n value.


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Groups</h1>"))
pretty_print(html("<h>put in the n and m<h>"))
== Calling Groups from GAP ==


GAP is a system for computational discrete algebra, which provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. GAP is used in research and teaching for studying groups and their representations, rings, rings, vector spaces, algebras, combinatorial structures, and more.

Using Sage, we are able to interface with the GAP System to call groups of different types. This is extremely useful for demonstrating examples in undergraduate abstract algebra courses. Learn more about interfacing with GAP via Sage here: https://doc.sagemath.org/html/en/reference/interfaces/sage/interfaces/gap.html.

We rely heavily on the Small Group and All Small Groups GAP commands within this page. The documentation for these can be found on the GAP System website: https://www.gap-system.org/Manuals/pkg/SmallGrp/doc/chap1.html.

=== Group of Order n ===

Use this interact to call a group of order n from the GAP library.

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Order n </h1>"))
pretty_print(html("<h>Choose a group order and a group number.<h>"))



@interact
def order_n1(n = input_box(default='10', label="Order:"), m = input_box(default='1', label= "Group Number:")):
    top = len(gap(n).AllSmallGroups())
    print('There are', top, 'groups of order', n ,'in the GAP library.')
    print('Group', m , 'of', top, 'is', gap(gap(n).SmallGroup(m)).StructureDescription())


}}}

=== Group of Order n of a Certain Type ===

Use this interact to specify a type of group to call.

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Pick a Group</h1>"))
pretty_print(html("<h>Choose a group order, a group type and a group number.<h>"))

@interact
def order_n1(n = input_box(default='10', label="Order:"), Parameter =
    ["IsGroup","IsAbelian","IsCyclic","IsSolvable","IsNilpotent","IsSimple","IsDihedralGroup",
    "IsSymmetricGroup","IsAlternatingGroup","IsPerfectGroup","IsPolycyclicGroup"], m = input_box(default='1', label= "Group Number:")):
    top = len(gap(n).AllSmallGroups(Parameter))
    print('There are', top, Parameter, 'groups of order', n ,'in the GAP library.')
    print('Group', m , 'of', top, 'is', gap(gap(n).SmallGroup(m)).StructureDescription())


}}}

=== All Groups of Order n ===


Use this interact to call all groups of order n from the GAP library.

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Order n </h1>"))
pretty_print(html("<h>Choose a group order.<h>"))



@interact
def order_n1(n = input_box(default='10', label="Order:")):
    h = gap(n).AllSmallGroups()
    for x in [1..len(h)]:
 print(h[x].StructureDescription())


}}}

=== All Groups of Order n of a Certain Type ===

Use this interact to specify a type of group to call.

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Order n </h1>"))
pretty_print(html("<h>Choose a group order and a group type.<h>"))



@interact
def order_n1(n = input_box(default='10', label="Order:"), Parameter =
    ["IsGroup","IsAbelian","IsCyclic","IsSolvable","IsNilpotent","IsSimple","IsDihedralGroup",
    "IsSymmetricGroup","IsAlternatingGroup","IsPerfectGroup","IsPolycyclicGroup"]):
    h = gap(n).AllSmallGroups(Parameter)
    for x in [1..len(h)]:
 print(h[x].StructureDescription())


}}}

=== Small Group Info ===

Use this interact to learn information about the small groups of order n contained in the GAP library.

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Order n </h1>"))
pretty_print(html("<h>Choose a group order.<h>"))



@interact
def order_n1(n = input_box(default='32', label="Order:")):
    print(gap(n).SmallGroupsInformation())


}}}



== Calling a List of Groups from GAP ==


The current configuration for calling information from GAP only allows for you to call one group at a time, but we aim to allow for lists of groups which meet certain parameters. The some of the group properties we aim to address include abelian, solvable, nilpotent, given order, dihedral, semi-direct products, alternating, symmetric, and simple.

=== Groups Order Less Than or Equal to n ===


Use this interact to call all groups from the GAP library that have order less than or equal to your desired value.


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Upper Bound on Order </h1>"))
pretty_print(html("<h>Choose an upper bound for the order.<h>"))
Line 46: Line 162:
def foo(n = input_box(default='10', label="Upper Bound:")): def order_n1(n = input_box(default='10', label="Upper Bound:")):
Line 51: Line 167:
=== All groups of order between m and n ===


You can use this interact to call all the list
s from the GAP library that are between m and n


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Groups</h1>"))
pretty_print(html("<h>put in the n and m<h>"))
=== Groups Order Between m and n ===


Use this interact to call all the
groups from the GAP library that have order between m and n


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Upper and Lower Bound on Order</h1>"))
pretty_print(html("<h>Choose an upper bound and a lower bound for the order.<h>"))
Line 78: Line 194:
def foo(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:")): def order_n1(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:")):
Line 84: Line 200:
=== All groups of which meet certain parameters ===


You can use this interact to call all the lists from the GAP library that are order less than or equal to your desired n value.


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Groups</h1>"))
pretty_print(html("<h>put in the n and m<h>"))
=== Groups of a Certain Type ===


Use this interact to call all groups of a certain type from the GAP library that have order between m and n


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Group Type</h1>"))
pretty_print(html("<h>Select a group type, an upper bound and a lower bound.<h>"))
Line 111: Line 227:
def foo(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:"), Parameter = def order_n1(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:"), Parameter =
Line 120: Line 236:
=== All groups of which meet certain parameters ===


You can use this interact to call all the lists from the GAP library that are order less than or equal to your desired n value.


{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Groups</h1>"))
pretty_print(html("<h>put in the n and m<h>"))
=== Direct or Semidirect Product Groups ===

Use this interact to specify groups that contain direct or semidirect products.

'''''WARNING:''''' This code uses the StructureDescription() function, but this is not an invariant on groups through gap: non-isomorphic groups can give different structure descriptions. Also, a group may have an x in the structure description but not actually be a direct product (via John Sawatzky).

{{{#!sagecell
#Last edited 8/5/21 2:45pm
pretty_print(html("<h1>Direct or Semidirect</h1>"))
pretty_print(html("<h>Check a box to limit the results<h>"))
Line 169: Line 285:
def foo(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:"), Parameter = def order_n1(m = input_box(default='1', label="Lower Bound:"), n = input_box(default='10', label="Upper Bound:"), Parameter =

Sage Interactions - Groups Using the GAP System

This page was first created for Google Summer of Code 2021 by Alexis Newton, with mentorship by Mckenzie West.

If you have interactions that you are interested in adding to this page, please do so. You can also contact Alexis Newton at [email protected].

The main function of this page is to demonstrate the improved capabilities that we have developed for SageMath during the GSOC Summer 2021. The trac ticket for those developments can be found here: https://trac.sagemath.org/ticket/32196#comment:5.

Note that this ticket has not yet been approved, so in many cases we have defined our main function "order_n" in the Sage cell to be a more rudimentary version of the what is contained in the trac ticket. We do this in order to demonstrate how it may be used. Once the ticket has been pushed through the Sage development process, we will update the page to remove this extraneous code.

goto interact main page

Calling Groups from GAP

GAP is a system for computational discrete algebra, which provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. GAP is used in research and teaching for studying groups and their representations, rings, rings, vector spaces, algebras, combinatorial structures, and more.

Using Sage, we are able to interface with the GAP System to call groups of different types. This is extremely useful for demonstrating examples in undergraduate abstract algebra courses. Learn more about interfacing with GAP via Sage here: https://doc.sagemath.org/html/en/reference/interfaces/sage/interfaces/gap.html.

We rely heavily on the Small Group and All Small Groups GAP commands within this page. The documentation for these can be found on the GAP System website: https://www.gap-system.org/Manuals/pkg/SmallGrp/doc/chap1.html.

Group of Order n

Use this interact to call a group of order n from the GAP library.

Group of Order n of a Certain Type

Use this interact to specify a type of group to call.

All Groups of Order n

Use this interact to call all groups of order n from the GAP library.

All Groups of Order n of a Certain Type

Use this interact to specify a type of group to call.

Small Group Info

Use this interact to learn information about the small groups of order n contained in the GAP library.

Calling a List of Groups from GAP

The current configuration for calling information from GAP only allows for you to call one group at a time, but we aim to allow for lists of groups which meet certain parameters. The some of the group properties we aim to address include abelian, solvable, nilpotent, given order, dihedral, semi-direct products, alternating, symmetric, and simple.

Groups Order Less Than or Equal to n

Use this interact to call all groups from the GAP library that have order less than or equal to your desired value.

Groups Order Between m and n

Use this interact to call all the groups from the GAP library that have order between m and n

Groups of a Certain Type

Use this interact to call all groups of a certain type from the GAP library that have order between m and n

Direct or Semidirect Product Groups

Use this interact to specify groups that contain direct or semidirect products.

WARNING: This code uses the StructureDescription() function, but this is not an invariant on groups through gap: non-isomorphic groups can give different structure descriptions. Also, a group may have an x in the structure description but not actually be a direct product (via John Sawatzky).

interact/groups (last edited 2023-05-15 14:36:43 by anewton)