Student Seminar in Combinatorics: Mathematical Software Group - - PowerPoint PPT Presentation

student seminar in combinatorics mathematical software
SMART_READER_LITE
LIVE PREVIEW

Student Seminar in Combinatorics: Mathematical Software Group - - PowerPoint PPT Presentation

Student Seminar in Combinatorics: Mathematical Software Group Theory and Symmetries Loreno Heer Seminar of Prof. Komei Fukuda December 02, 2014 Contents Mathematics December 02, 2014 Student Seminar in Combinatorics: Mathematical Software


slide-1
SLIDE 1

Student Seminar in Combinatorics: Mathematical Software

Group Theory and Symmetries

Loreno Heer Seminar of Prof. Komei Fukuda

December 02, 2014

slide-2
SLIDE 2

Contents

1 Overview of the GAP System

GAP Introduction GAP Implementation Overview GAP Package System

Examples of GAP Packages

GAP Data Libraries Overview GAP Programming Language

Syntax Overview Data Structures Mathematics

2 Examples

Rubik’s Cube Further Examples

3 References

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 2 / 26

slide-3
SLIDE 3

GAP Introduction

GAP stands for Groups, Algorithms and Programming Development of GAP began at Lehrstuhl D für Mathematik, RWTH-Aachen, under the leadership of Joachim Neubüser in 1985. GAP is free software licensed under the GNU General Public License Today development is international project. Developers: University of

  • St. Andrews; RWTH Aachen; the Technische Universität

Braunschweig; Colorado State University GAP is included in Sage GAP uses the GNU GMP library since version 4.5

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 3 / 26

slide-4
SLIDE 4

GAP Implementation Overview

The GAP system consists of the following parts:

1 A kernel written in C which provides

An interpreter for the GAP programming language Automatic dynamic storage management Implementation of time-critical functions A ”read-evaluate-loop” user interface

2 A library of GAP functions written entirely in the GAP programming

language & user contributed packages extending this library

3 A library of group theoretical data:

Contains for example the Small Groups Library: Groups of order up to 2000 (except 1024) and some infinite series of groups characterised by the prime number decomposition of their orders.

4 Documentation

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 4 / 26

slide-5
SLIDE 5

GAP Package System

GAP packages

Self-contained extensions to the core system which contain GAP code and their own documentation and may also contain data files or external programs to which the GAP code provides an interface. Packages can be submitted for a peer-review process. A package that has successfully passed this process is called an accepted package. All other packages are called deposited packages.

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 5 / 26

slide-6
SLIDE 6

Examples of GAP Packages

GRAPE by L. H. Soicher: Graph Algorithms using Permutation groups (accepted package). Browse by T. Breuer, F. Lübeck: Browsing applications and ncurses interface (deposited package). Automata by M. Delgado, S. Linton, J. Morais: A package on automata (accepted package). Singular by M. Costantini, W. de Graaf: The GAP interface to Singular (deposited package). PolymakeInterface by T. Baechler, S. Gutsche: A package to provide algorithms for fans and cones of polymake to other packages (deposited package). Alnuth by B. Assmann, A. Distler, B. Eick: Algebraic number theory and an interface to PARI/GP (accepted package).

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 6 / 26

slide-7
SLIDE 7

There are many more packages available for GAP...

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 7 / 26

slide-8
SLIDE 8

ACE 5.1 (22/01/2012) by G. Gamble, A. Hulpke, G. Havas, C. Ramsay Advanced Coset Enumerator Alnuth 3.0.0 (26/10/2011) by B. Assmann, A. Distler, B. Eick Algebraic number theory and an interface to PARI/GP ANUPQ 3.1.1 (19/11/2013) by G. Gamble, W. Nickel, E. O’Brien, M. Horn ANU p-Quotient Automata 1.13 (19/11/2011) by M. Delgado, S. Linton, J. Morais A package on automata AutPGrp 1.6 (29/05/2012) by B. Eick, E. O’Brien Computing the Automorphism Group of a p-Group Carat 2.1.4 (29/05/2012) by F. Gähler Interface to CARAT, a crystallographic groups package Circle 1.5.2 (01/02/2013) by A. Konovalov, P. Soules Adjoint groups of finite rings cohomolo 1.6 (23/06/2008) by D. Holt Cohomology groups of finite groups on finite modules Congruence 1.1.1 (28/10/2014) by A. Dooms, E. Jespers, A. Konovalov, H. Verrill Congruence subgroups of SL(2,Integers) CoReLG 1.02 (10/02/2014) by H. Dietrich, P. Faccin, W. A. de Graaf computation with real Lie groups Crime 1.4 (01/6/2011) by M. Bishop A GAP Package to Calculate Group Cohomology and Massey Products CRISP 1.3.8 (18/02/2014) by B. Höfling Computing with Radicals, Injectors, Schunck classes and Projectors Cryst 4.1.12 (10/10/2013) by B. Eick, F. Gähler, W. Nickel Computing with crystallographic groups Cubefree 1.13 (10/12/2012) by H. Dietrich Constructing the Groups of a Given Cubefree Order DESIGN 1.6 (23/11/2011) by L. H. Soicher The Design Package for GAP EDIM 1.3.2 (12/06/2013) by F. Lübeck Elementary Divisors of Integer Matrices FactInt 1.5.3 (16/06/2011) by S. Kohl Advanced Methods for Factoring Integers FGA 1.2.0 (20/11/2012) by C. Sievers Free Group Algorithms FORMAT 1.3 (05/26/2012) by B. Eick, C. R. Wright Computing with formations of finite solvable groups. Forms 1.2.2 (29/08/2011) by J. Bamberg, J. De Beule Sesquilinear and Quadratic FPLSA 1.1 (17/11/2003) by V. Gerdt, V. Kornyak Finitely Presented Lie Algebras GAPDoc 1.5.1 (23/02/2012) by F. Lübeck, M. Neunhöffer A Meta Package for GAP Documentation GBNP 1.0.1 (12/05/2010) by A. Cohen, J. Knopper computing Gröbner bases of noncommutative polynomials GRAPE 4.6.1 (17/05/2012) by L. H. Soicher GRaph Algorithms using PErmutation groups GrpConst 2.3 (29/05/2012) by H. U. Besche, B. Eick Constructing the Groups of a Given Order GUAVA 3.12 (21/05/2012) by R. Baart, T. Boothby, J. Cramwinckel, J. Fields, D. Joyner, R. Miller, E. Minkes, E. Roijackers, L. Ruscio, C. Tjhai a GAP package for computing with error-correcting codes HAP 1.10.15 (07/12/2013) by G. Ellis Homological Algebra Programming hecke 1.4 (02/07/2013) by D. Traytel Hecke - Specht 2.4 ported to GAP 4 IRREDSOL 1.2.4 (18/02/2014) by B. Höfling A Library of irreducible solvable linear groups over finite fields and of finite primivite soluble groups ITC 1.4 (06/01/2004) by V. Felsch, L. Hippe, J. Neubüser Interactive Todd-Coxeter kbmag 1.5 (06/01/2009) by D. Holt Knuth-Bendix on Monoids and Automatic Groups LAGUNA 3.7.0 (11/11/2014) by V. Bovdi, A. Konovalov, R. Rossmanith, C. Schneider Lie AlGebras and UNits of group Algebras liealgdb 2.1 (28/03/2010) by S. Cicalo’, W. de Graaf, C. Schneider A database of Lie algebras LieRing 2.2 (11/12/2013) by S. Cicalo’, W. A. de Graaf finitely presented Lie rings LiePRing 1.6 (08/11/2013) by M. Vaughan-Lee, B. Eick Database and algorithms for Lie p-rings MapClass 1.2 (24/04/2012) by A. James, K. Magaard, S. Shpectorov, H. Volklein A Package For Mapping Class Orbit Computation ModIsom 2.3.2 (04/07/2014) by B. Eick, A. Konovalov Computing automorphisms and checking isomorphisms for modular group algebras of finite p-groups Nilmat 1.2 (10/08/2007) by A. Detinko, B. Eick, D. Flannery Computing with nilpotent matrix groups nq 2.5.1 (02/04/2014) by M. Horn, W. Nickel Nilpotent Quotients of Finitely Presented Groups OpenMath 11.2.0 (16/11/2013) by M. Costantini, A. Konovalov, M. Nicosia, A. Solomon OpenMath functionality in GAP ParGAP 1.4.0 (17/11/2013) by G. Cooperman, P. Smith, A. Konovalov Parallel GAP permut 1.01 (15/04/2014) by A. Ballester-Bolinches, E. Cosme-Llópez, R. Esteban-Romero, R. Esteban-Romero A package to deal with permutability in finite groups Polenta 1.3.2 (01/04/2014) by B. Assmann, M. Horn Polycyclic presentations for matrix groups Polycyclic 2.11 (07/03/2013) by B. Eick, W. Nickel, M. Horn Computation with polycyclic groups QuaGroup 1.8 (16/08/2013) by W. A. de Graaf a package for doing computations with quantum groups RadiRoot 2.7 (09/04/2014) by A. Distler Roots of a Polynomial as Radicals RCWA 3.7.0 (21/07/2014) by S. Kohl Residue-Class-Wise Affine Groups RDS 1.6 (16/02/2012) by M. Roeder A package for searching relative difference sets Repsn 3.0.2 (25/08/2011) by V. Dabbaghian A GAP4 Package for constructing representations of finite groups SCSCP 2.1.4 (17/11/2013) by A. Konovalov, S. Linton Symbolic Computation Software Composability Protocol in GAP simpcomp 2.0.0 (12/12/2013) by F. Effenberger, J. Spreer A GAP toolbox for simplicial complexes SONATA 2.6 (07/11/2012) by E. Aichinger, F. Binder, J. Ecker, P. Mayr, C. Nöbauer System of nearrings and their applications Sophus 1.23 (03/02/2006) by C. Schneider Computing in nilpotent Lie algebras SymbCompCC 1.2 (19/11/2011) by D. Feichtenschlager Computing with parametrised presentations for p-groups of fixed coclass toric 1.8 (03/05/2012) by D. Joyner toric varieties and some combinatorial geometry computations UnitLib 3.2.0 (11/11/2014) by A. Konovalov, E. Yakimenko Library of normalized unit groups of modular group algebras Wedderga 4.7.1 (07/11/2014) by O. Broche Cristo, A. Herman, A. Konovalov, G. Olteanu, A. Olivieri, A. del Rio, I. Van Gelder Wedderburn Decomposition of Group Algebras XGAP 4.23 (30/04/2012) by F. Celler, M. Neunhoeffer a graphical user interface for GAP And many more ...

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 8 / 26

slide-9
SLIDE 9

GAP Data Libraries

GAP Data Libraries

GAP contains several data libraries of group theoretical data. Examples of such libraries are: SmallGroups by E. A. O’Brien, B. Eick, and H. U. Besche: Small Groups Library. All groups of order up to 2000 (except 1024) and some infinite series of groups characterised by the prime number decomposition of their orders. Basic Groups: Cyclic, abelian, dihedral, extraspecial, alternating, symmetric, Mathieu, Suzuki, and Ree groups. Classical Groups: Linear, unitary, symplectic, and orthogonal groups. Perfect Groups by D. Holt, W. Plesken, and V. Felsch: Almost all perfect groups of order up to 106.

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 9 / 26

slide-10
SLIDE 10

The GAP Programming Langauge

The GAP Programming Language is both the main implementation language (besides some time-critical functionality written in C) as well as the user language of the GAP system. The programming language used is an untyped imperative programming language with functions as first class objects and some extra built-in data types such as permutations and finite field elements.

Example

Ackermann := function(m,n) if m = 0 then return n+1; elif m > 0 and n = 0 then return Ackermann(m-1,1); elif m > 0 and n > 0 then return Ackermann(m-1,Ackermann(m,n-1)); else Error("invalid arguments"); fi; end; Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 10 / 26

slide-11
SLIDE 11

A GAP program can either be written in a separate file or commands entered directly at the user interface offered by GAP.

GAP Programming Language Syntax Overview

All commands must have a semicolon ”;” at the end. A double-semicolon ”;;” suppresses the output. Numbers and arithmetic operations work in a natural way:

5+34*7+4^3;

Variables in GAP are basically pointers to an object in memory. Variables within a function can be declared local. Assignments are done using the ”:=” operator:

local x; x := 3.1415;

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 11 / 26

slide-12
SLIDE 12

GAP Programming Language Syntax Overview (cont.)

Functions in GAP may change the arguments. For example

a := [4,7,6,2,1]; Sort(a);

will change the variable a to [ 1, 2, 4, 6, 7 ]. In the GAP interface, help to any topic is accessible with the ”?”

  • perator:

?Sort

Comments can be added in the source code with the ”#” sign:

# This is a comment and is ignored by GAP

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 12 / 26

slide-13
SLIDE 13

Data Structures

Lists in GAP are a collection of objects enclosed in square brackets:

[4,7,6,2,1];

Lists can have holes in them:

[4,7,6,,,,,2,1];

Sets and vectors are lists which satisfy specific properties. Permutations are another important type in GAP. They are written in cycle notation:

a := (1,2,3,4); b := (3,4); a * b;

will return (1,2,4).

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 13 / 26

slide-14
SLIDE 14

Mathematics

GAP has functions to construct and work with many mathematical

  • structures. Work can be done with

Groups and Homomorphisms Vectors and Matrices Elementary Number Theory Combinatorics Algebras Magmas Rings Rewriting Systems Presentations Modules Lie Algebras

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 14 / 26

slide-15
SLIDE 15

Mathematics

Groups can be created using the function ”Group(..)”. Using permutations as generators:

G := Group((1,2,3),(2,3,4,5)); IsPerfect(G); IsAbelian(G); Size(G); DerivedSubgroup(G);

Groups and other objects remember calculations that have been done before. Therefore they are executed faster subsequently.

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 15 / 26

slide-16
SLIDE 16

Contents

1 Overview of the GAP System

GAP Introduction GAP Implementation Overview GAP Package System

Examples of GAP Packages

GAP Data Libraries Overview GAP Programming Language

Syntax Overview Data Structures Mathematics

2 Examples

Rubik’s Cube Further Examples

3 References

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 16 / 26

slide-17
SLIDE 17

Example

As a first example, we can try to compute the minimal number of moves necessary to solve the small 2 × 2 × 2-Rubik’s cube from any given position. The faces of the cube are shown below

Cube Model

Writing down each face of the cube separately and noting which squares change upon rotating of the side, one can construct a permutation group using the obtained data.

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 17 / 26

slide-18
SLIDE 18

Example

Cube Model Permutations

gen1 := (1,2,4,3)*(10,6,18,14)*(5,17,13,9); gen2 := (9,10,12,11)*(6,4,15,21)*(8,3,13,22); gen3 := (5,6,8,7)*(1,9,21,20)*(3,11,23,18);

1

1For simplification keep one edge of the cube fixed

slide-19
SLIDE 19

Example

Creating the permutation group for the Rubik’s cube

G:= GroupWithGenerators([gen1,gen2,gen3]);

Calculate the growth function of the group

# This takes a long time to compute gr := GrowthFunctionOfGroup(G); Size(gr) - 1;

Create Cayley-Graph

LoadPackage("grape"); # This takes a very long time to compute graph := CayleyGraph(G);; Diameter(graph);

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 19 / 26

slide-20
SLIDE 20

Example

Other calculations on the cube

Size(G); # Calculate the order of the group F := FreeGroup("r", "t", "b"); hom := GroupHomomorphismByImages(F, G, GeneratorsOfGroup(F), GeneratorsOfGroup(G)); #Get a random permutation of the cube r := Random(G); PreImagesRepresentative(hom,r);

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 20 / 26

slide-21
SLIDE 21

Contents

1 Overview of the GAP System

GAP Introduction GAP Implementation Overview GAP Package System

Examples of GAP Packages

GAP Data Libraries Overview GAP Programming Language

Syntax Overview Data Structures Mathematics

2 Examples

Rubik’s Cube Further Examples

3 References

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 21 / 26

slide-22
SLIDE 22

Study the implementation details

# displays the gap source code of the implementation PageSource(Factorial); PageSource(PageSource); LoadPackage("browse"); NCurses.Demo(); BrowseGapData();

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 22 / 26

slide-23
SLIDE 23

Checking if two groups are isomorphic and constructing an isomorphism

#Dihedral group of order 4 G := DihedralGroup(4); # Z2 × Z2 H := DirectProduct(CyclicGroup(2), CyclicGroup(2)); #check if the groups are isomorphic IsIsomorphicGroup(G,H); #construct an isomorphism iso := IsomorphismGroups(G,H); #construct an isomorphism into a permutation group iso2 := IsomorphismPermGroup(G); #get the image of some element under the isomorphism Image(iso2, G.1*G.2);

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 23 / 26

slide-24
SLIDE 24

Using the Group Libraries

#Print information about all groups of order 10 SmallGroupsInformation(8); # Get a simple group of order 60 G:=OneGroup(60, IsSimple); #Get a list of all groups of order 60 that are perfect AllSmallGroups(60, IsPerfect); # Elementary Abelian Group of Order 8 # This is the Burnside group B(3,2) G:=ElementaryAbelianGroup(8); Exponent(G); List(Elements(G),Order); # Burnside group B(3,3) G := SmallGroup(2187,4487); List(Elements(G),Order);

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 24 / 26

slide-25
SLIDE 25

Contents

1 Overview of the GAP System

GAP Introduction GAP Implementation Overview GAP Package System

Examples of GAP Packages

GAP Data Libraries Overview GAP Programming Language

Syntax Overview Data Structures Mathematics

2 Examples

Rubik’s Cube Further Examples

3 References

Loreno Heer Student Seminar in Combinatorics: Mathematical Software ETHZ December 02, 2014 25 / 26

slide-26
SLIDE 26

References

References

Official GAP website and documentation: http://www.gap-system.org/ Rosetta Code: http://rosettacode.org/wiki/Rosetta_Code Groupprops, The Group Properties Wiki: http://groupprops.subwiki.org/wiki/Main_Page ATLAS of Finite Group Representations - Version 3: http://brauer.maths.qmul.ac.uk/Atlas/v3/ The Diameter of the Rubik’s Cube Group Is Twenty2: http://dx.doi.org/10.1137/120867366

2Calculation took approximately 31 years of CPU time (donated by Google)