From wdjoyner at gmail.com Mon Jan 1 15:10:27 2007 From: wdjoyner at gmail.com (David Joyner) Date: Mon Jan 1 14:22:49 2007 Subject: [GAP Forum] GAP www items (Jan 2007) Message-ID: <45992463.30402@gmail.com> Hello all and Happy New Year! Some recent updates to the GAP www site: 1. New packages: IO (provides bindings for GAP to the lower levels of Input/Output functionality in the C library) by Max Neunhoeffer 2. Recently updated packages: Circle (provides functionality to compute in the adjoint groups of associative rings) by Alexander Konovalov and Panagiotis Soules Design (for constructing, classifying, partitioning and studying block designs) by Leonard H. Soicher LieAlgDB (provides access to some classifications of small-dimensional Lie algebras) by Willem De Graaf and Csaba Schneider radiroot (can compute and display an expression by radicals for the roots of a solvable, rational polynomial) by Andreas Distler RDS (provides functions for finding relative difference sets in non-abelian finite groups by complete enumeration - especially those defining projective planes) by Marc Roeder UnitLib (library of normalized unit groups of modular group algebras of finite p-groups over the field of p elements for all finite p-groups of order not greater than 128) by Alexander Konovalov and Elena Yakimenko Wedderga (provides Wedderburn decomposition tools for any group algebra) by Angel Del Rio Mateos, Aurora Olivieri, Alexander Konovalov, Gabriela Olteanu, Osnel Broche Cristo Package authors only: 1. I'd like to remind package authors, if I may, to please consider adding to their package a file which describes the history or changes to their package. An excellent example is DESIGN, which includes this information in the README file: http://www.gap-system.org/Manuals/pkg/design/README.design 2. I'd also like to ask package authors, if I may, to please consider adding to their package a file which describes the distribution license of their package. Again, an excellent example of a GAP package which does this is DESIGN, which includes this information in the README file. It may also do in a file called COPYING or LICENSE. An excellent example of a license to use is the GPL (http://www.gnu.org/licenses/), which is used by GAP. Thanks for your consideration! - David Joyner From holmespe at for.mat.bham.ac.uk Mon Jan 8 10:33:07 2007 From: holmespe at for.mat.bham.ac.uk (Petra Holmes) Date: Mon Jan 8 10:33:26 2007 Subject: [GAP Forum] van Kampen diagrams Message-ID: Dear Group Pub Forum, I have been told to send this to everyone I can think of. Any ideas on it are welcome. Beth ---------- Forwarded message ---------- Date: Mon, 8 Jan 2007 08:26:37 +0000 From: Richard Parker To: Beth Holmes Subject: The central problem Let P be a polyhedral ball which topologically is a sphere, and where precisely three faces meet at every vertex. For each face with n sides, define the "curvature" of that face to be 6-n, so a pentagon has curvature 1, an octagon has curvature -2 and so on. The faces do not need to be regular. Euler's formula, F + V = E + 2, implies that the total curvature over the whole of P is 12. A "patch" of f faces is a subset of the faces of P that has no holes in it. Technically it is simply connected. I need to prove or disprove the following result. For every such P there is a sequence of patches, each containing one more face than the previous, such that the sum of the curvature of all the faces in each patch is greater than zero. In other words we can build P one face at a time such that the curvature of the patch we have made so far is always positive. This result has huge implications for an algorithm for finitely presented groups. P is a van Kampen diagram, and I want to know whether a short relator with a long proof can be built up relator by relator looking only at sensible things along the way. From bob.heffernan at gmail.com Mon Jan 8 11:33:01 2007 From: bob.heffernan at gmail.com (Robert Heffernan) Date: Mon Jan 8 11:33:45 2007 Subject: [GAP Forum] isoclinism In-Reply-To: <4587E323.2020502@gmail.com> References: <6d9a83e90611150556r56f72a0rdfbe977b94878912@mail.gmail.com> <4587E323.2020502@gmail.com> Message-ID: <6d9a83e90701080333y611c52b3x444563ae46fa0a9b@mail.gmail.com> On 12/19/06, David Joyner wrote: > Sorry for the long delay (final exams, etc). As you probably guessed, > the short answer appears to be that at the moment GAP does not > have the command you want. I personally know nothing about isoclinism > but Joachim Neubueser was kind enough to send me some information which > I'll pass on to you: Thank you for your email. FYI, In "The Groups of Order 128" (Journal of Algebra 129, 1990) James, Newman and O'Brien describe an algorithm to determine if two arbitrary p-groups are isoclinic. To my knowledge this has not been implemented in any publicly-available algebra system. The implementation of such an algorithm (or even the brute-force approach outlined by Joachim) is peripheral enough to my interests that I can't really spare the time to implement it (I'm not sure I have the necessary expertise anyway). However, it would be a worthwhile and interesting project for *somebody*, I think. Bob From dima at ntu.edu.sg Mon Jan 8 13:56:46 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Mon Jan 8 13:54:54 2007 Subject: [GAP Forum] van Kampen diagrams In-Reply-To: Message-ID: This seems to be related to shellability of polytopes, see e.g. G.M.Ziegler's book "Lectures on polytopes" on this topic. (I presume that "topologically a sphere" means that we deal with a 3-connected planar graph. Then by Steinitz thm it comes from a 3-polytope) The "sequence of patches" is then a shelling of the polytope. Shellings of polytopes always exist. The extra condition on curvature makes the problem seemingly nontrivial. Perhaps some "statistics" on possible distributions of shapes of faces in 3-polytopes might help - but I'm not an expert on this. HTH, -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ On 1/8/07 6:33 PM, "Petra Holmes" wrote: > Dear Group Pub Forum, > > I have been told to send this to everyone I can think of. Any ideas on it > are welcome. > > Beth > > ---------- Forwarded message ---------- > Date: Mon, 8 Jan 2007 08:26:37 +0000 > From: Richard Parker > To: Beth Holmes > Subject: The central problem > > > Let P be a polyhedral ball which topologically is a sphere, > and where precisely three faces meet at every vertex. > > For each face with n sides, define the "curvature" of that > face to be 6-n, so a pentagon has curvature 1, an octagon > has curvature -2 and so on. The faces do not need to be > regular. > > Euler's formula, F + V = E + 2, implies that the total curvature > over the whole of P is 12. > > A "patch" of f faces is a subset of the faces of P that has > no holes in it. Technically it is simply connected. > > I need to prove or disprove the following result. > > For every such P there is a sequence of patches, each containing > one more face than the previous, such that the sum of the curvature > of all the faces in each patch is greater than zero. In other words > we can build P one face at a time such that the curvature of the > patch we have made so far is always positive. > > This result has huge implications for an algorithm for finitely > presented groups. P is a van Kampen diagram, and I want to know > whether a short relator with a long proof can be built up relator > by relator looking only at sensible things along the way. From holmespe at for.mat.bham.ac.uk Mon Jan 8 17:41:08 2007 From: holmespe at for.mat.bham.ac.uk (Petra Holmes) Date: Mon Jan 8 17:41:35 2007 Subject: [GAP Forum] van Kampen diagrams In-Reply-To: <1118.132.199.103.149.1168264083.squirrel@webmail.ph-bw.de> References: <1118.132.199.103.149.1168264083.squirrel@webmail.ph-bw.de> Message-ID: Stephan, Thank you for your reply. But our question is whether a face exists that you can start building the patch from, not whether all faces can be the starting place. Beth On Mon, 8 Jan 2007, Stephan Rosebrock wrote: > Dear Group Pub Forum, > > this cannot be true since you could start building your patch > with an octagon which hast negative curvature already. > > Best wishes > Stephan Rosebrock > > > >> From chris.chalk1 at ntlworld.com Mon Jan 8 23:36:01 2007 From: chris.chalk1 at ntlworld.com (chris chalk) Date: Mon Jan 8 23:36:47 2007 Subject: [GAP Forum] van Kampen diagrams References: Message-ID: <000f01c7337d$c34906a0$0200a8c0@cchalk> Beth, thanks for this lovely question. Its got a strong 4-color theorem flavour about it. So how about this as an approach? Consider the dual D of the spherical VK diagram. So faces become vertices and the 3 degree vertices become triangles and we have a triangulation of the sphere, where, from Euler, the average degree of the vertices of D must be < 6. Your question is then, is it always possible somehow to enumerate or order the vertices of D so that in this 'ordering' I) each vertex is connected to its predecessor/successor by an edge of D, and II) the average degree of the vertices of every initial subset of this ordering is < 6. eg if the degrees of vertices of an 'ordering' begin as (5,6,6,5,7,6,...) then this satisfies this 'ordering condition' (so far at least), but if they begin (5,6,6,7,5,6,..) then they don't. So here's a sketch of a start of a possible proof....!?? Following the 4 Colour Thm proof, assume there exist one or more spherical diagrams which don't allow this 'ordering' of vertices. Choose one, M, which has the smallest number of vertices. Now pick any vertex V of degree 5 or less in M. There then exists a maximal connected planar subdiagram S of M containing V in its interior, such that all other interior vertices of S are of degree 6 or less. For example it could be that V is connected to another vertex W of degree 5 but that all the other (6?) vertices connected to V and W have degree > 6. In this case S would a 6 sided subdiagram of M. We can then shrink this subdiagram to a point or vertex to form a spherical diagram M' with fewer vertices than M for which, by assumption, an 'ordering' of the vertices exist. eg S, above would shrink to a vertex of degree 6 and M' would have 2 fewer vertices than M. Could it be that from the 'ordering' of M' we could construct an 'ordering' of the larger diagram M and so derive a contradiction to the assumption that no such 'ordering' exists.? Its of course possible that S wraps round the sphere and so isn't planar then cant just shrink S to a vertex without forming two spheres - maybe it isn't necessary to let vertices of degrees 6 belong to S.... I hope this might be of some help. regards Chris ----- Original Message ----- From: "Petra Holmes" To: Sent: Monday, January 08, 2007 10:33 AM Subject: [GAP Forum] van Kampen diagrams > Dear Group Pub Forum, > > I have been told to send this to everyone I can think of. Any ideas on it > are welcome. > > Beth > > ---------- Forwarded message ---------- > Date: Mon, 8 Jan 2007 08:26:37 +0000 > From: Richard Parker > To: Beth Holmes > Subject: The central problem > > > Let P be a polyhedral ball which topologically is a sphere, > and where precisely three faces meet at every vertex. > > For each face with n sides, define the "curvature" of that > face to be 6-n, so a pentagon has curvature 1, an octagon > has curvature -2 and so on. The faces do not need to be > regular. > > Euler's formula, F + V = E + 2, implies that the total curvature > over the whole of P is 12. > > A "patch" of f faces is a subset of the faces of P that has > no holes in it. Technically it is simply connected. > > I need to prove or disprove the following result. > > For every such P there is a sequence of patches, each containing > one more face than the previous, such that the sum of the curvature > of all the faces in each patch is greater than zero. In other words > we can build P one face at a time such that the curvature of the > patch we have made so far is always positive. > > This result has huge implications for an algorithm for finitely > presented groups. P is a van Kampen diagram, and I want to know > whether a short relator with a long proof can be built up relator > by relator looking only at sensible things along the way. > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From holmespe at for.mat.bham.ac.uk Tue Jan 9 07:58:01 2007 From: holmespe at for.mat.bham.ac.uk (Petra Holmes) Date: Tue Jan 9 07:58:23 2007 Subject: [GAP Forum] van Kampen diagrams (fwd) Message-ID: Just to say that our question is answered by this nice counterexample from David Hobby: ---------- Forwarded message ---------- Date: Mon, 08 Jan 2007 14:12:43 -0500 From: David Hobby To: Petra Holmes Subject: Re: [GAP Forum] van Kampen diagrams Petra-- May we have a precise definition of "polyhedral ball", just for clarification? I've got a counterexample, but it's not what most people would call a polyhedron. It is, however, derived in an obvious way from a planar graph, which is what van Kampen diagrams seem to be. Is it legal for two faces to touch at more than one shared edge? If so, my counterexample consists of something that can be visualized as the globe, with a 15-gon covering almost all the Northern hemisphere, another one covering almost all the Southern hemisphere, and a ring of 5 "diamonds" going along the equator. Each diamond looks like this, where up is North: . /|\ _________./ | \._______________ \ | / \|/ . (This mess can only be deciphered if you have the spacing set the right way in ASCII mode. Sorry!) Then the two 15-gons touch at 5 separate edges, running along the equator between the 5 diamonds. (Each diamond is made of two triangles which share a north-south edge, in case my diagram didn't work.) Nice problem. ---David From joachim.s at web.de Wed Jan 10 19:32:44 2007 From: joachim.s at web.de (Joachim Schittenhelm) Date: Wed Jan 10 19:33:29 2007 Subject: [GAP Forum] matrix-conjugation problem. matrices given in numbers Message-ID: <45A53F5C.9080108@web.de> Hi members, i got an equation Problem. given: 4 matrices X_1,G_1, X_2, G_2 in GL(n,q) needed: matrix Y (<>0), so that X_i is the conjugation of G_i by Y matrices X_i, G_i are given like this: [[2,0],[0,1]] entries are numbers modulo q is this somehow solvable in GAP? Greetings Joachim From jack at ms.uky.edu Wed Jan 10 23:00:18 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Wed Jan 10 23:01:27 2007 Subject: [GAP Forum] matrix-conjugation problem. matrices given in numbers In-Reply-To: <45A53F5C.9080108@web.de> References: <45A53F5C.9080108@web.de> Message-ID: <45A57002.8050307@ms.uky.edu> You can use RepresentativeAction to find an element Y that does the conjugation. Here is a sample GAP session that chooses some random X_i and G_i in GL(2,5), asks GAP to find a Y that conjugates them, and then checks that GAP did what you think it should. gap> h:=GL(2,5); GL(2,5) gap> x:=[PseudoRandom(h),PseudoRandom(h)]; [ [ [ Z(5)^3, 0*Z(5) ], [ Z(5)^0, Z(5)^0 ] ], [ [ Z(5)^2, 0*Z(5) ], [ Z(5)^2, Z(5)^3 ] ] ] gap> g:=OnTuples(x,PseudoRandom(h)); [ [ [ Z(5), Z(5)^3 ], [ Z(5), Z(5) ] ], [ [ Z(5)^3, 0*Z(5) ], [ Z(5), Z(5)^2 ] ] ] gap> y:=RepresentativeAction(h, x, g, OnTuples); [ [ Z(5)^3, Z(5)^2 ], [ Z(5)^0, Z(5)^0 ] ] gap> y^-1 * x[1] * y = g[1]; true gap> y^-1 * x[2] * y = g[2]; true If your matrices are given as integer matrices, be sure to multiply them by the appropriate finite field matrix to turn them into finite field matrices: gap> myx := [[2,0],[0,1]]; [ [ 2, 0 ], [ 0, 1 ] ] gap> x1 := myx*One(h); [ [ Z(5), 0*Z(5) ], [ 0*Z(5), Z(5)^0 ] ] You can convert the answer back to a more familiar form using the Display command as well: gap> Display(y); 3 4 1 1 If q=p^n is a proper prime power, then elements will be displayed as powers of a primitive element with minimal polynomial ConwayPolynomial(p,n) For large examples, you may wish to find Y_1 (using basically the same procedure) first for X_1 and G_1, then try the cosets of the centralizer of X_1 to find Y=C*Y_1, where C is in the centralizer of X_1 and X_2^C = G* = G_2^(Y_1^-1). The following took about 20 seconds (and the previous method took longer than a few minutes, so was canceled): gap> h:=GL(2,251); GL(2,251) gap> x:=[PseudoRandom(h),PseudoRandom(h)]; [ [ [ Z(251)^64, Z(251)^48 ], [ Z(251)^207, Z(251)^25 ] ], [ [ Z(251)^62, Z(251)^201 ], [ Z(251)^60, Z(251)^36 ] ] ] gap> g:=OnTuples(x,PseudoRandom(h)); [ [ [ Z(251)^219, Z(251)^62 ], [ Z(251)^207, Z(251)^90 ] ], [ [ Z(251)^161, Z(251)^190 ], [ Z(251)^149, Z(251)^245 ] ] ] gap> y1:=RepresentativeAction(h, x[1], g[1] ); [ [ Z(251)^0, Z(251)^17 ], [ 0*Z(251), Z(251)^0 ] ] gap> hc:=Centralizer(h, x[1]); gap> c:=RepresentativeAction(hc, x[2], g[2]^(y1^-1) ); [ [ Z(251)^187, Z(251)^91 ], [ Z(251)^0, Z(251)^92 ] ] gap> y:=c*y1; [ [ Z(251)^187, Z(251)^98 ], [ Z(251)^0, Z(251)^69 ] ] gap> y^-1 * x[1] * y = g[1]; true gap> y^-1 * x[2] * y = g[2]; true Joachim Schittenhelm wrote: > Hi members, > > i got an equation Problem. > > given: > 4 matrices X_1,G_1, X_2, G_2 in GL(n,q) > > needed: > matrix Y (<>0), so that X_i is the conjugation of G_i by Y > > matrices X_i, G_i are given like this: > [[2,0],[0,1]] > entries are numbers modulo q > > is this somehow solvable in GAP? > > > Greetings > > Joachim From emailme at ianmcloughlin.com Tue Jan 16 16:10:01 2007 From: emailme at ianmcloughlin.com (Ian McLoughlin) Date: Tue Jan 16 16:10:29 2007 Subject: [GAP Forum] Direct Product Message-ID: <9d5eef600701160810g8dd6ddegf9faea159d76b4e2@mail.gmail.com> Hi, I'm having a problem with creating a listing of the direct product of two groups. They are... 1) The cyclic group(C2) of order 2: < h | h^2 = 1 > and 2) The dihedral group(D12) of order 12: < a , b | a^2 = 1 , b^6 = 1 , ab = ba^(-1) >. What I need is a listing of the elements of C2 x D12(in a list) in the order that I want.... [ 1 , b , b^2 , ... , b^5 , a , ab , ab^2 , ... , ab^5 , h , hb , hb^2 , ... , hb^5 , hab , hab^2 , hab^5 ]. When I try to use DirectProduct and the Image(Embedding(GDirect,1),b); technique in other posts to this forum about direct products, I get an error. What i tried was.... h := GeneratorsOfGroup( GCyclic )[1] ; a := GeneratorsOfGroup( GDihedral )[1] ; b := GeneratorsOfGroup( GDihedral )[2] ; with GCyclic := CyclicGroup( 2 ) ; GDihedral := DihedralGroup( 12 ) ; . Thanks, Ian -- Ian McLoughlin emailme@ianmcloughlin.com From alexander.konovalov at gmail.com Tue Jan 16 17:00:14 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Tue Jan 16 17:01:17 2007 Subject: [GAP Forum] Direct Product In-Reply-To: <9d5eef600701160810g8dd6ddegf9faea159d76b4e2@mail.gmail.com> References: <9d5eef600701160810g8dd6ddegf9faea159d76b4e2@mail.gmail.com> Message-ID: Dear Ian, I was trying to reproduce your computations, and, if I was following your way correctly, then Image(Embedding(GDirect,1),b); will not work because b belongs to the dihedral group of order 12 which is the 2nd factor of the direct product, not the 1st one. Thus, to embed b into the direct product, you need to use gap> Image(Embedding(GDirect,2),b); See my working example below: gap> GCyclic := CyclicGroup( 2 ) ;; gap> GDihedral := DihedralGroup( 12 ) ;; gap> GDirect := DirectProduct(GCyclic,GDihedral);; gap> h := GeneratorsOfGroup( GCyclic )[1] ; f1 gap> a := GeneratorsOfGroup( GDihedral )[1] ; f1 gap> b := GeneratorsOfGroup( GDihedral )[2] ; f2 gap> Image(Embedding(GDirect,1),h); f1 gap> Image(Embedding(GDirect,2),a); f2 gap> Image(Embedding(GDirect,2),b); f3 Hope it helps, and please do not hesitate to ask further questions. Best wishes, Alexander On 16 Jan 2007, at 16:10, Ian McLoughlin wrote: > Hi, > > I'm having a problem with creating a listing of the direct product > of two > groups. They are... > > 1) The cyclic group(C2) of order 2: < h | h^2 = 1 > and > 2) The dihedral group(D12) of order 12: < a , b | a^2 = 1 , b^6 > = 1 , ab > = ba^(-1) >. > > What I need is a listing of the elements of C2 x D12(in a list) in > the order > that I want.... > > [ 1 , b , b^2 , ... , b^5 , a , ab , ab^2 , ... , ab^5 , h , hb , > hb^2 , ... > , hb^5 , hab , hab^2 , hab^5 ]. > > When I try to use DirectProduct and the Image(Embedding(GDirect,1),b); > technique in other posts to this forum about direct products, I get an > error. What i tried was.... > > > h := GeneratorsOfGroup( GCyclic )[1] ; > a := GeneratorsOfGroup( GDihedral )[1] ; > b := GeneratorsOfGroup( GDihedral )[2] ; > > with > > GCyclic := CyclicGroup( 2 ) ; > GDihedral := DihedralGroup( 12 ) ; > > . > > Thanks, > Ian From Dursun.Bulutoglu at afit.edu Wed Jan 17 00:32:42 2007 From: Dursun.Bulutoglu at afit.edu (Bulutoglu Dursun A Civ AFIT/ENC) Date: Wed Jan 17 00:33:07 2007 Subject: [GAP Forum] Retrieving coefficients of linear equations Message-ID: <039A0DCC3D66EE4AB9AF11E119287F15035E5212@ms-afit-04.afit.edu> Dear Gap Forum, I was wondering how I can extract the coefficients of a multivariate polynomial (in my case it is a linear polynomial) and put them in a list. I wrote the code below and would like to extract the coefficients of the variables x_1,x_2,...x_10 in A8 into a list where the first element is the coefficient of x_1 the second element is the coefficient of x_2 and the last element is the constant (or the first element is the constant, the second element is the coefficient of x_1 the third element is the coefficient of x_2 and so on... Thanks in advance. Dursun. m:=10; N:=20; aa:=PolynomialRing(Rationals,[1..20]); mm:=IndeterminatesOfPolynomialRing(aa); ccf:=(2*([1..10]-5)-1); mm8:=List(ccf, x->x^8)*mm{[1..10]}; mm6:=List(ccf, x->x^6)*mm{[1..10]}; mm4:=List(ccf, x->x^4)*mm{[1..10]}; A4:=(mm4-N^2*(m-1)*(3*(m-1)-2))/(24); A6:=(mm6-N^2*(15*(m-1)*(m-2)^2+(m-1))-(360*(m-1)-960)*A4)/720; A8:=(mm8-(20160*(m-1)-80640)*A6-(5040*(m-1)^2-30240*(m-1)+48384)*A4 -N^2*(105*(m-1)^4-420*(m-1)^3+588*(m-1)^2-272*(m-1)))/40320; From anvita21 at usa.com Wed Jan 17 02:01:29 2007 From: anvita21 at usa.com (Anvita) Date: Wed Jan 17 02:01:56 2007 Subject: [GAP Forum] A question on semidirect products Message-ID: <20070117020129.E36F623F06E@ws3-4.us4.outblaze.com> Dear forum, I am trying to construct in GAP the natural semidirect product of SL(2,4) and the underlying vector space GF(4)^2 and then get hold of the normal elementary abelian 2-group *inside* the product. Here is what I get. -------------------------------------------- gap> S:=SL(2,4); SL(2,4) gap> V:=GF(4)^2; ( GF(2^2)^2 ) gap> SV:=SemidirectProduct(S,V); gap> VV:=Image(Embedding(SV,2),V);; gap> IsNormal(SV,VV); false -------------------------------------------- Why isn't VV normal in SV? Thank you Anvita -- ___________________________________________________ Search for products and services at: http://search.mail.com From hulpke at mac.com Wed Jan 17 16:52:20 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Wed Jan 17 16:53:01 2007 Subject: [GAP Forum] A question on semidirect products In-Reply-To: <20070117020129.E36F623F06E@ws3-4.us4.outblaze.com> References: <20070117020129.E36F623F06E@ws3-4.us4.outblaze.com> Message-ID: Dear GAP Forum, On Jan 16, 2007, at 7:01 PM, anvita21 wrote: > I am trying to construct in GAP the natural semidirect product > of SL(2,4) and the underlying vector space GF(4)^2 and then > Why isn't VV normal in SV? Thank you for reporting this bug. The current code forms a wrong embedding if the underlying field is not a prime field. (It returns in your example GF(2)^2 and not GF(4)^2 -- thus the subgroup is not normal. This will be corrected in the next bugfix. Best wishes, Alexander Hulpke From Frank.Luebeck at math.rwth-aachen.de Thu Jan 18 08:37:42 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Thu Jan 18 08:38:54 2007 Subject: [GAP Forum] Retrieving coefficients of linear equations In-Reply-To: <039A0DCC3D66EE4AB9AF11E119287F15035E5212@ms-afit-04.afit.edu> References: <039A0DCC3D66EE4AB9AF11E119287F15035E5212@ms-afit-04.afit.edu> Message-ID: <20070118083742.GA29914@math.rwth-aachen.de> Dear Dursun, dear Forum, On Tue, Jan 16, 2007 at 07:32:42PM -0500, Bulutoglu Dursun A Civ AFIT/ENC wrote: > I was wondering how I can extract the coefficients of a multivariate > polynomial (in my case it is a linear polynomial) and put them in a > list. GAP has an operation 'ExtRepPolynomialRatFun' and a function 'PolynomialByExtRep' which you can use. You find the details in the GAP online help: gap> ?The Defining Attributes of Rational Functions gap> ?ExtRepPolynomialRatFun gap> ?PolynomialByExtRep > m:=10; > N:=20; > aa:=PolynomialRing(Rationals,[1..20]); > mm:=IndeterminatesOfPolynomialRing(aa); > ccf:=(2*([1..10]-5)-1); > > mm8:=List(ccf, x->x^8)*mm{[1..10]}; > mm6:=List(ccf, x->x^6)*mm{[1..10]}; > mm4:=List(ccf, x->x^4)*mm{[1..10]}; > > A4:=(mm4-N^2*(m-1)*(3*(m-1)-2))/(24); > > A6:=(mm6-N^2*(15*(m-1)*(m-2)^2+(m-1))-(360*(m-1)-960)*A4)/720; > > A8:=(mm8-(20160*(m-1)-80640)*A6-(5040*(m-1)^2-30240*(m-1)+48384)*A4 > -N^2*(105*(m-1)^4-420*(m-1)^3+588*(m-1)^2-272*(m-1)))/40320; In this example you can use: gap> A8; 121743/896*x_1+26411/384*x_2+114125/2688*x_3+7983/896*x_4+365/2688*x_5+365/268\ 8*x_6+7983/896*x_7+114125/2688*x_8+26411/384*x_9+121743/896*x_10-266775/56 gap> cA8 := ExtRepPolynomialRatFun(A8); [ [ ], -266775/56, [ 10, 1 ], 121743/896, [ 9, 1 ], 26411/384, [ 8, 1 ], 114125/2688, [ 7, 1 ], 7983/896, [ 6, 1 ], 365/2688, [ 5, 1 ], 365/2688, [ 4, 1 ], 7983/896, [ 3, 1 ], 114125/2688, [ 2, 1 ], 26411/384, [ 1, 1 ], 121743/896 ] gap> fam := RationalFunctionsFamily(FamilyObj(1));; gap> check := PolynomialByExtRep(fam, cA8); 121743/896*x_1+26411/384*x_2+114125/2688*x_3+7983/896*x_4+365/2688*x_5+365/268\ 8*x_6+7983/896*x_7+114125/2688*x_8+26411/384*x_9+121743/896*x_10-266775/56 gap> check = A8; true With best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From ally at dcs.gla.ac.uk Mon Jan 22 14:22:44 2007 From: ally at dcs.gla.ac.uk (Alastair Donaldson) Date: Mon Jan 22 14:23:04 2007 Subject: [GAP Forum] Complexity questions Message-ID: <58577CAC1C0FB34DAA24FA9DC76613F101773302@ex1.ad.dcs.gla.ac.uk> Hi all I'd like to know the worst case complexity for a number of algorithms which GAP implements. Can anyone direct me to a good reference, or provide answers? - AllBlocks(G) - IsomorphicSubgroups(G,H) (I know this one is pretty bad!) - ActionHomomorphism (G,B,OnSets) (where B is a block system for G) - NormalSubgroups(G) (where G is a finite permutation group and H<=G) Also (not really a GAP question, I know) -- is there a worst-case result on how many distinct block systems a transitive group admits, given that G has degree n? Thanks Alastair From ara at zurich.csail.mit.edu Tue Jan 23 05:15:04 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Tue Jan 23 05:19:19 2007 Subject: [GAP Forum] standards for documenting GAP source code Message-ID: I've started reading some of the C source code for GAP 3 (yes, I know there is a more recent GAP; I'll get to it eventually) and so far I'm impressed by the excellence of the commenting of the source code. I'd just like to know whether there are any explicitly formalized standards that are for documenting the GAP source code. If so, I'd like to read them so that I can try to adopt some of them in my own programs. -- Ignorantly, Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From ara at zurich.csail.mit.edu Tue Jan 23 05:25:31 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Tue Jan 23 05:29:20 2007 Subject: [GAP Forum] size of permutation groups Message-ID: I'm using Gap 3 on a PC running RH 7.1 Linux. Using it, I took a couple of permutations on a little over 100 objects and had no trouble, after waiting long enough, getting Gap 3 to confirm that they generated the entire symmetric group. I tried the same thing with some permutations on several hundred objects and, after 5 hours of waiting for Gap 3 to compute the order of the group, I gave up and stopped the program. What I'd like to know is the following: (1) How large can n be for me to do stuff like this with the symmetric group on n objects and expect the program to run to completion? (2) It is frustrating to wait a long time for a program to run and to have no idea how far it is getting. Is there some way to get the program to tell me a little about its progress while it is figuring out the order of the group generated by the given permutations? One other advantage of such feedback is that it might tell me something that might let me find a proof that I get the full symmetric group. I have nothing against Gap 4, I just haven't installed it yet. One reason I'm not in a hurry is that Gap 3 is doing a good job so far. Another is that I'm not absolutely sure that the programs that run on Gap 3 will also run on Gap 4, and I'm not prepared to rewrite them at the moment. But I'll get to it. Anyway, people here probably don't want to support Gap 3 any more, so it's perfectly all right with me if you pretend that I said I was using Gap 4 and answer the questions for Gap 4 instead. -- Ignorantly, Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From sal at cs.st-and.ac.uk Wed Jan 24 12:30:12 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Wed Jan 24 12:30:35 2007 Subject: [GAP Forum] standards for documenting GAP source code In-Reply-To: References: Message-ID: <20070124123012.3d6df245@caolila> Dear GAP Forum, On Tue, 23 Jan 2007 00:15:04 -0500 Allan Adler wrote: > > I've started reading some of the C source code for GAP 3 (yes, I know > there is a more recent GAP; I'll get to it eventually) and so far I'm > impressed by the excellence of the commenting of the source code. I'd > just like to know whether there are any explicitly formalized standards > that are for documenting the GAP source code. If so, I'd like to read > them so that I can try to adopt some of them in my own programs. > The short answer is no. The source code documentation reflects the excellent practice of the initial authors of GAP 3, mainly Martin Schoenert, and was carried into the older parts of GAP 4, but, to my knowledge, was never codified. Some later additions are less well commented, but we try to follow the general pattern. Some of the commenting in the GAP4 library code (mainly .gd files) is automatically inserted into the manuals during the build process, so follows the rules of our manual formats. Steve Linton -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From kohl at mathematik.uni-stuttgart.de Wed Jan 24 13:19:08 2007 From: kohl at mathematik.uni-stuttgart.de (Stefan Kohl) Date: Wed Jan 24 13:19:32 2007 Subject: [GAP Forum] size of permutation groups In-Reply-To: References: Message-ID: <45B75CCC.5060502@mathematik.uni-stuttgart.de> Dear Forum, Allan Adler wrote: > I'm using Gap 3 on a PC running RH 7.1 Linux. Using it, I took a couple > of permutations on a little over 100 objects and had no trouble, after > waiting long enough, getting Gap 3 to confirm that they generated the > entire symmetric group. I tried the same thing with some permutations > on several hundred objects and, after 5 hours of waiting for Gap 3 to > compute the order of the group, I gave up and stopped the program. > > What I'd like to know is the following: > (1) How large can n be for me to do stuff like this with the symmetric > group on n objects and expect the program to run to completion? In GAP 4, there is an operation `IsNaturalSymmetricGroup', which does this for degrees until up into the millions. For degree 100000 and two random generators, it takes just about 3 seconds for me. There is also a similar operation `IsNaturalAlternatingGroup' which checks whether the argument is a natural alternating group. Both checks are algorithmically `easy'. The GAP implementation follows the description given in Section 10.2 of Akos Seress, Permutation group algorithms. Cambridge Tracts in Mathematics, 152. Cambridge University Press, 2003. Easy-to-check criteria for deciding whether given permutations generate the full symmetric group can also be found in John D. Dixon and Brian Mortimer, Permutation Groups, Graduate Texts in Mathematics, 163. Springer-Verlag, 1996. After having used `IsNaturalSymmetricGroup' or `IsNaturalAlternatingGroup', GAP can often choose better methods for subsequent computations with the same group. Hope this helps, Stefan Kohl --------------------------------------------------------------------------- http://www.cip.mathematik.uni-stuttgart.de/~kohlsn/ --------------------------------------------------------------------------- From ara at zurich.csail.mit.edu Thu Jan 25 12:48:57 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Thu Jan 25 12:49:59 2007 Subject: [GAP Forum] size of permutation groups Message-ID: Thanks for telling me about IsNaturalPermutationGroup. To try it out, I installed Gap4 and tested it on the examples I had already tried with Gap3. It did them, but no faster. The way I did it with Gap3 was to define the group g by giving it the explicit permutations of List([1..n]) that generate g and then by telling Gap to evaluate Size(g) to see whether I got n!. I decided to check the source code for IsNaturalPermutationGroup to see whether part of the algorithm involves first computing the size of the group and it appears that it does. Therefore, IsNaturalPermutationGroup can't improve on what I was already doing. I realize that there might be some misunderstanding: any subgroup h of the permutation group on n objects is a permutation group and IsNaturalPermutationGroup is intended to detect whether h is isomorphic to a permutation group on possibly fewer than n objects. Therefore, it might well be, as Stefan said, that Gap was able to decide in 3 seconds that a group of permutations on millions of objects is a natural permutation group, but that natural permutation group might have been on a much smaller number of objects than n. How long would it have taken to realize that a group on millions of objects is the full symmetric group on all those millions of objects? Here is what I think might be more useful for my purposes: let x1,...xr be permutations on List([1..n]), let g be the group they generate. I want to be able to decide whether g is the full group of n! permutations on List([1..n]). First, one needs a routine that decides whether g acts transitively on List([1..n]) without actually computing the whole group or its order. If it doesn't act transitively, it isn't the full symmetric group. If it does act transitively, let h be the subgroup of g that fixes the last number n, viewed as a group of permutations on List([1..n-1]). Then one needs a routine that will take x1,...,xr and n and which will return an explicit set of generators of h, again without computing all of h or its order. Then by induction one tests whether g is n-point transitive. This procedure also makes it possible to examine the generators of h at any stage of the induction, which might also facilitate constructing proofs when computation fails. I don't know how efficiently one can compute the generators of h. Maybe it is harder than computing the order of g. Also, I haven't looked at the source code for Size(g). For all I know, it uses a variant of the method I just described. In that case, I just have to modify the code for Size(g) to make it print out information about h as it proceeds. Of course, if it turns out not to be the full symmetric group on List([1..n]), I'll want to know what it really is, but I'll cross that bridge when I come to it. At the moment, I'm convinced that the class of examples I'm looking at will always generate the full symmetric group on List([1..n]) and I just need a way to verify it in a number of cases. -- Ignorantly, Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From sal at cs.st-and.ac.uk Thu Jan 25 14:29:29 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Thu Jan 25 14:29:55 2007 Subject: [GAP Forum] size of permutation groups In-Reply-To: References: Message-ID: <20070125142929.72fc4e52@caolila> Dear Allan, IsNaturalSymmetricGroup checks the given group acts as Sn on the set of points it moves. All its work is basically done in the function PermgpContainsAn, which is as follows: gap> Print(PermgpContainsAn); function ( g ) local dom, n, mine, root, d, k, b, m, l, lh; dom := MovedPoints( g ); n := Length( dom ); if not IsTransitive( g, dom ) then return false; fi; if DoSnAnGiantTest( g, dom, 1 ) = true then return true; fi; if not IsPrimitive( g, dom ) then return false; fi; if n > 10 then mine := Minimum( List( Collected( Factors( n ) ), function ( i ) return i[2]; end ) ); for m in [ 1 .. mine ] do root := RootInt( n, m ); if root ^ m = n then if m > 1 then d := PermNatAnTestDetect( g, root, m, 1 ); if d <> fail then Info( InfoGroup, 3, "Detected ", root, ",", m, ",", 1, "\n" ); return d; fi; fi; for l in [ 2 .. RootInt( 2 * root, 2 ) + 1 ] do lh := Int( l / 2 ) + 1; k := 2; b := Binomial( l, k ); while b < root and k < lh do k := k + 1; b := Binomial( l, k ); od; if b = root then d := PermNatAnTestDetect( g, l, m, k ); if d <> fail then Info( InfoGroup, 3, "Detected ", l, ",", m, ",", k, "\n" ); return d; fi; fi; od; fi; od; fi; if DoSnAnGiantTest( g, dom, 2 ) = true then return true; fi; return Size( g ) >= Factorial( n ) / 2; endg First this checks transitivity, which is easily done in linear time from just the generators of g. Next it calls DoSnAnGiantTest which is a randomized algorithm that searches for certain configurations of elements which are common in Sn or An and suffice to prove that any transitive group containing them must be Sn or An in natural action. If that fails, it checks for primitivity, which takes worst-case quadratic time. If the group is not primitive it is not Sn or An. I'm not sure what the next group of tests are, although they do appear to involve iterative computation of point stabilizers. If the group passes these, the randomized algorithm is called again, to try harder in case we were just unlucky and only as a very last resort is the size computed. On my laptop this took 12 seconds for two random permutations of a million points. Steve On Thu, 25 Jan 2007 07:48:57 -0500 Allan Adler wrote: > > Thanks for telling me about IsNaturalPermutationGroup. To try it out, > I installed Gap4 and tested it on the examples I had already tried with > Gap3. It did them, but no faster. The way I did it with Gap3 was to > define the group g by giving it the explicit permutations of List([1..n]) > that generate g and then by telling Gap to evaluate Size(g) to see whether > I got n!. I decided to check the source code for IsNaturalPermutationGroup > to see whether part of the algorithm involves first computing the size of > the group and it appears that it does. Therefore, IsNaturalPermutationGroup > can't improve on what I was already doing. > > I realize that there might be some misunderstanding: any subgroup h of the > permutation group on n objects is a permutation group and > IsNaturalPermutationGroup is intended to detect whether h is isomorphic > to a permutation group on possibly fewer than n objects. Therefore, it might > well be, as Stefan said, that Gap was able to decide in 3 seconds that a > group of permutations on millions of objects is a natural permutation group, > but that natural permutation group might have been on a much smaller number > of objects than n. How long would it have taken to realize that a group > on millions of objects is the full symmetric group on all those millions > of objects? > > Here is what I think might be more useful for my purposes: let x1,...xr be > permutations on List([1..n]), let g be the group they generate. I want to be > able to decide whether g is the full group of n! permutations on List([1..n]). > First, one needs a routine that decides whether g acts transitively on > List([1..n]) without actually computing the whole group or its order. If it > doesn't act transitively, it isn't the full symmetric group. If it does act > transitively, let h be the subgroup of g that fixes the last number n, > viewed as a group of permutations on List([1..n-1]). Then one needs a routine > that will take x1,...,xr and n and which will return an explicit set of > generators of h, again without computing all of h or its order. Then by > induction one tests whether g is n-point transitive. This procedure also > makes it possible to examine the generators of h at any stage of the > induction, which might also facilitate constructing proofs when > computation fails. > > I don't know how efficiently one can compute the generators of h. Maybe it > is harder than computing the order of g. Also, I haven't looked at the > source code for Size(g). For all I know, it uses a variant of the method > I just described. In that case, I just have to modify the code for Size(g) > to make it print out information about h as it proceeds. > > Of course, if it turns out not to be the full symmetric group on List([1..n]), > I'll want to know what it really is, but I'll cross that bridge when I come > to it. At the moment, I'm convinced that the class of examples I'm looking at > will always generate the full symmetric group on List([1..n]) and I just > need a way to verify it in a number of cases. > -- > Ignorantly, > Allan Adler > * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and > * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From ara at zurich.csail.mit.edu Thu Jan 25 15:00:53 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Thu Jan 25 15:01:27 2007 Subject: [GAP Forum] size of permutation groups Message-ID: Maybe I should say what my examples are. In section 1.3.3 of Knuth's Art of Computer programming, Knuth mentions an unusual correspondence. One takes a permutation p on n letters, as a list of n values, the i-th value being p(i). E.g., consider 1435276. This has the cycle decomposition (1)(245)(3)(67). We rearrange the cycle decomposition so that each cycle begins with its smallest element and so that the cycles are listed in decreasing order of their first elements: (67)(3)(245)(1). Knuth then observes that one can safely remove the parentheses, since one can figure out where they were: 6732451. Furthermore, without the parentheses, it describes another permutation. So, basically, Knuth has defined a bijection from the symmetric group on n objects to itself. Denote that bijection K. I computed its orbits for a few values of n. On the other hand, let * denote the bijection of the symmetric group to itself which sends each permutation to its inverse. There are other nice bijections to play with, but I'm just starting with K and *. For n=3, K and * generate a group of order 72 on 6 = 3! objects. For n=4 and n=5 they generate the full symmetric group of order n!! on n! objects. It is natural to speculate that this holds for all n > 3. I was computing examples and couldn't compute past n=5. I wrote K and * as permutations on List([1..Factorial(n)]) using a C program I had written. Then I fed them to Gap3. Maybe it is convenient to work directly in Gap. Anyway, if someone would like to compute more examples, I'd be interested in their results. I've written to Knuth to see if he has a reference for K. I've never seen it before. Maybe my speculation above is already someone's theorem? Steve Linton wrote: >On my laptop this took 12 seconds for two random permutations of a million >points. If your laptop can handle Group(K,*) for n up to 9 or 10, maybe I should offer to buy your laptop. :) -- Ignorantly, Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From dima at ntu.edu.sg Thu Jan 25 15:25:12 2007 From: dima at ntu.edu.sg (Dima Pasechnik) Date: Thu Jan 25 15:25:33 2007 Subject: [GAP Forum] size of permutation groups In-Reply-To: References: Message-ID: <1169738712.5584.20.camel@localhost> Alan, By far the fastest practical way to check if you got S_n is to find few (pseudo)random elements, and compute their orders. When doing this, it's important not to trigger a computation of the strong stab. chain. Here is a snippet from my old GAP files : # q is a group gprimes:=function(q) local ra, i; ra:=[]; for i in [1..500] do ra:=Union(FactorsInt(Order(PseudoRandom(q))),ra); od; return ra; end; Roughly speaking, the primes occurring will provide a fingerprint matching S_n. I can't recall who invented this simple trick. HTH, Dmitrii From jack at ms.uky.edu Thu Jan 25 16:23:17 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Thu Jan 25 16:23:39 2007 Subject: [GAP Forum] size of permutation groups In-Reply-To: References: Message-ID: <45B8D975.20608@ms.uky.edu> You should have no trouble with n=5,6,7,8,9. Here is some code which constructs the permutations K and * on n! and checks if they generate the symmetric group of size (n!)!. The code below runs in about one minute. K:=function(perm,dom) return PermList(Concatenation(Reversed(Cycles(perm,dom)))); end;; for n in [3..9] do Sn:=AsSet(SymmetricGroup(n)); Kn:=PermListList(Sn,List(Sn,p->K(p,[1..n]))); In:=PermListList(Sn,List(Sn,INV)); Hn:=Group(Kn,In); Print(n,": ",IsNaturalSymmetricGroup(Hn),"\n"); od; Outputs: 3: false 4: true 5: true 6: false 7: false 8: false 9: false n=10 is also false, but took more in the 5 minute range. 3-8 is a few seconds, and 3-9 is about a minute. These are on an 1.5ghz pc. Allan Adler wrote: > Maybe I should say what my examples are. In section 1.3.3 of Knuth's > Art of Computer programming, Knuth mentions an unusual correspondence. > One takes a permutation p on n letters, as a list of n values, the i-th > value being p(i). E.g., consider 1435276. This has the cycle decomposition > (1)(245)(3)(67). We rearrange the cycle decomposition so that each cycle > begins with its smallest element and so that the cycles are listed in > decreasing order of their first elements: (67)(3)(245)(1). Knuth then > observes that one can safely remove the parentheses, since one can figure > out where they were: 6732451. Furthermore, without the parentheses, it > describes another permutation. So, basically, Knuth has defined a > bijection from the symmetric group on n objects to itself. Denote > that bijection K. I computed its orbits for a few values of n. On the > other hand, let * denote the bijection of the symmetric group to itself > which sends each permutation to its inverse. There are other nice > bijections to play with, but I'm just starting with K and *. For n=3, > K and * generate a group of order 72 on 6 = 3! objects. For n=4 and n=5 > they generate the full symmetric group of order n!! on n! objects. It is > natural to speculate that this holds for all n > 3. I was computing > examples and couldn't compute past n=5. > > I wrote K and * as permutations on List([1..Factorial(n)]) using a > C program I had written. Then I fed them to Gap3. Maybe it is convenient > to work directly in Gap. Anyway, if someone would like to compute more > examples, I'd be interested in their results. > > I've written to Knuth to see if he has a reference for K. I've never seen > it before. Maybe my speculation above is already someone's theorem? > > Steve Linton wrote: >> On my laptop this took 12 seconds for two random permutations of a million >> points. > > If your laptop can handle Group(K,*) for n up to 9 or 10, maybe I should > offer to buy your laptop. :) From ara at zurich.csail.mit.edu Sun Jan 28 01:12:20 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Sun Jan 28 01:13:00 2007 Subject: [GAP Forum] size of permutation groups Message-ID: Jack Schmidt wrote: >You should have no trouble with n=5,6,7,8,9. Here is some code which >constructs the permutations K and * on n! and checks if they generate >the symmetric group of size (n!)!. The code below runs in about one minute. [snip] >Outputs: >3: false >4: true >5: true >6: false >7: false >8: false >9: false >n=10 is also false, but took more in the 5 minute range. 3-8 is a few >seconds, and 3-9 is about a minute. These are on an 1.5ghz pc. Thanks for computing this. The most powerful machine I have is an old HP Pavilion with 192MB ram (+400 MB swap space) and running at about 530 MHz. I ran your code and, for n=3,4,5, it ran in about the same time that my code had run. For n=6, I let it run for about 8 hours and, when I checked on it, the program had crashed for lack of system resources. I did, however, run Dima Pasechnik's code and it quickly indicated that for n=6 one probably doesn't get the full symmetric group. At any rate, now I'd like to know what groups one does get, but it is pretty clear that I'm not equipped to work on it, for lack of suitable computer facilities, and I can't afford to buy better ones. So, if someone does figure out more about these groups, I hope they will let me know about them. -- Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From jack at ms.uky.edu Sun Jan 28 03:12:00 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Sun Jan 28 03:12:33 2007 Subject: [GAP Forum] size of permutation groups In-Reply-To: References: Message-ID: <45BC1480.1080403@ms.uky.edu> Just a quick note: Stephen Kohl pointed out that the groups are alternating groups for n=6..9, and IsNaturalAlternatingGroup shows they are full alternating groups on n! points for n=6..10. The probability of two random permutations generating a permutation group other than An or Sn is quite low, so it is not too surprising to get such a large group. Allan Adler wrote: > At any rate, now I'd like to know what groups one does get, but it is > pretty clear that I'm not equipped to work on it, for lack of suitable > computer facilities, and I can't afford to buy better ones. So, if someone > does figure out more about these groups, I hope they will let me know > about them. From dn2447 at yahoo.com Sun Jan 28 19:23:19 2007 From: dn2447 at yahoo.com (D N) Date: Sun Jan 28 19:23:48 2007 Subject: [GAP Forum] Characters Message-ID: <443386.41664.qm@web37401.mail.mud.yahoo.com> Dear GAP Forum, I hope you will excuse me for posting the following non-GAP-related question: Let G be a finite group and let V be a complex finite dimensional representation of G with character \chi. Let Ker(\chi) = {g \in G | \chi(g) = deg(\chi)} and let |Ker(\chi)| = {g \in G | |\chi(g)| = deg(\chi)}. It is well know that the above two sets are equal to the sets {g \in G | g acts as identity on V}, {g \in G | g acts by a scalar on V}, respectively. Now let H be a normal subgroup of G. Then the set of irreducible character \chi of G such that H < Ker(\chi) is in one-to-one correspondence with irreducible characters of the quotient group G/H. My question is: what can be said about the set of irreducible characters \chi of G such that H < |Ker(\chi)|? What is H is abelian? Best regards, D. Naidu --------------------------------- Want to start your own business? Learn how on Yahoo! Small Business. From mfrincu at info.uvt.ro Mon Jan 29 13:14:19 2007 From: mfrincu at info.uvt.ro (mfrincu@info.uvt.ro) Date: Mon Jan 29 13:15:44 2007 Subject: [GAP Forum] Displaying the list of GAP available functions Message-ID: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> Hello, I've been trying to find an answer to a problem for some time now, but I can't seem to find the answer. The problem is that I have to obtain the list of available functions in GAP, from within GAP.By available functions I mean all the functions loaded be default when GAP is started (default and defined in user packages with auto-load). Also a list with all the packages would be ok. Could anyone help me in this matter? Thanks in advance, Marc Frincu. From Frank.Luebeck at math.rwth-aachen.de Mon Jan 29 15:45:58 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Mon Jan 29 15:46:18 2007 Subject: [GAP Forum] Displaying the list of GAP available functions In-Reply-To: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> References: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> Message-ID: <20070129154558.GE15717@math.rwth-aachen.de> On Mon, Jan 29, 2007 at 03:14:19PM +0200, mfrincu@info.uvt.ro wrote: > I've been trying to find an answer to a problem for some time now, but > I can't seem to find the answer. > The problem is that I have to obtain the list of available functions > in GAP, from within GAP.By available functions I mean all the > functions loaded be default when GAP is started (default and defined > in user packages with auto-load). Also a list with all the packages > would be ok. > Could anyone help me in this matter? Dear Marc, dear Forum, See the section ?More About Global Variables in the GAP online help. For example: gap> NamesUserGVars(); gives you a list of names of global variables created after loading the library. Or gap> Filtered(NamesSystemGVars(), > str-> IsBoundGlobal(str) and IsFunction(ValueGlobal(str))); gives you the names of global variables bound to functions during loading of the library. Currently, you can get the names of packages (normalized to lower case) found in the package paths with: gap> RecFields(GAPInfo.PackagesInfo); But this is not (yet?) documented. With best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From mfrincu at info.uvt.ro Tue Jan 30 12:25:30 2007 From: mfrincu at info.uvt.ro (mfrincu@info.uvt.ro) Date: Tue Jan 30 12:26:34 2007 Subject: [GAP Forum] Displaying the list of GAP available functions In-Reply-To: <20070129154558.GE15717@math.rwth-aachen.de> References: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> <20070129154558.GE15717@math.rwth-aachen.de> Message-ID: <20070130142530.jd3fu0i3vo048k04@webmail.info.uvt.ro> Thanks for your answers. It works but I have one more problem. Not all the results (when using: Filtered(NamesSystemGVars(), str-> IsBoundGlobal(str) and IsFunction(ValueGlobal(str)));) are functions. I also get results like []:=, or {}:= or operations which I do not need. Is there any way to further filter the results? I tried to find an answer and for that I transmited to GAP each element in the returned list : gap>element[1]; and if it was a function I get a response like: function(args...) ... end; Otherwise I get : operation... or other messages. Knowing this I thought that it might be best to check for this feedbacl message in a function... but I couldn't get it to work. The thing is I would need this to be done in a function (I need an automatic mechanism to go through all the results and choose only function). Sorry if I ask silly questions but I am quite new in Gap programming. Best regards, Marc Frincu. Quoting Frank L?beck : > On Mon, Jan 29, 2007 at 03:14:19PM +0200, mfrincu@info.uvt.ro wrote: >> I've been trying to find an answer to a problem for some time now, but >> I can't seem to find the answer. >> The problem is that I have to obtain the list of available functions >> in GAP, from within GAP.By available functions I mean all the >> functions loaded be default when GAP is started (default and defined >> in user packages with auto-load). Also a list with all the packages >> would be ok. >> Could anyone help me in this matter? > > Dear Marc, dear Forum, > > See the section > > ?More About Global Variables > > in the GAP online help. > > For example: > > gap> NamesUserGVars(); > > gives you a list of names of global variables created after loading > the library. Or > > gap> Filtered(NamesSystemGVars(), >> str-> IsBoundGlobal(str) and IsFunction(ValueGlobal(str))); > > gives you the names of global variables bound to functions during loading > of the library. > > Currently, you can get the names of packages (normalized to lower case) found > in the package paths with: > > gap> RecFields(GAPInfo.PackagesInfo); > > But this is not (yet?) documented. > > With best regards, > > Frank > > -- > /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// > \\\ 52062 Aachen, Germany \\\ > /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// > \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ > > From mfrincu at info.uvt.ro Tue Jan 30 16:18:56 2007 From: mfrincu at info.uvt.ro (mfrincu@info.uvt.ro) Date: Tue Jan 30 16:19:55 2007 Subject: [GAP Forum] Displaying the list of GAP available functions In-Reply-To: <1ff637850701300555t7a6ebfb1m95f5c950ef10d0bf@mail.gmail.com> References: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> <20070129154558.GE15717@math.rwth-aachen.de> <20070130142530.jd3fu0i3vo048k04@webmail.info.uvt.ro> <1ff637850701300555t7a6ebfb1m95f5c950ef10d0bf@mail.gmail.com> Message-ID: <20070130181856.rfpjpszscgw4wwc0@webmail.info.uvt.ro> Thank you all for the replies. They have been very useful in solving my problem. I only manage to make it work with "and not IsOperation(ValueGlobal(str))". With String(ValueGlobal(str)){[1..8]}= "function" I get a Error, no method defined and when I look with ShowArguments() I see it comes from [] :( One more thing and I have no more questions: Is there a way to find out the functions in a certain package? I know that there is a way to display a package but a way to see what functions it contains? (Perhaps a raw method of A:=the function list when gap is started with no package; B:=the function list after the package is loaded; C:=B-A ???) Best regards, Marc Frincu Quoting Laurent Bartholdi : > On 1/30/07, mfrincu@info.uvt.ro wrote: >> Thanks for your answers. >> It works but I have one more problem. Not all the results (when using: >> Filtered(NamesSystemGVars(), str-> IsBoundGlobal(str) and >> IsFunction(ValueGlobal(str)));) are functions. I also get results like >> []:=, or {}:= or operations which I do not need. Is there any way to >> further filter the results? > > Well, it seems you replied to your own question :) > > Filtered(NamesSystemGVars(), str-> IsBoundGlobal(str) and > IsFunction(ValueGlobal(str)) and not IsOperation(ValueGlobal(str))); > -- > Laurent Bartholdi \ laurent.bartholdigmailcom > EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 > Station 8 \ Secr?taire: +41 21-6935501 > CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From mfrincu at info.uvt.ro Tue Jan 30 20:46:25 2007 From: mfrincu at info.uvt.ro (mfrincu@info.uvt.ro) Date: Tue Jan 30 20:47:29 2007 Subject: [GAP Forum] Displaying the list of GAP available functions In-Reply-To: <1ff637850701301021t4c9d054fodea8c898383fe13f@mail.gmail.com> References: <20070129151419.26a3uj774sgc80k8@webmail.info.uvt.ro> <20070129154558.GE15717@math.rwth-aachen.de> <20070130142530.jd3fu0i3vo048k04@webmail.info.uvt.ro> <1ff637850701300555t7a6ebfb1m95f5c950ef10d0bf@mail.gmail.com> <20070130181856.rfpjpszscgw4wwc0@webmail.info.uvt.ro> <1ff637850701301021t4c9d054fodea8c898383fe13f@mail.gmail.com> Message-ID: <20070130224625.083ldb55wwc4808s@webmail.info.uvt.ro> Basicaly what I'm trying to do is this: Expose all the functions/operations(I thought again about it and I think they should also be included) in a registry for example by name and arguments and the package it belongs to. Then from a webservice that acts as a gap wrapper i want to be able to call a certain function with certain parameters. Functions can be added later, so I goes that from time to time a program will check for new appearences. Basically this is it. For now I have the service wrapper and i want to get the available functions, their arguments and parent package. Regards. Marc Frincu. Quoting Laurent Bartholdi : >> One more thing and I have no more questions: > > Don't worry! > >> Is there a way to find out the functions in a certain package? I know >> that there is a way to display a package but a way to see what >> functions it contains? (Perhaps a raw method of A:=the function list >> when gap is started with no package; B:=the function list after the >> package is loaded; C:=B-A ???) > > Yes, that should work. You may also assume that the package installs > functions via DeclareGlobalFunction and InstallGlobalFunction. Then > either use 'grep' to scan through the code, or use > old_DeclareGlobalFunction := DeclareGlobalFunction; > MakeReadWriteGlobal("DeclareGlobalFunction"); > funcs := []; > DeclareGlobalFunction := function(arg) Add(funcs,arg[1]); > CallFuncList(old_DeclareGlobalFunction,arg); end; > > which redefine DeclareGlobalFunction to first store its first argument > in a list "funcs", and then call the original command. > > it seems strange that you want a list of functions without using the > documentation. I assume it's because you want to automate some process > and don't trust the documentation to be up-to-date or easily useable > from within a program. If you're a bit more specific with what you > want to do, we can help you better. > > best, laurent >> >> Best regards, >> Marc Frincu >> >> Quoting Laurent Bartholdi : >> >>> On 1/30/07, mfrincu@info.uvt.ro wrote: >>>> Thanks for your answers. >>>> It works but I have one more problem. Not all the results (when using: >>>> Filtered(NamesSystemGVars(), str-> IsBoundGlobal(str) and >>>> IsFunction(ValueGlobal(str)));) are functions. I also get results like >>>> []:=, or {}:= or operations which I do not need. Is there any way to >>>> further filter the results? >>> >>> Well, it seems you replied to your own question :) >>> >>> Filtered(NamesSystemGVars(), str-> IsBoundGlobal(str) and >>> IsFunction(ValueGlobal(str)) and not IsOperation(ValueGlobal(str))); >>> -- >>> Laurent Bartholdi \ laurent.bartholdigmailcom >>> EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 >>> Station 8 \ Secr?taire: +41 21-6935501 >>> CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 >> >> >> >> > > > -- > Laurent Bartholdi \ laurent.bartholdigmailcom > EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 > Station 8 \ Secr?taire: +41 21-6935501 > CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From ara at zurich.csail.mit.edu Wed Jan 31 01:40:38 2007 From: ara at zurich.csail.mit.edu (Allan Adler) Date: Wed Jan 31 01:41:14 2007 Subject: [GAP Forum] *A *F *V *T *E Message-ID: As I mentioned in my posting, "standards for documenting gap source code", there are some emacs commands at the end of some of the source files of Gap 3. Their effect is to allow the person reading the file the option of only reading certain lines highlighted with one the incipits listed in the subject line of this message. Here is the code below. I posted to gnu.emacs.help and learned about how this works. What I don't know is what Martin Schoenert used these incipits *A *F *V *T *E to signify. Each presumably tells something about the line it begins in the source code. If you know what each means, please let me know. Thanks. /*************************************************** *E Emacs ................... local emacs variables ** ** Local Variables: ** mode: outline ** outline-regexp: "*A\\|*F\\|*V\\|*T\\|*E" ** fill-column: 73 ** fill-prefix: "** " ** eval: (local-set-key "\t" 'c-indent-command') ** eval: (local-set-key ";" 'electric-c-semi) ** eval: (local-set-key "{" 'electric-c-brace) ** eval: (local-set-key "}" 'electric-c-brace) ** eval: (hide-body) ** End: */ -- Ignorantly, Allan Adler * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. From sal at cs.st-and.ac.uk Wed Jan 31 08:04:34 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Wed Jan 31 08:05:24 2007 Subject: [GAP Forum] *A *F *V *T *E In-Reply-To: References: Message-ID: <20070131080434.4b7e3b51@caolila.cs.st-andrews.ac.uk> These lines are part of the standard block comments that Martin used before each "thing" in the source. Essentially they document what type of thing it is and the rest of the line has outline information on it. *V -- variable *F -- function *E -- end of file *T seems to be used both for declaring types (in the C sense) and for TODO notes *A is unused. Steve On Tue, 30 Jan 2007 20:40:38 -0500 Allan Adler wrote: > > As I mentioned in my posting, "standards for documenting gap source code", > there are some emacs commands at the end of some of the source files of > Gap 3. Their effect is to allow the person reading the file the option > of only reading certain lines highlighted with one the incipits listed > in the subject line of this message. Here is the code below. I posted > to gnu.emacs.help and learned about how this works. What I don't know > is what Martin Schoenert used these incipits *A *F *V *T *E to signify. > Each presumably tells something about the line it begins in the source code. > If you know what each means, please let me know. Thanks. > > /*************************************************** > *E Emacs ................... local emacs variables > ** > ** Local Variables: > ** mode: outline > ** outline-regexp: "*A\\|*F\\|*V\\|*T\\|*E" > ** fill-column: 73 > ** fill-prefix: "** " > ** eval: (local-set-key "\t" 'c-indent-command') > ** eval: (local-set-key ";" 'electric-c-semi) > ** eval: (local-set-key "{" 'electric-c-brace) > ** eval: (local-set-key "}" 'electric-c-brace) > ** eval: (hide-body) > ** End: > */ > > -- > Ignorantly, > Allan Adler > * Disclaimer: I am a guest and *not* a member of the MIT CSAIL. My actions and > * comments do not reflect in any way on MIT. Also, I am nowhere near Boston. > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From thomas.breuer at math.rwth-aachen.de Wed Jan 31 09:43:33 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Wed Jan 31 09:43:47 2007 Subject: [GAP Forum] *A *F *V *T *E In-Reply-To: References: Message-ID: <20070131094333.GA3030@math.rwth-aachen.de> Dear GAP Forum, Allan Adler wrote > As I mentioned in my posting, "standards for documenting gap source code", > there are some emacs commands at the end of some of the source files of > Gap 3. Their effect is to allow the person reading the file the option > of only reading certain lines highlighted with one the incipits listed > in the subject line of this message. Here is the code below. I posted > to gnu.emacs.help and learned about how this works. What I don't know > is what Martin Schoenert used these incipits *A *F *V *T *E to signify. > Each presumably tells something about the line it begins in the source code. > If you know what each means, please let me know. Thanks. > > /*************************************************** > *E Emacs ................... local emacs variables > ** > ** Local Variables: > ** mode: outline > ** outline-regexp: "*A\\|*F\\|*V\\|*T\\|*E" > ** fill-column: 73 > ** fill-prefix: "** " > ** eval: (local-set-key "\t" 'c-indent-command') > ** eval: (local-set-key ";" 'electric-c-semi) > ** eval: (local-set-key "{" 'electric-c-brace) > ** eval: (local-set-key "}" 'electric-c-brace) > ** eval: (hide-body) > ** End: > */ The abovementioned incipits occur in lines showing definitions of variables. A, F, and V stand for attribute, (plain) function, and global variable (not being a function). T is common for ``To do'' comments but apparently is used also for some type objects in the C files. In GAP library files, the analogous incipits #A, #F, #V, #T occur, and additionally #P, #O, #C, #R, and #M, see section ``Manual Conventions'' in the GAP Reference Manual. Concerning the *E (and #E) incipits, I do NOT recommend to put formatting instructions for Emacs (or for any other editor) into data files: Eventually it is a matter of personal taste how one wants to look at a file, so not the file should control the editor but the editor configuration should contains such rules. Whenever I change a GAP file and notice that such Emacs instructions are contained, I throw them out. Probably this should be done consistently before the next release of GAP. All the best, Thomas From thomas.breuer at math.rwth-aachen.de Wed Jan 31 10:46:26 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Wed Jan 31 10:48:04 2007 Subject: [GAP Forum] Characters In-Reply-To: <443386.41664.qm@web37401.mail.mud.yahoo.com> References: <443386.41664.qm@web37401.mail.mud.yahoo.com> Message-ID: <20070131104626.GB3030@math.rwth-aachen.de> Dear GAP Forum, D. Naidu wrote > I hope you will excuse me for posting the following non-GAP-related question: > > Let G be a finite group and let V be a complex finite dimensional representation of G with character \chi. > > Let Ker(\chi) = {g \in G | \chi(g) = deg(\chi)} and let > |Ker(\chi)| = {g \in G | |\chi(g)| = deg(\chi)}. > > It is well know that the above two sets are equal to the sets > {g \in G | g acts as identity on V}, > {g \in G | g acts by a scalar on V}, respectively. > > Now let H be a normal subgroup of G. > > Then the set of irreducible character \chi of G such that H < Ker(\chi) > is in one-to-one correspondence with irreducible characters of the > quotient group G/H. > > My question is: what can be said about the set of irreducible characters > \chi of G such that H < |Ker(\chi)|? > What is H is abelian? The set $\{ g \in G | |\chi(g)| = \chi(1) \}$ is usually called the centre of $\chi$, and denoted by $Z(\chi)$. For a normal subgroup $H$ of $G$, we have the equality \[ \{ \chi \in Irr(G) | H \subseteq Z(\chi) \} = \{ \chi \in Irr(G) | [G,H] \subseteq \ker(\chi) \} , \] where $[A,B]$ denotes the commutator subgroup of the groups $A$, and $B$, i.e., the group generated by the commutators $a^{-1} b^{-1} a b$ with $a \in A, b \in B$. So the set of characters in question is in bijection with the irreducible characters of $G/[G,H]$, which is the largest central extension of $G/H$ that occurs in $G$, i.e., the largest factor group $F$ of $G$ such that the kernel of the natural epimorphism from $F$ onto $G/H$ is central in $F$. All the best, Thomas From ras_rezaei at yahoo.com Fri Feb 2 21:29:50 2007 From: ras_rezaei at yahoo.com (rashid rezaei) Date: Fri Feb 2 21:30:26 2007 Subject: [GAP Forum] question Message-ID: <13397.30090.qm@web36814.mail.mud.yahoo.com> Dear gap forum, I have two questions as following: Let G be a compact group (i) Let f(x)= \mu(C_G(x)) where \mu is Haar measure. Is f a continuous function? (ii) Let f(x)= \chi_a(x,y) where y \in G and a={(x,y) \in G^2 | xy=yx }. Is f a continuous function? I will be more grateful for any known results or references. Best regards, R. Rezaei Send instant messages to your online friends http://uk.messenger.yahoo.com From sal at cs.st-and.ac.uk Sun Feb 4 20:30:21 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Sun Feb 4 20:30:52 2007 Subject: [GAP Forum] Complexity questions In-Reply-To: <58577CAC1C0FB34DAA24FA9DC76613F101773302@ex1.ad.dcs.gla.ac.uk> References: <58577CAC1C0FB34DAA24FA9DC76613F101773302@ex1.ad.dcs.gla.ac.uk> Message-ID: <20070204203021.33024f8e@caolila> Dear GAP Forum, On Mon, 22 Jan 2007 14:22:44 -0000 "Alastair Donaldson" wrote with some complexity questions. I have some partial answers: > > I'd like to know the worst case complexity for a number of algorithms which GAP implements. Can anyone direct me to a good reference, or provide answers? > > - AllBlocks(G) The time to find all minimal block systems is O(n^2 log*(n)) (where log* is the inverse Ackerman function). There are nasty cases where the number of non-minimal block systems is huge, though. For instance the regular representation of the elementary abelian group of order 64 has 2823 block systems. > - IsomorphicSubgroups(G,H) (I know this one is pretty bad!) A trivial bound is |H|^rank(G) (rank G is size of shortest generating set of G). I don't know if anything better can be said in general. > - ActionHomomorphism (G,B,OnSets) (where B is a block system for G) This takes essentially no time (maybe O(n)). Computing the image of an element of G under the homomorphism takes O(|B|). > - NormalSubgroups(G) > Again the elementary abelian group is a bad case with huge numbers of normal subgroups. I don't know if anything sensible can be said in other cases. > (where G is a finite permutation group and H<=G) > > Also (not really a GAP question, I know) -- is there a worst-case result on how many distinct block systems a transitive group admits, given that G has degree n? > The elementary abelian group of order 2^r acting on 2^r points has a block system for every proper subspace of GF(2)^r. This is sequence A006116 in the On-line encyclopedia of integer sequences. I don't have a formula for the growth, but it's faster than exponential. Steve -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From joachim.neubueser at math.rwth-aachen.de Tue Feb 6 10:58:11 2007 From: joachim.neubueser at math.rwth-aachen.de (Joachim Neubueser) Date: Tue Feb 6 10:58:27 2007 Subject: [GAP Forum] question In-Reply-To: <13397.30090.qm@web36814.mail.mud.yahoo.com> References: <13397.30090.qm@web36814.mail.mud.yahoo.com> Message-ID: <20070206105811.GA14853@math.rwth-aachen.de> Dear Dr. Rezaei On Fri, Feb 02, 2007 at 09:29:50PM +0000, you wrote : > Dear gap forum, > > I have two questions as following: > Let G be a compact group > (i) Let f(x)= \mu(C_G(x)) where \mu is Haar measure. Is f a > continuous function? > (ii) Let f(x)= \chi_a(x,y) where y \in G and a={(x,y) \in G^2 | xy=yx }. > Is f a continuous function? > I will be more grateful for any known results or references. > Best regards, > R. Rezaei Please note that the GAP Forum is meant for questions related to GAP, or at least problems that could be tackled with GAP. Yours however is a purely theoretical question about topological groups, so the GAP Forum is definitely not the right place for it. Please read the page http://www.gap-system.org/Contacts/Forum/forum.html of the GAP website where this is clearly stated and where the following text gives suggestions for better places (with links to these) for your question: ---------------------------------------------------------------------- Other Fora For theoretical questions on groups and related structures we like to point to the Group-Pub-forum in which such questions are answered and discussed by a large community of experts. We provide links to further mathematical fora and to other addresses that we hope to be useful for mathematicians on the page 'To Outside World'. ---------------------------------------------------------------------- Kind regards Joachim Neubueser ------------------------------------- Prof. J.Neubueser LDfM, RWTH Aachen Germany From fridmam at macs.biu.ac.il Sun Feb 11 14:03:22 2007 From: fridmam at macs.biu.ac.il (Michael Fridman) Date: Sun Feb 11 14:03:55 2007 Subject: [GAP Forum] Reidemeister-Schreier Message-ID: Hello everyone! I have a question about the Reidemeister-Schreier method. I know that the function PresentationSubgroupRrs( G, cosettable ) requires a presentation of the group G and the coset-table. I saw that the coset-table is given by a table of permutations. However, in my case, I have only the explicit representatives of the subgroup H in G (so, I have only a representation of G and set of representatives of G/H, and I need to find a presentation of H). is there a function that can covert these representatives to permutations? Or is there another version of PresentationSubgroupRrs? Thanks in advance Michael Friedman From aodabas at ogu.edu.tr Mon Feb 19 12:22:00 2007 From: aodabas at ogu.edu.tr (=?windows-1254?Q?Alper_Odaba=FE?=) Date: Mon Feb 19 12:19:15 2007 Subject: [Gap Forum] Group Hom. and Algebra Hom. Message-ID: <002801c75420$8e3baa30$a8838cc1@ogu229> Let f:A -> A homomorphism with f(a)=0, g:A -> {0} with g(a)=0 and h:{0} -> A with h(0)=0. (A is a Algebra ) there is a error (algebra case) with these functions in GAP 4.4.7. ALGEBRA CASE ---- not working gap> A:=GroupRing(GF(3),CyclicGroup(2)); gap> gA:=GeneratorsOfAlgebra(A); [ (Z(3)^0)* of ..., (Z(3)^0)*f1 ] gap> zA:=Zero(A);; gap> im:=[zA,zA];; gap> f:=AlgebraHomomorphismByImages(A,A,gA,im);; gap> IsSurjective(f); false gap> IsInjective(f); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `SemiEchelonMatTransformation' on 1 argu\ ments called from SemiEchelonMatTransformation( List( mapi[2], function ( x ) return Coefficients( B, x ); end ) ) called from MakePreImagesInfoLinearGeneralMappingByImages( map ); called from IsInjective( AsLeftModuleGeneralMappingByImages( map ) ) called from ( ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> gap> B:=Image(f); gap> g:=AlgebraHomomorphismByImages(A,B,gA,im);; gap> IsSurjective(g); true gap> IsInjective(g); same error with above gap> gB:=GeneratorsOfAlgebra(B); [ of ..., of ... ] gap> h:=AlgebraHomomorphismByImages(B,A,gB,gB); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `SemiEchelonMatTransformation' on 1 argu\ ments called from SemiEchelonMatTransformation( List( mapi[1], function ( x ) return Coefficients( B, x ); end ) ) called from MakeImagesInfoLinearGeneralMappingByImages( map ); called from IsSingleValued( AsLeftModuleGeneralMappingByImages( map ) ) called from IsMapping( hom ) called from ( ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> GROUP CASE ---- no problem gap> AA:=Group((1,2,3),(2,3)); Group([ (1,2,3), (2,3) ]) gap> gAA:=GeneratorsOfGroup(AA); [ (1,2,3), (2,3) ] gap> imm:=[(),()]; [ (), () ] gap> ff:=GroupHomomorphismByImages(AA,AA,gAA,imm); [ (1,2,3), (2,3) ] -> [ (), () ] gap> IsSurjective(ff); false gap> IsInjective(ff); false gap> BB:=Image(ff); Group(()) gap> g:=GroupHomomorphismByImages(AA,BB,gAA,imm); [ (1,2,3), (2,3) ] -> [ (), () ] gap> gg:=GroupHomomorphismByImages(AA,BB,gAA,imm); [ (1,2,3), (2,3) ] -> [ (), () ] gap> IsSurjective(gg); true gap> IsInjective(gg); false gap> gBB:=GeneratorsOfGroup(BB); [ (), () ] gap> hh:=GroupHomomorphismByImages(BB,AA,gBB,gBB); [ (), () ] -> [ (), () ] gap> IsSurjective(hh); false gap> IsInjective(hh); true gap> From arikan at gazi.edu.tr Wed Feb 21 12:44:05 2007 From: arikan at gazi.edu.tr (AHMET ARIKAN) Date: Wed Feb 21 12:44:56 2007 Subject: [GAP Forum] 2-groups Message-ID: <000f01c755b5$f972cb80$d005050a@your6c04f3ee65> Dear Forum, It is clear that two p-elements may not generate a p-group. I'm trying to find 2-groups using permutations. Is there a way in GAP to find 2-elements (permutations) x_1, ...,x_n such that Group(x_1,...,x_n) is a 2-group. May this be possible to find 2-elements (permutations) x_1, x_2 such that Group(x_1,x_2) is a 2-group, and x_3 such that Group(x_1,x_2,x_3) is a 2-group, etc? Othewise by trial and error (with IsPGroup) we waste much time. With best wishes, Ahmet Arikan From thomas.breuer at math.rwth-aachen.de Wed Feb 21 13:13:23 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Wed Feb 21 13:13:41 2007 Subject: [Gap Forum] Group Hom. and Algebra Hom. In-Reply-To: <002801c75420$8e3baa30$a8838cc1@ogu229> References: <002801c75420$8e3baa30$a8838cc1@ogu229> Message-ID: <20070221131323.GB4794@math.rwth-aachen.de> Dear GAP Forum, Alper Odabas wrote > Let f:A -> A homomorphism with f(a)=0, g:A -> {0} with g(a)=0 and h:{0} -> A > with h(0)=0. (A is a Algebra ) > [...] > there is a error (algebra case) with these functions in GAP 4.4.7. > [...] > gap> A:=GroupRing(GF(3),CyclicGroup(2)); > > gap> gA:=GeneratorsOfAlgebra(A); > [ (Z(3)^0)* of ..., (Z(3)^0)*f1 ] > gap> zA:=Zero(A);; > gap> im:=[zA,zA];; > gap> f:=AlgebraHomomorphismByImages(A,A,gA,im);; > gap> IsSurjective(f); > false > gap> IsInjective(f); > Error, no method found! For debugging hints type ?Recovery from NoMethodFound There is indeed a problem with linear mappings whose image is trivial. (Also the analogous problem exists for general linear mappings whose preimage is trivial.) This bug will be fixed with the next GAP update. For the moment, the bug can be fixed by reading the file http://www.math.rwth-aachen.de/~Thomas.Breuer/gapfix/fix_vspchom_4_4_9 into the GAP session. Thanks very much for the bug report. All the best, Thomas Breuer From joachim.neubueser at math.rwth-aachen.de Wed Feb 21 17:13:28 2007 From: joachim.neubueser at math.rwth-aachen.de (Joachim Neubueser) Date: Wed Feb 21 17:13:41 2007 Subject: [GAP Forum] Reidemeister-Schreier In-Reply-To: References: Message-ID: <20070221171328.GA15781@math.rwth-aachen.de> Dear Forum, On Sun, Feb 11, 2007 at 04:03:22PM +0200, Michael Fridman wrote to the GAP Forum: > I have a question about the Reidemeister-Schreier method. I know that the > function > PresentationSubgroupRrs( G, cosettable ) requires a presentation of the > group G and the coset-table. I saw that the coset-table is given by a > table of permutations. However, in my case, I have only the explicit > representatives of the subgroup H in G > (so, I have only a representation of G and set of representatives of G/H, > and I need to find a presentation of H). is there a function that can > covert these representatives to permutations? Or is there another version > of PresentationSubgroupRrs? > > Thanks in advance > Michael Friedman In a private letter to M.F. on January 12 I pointed to a Forum letter by Derek Holt of June 7, 2006, in which, as much as I understood, he had answered the same question, pointing out that such an algorithm cannot exist. I asked M. F. if I had misunderstood his question. Since I got no answer, I think that this is not the case, and so here for the sake of closing the case in the Forum: Such an algorithm cannot exist since different, in fact even nonisomorphic, subgroups can have the same transversal (set of coset representatives). The smallest example is given by the dihedral group of order 8 in which the cyclic subgroup C of order 4 and one of the two elementary abelian subgroups of order 4 , say V, both have either of the two cyclic subgroups of order 2 not contained in V as transversals. Kind regards Joachim Neubueser From ally at dcs.gla.ac.uk Fri Feb 23 10:04:13 2007 From: ally at dcs.gla.ac.uk (Alastair Donaldson) Date: Fri Feb 23 10:04:31 2007 Subject: [GAP Forum] Set stabilizer Message-ID: <58577CAC1C0FB34DAA24FA9DC76613F1017733C8@ex1.ad.dcs.gla.ac.uk> Dear Forum Given a group G acting on {1,...,n} and a subset X of {1,...n}, I understand that the algorithm which GAP uses to compute the set-wise stabilizer of X in G is not a polynomial time algorithm (even though it is often quite efficient). However, if I have a subgroup H of G, is it possible to answer the question "is H the set stabilizer of X in G?" in polynomial time? For my specific application it is always the case that H is a subgroup of the set stabilizer, and I want to know if it is actually the whole thing. Thanks, in advance Alastair Donaldson From dima at ntu.edu.sg Fri Feb 23 16:27:07 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Fri Feb 23 16:27:31 2007 Subject: [GAP Forum] Set stabilizer In-Reply-To: <58577CAC1C0FB34DAA24FA9DC76613F1017733C8@ex1.ad.dcs.gla.ac.uk> Message-ID: Alistair, I don't think there any are polynomial-time algorithms for this problem known. Indeed, such an algorithm would allow one to compute the automorphism group of a graph in polynomial time. (Consider G=S_k acting on the set of n=(k choose 2) pairs. A graph is just a subset X of the set of pairs, so the stabilizer of X in G is the automorphism group of the graph) In turn, this would allow a polynomial-time algorithm for graph isomorphism. On the other hand, going to the general case, it is polynomial-time for fixed |X|. Hope this helps. Dima http://www.ntu.edu.sg/home/dima/ On 2/23/07 6:04 PM, "Alastair Donaldson" wrote: > Dear Forum > > Given a group G acting on {1,...,n} and a subset X of {1,...n}, I understand > that the algorithm which GAP uses to compute the set-wise stabilizer of X in G > is not a polynomial time algorithm (even though it is often quite efficient). > > However, if I have a subgroup H of G, is it possible to answer the question > "is H the set stabilizer of X in G?" in polynomial time? > > For my specific application it is always the case that H is a subgroup of the > set stabilizer, and I want to know if it is actually the whole thing. > > Thanks, in advance > > Alastair Donaldson From r_n_tsai at yahoo.com Sat Feb 24 09:54:41 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Sat Feb 24 09:55:24 2007 Subject: [GAP Forum] decomposing regular representation + (AREP package) Message-ID: <20070224095441.46712.qmail@web34414.mail.mud.yahoo.com> Dear gap forum, I would like to decompose the regular (permutation) representation of some small groups into irreducible representations (over the complexes). That is for finite group G of order |G|, I would like an explicit |G|x|G| matrix F such that F^-1 R(g) F = B(g) R(g) is the regular representation, B(g) is block diagonal. R(g),B(g) and F are all |G|x|G| matrices over complexs. Is there anything in GAP that would facilitate getting such a matrix explicitly? I ran accross a GAP3 package "AREP" but I'm not sure if that has what I need (I didn't read through all its documentation yet); it also doesn't look like it's supported by GAP4 anyway, so it may not be easily usable even if it did. Thanks for your help. R.N. --------------------------------- Expecting? Get great news right away with email Auto-Check. Try the Yahoo! Mail Beta. From dima at ntu.edu.sg Sat Feb 24 15:19:32 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Sat Feb 24 15:19:46 2007 Subject: [GAP Forum] decomposing regular representation + (AREP package) In-Reply-To: <20070224095441.46712.qmail@web34414.mail.mud.yahoo.com> Message-ID: Dear R.N.Tsai, dear forum, the main problem here is to obtain the complete list of irreducible complex representations of G. IMHO computing the latter is a rather nontrivial question for arbitrary finite groups. Once you know such a list, computing F is straightforward. See e.g. Sect. 2.7 of J.-P. Serre, Linear representations of finite groups. Graduate Texts in Mathematics, Vol. 42, Springer, New York, 1977 I have some GAP4 code (that I can make available upon request, although it's not in any kind of polished form) that implements these formulae; we used it in just completed preprint http://www.ntu.edu.sg/home/dima/papers/truss6.pdf where you can also find these formulae from Serre's book. Actually, there it is used to compute a decomposition into irreducibles, and then the centraliser ring, of a finite group representation, so it's a slightly more general problem than yours. Best, Dmitrii http://www.ntu.edu.sg/home/dima/ On 2/24/07 5:54 PM, "R.N. Tsai" wrote: > Dear gap forum, > > I would like to decompose the regular (permutation) representation of > some small groups into irreducible representations (over the complexes). > > That is for finite group G of order |G|, I would like an explicit > |G|x|G| matrix F such that > > F^-1 R(g) F = B(g) > > R(g) is the regular representation, B(g) is block diagonal. > R(g),B(g) and F are all |G|x|G| matrices over complexs. > > Is there anything in GAP that would facilitate getting such a matrix > explicitly? > > I ran accross a GAP3 package "AREP" but I'm not sure if that has what I > need (I didn't read through all its documentation yet); it also doesn't look > like it's supported by GAP4 anyway, so it may not be easily usable even if > it did. > > Thanks for your help. > > R.N. From pueschel at ece.cmu.edu Sat Feb 24 23:48:24 2007 From: pueschel at ece.cmu.edu (Markus Pueschel) Date: Sat Feb 24 23:49:06 2007 Subject: [GAP Forum] decomposing regular representation + (AREP package) In-Reply-To: <20070224095441.46712.qmail@web34414.mail.mud.yahoo.com> References: <20070224095441.46712.qmail@web34414.mail.mud.yahoo.com> Message-ID: <02cb01c7586e$46389a70$38820280@ece.cmu.edu> Hi R.N., I am one of the authors of AREP: http://www.ece.cmu.edu/~smart/arep/arep.html AREP indeed only runs with gap3 but it can do what you want as long as the group is solvable. It can give you F and also a fast algorithm for F, i.e., a factorization of F into a product of structured sparse matrices. Unfortunately, we have no resources to port AREP to gap4 but you could install gap3. Markus > -----Original Message----- > From: forum-bounces@gap-system.org [mailto:forum-bounces@gap-system.org] > On Behalf Of R.N. Tsai > Sent: Saturday, February 24, 2007 4:55 AM > To: GAP > Subject: [GAP Forum] decomposing regular representation + (AREP package) > > Dear gap forum, > > I would like to decompose the regular (permutation) representation of > some small groups into irreducible representations (over the complexes). > > That is for finite group G of order |G|, I would like an explicit > |G|x|G| matrix F such that > > F^-1 R(g) F = B(g) > > R(g) is the regular representation, B(g) is block diagonal. > R(g),B(g) and F are all |G|x|G| matrices over complexs. > > Is there anything in GAP that would facilitate getting such a matrix > explicitly? > > I ran accross a GAP3 package "AREP" but I'm not sure if that has what I > need (I didn't read through all its documentation yet); it also doesn't > look > like it's supported by GAP4 anyway, so it may not be easily usable even if > it did. > > Thanks for your help. > > R.N. > > > --------------------------------- > Expecting? Get great news right away with email Auto-Check. > Try the Yahoo! Mail Beta. > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From alexander.konovalov at gmail.com Mon Feb 26 11:29:11 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Mon Feb 26 11:29:31 2007 Subject: [GAP Forum] 2-groups In-Reply-To: <000f01c755b5$f972cb80$d005050a@your6c04f3ee65> References: <000f01c755b5$f972cb80$d005050a@your6c04f3ee65> Message-ID: <3AF4C87E-49FF-462A-9B75-5BF26341BDFB@gmail.com> Dear Ahmet, > It is clear that two p-elements may not generate a p-group. I'm > trying to find 2-groups using permutations. Is there a way in GAP > to find 2-elements (permutations) x_1, ...,x_n such that Group > (x_1,...,x_n) is a 2-group. May this be possible to find 2-elements > (permutations) x_1, x_2 such that Group(x_1,x_2) is a 2-group, and > x_3 such that Group(x_1,x_2,x_3) is a 2-group, etc? Othewise by > trial and error (with IsPGroup) we waste much time. Dependently on your particular problem, you may find several approaches to be useful. For example, you could find generators of 2-group as permutation groups, using the GAP Small Groups Library in the following way: gap> G:=SmallGroup(8,3); gap> S:=Image(IsomorphismPermGroup(G)); Group([ (1,5)(2,6)(3,8)(4,7), (1,3)(2,4)(5,7)(6,8), (1,2)(3,4)(5,6) (7,8) ]) gap> GeneratorsOfGroup(S); [ (1,5)(2,6)(3,8)(4,7), (1,3)(2,4)(5,7)(6,8), (1,2)(3,4)(5,6)(7,8) ] In many cases the permutation representation constructed by IsomorphismPermGroup is regular, so the group S will act on |G| points. If this is not enough, you can try to reduce the degree of the permutation representation as below: gap> W:=Image(SmallerDegreePermutationRepresentation(S)); Group([ (1,3)(2,4), (3,4), (1,2)(3,4) ]) gap> IdGroup(W); [ 8, 3 ] Note that there are some warnings in the manual regarding the usage of SmallerDegreePermutationRepresentation. Another approach is to look at the Sylow p-subgroups of Sym(n). They are quite well understood and can be easily computed with GAP. You could construct a Sylow 2-subgroup of Sym(n) and then determine subgroups of that, for example: gap> G := SymmetricGroup(20); Sym( [ 1 .. 20 ] ) gap> S := SylowSubgroup(G,2); gap> g := Random(S); (1,3,2,4)(9,14,11,16,10,13,12,15)(17,18)(19,20) gap> h := Random(S); (1,2)(9,12)(10,11)(13,15,14,16)(19,20) gap> U := Subgroup(S, [g,h]); Group([ (1,3,2,4)(9,14,11,16,10,13,12,15)(17,18)(19,20), (1,2)(9,12)(10,11)(13,15,14,16)(19,20) ]) gap> Size(U); 64 Finally, I would like to mention that there is an algorithm by C. Sims which can be used to determine a Sylow p-subgroup of a permutation group. This algorithm builds up the desired group from the bottom and hence the steps of this algorithm would probably do exactly what you want. It is implemented in GAP, but the implementation is not trivial or easy to read. See the paper [Charles C. Sims, Computing the order of a solvable permutation group, J. Symbolic Comput., 9:699--705, 1990] for its description. Hope this helps, Bettina Eick, Alexander Konovalov From vdabbagh at sfu.ca Tue Feb 27 05:50:30 2007 From: vdabbagh at sfu.ca (Vahid Dabbaghian-Abdoly) Date: Tue Feb 27 05:50:47 2007 Subject: [GAP Forum] decomposing regular representation + (AREP package) Message-ID: <200702270550.l1R5oUQg018481@rm-rstar.sfu.ca> Dear R.N. and GAP forum, I am the author of the REPSN package. REPSN is a package for constructing complex matrix representations of finite groups. Using this package one can compute an equivalent block diagonal representation of a given reducible representation. There was a bug in its version 2.0 that I have fixed that and the new version will be on the web by the end of this week. But if you want I can send you its zip file. In the following example you see how to find an equivalent block diagonal representation of a regular representation of a group: gap> g := SmallGroup( 6, 1 );; gap> G := Image(IsomorphismPermGroup( g ));; gap> H := TrivialSubgroup( G );; gap> chi := TrivialCharacter( H );; gap> Hrep := IrreducibleAffordingRepresentation( chi );; gap> rep := InducedSubgroupRepresentation( G, Hrep );; gap> EquivalentBlockRepresentation( rep ); .... This gives you an equivalent block diagonal representation of rep. If you have any question you can send me a direct e-mail. Regards Vahid __________________________ Department of Mathematics Simon Fraser University 8888 University Drive Burnaby, British Columbia V5A 1S6 Canada E-mail: vdabbagh@sfu.ca http://www.sfu.ca/~vdabbagh From gordon at csse.uwa.edu.au Thu Mar 1 11:14:24 2007 From: gordon at csse.uwa.edu.au (Gordon Royle) Date: Thu Mar 1 11:15:03 2007 Subject: [GAP Forum] Conjugacy classes in projective general linear groups... Message-ID: <9E2E24A0-7A91-4A26-BD7E-FF0BE7DBAAF6@csse.uwa.edu.au> I am doing some Polya style counting involving sets of points in projective spaces ... This involves computing the cycle-index of various projective general linear groups, which in turn involves computing the conjugacy classes of these groups. But using ConjugacyClasses becomes slow or impossible when the group starts to get large... even PGL(6,5) hasn't finished after a couple of hours... Of course, ProjectiveGeneralLinearGroup returns the group just as any old permutation group, and then ConjugacyClasses uses general permutation group methods, so I am throwing away a whole lot of information about the special nature of this situation, hence my question is: Q: These groups are central to everything, so are there specialized methods / specialized knowledge about these particular groups that I can look up and use? (There is a website http://www.uni-graz.at/~fripert/fga/k1zyklap.html that purports to calculate these, but it doesn't seem to work; the associated paper is there, but would take a long time to work through) Thanks Gordon -- Associate Professor Gordon Royle Department of Computer Science & Software Engineering University of Western Australia http://people.csse.uwa.edu.au/gordon From gordon at csse.uwa.edu.au Thu Mar 1 12:20:54 2007 From: gordon at csse.uwa.edu.au (Gordon Royle) Date: Thu Mar 1 12:21:19 2007 Subject: [GAP Forum] Conjugacy classes in projective general linear groups... In-Reply-To: <200703011311.38772.axel.kohnert@uni-bayreuth.de> References: <9E2E24A0-7A91-4A26-BD7E-FF0BE7DBAAF6@csse.uwa.edu.au> <200703011311.38772.axel.kohnert@uni-bayreuth.de> Message-ID: <2FBC2333-026C-410F-AA05-ED49997F076C@csse.uwa.edu.au> On 01/03/2007, at 9:11 PM, Axel Kohnert wrote: > Dear Gordon, > > this very old link you are mentioning will be updated very soon (i > am in part > responsible, because this program is computing in bayreuth) > in the meantime you may use the following link: > http://linearcodes.uni-bayreuth.de/CD/index.html Very impressive... it did PGL(6,5) in 12 seconds.. All you need now is an option for "machine readable" output for transfer to another program... having it in HTML with and and so on makes it difficult to use, so an option for a GAP/Maple/ Magma/Mathematica/Pari format would be very useful... Thanks Gordon -- Associate Professor Gordon Royle Department of Computer Science & Software Engineering University of Western Australia http://people.csse.uwa.edu.au/gordon From caranti at science.unitn.it Thu Mar 1 13:22:38 2007 From: caranti at science.unitn.it (A. Caranti) Date: Thu Mar 1 13:23:29 2007 Subject: [GAP Forum] Conjugacy classes in projective general linear groups... In-Reply-To: <9E2E24A0-7A91-4A26-BD7E-FF0BE7DBAAF6@csse.uwa.edu.au> References: <9E2E24A0-7A91-4A26-BD7E-FF0BE7DBAAF6@csse.uwa.edu.au> Message-ID: At 20:14 of Thu, 1 Mar 2007, Gordon Royle wrote: > This involves [...] computing the conjugacy classes of these groups. [...] > Q: These groups are central to everything, so are there specialized > methods / specialized knowledge about these particular groups that I > can look up and use? I'm not sure whether this is what you are looking for, but perhaps you could work things out using the results of this beautiful paper: MR0601642 (82d:20041) Wall, G. E. Conjugacy classes in projective and special linear groups. Bull. Austral. Math. Soc. 22 (1980), no. 3, 339--364. 20G15 (20G40) Andreas From phjelmstad at msn.com Thu Mar 1 17:25:52 2007 From: phjelmstad at msn.com (PAUL HJELMSTAD) Date: Thu Mar 1 17:26:28 2007 Subject: [GAP Forum] Listing Octads Message-ID: Does anyone know how I would list: 1) Octads in M24 (Are they Unique?) 2) Representatives of Conjugacy Classes (26) in M24 Thanks! From hulpke at math.colostate.edu Thu Mar 1 18:00:39 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Thu Mar 1 18:01:26 2007 Subject: [GAP Forum] Listing Octads In-Reply-To: References: Message-ID: Dear GAP forum, Paul Hjelmstad wrote: > Does anyone know how I would list: Yes. > 2) Representatives of Conjugacy Classes (26) in M24 gap> g:=MathieuGroup(24); gap> List(ConjugacyClasses(g),Representative); (Careful: Order is not necessarily ATLAS order but its easy to get a correspondence) > 1) Octads in M24 (Are they Unique?) The 759 octads are one orbit under M24 and are determined uniquely by 5 points of this 5-transitive group, thus there are unique. As the index of an octad stabilizer is 759 and thus odd, we can get one octad from orbits of a 2-Sylow subgroup: gap> s:=SylowSubgroup(g,2); gap> Orbits(s,[1..24]); [ [ 1, 5, 24, 8, 10, 11, 14, 20 ], [ 2, 13, 22, 19, 7, 3, 9, 23, 18, 4, 15, 12, 6, 16, 17, 21 ] ] gap> o:=Set(last[1]); The set of octads then is obtained as orbit: gap> octads:=Orbit(g,o,OnSets);; gap> Length(octads); 759 from which we see that in this labelling of M24 the lexicographically smallest octad is gap> Set(octads)[1]; [ 1, 2, 3, 4, 5, 8, 11, 13 ] Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From emailme at ianmcloughlin.com Mon Mar 5 10:44:10 2007 From: emailme at ianmcloughlin.com (Ian McLoughlin) Date: Mon Mar 5 10:44:48 2007 Subject: [GAP Forum] Adding One to a Vector Message-ID: <9d5eef600703050244k106e3291ybd8a6ac2db51e35a@mail.gmail.com> Hi everyone, I need to loop over all the vectors of length 24 over GF(2) of weight at least 8. The current way I'm doing this is the following.... AddOne := function( vector ) local i ;; for i in [24,23..1] do if ( vector[i] = 0*Z(2) ) then vector[i] := 1*Z(2) ;; break ;; fi ;; if ( vector[i] = 1*Z(2) ) then vector[i] := 0*Z(2) ;; fi ;; od ;; end ;; start := Z(2) * [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0] ;; zerovec := Z(2) * [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] ;; ConvertToVectorRep( start , GF(2) ) ;; ConvertToVectorRep( zerovec , GF(2) ) ;; while ( start <> zerovec ) do AddOne( start ) ;; if ( WeightVecFFE( start ) < 8 ) then continue ;; fi ;; od ;; Obviously I do some stuff with each new value of start, but I've omitted it to make my email less ugly. :) The reason I wrote my own method called AddOne was because I couldn't find any Gap method that did the equivalent of c's "start++;". Apologies for representing the vector backwards(compared to the usual in Gap) by the way! My question is this: does Gap have an inbuilt method to add one to a binary vector as if the whole vector represented a single number(i.e. with carrying)? If anyone has a suggestion as to how to loop through all binary vectors of length 24 and weight at least eight another way I'd love to hear it too! My main concern is speed! Thanks a lot, Ian -- Ian McLoughlin emailme@ianmcloughlin.com From max.neunhoeffer at math.rwth-aachen.de Mon Mar 5 12:10:37 2007 From: max.neunhoeffer at math.rwth-aachen.de (Max Neunhoeffer) Date: Mon Mar 5 12:11:26 2007 Subject: [GAP Forum] Adding One to a Vector In-Reply-To: <9d5eef600703050244k106e3291ybd8a6ac2db51e35a@mail.gmail.com> References: <9d5eef600703050244k106e3291ybd8a6ac2db51e35a@mail.gmail.com> Message-ID: <20070305121037.GA21422@math.rwth-aachen.de> Dear Ian, The following completes in 35 seconds on one of our machines and probably does what you want: i := Iterator(GF(2)^24); while not(IsDoneIterator(i)) do v := NextIterators(i); # Do something with v od; It produces all vectors you want one after another. Unfortunately, the vectors coming out of this are not yet compressed. So you probably want to add a "ConvertToVectorRep(v,2)" in the loop, depending on your applications. Also you cannot change the order in which the vectors occur. Note that there is also an enumerator, but this is much slower. I hope this helps, if not, please do not hesitate to ask again. Best regards, Max. On Mon, Mar 05, 2007 at 10:44:10AM +0000, Ian McLoughlin wrote: > Hi everyone, > > I need to loop over all the vectors of length 24 over GF(2) of weight at > least 8. The current way I'm doing this is the following.... > > > AddOne := function( vector ) > > local i ;; > > for i in [24,23..1] do > > if ( vector[i] = 0*Z(2) ) then > > vector[i] := 1*Z(2) ;; > break ;; > > fi ;; > > if ( vector[i] = 1*Z(2) ) then > > vector[i] := 0*Z(2) ;; > > fi ;; > > od ;; > > end ;; > > > start := Z(2) * [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0] ;; > zerovec := Z(2) * [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] ;; > > ConvertToVectorRep( start , GF(2) ) ;; > ConvertToVectorRep( zerovec , GF(2) ) ;; > > while ( start <> zerovec ) do > > AddOne( start ) ;; > > if ( WeightVecFFE( start ) < 8 ) then > continue ;; > fi ;; > > od ;; > > > > Obviously I do some stuff with each new value of start, but I've omitted it > to make my email less ugly. :) > The reason I wrote my own method called AddOne was because I couldn't find > any Gap method that did the equivalent of c's "start++;". > Apologies for representing the vector backwards(compared to the usual in > Gap) by the way! > > My question is this: does Gap have an inbuilt method to add one to a binary > vector as if the whole vector represented a single number(i.e. with > carrying)? > If anyone has a suggestion as to how to loop through all binary vectors of > length 24 and weight at least eight another way I'd love to hear it too! My > main concern is speed! > > Thanks a lot, > Ian > > > -- > Ian McLoughlin > emailme@ianmcloughlin.com > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- # # Max Neunhoeffer ##### Gerlachstrasse 20-22, 52064 Aachen, Germany (private) # # Lehrstuhl D fuer Mathematik, RWTH, Templergraben 64, 52062 Aachen ##### Tel.: +49 241 406605 (private) / +49 241 8094550 (institute) # # May the Source be with you! From laurent.bartholdi at gmail.com Mon Mar 5 12:53:29 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Mon Mar 5 12:54:11 2007 Subject: [GAP Forum] Adding One to a Vector In-Reply-To: <20070305121037.GA21422@math.rwth-aachen.de> References: <9d5eef600703050244k106e3291ybd8a6ac2db51e35a@mail.gmail.com> <20070305121037.GA21422@math.rwth-aachen.de> Message-ID: <1ff637850703050453h5a6aef65t49dfb3a786a83f10@mail.gmail.com> Dear List, > The following completes in 35 seconds on one of our machines and > probably does what you want: > > i := Iterator(GF(2)^24); > while not(IsDoneIterator(i)) do > v := NextIterators(i); > # Do something with v > od; This can be shortened to the equivalent code for v in GF(2)^24 do if WeightVecFFE(v)<8 then ...; fi; od; -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935501 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From e.obrien at auckland.ac.nz Thu Mar 8 09:28:25 2007 From: e.obrien at auckland.ac.nz (Eamonn O'Brien) Date: Thu Mar 8 09:29:12 2007 Subject: [GAP Forum] Vacancy for Lecturer / Senior Lecturer at University of Auckland Message-ID: <45EFD739.8090704@math.auckland.ac.nz> Dear Gap Forum, Applications are invited for a position at the Lecturer/Senior Lecturer level in the Department of Mathematics. This position is intended for candidates who have a PhD in Mathematics and who can demonstrate a strong commitment to excellence in research and teaching at all levels of Mathematics. The successful applicant will have research interests in algebra, combinatorics, number theory, or a field closely related to these. The Department of Mathematics, which is the largest and strongest in New Zealand, offers a full range of courses at the undergraduate and postgraduate levels, and has a growing PhD programme and a vibrant research culture spanning pure and applied mathematics and mathematics education. It is closely affiliated to, and hosts the offices of, the New Zealand Institute for Mathematics and its Applications (http://www.nzima.org). More details about the Department may be found at http://www.math.auckland.ac.nz/ Details of the position and method of application can be found at http://www.vacancies.auckland.ac.nz/positiondetail.asp?p=4987 If you would like further informal information on the position, you may wish to contact Associate Professor Bill Barton, Head of Department, , or other members of the Department. Best wishes. Eamonn O'Brien From rborgo at comp.leeds.ac.uk Thu Mar 8 11:53:06 2007 From: rborgo at comp.leeds.ac.uk (R Borgo) Date: Thu Mar 8 11:53:50 2007 Subject: [GAP Forum] GAP 3.4.4 on modern linux Message-ID: <45EFF922.8080200@comp.leeds.ac.uk> Dear all, I apologize for bothering about GAP 3 but I am forced to use it since I need the CHEVIE package, so I hope that maybe somebody out there found himself in my same situation and tried to install GAP 3 on modern Linux. I have followed the installation instruction given on the GAP3 website but when I try to compile make ibm-i386-linux-gcc2 I receive the following message: make[1]: Entering directory `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' gcc -DSYS_HAS_IOCTL_PROTO -DSYS_IS_USG -DSYS_HAS_TIME_PROTO -DSYS_HAS_SIG_T=void -DSYS_HAS_IOCTL_PROTO -c -o system.o system.c system.c: In function ?syAnswerCont?: system.c:1608: warning: ?return? with a value, in function returning void system.c: In function ?syAnswerTstp?: system.c:1619: warning: ?return? with a value, in function returning void system.c: In function ?syAnswerIntr?: system.c:2738: warning: ?return? with a value, in function returning void In file included from /usr/include/asm/param.h:4, from /usr/include/linux/param.h:4, from /usr/include/sys/param.h:24, from system.c:3297: /usr/include/unistd.h: At top level: /usr/include/unistd.h:325: error: conflicting types for ?read? system.c:1593: error: previous declaration of ?read? was here /usr/include/unistd.h:331: error: conflicting types for ?write? system.c:1594: error: previous declaration of ?write? was here system.c:4424: error: conflicting types for ?sbrk? /usr/include/unistd.h:993: error: previous declaration of ?sbrk? was here make[1]: *** [system.o] Error 1 make[1]: Leaving directory `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' make: *** [ibm-i386-linux-gcc2] Error 2 I tried with the COPTS="-DSYS_HAS_IOCTL_PROTO" option and adding the option directly into the makefile with no result. My machine has Linux Fedora. Any suggestion? Thank you in advance for your help RB From max.neunhoeffer at math.rwth-aachen.de Thu Mar 8 13:25:13 2007 From: max.neunhoeffer at math.rwth-aachen.de (Max Neunhoeffer) Date: Thu Mar 8 13:25:49 2007 Subject: [GAP Forum] GAP 3.4.4 on modern linux In-Reply-To: <45EFF922.8080200@comp.leeds.ac.uk> References: <45EFF922.8080200@comp.leeds.ac.uk> Message-ID: <20070308132513.GC31756@math.rwth-aachen.de> Dear R Borgo, You might try what I propose under http://www.math.rwth-aachen.de/~Max.Neunhoeffer/Computer/compgap.html However, your output suggests that you encounter another problem, probably due to a newer C compiler. If this does not work, please send be the output of gcc -v since I guess that you are using GCC >= 4.1, maybe it is also a problem with a newer C library. I myself do not have access to such a modern system as of now and therefore might not be able to help very much. But if the problem persists, please ask again. Best regards, Max On Thu, Mar 08, 2007 at 11:53:06AM +0000, R Borgo wrote: > Dear all, > > I apologize for bothering about GAP 3 but I am forced to use it since I > need the > CHEVIE package, so I hope that maybe somebody out there found himself in > my same situation > and tried to install GAP 3 on modern Linux. > I have followed the installation instruction given on the GAP3 website > but when I try to compile > make ibm-i386-linux-gcc2 > > I receive the following message: > make[1]: Entering directory `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' > gcc -DSYS_HAS_IOCTL_PROTO -DSYS_IS_USG -DSYS_HAS_TIME_PROTO > -DSYS_HAS_SIG_T=void -DSYS_HAS_IOCTL_PROTO -c -o system.o system.c > system.c: In function ?syAnswerCont?: > system.c:1608: warning: ?return? with a value, in function returning > void > system.c: In function ?syAnswerTstp?: > system.c:1619: warning: ?return? with a value, in function returning > void > system.c: In function ?syAnswerIntr?: > system.c:2738: warning: ?return? with a value, in function returning > void > In file included from /usr/include/asm/param.h:4, > from /usr/include/linux/param.h:4, > from /usr/include/sys/param.h:24, > from system.c:3297: > /usr/include/unistd.h: At top level: > /usr/include/unistd.h:325: error: conflicting types for ?read? > system.c:1593: error: previous declaration of ?read? was here > /usr/include/unistd.h:331: error: conflicting types for ?write? > system.c:1594: error: previous declaration of ?write? was here > system.c:4424: error: conflicting types for ?sbrk? > /usr/include/unistd.h:993: error: previous declaration of ?sbrk? was > here > make[1]: *** [system.o] Error 1 > make[1]: Leaving directory `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' > make: *** [ibm-i386-linux-gcc2] Error 2 > > I tried with the COPTS="-DSYS_HAS_IOCTL_PROTO" option > and adding the option directly into the makefile with no result. > My machine has Linux Fedora. > Any suggestion? > > Thank you in advance for your help > > RB > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- # # Max Neunhoeffer ##### Gerlachstrasse 20-22, 52064 Aachen, Germany (private) # # Lehrstuhl D fuer Mathematik, RWTH, Templergraben 64, 52062 Aachen ##### Tel.: +49 241 406605 (private) / +49 241 8094550 (institute) # # May the Source be with you! From emailme at ianmcloughlin.com Thu Mar 8 13:55:58 2007 From: emailme at ianmcloughlin.com (Ian McLoughlin) Date: Thu Mar 8 13:56:33 2007 Subject: [GAP Forum] GAP 3.4.4 on modern linux In-Reply-To: <20070308132513.GC31756@math.rwth-aachen.de> References: <45EFF922.8080200@comp.leeds.ac.uk> <20070308132513.GC31756@math.rwth-aachen.de> Message-ID: <9d5eef600703080555v3e9fc705m96be8cd022ac3404@mail.gmail.com> Looks like you need to install an older version of gcc. maybe Fedora provides one, though I doubt it! Try downloading gcc-3.2.tar.bz2from http://gcc-uk.internet.bs/old-releases/gcc-3/. I'd read... http://gcc.gnu.org/faq.html#multiple, http://www.mjmwired.net/linux/2005/11/15/using-alternate-compilers/ and http://www.mjmwired.net/resources/mjm-fedora-gcc.html before I'd continue from there in case I made a mess :). I always make a mess! Ian On 08/03/07, Max Neunhoeffer wrote: > > Dear R Borgo, > > You might try what I propose under > http://www.math.rwth-aachen.de/~Max.Neunhoeffer/Computer/compgap.html > > However, your output suggests that you encounter another problem, > probably due to a newer C compiler. If this does not work, please send > be the output of > gcc -v > since I guess that you are using GCC >= 4.1, maybe it is also a > problem with a newer C library. I myself do not have access to such a > modern system as of now and therefore might not be able to help very > much. But if the problem persists, please ask again. > > Best regards, > Max > > On Thu, Mar 08, 2007 at 11:53:06AM +0000, R Borgo wrote: > > Dear all, > > > > I apologize for bothering about GAP 3 but I am forced to use it since I > > need the > > CHEVIE package, so I hope that maybe somebody out there found himself in > > my same situation > > and tried to install GAP 3 on modern Linux. > > I have followed the installation instruction given on the GAP3 website > > but when I try to compile > > make ibm-i386-linux-gcc2 > > > > I receive the following message: > > make[1]: Entering directory > `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' > > gcc -DSYS_HAS_IOCTL_PROTO -DSYS_IS_USG -DSYS_HAS_TIME_PROTO > > -DSYS_HAS_SIG_T=void -DSYS_HAS_IOCTL_PROTO -c -o system.o system.c > > system.c: In function 'syAnswerCont': > > system.c:1608: warning: 'return' with a value, in function returning > > void > > system.c: In function 'syAnswerTstp': > > system.c:1619: warning: 'return' with a value, in function returning > > void > > system.c: In function 'syAnswerIntr': > > system.c:2738: warning: 'return' with a value, in function returning > > void > > In file included from /usr/include/asm/param.h:4, > > from /usr/include/linux/param.h:4, > > from /usr/include/sys/param.h:24, > > from system.c:3297: > > /usr/include/unistd.h: At top level: > > /usr/include/unistd.h:325: error: conflicting types for 'read' > > system.c:1593: error: previous declaration of 'read' was here > > /usr/include/unistd.h:331: error: conflicting types for 'write' > > system.c:1594: error: previous declaration of 'write' was here > > system.c:4424: error: conflicting types for 'sbrk' > > /usr/include/unistd.h:993: error: previous declaration of 'sbrk' was > > here > > make[1]: *** [system.o] Error 1 > > make[1]: Leaving directory > `/usr/not-backed-up/GAP/gap3/zoo/gap3r4p4/src' > > make: *** [ibm-i386-linux-gcc2] Error 2 > > > > I tried with the COPTS="-DSYS_HAS_IOCTL_PROTO" option > > and adding the option directly into the makefile with no result. > > My machine has Linux Fedora. > > Any suggestion? > > > > Thank you in advance for your help > > > > RB > > > > _______________________________________________ > > Forum mailing list > > Forum@mail.gap-system.org > > http://mail.gap-system.org/mailman/listinfo/forum > > > > -- > # # Max Neunhoeffer > ##### Gerlachstrasse 20-22, 52064 Aachen, Germany (private) > # # Lehrstuhl D fuer Mathematik, RWTH, Templergraben 64, 52062 Aachen > ##### Tel.: +49 241 406605 (private) / +49 241 8094550 (institute) > # # May the Source be with you! > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- Ian McLoughlin emailme@ianmcloughlin.com From muntyan at tamu.edu Thu Mar 8 14:56:48 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Thu Mar 8 14:57:34 2007 Subject: [GAP Forum] GAP 3.4.4 on modern linux In-Reply-To: <45EFF922.8080200@comp.leeds.ac.uk> References: <45EFF922.8080200@comp.leeds.ac.uk> Message-ID: <45F02430.7080407@tamu.edu> R Borgo wrote: > Dear all, > > I apologize for bothering about GAP 3 but I am forced to use it since > I need the > CHEVIE package, so I hope that maybe somebody out there found himself > in my same situation > and tried to install GAP 3 on modern Linux. I compiled it on Debian linux with make ibm-i386-linux-gcc2 COPTS='-DSYS_HAS_IOCTL_PROTO -DSYS_HAS_ANSI -DSYS_HAS_CONST -DSYS_HAS_STDIO_PROTO -DSYS_HAS_READ_PROTO -DSYS_HAS_STRING_PROTO -DSYS_HAS_SIGNAL_PROTO -DSYS_HAS_TIME_PROTO -DSYS_HAS_MALLOC_PROTO -DSYS_HAS_MISC_PROTO' (it was one line). It starts, don't know if it works fine or not. Best regards, Yevgen From ras_rezaei at yahoo.com Sun Mar 11 14:41:23 2007 From: ras_rezaei at yahoo.com (rashid rezaei) Date: Sun Mar 11 14:41:57 2007 Subject: [GAP Forum] question Message-ID: <133660.78644.qm@web36808.mail.mud.yahoo.com> Dear Forum, I am looking for computing the non-abelian tensor product $G\otimes N$ where $N$ is a normal subgroup of $G$. I found the command for tensor square in the package HAP, but I could not find any similar for $G\otimes N$. I will be more grateful for any help or comments. Regards, R. Rezaei. Send instant messages to your online friends http://uk.messenger.yahoo.com From graham.ellis at nuigalway.ie Mon Mar 12 10:49:35 2007 From: graham.ellis at nuigalway.ie (Ellis, Grahamj) Date: Mon Mar 12 10:50:35 2007 Subject: [GAP Forum] question References: <133660.78644.qm@web36808.mail.mud.yahoo.com> Message-ID: <7BC4FCB2B695D64CBF525CEC64375327CA1BD0@EVS1.ac.nuigalway.ie> Dear Rashid, I was just uploading a new version of HAP 1.7.3 when your e-mail arrived. So I have included a quickly written function NonabelianTensorProduct(G,N) which inputs a finite group G and normal subgroup N. It returns a record with the homomorphism delta:G\otimes N --> G and the crossed pairing h:G\times N --> G . I'll improve the efficiency of this function in the next release. To calculate the order of the tensor product G\otimes N where G is the Sylow 2-subgroup of the Mathieu group M12, and N the derived subgroup of G, you need to type the following: gap> G:=SylowSubgroup(MathieuGroup(12),2);; gap> N:=DerivedSubgroup(G);; gap> T:=NonabelianTensorProduct(G,N);; gap> TensProd:=Source(T.homomorphism); gap> Order(TensProd); 128 All the best, Graham -----Original Message----- From: forum-bounces@gap-system.org on behalf of rashid rezaei Sent: Sun 11/03/2007 14:41 To: Forum@gap-system.org Subject: [GAP Forum] question Dear Forum, I am looking for computing the non-abelian tensor product $G\otimes N$ where $N$ is a normal subgroup of $G$. I found the command for tensor square in the package HAP, but I could not find any similar for $G\otimes N$. I will be more grateful for any help or comments. Regards, R. Rezaei. Send instant messages to your online friends http://uk.messenger.yahoo.com _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum From rowell at math.tamu.edu Mon Mar 12 16:28:57 2007 From: rowell at math.tamu.edu (Eric Rowell) Date: Mon Mar 12 16:29:45 2007 Subject: [GAP Forum] Primitive Linear Groups Message-ID: Dear GAP Forum, Is there a way to access primitive unimodular linear groups of low degree (say 7 or less) on GAP? I am a new user, and I haven't found such a function yet. I need to generate a list of possible orders for these groups. While these groups are mostly described in Feit's 1970 ICM paper, the degree 4 groups are somewhat troublesome, particularly the extensions of the extra special groups of order 32 by their automorphism groups. Best, Eric Rowell From vdovin at math.nsc.ru Tue Mar 13 02:50:01 2007 From: vdovin at math.nsc.ru (Vdovin Evgenii) Date: Tue Mar 13 02:50:38 2007 Subject: [GAP Forum] Primitive Linear Groups In-Reply-To: References: Message-ID: <200703130850.01471.vdovin@math.nsc.ru> > Dear GAP Forum, > > Is there a way to access primitive unimodular linear groups of low degree > (say 7 or less) on GAP? I am a new user, and I haven't found such a > function yet. > > I need to generate a list of possible orders for these groups. While > these groups are mostly described in Feit's 1970 ICM paper, the degree 4 > groups are somewhat troublesome, particularly the extensions of the extra > special groups of order 32 by their automorphism groups. > > Best, > > Eric Rowell > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum Check irredsol package and its documentation. Since your group is solvable, it should help. In GAP type ?irreducible for more information. -- Best Regards Vdovin Evgenii Institute of Mathematics pr-t Acad. Koptyug, 4 630090, Novosibirsk, Russia Office +7 383 3333495 Home +7 383 2644892 Cellular +7 913 9475524 Fax +7 383 3332598 From Bartosz.Putrycz at math.univ.gda.pl Wed Mar 14 08:38:05 2007 From: Bartosz.Putrycz at math.univ.gda.pl (Bartosz Putrycz) Date: Wed Mar 14 08:38:36 2007 Subject: [GAP Forum] spin group, finite subgroups Message-ID: <45F7B46D.4090302@math.univ.gda.pl> Dear Forum, I need to have some way to put/represent in GAP finite subgroups of the spin group, given by generators in Clifford algebra, or given by their image in canonical epimorphism onto SO(n) For example: 1) maped onto C2^2(diagonal +-1) in SO(3) 2) <1/sqrt{2} (1 - e_3 e_4), 1/sqrt{2} e_1(e_3 - e_4)> -> D8 in SO(4) Of course I could analyze these groups by myself, first is Q8, but I have more examples and I want to analyze them automatically by GAP. Regards, Bartosz Putrycz. From fridmam at macs.biu.ac.il Thu Mar 15 07:50:50 2007 From: fridmam at macs.biu.ac.il (Michael Fridman) Date: Thu Mar 15 07:51:48 2007 Subject: [GAP Forum] Reidemeister Schreier method Message-ID: Dear Forum! I have a question regarding the Reidemeister-Schreier method. I have a finitely presented group G and a set of the schreier generators of a subgroup H. so using "PresentationSubgroup " I found a presentation of the subgroup H. However, I need to know how the generators of the subgroup H (when they are calculated using the RMS method) are expressed in terms of the generators of G. how can do it? Thanks in advance, Michael Friedman From fridmam at macs.biu.ac.il Thu Mar 15 07:56:18 2007 From: fridmam at macs.biu.ac.il (Michael Fridman) Date: Thu Mar 15 07:56:46 2007 Subject: [GAP Forum] Homomorphism to the symmetric group Message-ID: Dear Forum! I have the following problem. Given a finitely presented group G, I need to find all the surjective homomorphisms to the symmetric group of n elements (when n is given). Can I use GAP to do it? Thanks in advance Michael From hulpke at mac.com Thu Mar 15 14:49:31 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Thu Mar 15 14:50:18 2007 Subject: [GAP Forum] ReReidemeister Schreier method and Homomorphism to the symmetric group In-Reply-To: References: Message-ID: <5EAECDF7-A83A-4CE4-9303-B1CCFA8820F5@mac.com> Dear GAP Forum, On Mar 15, 2007, at 1:50 AM, Michael Fridman wrote: > I have a question regarding the Reidemeister-Schreier method. I have a > finitely presented group G and a set of the schreier generators of a > subgroup H. so using "PresentationSubgroup " I found a presentation > of the > subgroup H. However, I need to know how the generators of the > subgroup H > (when they are calculated using the RMS method) are expressed in > terms of > the generators of G. how can do it? The easiest way to do so is to use `IsomorphismFpGroup' applied to H. This will do a Reidemeister-Schreier rewriting (and Tietze transformations) to obtain a presentation for H. The `Range' of this homomorphism is the newly presented group. You can use the homomorphism to rewrite elements between H<=G and the new group isomorphic to H. (If you wanted to do this with PresentationSubgroup you would have to do the translation by hand. See the code in lib/ghomfp.gi.) He also asked: > Given a finitely presented group G, I need > to find all the surjective homomorphisms to the symmetric group of n > elements (when n is given). Can I use GAP to do it? I assume you want one n at a time. You could use `GQuotients' to do this. (However be aware that this is likely to fail if your n gets too big. n=10 should be doable. n=100 is likely out of range.) Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From Rudolf.Zlabinger at chello.at Fri Mar 16 10:08:29 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Fri Mar 16 10:09:11 2007 Subject: [GAP Forum] All Homomorphisms Message-ID: <000e01c767b3$0c11d290$d5476d50@zlabinger> There is included a short function for creating all nontrivial homomorphisms between two groups small enough, up to conjucacy in the target group. Is there a nicer and more efficient way to do the same task in GAP? May be MorClassLoop can do similar things, an example would be welcome. If only factor groups isomorphic to a given target group are required, there is the function GQuotients, so far I know. This question is somewhat related to the recent message of Michael Fridman about homomorphisms. Thank you, Rudolf Zlabinger -------------- next part -------------- AllHomomorphismsRepresentative:=function(fromgroup,togroup) local nfromgroup,hfromgroup,ffromgroup,isgfromgrouptogroup,isgfromgrouptogroupp,homslist ; nfromgroup:=NormalSubgroups(fromgroup);; nfromgroup:=Filtered(nfromgroup,x->x<>fromgroup);; # the trivial homomorphism is not returned if nfromgroup = [] then return [[]]; fi; # the trivial homomorphism is not returned ffromgroup:=List(nfromgroup,x->FactorGroup(fromgroup,x));; hfromgroup:=List(nfromgroup,x->NaturalHomomorphismByNormalSubgroup(fromgroup,x));; isgfromgrouptogroup:=List(ffromgroup,x->IsomorphicSubgroups(togroup,x)); isgfromgrouptogroupp:=Filtered([1..Length(isgfromgrouptogroup)],x->isgfromgrouptogroup[x]<>[]); if isgfromgrouptogroupp = [] then return [[]]; fi; isgfromgrouptogroup:=isgfromgrouptogroup{isgfromgrouptogroupp}; hfromgroup:=hfromgroup{isgfromgrouptogroupp}; homslist:=List([1..Length(hfromgroup)],x->hfromgroup[x]*isgfromgrouptogroup[x]); return homslist; end; From workshop2007 at gap-system.org Fri Mar 16 11:09:16 2007 From: workshop2007 at gap-system.org (workshop2007@gap-system.org) Date: Fri Mar 16 11:32:07 2007 Subject: [GAP Forum] GAP Package Authors Workshop Message-ID: <20070316110916.23cf4bb8@caolila.cs.st-andrews.ac.uk> Dear GAP Forum, We are delighted to announce a GAP Package Authors workshop at the Technical University of Braunschweig, Germany running from September 11-15 2007. This informal workshop is aimed at researchers who have some experience of using GAP and are interested in developing more substantial programms or packages. The morning sessions of the workshop with be devoted to talks contributed by the participants about algorithms, their implementation in GAP and applications. All participants are invited to suggest talks. The afternoon sessions of the workshop will include lectures on key aspects of the design of GAP, practical sessions with advice on debugging and optimising GAP programs and discussions about future directions of GAP. There will be no charge for attendance at the workshop. Accomodation in local hotels can be reserved by the organisers, see the registration form. For further information, to register, or to express interest in a particular aspect of the system being covered at the workshop, contact workshop2007@gap-system.org or see http://www.gap-system.org/workshop2007 Bettina Eick Steve Linton -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From arikan at gazi.edu.tr Mon Mar 19 11:21:54 2007 From: arikan at gazi.edu.tr (AHMET ARIKAN) Date: Mon Mar 19 11:22:55 2007 Subject: [GAP Forum] Replacing in GAP Message-ID: <003e01c76a18$cd3f8540$d005050a@your6c04f3ee65> Dear All, one of my colleagues asked me the following question which seems easy but useful: Let y=(a_1,a_2,...,a_k) be a cycle of length k where a_i is a natural number for each i. Is there a way in GAP to replace some determined components with some other natural numbers (for example replace a_{i_1},..., a_{i_t} with some different natural numbers). Of course it can be done manually, but it is not helpful for him. With best wishes, Ahmet Arikan From ally at dcs.gla.ac.uk Mon Mar 19 11:59:31 2007 From: ally at dcs.gla.ac.uk (Alastair Donaldson) Date: Mon Mar 19 12:01:46 2007 Subject: [GAP Forum] Replacing in GAP References: <003e01c76a18$cd3f8540$d005050a@your6c04f3ee65> Message-ID: <58577CAC1C0FB34DAA24FA9DC76613F101773457@ex1.ad.dcs.gla.ac.uk> I think the following solves your problem: Suppose your original cycle is defined over a_1, a_2, .... a_n. Let b_1, b_2, .... , b_n be your new components, so that either a_i = b_i, or b_i is a fresh natural number (and all the b_i are distinct) Define replacement := (a_1,b_1)(a_2,b_2)....(a_n,b_n); Then the cycle you are looking for is cycle^replacement; (i.e. the conjugate of "cycle" by "replacement".) Please let me know if I've got this right! -Alastair -----Original Message----- From: forum-bounces@gap-system.org on behalf of AHMET ARIKAN Sent: Mon 19/03/2007 11:21 AM To: forum@gap-system.org Subject: [GAP Forum] Replacing in GAP Dear All, one of my colleagues asked me the following question which seems easy but useful: Let y=(a_1,a_2,...,a_k) be a cycle of length k where a_i is a natural number for each i. Is there a way in GAP to replace some determined components with some other natural numbers (for example replace a_{i_1},..., a_{i_t} with some different natural numbers). Of course it can be done manually, but it is not helpful for him. With best wishes, Ahmet Arikan _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum From nikos.ap at gmail.com Mon Mar 19 15:50:42 2007 From: nikos.ap at gmail.com (Nikos Apostolakis) Date: Mon Mar 19 17:05:55 2007 Subject: [GAP Forum] Re: Replacing in GAP References: <003e01c76a18$cd3f8540$d005050a@your6c04f3ee65> Message-ID: <874poh44h9.fsf@luna.earthlink.net> "AHMET ARIKAN" writes: > > Let y=(a_1,a_2,...,a_k) be a cycle of length k where a_i is a > natural number for each i. Is there a way in GAP to replace some > determined components with some other natural numbers (for example > replace a_{i_1},..., a_{i_t} with some different natural > numbers). Of course it can be done manually, but it is not helpful > for him. > The following function converts a list to a cycle. So for example list2cycle([1,2,3]); => (1,2,3) ----- 8< Cut here 8< ----- list2cycle := function(c) local cycle, shift; shift:= [2..Length(c)]; Add(shift, 1); cycle:= [1..Maximum(c)]; cycle{c}:= c{shift}; return PermList(cycle); end; ----- 8< Cut here 8< ----- I found this function in some older post in this forum. Using this function you can define a conjugating permutation to do the replacement you want. For example to replace in the cycle c the elements of list1 with the elments of list2 you can do pairs := List( [1..Length(list1)], i -> [ list1[i], list2[i] ]); conj := Product( List(pairs, list2cycle)); c^conj; assuming ofcourse that everything above makes sence (i.e. list1 and list2 have the same length etc). This is basically Alastair's solution in a form that can easily bundled into a function. HTH, Nikos From vze269bv at verizon.net Fri Mar 23 00:26:46 2007 From: vze269bv at verizon.net (Bruce Colletti) Date: Fri Mar 23 00:27:37 2007 Subject: [GAP Forum] List with Holes Message-ID: <18276139.3889211174609606780.JavaMail.root@vms063.mailsrvcs.net> If X is a list with holes, how do I find the positions of the holes? Thankx. Bruce From hulpke at mac.com Fri Mar 23 02:47:06 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Fri Mar 23 02:48:16 2007 Subject: [GAP Forum] List with Holes In-Reply-To: <18276139.3889211174609606780.JavaMail.root@vms063.mailsrvcs.net> References: <18276139.3889211174609606780.JavaMail.root@vms063.mailsrvcs.net> Message-ID: <7536F26C-B24E-4112-ACFD-AA841D0CEBC8@mac.com> Dear Forum, On Mar 22, 2007, at 6:26 PM, Bruce Colletti wrote: > If X is a list with holes, how do I find the positions of the holes? (assuming the list is `x' as `X' is reserved): Filtered([1..Length(x)],i-> not IsBound(x[i])); > Thankx. You're welxome, Alexander From phjelmstad at msn.com Fri Mar 23 03:17:46 2007 From: phjelmstad at msn.com (PAUL HJELMSTAD) Date: Fri Mar 23 03:18:47 2007 Subject: [GAP Forum] Printing Message-ID: Dear Forum, This is really poor of me, but I need to know how to send the Character Table of the Monster group to a file so I can work with the data. (And reformat it). Any suggestions would be appreciated. (Excel, Access or whatever PGH From reichard at maths.uwa.edu.au Fri Mar 23 04:24:44 2007 From: reichard at maths.uwa.edu.au (Sven Reichard) Date: Fri Mar 23 04:25:27 2007 Subject: [GAP Forum] List with Holes In-Reply-To: <18276139.3889211174609606780.JavaMail.root@vms063.mailsrvcs.net> References: <18276139.3889211174609606780.JavaMail.root@vms063.mailsrvcs.net> Message-ID: <4603568C.2070401@maths.uwa.edu.au> Bruce Colletti wrote: > If X is a list with holes, how do I find the positions of the holes? > > Thankx. > > Bruce > The following does it: gap> list := [,,4]; [ ,, 4 ] gap> holes := Filtered([1..Length(list)], y -> not IsBound(list[y])); [ 1, 2 ] Cheers, Sven. From thomas.breuer at math.rwth-aachen.de Fri Mar 23 08:46:27 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Fri Mar 23 08:47:07 2007 Subject: [GAP Forum] Printing In-Reply-To: References: Message-ID: <20070323084627.GB27846@math.rwth-aachen.de> Dear GAP Forum, Paul Hjelmstad wrote > This is really poor of me, but I need to know how to send the Character > Table of the Monster group to a file so I can work with the data. (And > reformat it). Any suggestions would be appreciated. (Excel, Access or > whatever The following code produces a CSV file called `m.csv' with the ordinary irreducible characters of the Monster. You should be able to read this format with Excel, for example. colsep:= ",";; rowsep:= "\n";; dstfile:= "m.csv";; t:= CharacterTable( "M" ); irr:= Irr( t );; irrstrings:= List( irr, l -> List( l, x -> Quadratic( x ).ATLAS ) );; csvstrings:= List( irrstrings, x -> JoinStringsWithSeparator( x, colsep ) );; FileString( dstfile, JoinStringsWithSeparator( csvstrings, rowsep ) ); A few comments: - Of course you can use different separators for the columns and rows. - The irrational values in the table lie in quadratic field extensions of the rational number field; this is why the conversion with `Quadratic' works. If you need a different format for irrational values then change the conversion accordingly. - If you need more data from the character table than just the irreducible characters (element orders, power maps) then extend the file accordingly. - I am not aware of a better tool than GAP for ``working with the data''. All the best, Thomas Breuer From beick at tu-bs.de Mon Mar 26 09:31:34 2007 From: beick at tu-bs.de (Bettina Eick) Date: Mon Mar 26 09:32:11 2007 Subject: [GAP Forum] The new UnitLib Package Message-ID: Dear Forum, it is my pleasure to announce the new GAP Package UnitLib. The UnitLib Package is a group library containing the normalized unit groups of the modular group algebras of the finite p-groups of order at most 243 = 3^5. The normalized unit groups in the library are represented as PcGroups. For a p-group G and the field with p elements K, GAP can compute its modular group algebra KG an the Laguna Package of GAP can determine its normalized unit group as PcGroup. In fact, this algorithm of the Laguna Package has been used to determine the groups in the UnitLib Package. However, the computation of a normalized unit group for a group of order 64 or more can be very time-consuming. Hence it seems useful to have a library of precomputed normalized unit groups available. If G is a group of order p^n, then its normalized unit group over the field with p elements has the order p^(p^n-1). Thus the library contains quite large groups and, consequently, it needs a fair amount of storage space. More precisely, the Unitlib Package requires 20 MB of disk space. The UnitLib Package is available from its homepage http://www.cs.st-andrews.ac.uk/~alexk/unitlib.htm and also from the GAP packages page http://www.gap-system.org/Packages/packages.html The UnitLib Package is written in the GAP language and it requires the GAP packages GAPDoc, LAGUNA and QaoS. ----------------------------------------------------------------------- Prof. Dr. Bettina Eick Department of Mathematics Room: F 612 University Braunschweig Tel: ++49 (0)531 391 7525 Pockelsstrasse 14 Fax: ++49 (0)531 391 8206 38106 Braunschweig email: beick@tu-bs.de Germany ----------------------------------------------------------------------- From Paul_Hjelmstad at allianzlife.com Tue Mar 27 17:43:58 2007 From: Paul_Hjelmstad at allianzlife.com (Paul_Hjelmstad@allianzlife.com) Date: Wed Mar 28 12:30:30 2007 Subject: Fw: [GAP Forum] Listing Octads Message-ID: Alexander, Thanks. This works, except that I get a different value for the first octad (orbit of 2-Sylow group), it lists a 16-chord first, and then, Set(octad)[1] ends up being a 16-chord, and so do all the others. Do you know why it is listing a 16-chord first, and why my octad is different? I get [ 3, 14, 22, 15, 11, 23, 17, 19 ] Paul Hjelmstad ITS Security Administration 763-582-6547 (x46547) Paul_Hjelmstad@allianzlife.com ----- Forwarded by Paul Hjelmstad/allianzlife on 03/27/2007 11:40 AM ----- "PAUL HJELMSTAD" 03/01/2007 03:08 PM To paul_hjelmstad@allianzlife.com cc Subject FW: Re: [GAP Forum] Listing Octads >From: Alexander Hulpke >To: "PAUL HJELMSTAD" >CC: forum@gap-system.org >Subject: Re: [GAP Forum] Listing Octads >Date: Thu, 1 Mar 2007 11:00:39 -0700 > >Dear GAP forum, > >Paul Hjelmstad wrote: > >>Does anyone know how I would list: >Yes. > >>2) Representatives of Conjugacy Classes (26) in M24 >gap> g:=MathieuGroup(24); >gap> List(ConjugacyClasses(g),Representative); >(Careful: Order is not necessarily ATLAS order but its easy to get a >correspondence) > >>1) Octads in M24 (Are they Unique?) >The 759 octads are one orbit under M24 and are determined uniquely by 5 >points of this 5-transitive group, thus there are unique. > >As the index of an octad stabilizer is 759 and thus odd, we can get one >octad from orbits of a 2-Sylow subgroup: > >gap> s:=SylowSubgroup(g,2); > >gap> Orbits(s,[1..24]); >[ [ 1, 5, 24, 8, 10, 11, 14, 20 ], > [ 2, 13, 22, 19, 7, 3, 9, 23, 18, 4, 15, 12, 6, 16, 17, 21 ] ] >gap> o:=Set(last[1]); > >The set of octads then is obtained as orbit: > >gap> octads:=Orbit(g,o,OnSets);; >gap> Length(octads); >759 > >from which we see that in this labelling of M24 the lexicographically >smallest octad is > >gap> Set(octads)[1]; >[ 1, 2, 3, 4, 5, 8, 11, 13 ] > > >Best, > > Alexander Hulpke > > >-- Colorado State University, Department of Mathematics, >Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA >email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 >http://www.math.colostate.edu/~hulpke > > ----------------------------------------- CONFIDENTIALITY NOTICE: The information in this message, and any files transmitted with it, is confidential, may be legally privileged, and intended only for the use of the individual(s) named above. Be aware that the use of any confidential or personal information may be restricted by state and federal privacy laws. If you are not the intended recipient, do not further disseminate this message. If this message was received in error, please notify the sender and delete it. From justpasha at gmail.com Sat Mar 31 17:51:06 2007 From: justpasha at gmail.com (Pasha Zusmanovich) Date: Sat Mar 31 17:51:37 2007 Subject: [GAP Forum] transcendental field extensions Message-ID: <460E917A.3060606@gmail.com> Dear people, I have two related questions: 1. Is it possible to define transcendental field extensions in GAP? 2. Is it possible to make calculations in algebras with parametric coefficients? The questions are related, as the natural way to handle 2 is to define an algebra over a transcendental field extension with given parameters. I am trying to do the following: gap> x := Indeterminate (Rationals, "x"); x gap> F := DefaultField (x); but this is a doomed to failure attempt, as one cannot seemingly to do anything useful with this field: gap> DegreeOverPrimeField (F); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 2nd choice method found for `DegreeOverPrimeField' on 1 arguments ca\ lled from ( ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue gap> VectorSpace (F, [[1]]); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IsFiniteDimensional' on 1 arguments cal\ led from IsFiniteDimensional( V ) called from IsFinite( R ) called from triple[3]( F, gens, V, zero ) called from CheckForHandlingByNiceBasis( R, gens, V, false ); called from LeftModuleByGenerators( arg[1], arg[2] ) called from ... Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue Cheers, Pasha. From alireza_abdollahi at yahoo.com Mon Apr 2 17:26:04 2007 From: alireza_abdollahi at yahoo.com (Alireza Abdollahi) Date: Mon Apr 2 17:27:07 2007 Subject: [GAP Forum] GRAPE Message-ID: <685108.99277.qm@web35707.mail.mud.yahoo.com> Dears I would like to know whether anyone has implemented a program under GAP/GRAPE to 1) calculate the Cromatic Number of a graph? 2) produce all connected Cayley graphs of a finite group, i.e., given a finite group G, find all generating sets S of G and then construct the Cayley graph of G with respect to S, for all S. For (1) in GRAPE, there is a function (VertexColouring) which finds only a *proper vertex colouring* for a given graph. The size of this proper vertex colouring is not necessarily equal to the cromtic number. Thanks in advance for any help. All the Best Alireza Abdollahi > I used the VertexColouring function in GRAPE and (I > think) I have no > problem with it; but I would like to know whether it > is possible to get > the chromatic number of a graph. > > In particular in the following example I think the > function gives only > a *proper vertex colouring* not a one with the > mininum number of > colours. > > D:=Group([ (1,2,4,7,5,6,3), (2,4,5)(3,6,7), (8,9) ]) > C:=CayleyGraph(D,[(8,9)(1,2,4,7,5,6,3),(2,4,5)(3,6,7)]); > eC:=EdgeGraph(C);; > VertexColouring(eC); > [ 1, 3, 2, 4, 1, 3, 4, 5, 2, 3, 5, 2, 3, 4, 4, 1, 5, > 1, 3, 1, 2, 3, 1, 4, 2, > 5, 4, 2, 4, 5, 4, 3, 4, 3, 3, 2, 4, 3, 2, 1, 1, > 2, 1, 2, 5, 4, 4, 5, 2, 3, > 5, 2, 3, 4, 1, 4, 1, 4, 2, 5, 1, 2, 1, 2, 3, 3, > 1, 4, 5, 4, 3, 1, 5, 3, 1, > 4, 2, 2, 3, 2, 3, 2, 1, 1 ] > > > I think, there is a proper vertex colouring > for the graph "eC" with 4 colours. Can I check this > claim by GRAPE? > Is there a function in GRAPE to compute the > chromatic number? > > Thanks in advance. > > All the Best > > Alireza Abdollahi > > > > > > > > ---------------------------------------------------------------- > University of Isfahan (http://www.ui.ac.ir) > > Alireza Abdollahi Department of Mathematics University of Isfahan, Isfahan 81746-73441,Iran e-mail: abdollahi@member.ams.org a.abdollahi@math.ui.ac.ir URL: http://sci.ui.ac.ir/math/New/abdollahi.htm ____________________________________________________________________________________ Expecting? Get great news right away with email Auto-Check. Try the Yahoo! Mail Beta. http://advision.webevents.yahoo.com/mailbeta/newmail_tools.html From djcdl at yahoo.com.cn Mon Apr 9 12:17:10 2007 From: djcdl at yahoo.com.cn (Dong Jingcheng) Date: Mon Apr 9 12:17:55 2007 Subject: [GAP Forum] How to construct a group algebra by generators using function Algebra(Field, generators) ? Message-ID: <201703.20399.qm@web15708.mail.cnb.yahoo.com> Dear forum:=0AI want to construct a group algebra kS3 by generators using = function Algebra(Field,generators),but it cannot work.My program is listed= below: =0Az:=3DZ(2);=0AA:=3DAlgebra(z,[(1,2),(1,2,3)]);=0A=0AWhere (1,2) a= nd (1,2,3) generate the group S3.What shall I do?=0A=0AThank you!=0ADong= =0A=0A=0A=09=09=0A_________________________________________________________= __ =0A=C7=C0=D7=A2=D1=C5=BB=A2=C3=E2=B7=D1=D3=CA=CF=E4-3.5G=C8=DD=C1=BF=A3= =AC20M=B8=BD=BC=FE=A3=A1 =0Ahttp://cn.mail.yahoo.comFrom alexander.konovalov at gmail.com Mon Apr 9 12:37:52 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Mon Apr 9 12:38:27 2007 Subject: [GAP Forum] How to construct a group algebra by generators using function Algebra(Field, generators) ? In-Reply-To: <201703.20399.qm@web15708.mail.cnb.yahoo.com> References: <201703.20399.qm@web15708.mail.cnb.yahoo.com> Message-ID: <8197B414-1260-421D-825D-8EB2097FD2ED@gmail.com> Dear Dong, you can construct the desired group algebra as follows: gap> GroupRing( GF(2), SymmetricGroup(3) ); See the description of the 'GroupRing' function at http://www.gap-system.org/Manuals/doc/htm/ref/CHAP063.htm#SSEC001.2 In your attempt to construct it using Algebra, first, z is a field element and not a field, as required. Moreover, as it is written on http://www.gap-system.org/Manuals/doc/htm/ref/CHAP060.htm#SSEC001.1, the second argument must be a list of vectors. This is in brief why you can not construct the group algebra with "Algebra". Note that there are several GAP packages extending the system's functionality for group rings: Wedderga, LAGUNA and Unitlib, see http://www.gap-system.org/Packages/packages.html Hope this helps, and please do not hesitate to ask further questions. Best wishes, Alexander On 09 Apr 2007, at 12:17, Dong Jingcheng wrote: > Dear forum: > I want to construct a group algebra kS3 by generators using > function Algebra(Field,generators),but it cannot work.My program is > listed below: > z:=Z(2); > A:=Algebra(z,[(1,2),(1,2,3)]); > > Where (1,2) and (1,2,3) generate the group S3.What shall I do? > > Thank you! > Dong From laurent.bartholdi at gmail.com Mon Apr 9 14:17:48 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Mon Apr 9 14:18:04 2007 Subject: [GAP Forum] How to construct a group algebra by generators using function Algebra(Field, generators) ? In-Reply-To: <8197B414-1260-421D-825D-8EB2097FD2ED@gmail.com> References: <201703.20399.qm@web15708.mail.cnb.yahoo.com> <8197B414-1260-421D-825D-8EB2097FD2ED@gmail.com> Message-ID: <1ff637850704090617r58832537ja654297d11ae9ca1@mail.gmail.com> Dear Dong, Let me second Alexander's explanation. To define a ring, you must supply gap with elements that may be added and multiplied. A simple way to construct ring elements is by converting the permutations to permutation matrices. The short code > gap> GroupRing( GF(2), SymmetricGroup(3) ); could have been written as gap> regularactiongens := GeneratorsOfGroup(Action(SymmetricGroup(3),SymmetricGroup(3),OnRight)); [ (1,3,5)(2,4,6), (1,6)(2,5)(3,4) ] gap> Algebra(GF(2), List(regularactiongens,g->PermutationMat(g,6,GF(2)))); This has the disadvantage that GAP does not know that you constructed a group ring (and therefore does not know that there is an augmentation ideal, etc.) -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From blythrd at slu.edu Tue Apr 10 20:07:48 2007 From: blythrd at slu.edu (Russell Blyth) Date: Tue Apr 10 20:08:55 2007 Subject: [GAP Forum] Special session on "Group Theory, Actions and Computation" at AMS/NZMS joint meeting Message-ID: Dear Forum, This is to let you know about a special session on "Group Theory, Actions and Computation" at the First Joint Meeting of the American and New Zealand Mathematical Societies, to be held at Victoria University of Wellington, New Zealand, 12-15 December 2007. See the website http://www.mcs.vuw.ac.nz/~mathmeet/amsnzms2007/ for further details. If you would like to take part and give a talk in this session, please let either Marston Conder or me know - or better still, let both of us know! We can issue a formal invitation if you need one. Unfortunately, no financial support is being offered by the sponsoring organisations for invited speakers for the special sessions. Registration for this meeting is due by 31st October. Also lecture titles and abstracts need to be submitted by 31st October at http://atlas-conferences.com/cgi-bin/abstract/submit/catm-01. Finally, in case you are interested, there's another conference being held a few days beforehand in Dunedin (in New Zealand's picturesque South Island), on "Combinatorial Mathematics & Combinatorial Computing", the week Monday 3rd December to Friday 7th December. See http://www.cs.otago.ac.nz/staffpriv/mike/ACCMCC32/32ACCMCC.html for details. The few days in between would be perfect for seeing some of the great sights of the South Island ... where much of the "Lord of the Rings" trilogy was filmed. Best wishes Russell Blyth From maasiru at yahoo.com Wed Apr 11 11:31:12 2007 From: maasiru at yahoo.com (muniru asiru) Date: Wed Apr 11 11:32:01 2007 Subject: [GAP Forum] Need help: Solution to a simultaneous equation Message-ID: <20070411103112.84948.qmail@web53312.mail.re2.yahoo.com> a:=100;; y1=1+ 401/a*10^-14*b+ 118/a*10^-14*c+ 260/a*10^-14*d+ 331/a*10^-27*e y1=1+ 457/a*10^-14*b+ 127/a*10^-14*c+ 330/a*10^-14*d+ 255/a*10^-27*e y1=1+ 765/a*10^-14*b+ 383/a*10^-14*c+ 595/a*10^-14*d+ 380/a*10^-27*e y1=1+ 101/a*10^-14*b+ 266/a*10^-14*c+ 797/a*10^-14*d+ 428/a*10^-27*e y1=1+ 135/a*10^-14*b+ 354/a*10^-14*c+ 106/a*10^-14*d+ 586/a*10^-27*e I need help. I like to solve the above simultaneous equations to determine the values y1, b,c,d, and e. I can write some simple codes in Gap, but this doesn't appear to help. I wiil be grateful if you will help me out. My program is shown below. k0:=[-2^25,(-2^25-1)..2^25];; a:=100;; k1:=[];; for y1 in k0 do for b in k0 do for c in k0 do for d in k0 do for e in k0 do if [[y1],[y1],[y1],[y1],[y1]]=[ 10^30*[1+ 401/a*10^-14*b+ 118/a*10^-14*c+ 260/a*10^-14*d+ 331/a*10^-27*e], 10^30+[1+ 457/a*10^-14*b+ 127/a*10^-14*c+ 330/a*10^-14*d+ 255/a*10^-27*e], 10^30+[1+ 765/a*10^-14*b+ 383/a*10^-14*c+ 595/a*10^-14*d+ 380/a*10^-27*e], 10^30+[1+ 101/a*10^-14*b+ 266/a*10^-14*c+ 797/a*10^-14*d+ 428/a*10^-27*e], 10^30+[1+ 135/a*10^-14*b+ 354/a*10^-14*c+ 106/a*10^-14*d+ 586/a*10^-27*e]] then Add(k1,[Int(y1),Int(b),Int(c),Int(d),Int(e)]); fi; od; od; od; od; od; k1; Gap cannot give me the value of k1. How do I overcome this problem. Thanks sincerely, maa ____________________________________________________________________________________ 8:00? 8:25? 8:40? Find a flick in no time with the Yahoo! Search movie showtime shortcut. http://tools.search.yahoo.com/shortcuts/#news From wdjoyner at gmail.com Wed Apr 11 18:19:35 2007 From: wdjoyner at gmail.com (David Joyner) Date: Wed Apr 11 18:21:19 2007 Subject: [GAP Forum] Need help: Solution to a simultaneous equation In-Reply-To: <20070411103112.84948.qmail@web53312.mail.re2.yahoo.com> References: <20070411103112.84948.qmail@web53312.mail.re2.yahoo.com> Message-ID: <8cf963450704111019j50cb201dt5189829c67ce936c@mail.gmail.com> On 4/11/07, muniru asiru wrote: > > > a:=100;; > y1=1+ 401/a*10^-14*b+ 118/a*10^-14*c+ > 260/a*10^-14*d+ 331/a*10^-27*e > y1=1+ 457/a*10^-14*b+ 127/a*10^-14*c+ > 330/a*10^-14*d+ 255/a*10^-27*e > y1=1+ 765/a*10^-14*b+ 383/a*10^-14*c+ > 595/a*10^-14*d+ 380/a*10^-27*e > y1=1+ 101/a*10^-14*b+ 266/a*10^-14*c+ > 797/a*10^-14*d+ 428/a*10^-27*e > y1=1+ 135/a*10^-14*b+ 354/a*10^-14*c+ > 106/a*10^-14*d+ 586/a*10^-27*e > > > I need help. I like to solve the above simultaneous > equations to determine the > values y1, b,c,d, and e. I can't tell what you mean: in 401/a*10^-14*b, is b in the numerator? If so, solve the 5x5 system in y1,b,c,d,e. You can use TriangulizeMat on the augmented matrix associated to the system. For example, gap> M:=[[1,2,3,4],[1,2,1,2],[1,1,0,0]]; [ [ 1, 2, 3, 4 ], [ 1, 2, 1, 2 ], [ 1, 1, 0, 0 ] ] gap> TriangulizeMat(M); gap> M; [ [ 1, 0, 0, -1 ], [ 0, 1, 0, 1 ], [ 0, 0, 1, 1 ] ] says the soln to x+2y+3z=4, x+2y+z=2, x+y=0 is x=-1, y=1, z=1. Or, you can write the system as a matrix equation Ax=b and compute A^(-1)*b. If the system is non-linear, you might try clearling denominators and using Grobner bases, http://www.gap-system.org/Manuals/doc/htm/ref/CHAP064.htm#SSEC017.1 You may need to use Maxima instead (which has function for solving non-linear systems) but some comments on your code are given below: > I can write some simple codes in Gap, but this doesn't > appear to help. > > I wiil be grateful if you will help me out. My > program is shown below. > > k0:=[-2^25,(-2^25-1)..2^25];; a:=100;; > k1:=[];; > for y1 in k0 do for b in k0 do for c in k0 do for d in > k0 do for e in k0 do if > [[y1],[y1],[y1],[y1],[y1]]=[ > 10^30*[1+ 401/a*10^-14*b+ 118/a*10^-14*c+ > 260/a*10^-14*d+ 331/a*10^-27*e], > 10^30+[1+ 457/a*10^-14*b+ 127/a*10^-14*c+ > 330/a*10^-14*d+ 255/a*10^-27*e], > 10^30+[1+ 765/a*10^-14*b+ 383/a*10^-14*c+ > 595/a*10^-14*d+ 380/a*10^-27*e], > 10^30+[1+ 101/a*10^-14*b+ 266/a*10^-14*c+ > 797/a*10^-14*d+ 428/a*10^-27*e], > 10^30+[1+ 135/a*10^-14*b+ 354/a*10^-14*c+ > 106/a*10^-14*d+ 586/a*10^-27*e]] > then Add(k1,[Int(y1),Int(b),Int(c),Int(d),Int(e)]); > fi; od; od; od; od; od; k1; > > Gap cannot give me the value of k1. How do I overcome > this problem. 1) the range k0 is actually an empty list: gap> k0:=[-2^25,(-2^25-1)..2^25]; [ ] so it is not surprising that this code finishes with an empty list in a moment. Using single semicolon instead of double one would help to spot this bug. 2) Even if you fixed the range of k0, you should realize that such approach will search only for INTEGER solutions within a certain range, so, roughly speaking, it does not guarantee anything. 3) Also you are taking y1, b,c,d, and e from the range k0 (so they already are integers) but then applies Int to them. First, this would not change them. Second, GAP can operate with rationals with arbitrary large numerators and denominators, so applying Int in case of rational solutions would be their very rough approximation. 4) If you are going to loop over big lists, then 10^30 in the numerator and a=100 multiplied by 10^(-something) in the denominator may be reduced to avoid additional operations repeated each time inside the loop. There might be more remarks regarding the code, but the four remarks above seems to be the most informative ones that you can use to further your work with GAP. We refer to the GAP Tutorial (http://www.gap-system.org/Manuals/doc/htm/tut/chapters.htm) as a source of examples teaching good programming style in GAP. - David Joyner and Alexander Konovalov > > Thanks > > > sincerely, > maa > > > > ____________________________________________________________________________________ > 8:00? 8:25? 8:40? Find a flick in no time > with the Yahoo! Search movie showtime shortcut. > http://tools.search.yahoo.com/shortcuts/#news > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From hulpke at math.colostate.edu Fri Apr 13 05:14:19 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Fri Apr 13 05:15:08 2007 Subject: [GAP Forum] transcendental field extensions In-Reply-To: <460E917A.3060606@gmail.com> References: <460E917A.3060606@gmail.com> Message-ID: <67C89278-86E6-467B-BFCF-871A32823403@math.colostate.edu> Dear GAP Forum, On Mar 31, 2007, at 3/31/07 10:51, Pasha Zusmanovich wrote: > Dear people, > > I have two related questions: > > 1. Is it possible to define transcendental field extensions in GAP? > 2. Is it possible to make calculations in algebras with parametric > coefficients? To my knowledge the answer is no. Let me briefly add what is there and what is missing: GAP implements arithmetic for the quotient field of the polynomial ring in countable many indeterminates. However it does not really implement the field itself as an object, thus it is not possible to use for example vector space functionality for this. What is missing is part simple-minded code that defines these objects. However I fear that there will be secondary functionality (e.g. basis over a prime field) that is missing as well, thus little functionality would be available. Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From alexander.konovalov at gmail.com Wed Apr 18 10:33:12 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Wed Apr 18 10:34:03 2007 Subject: [GAP Forum] GRAPE In-Reply-To: <685108.99277.qm@web35707.mail.mud.yahoo.com> References: <685108.99277.qm@web35707.mail.mud.yahoo.com> Message-ID: <8F1CE130-9250-4E16-BD83-F052E352F267@gmail.com> Dear Alireza, On 02 Apr 2007, at 17:26, Alireza Abdollahi wrote: > Dears > > I would like to know whether anyone has implemented a > program under GAP/GRAPE to > > 1) calculate the Cromatic Number of a graph? Apparently there is no implementation of this, though this might be feasible. > 2) produce all connected Cayley graphs of a finite > group, i.e., given a finite group G, find all > generating sets S of G and then construct the Cayley > graph of G with respect to S, for all S. You can construct the Caley graph of G for a specified generating set S with the GRAPE package or with the HAP package. But enumerating ALL generating sets for a finite group would be hard, so if you will write such a program, the order of the groups that it will be capable to deal with will be limited. Best wishes, Alexander > For (1) in GRAPE, there is a function > (VertexColouring) which finds only a *proper vertex > colouring* for a given graph. The size of this proper > vertex colouring is not necessarily equal to the > cromtic number. > > Thanks in advance for any help. > > All the Best > Alireza Abdollahi > >> I used the VertexColouring function in GRAPE and (I >> think) I have no >> problem with it; but I would like to know whether it >> is possible to get >> the chromatic number of a graph. >> >> In particular in the following example I think the >> function gives only >> a *proper vertex colouring* not a one with the >> mininum number of >> colours. >> >> D:=Group([ (1,2,4,7,5,6,3), (2,4,5)(3,6,7), (8,9) ]) >> > C:=CayleyGraph(D,[(8,9)(1,2,4,7,5,6,3),(2,4,5)(3,6,7)]); >> eC:=EdgeGraph(C);; >> VertexColouring(eC); >> [ 1, 3, 2, 4, 1, 3, 4, 5, 2, 3, 5, 2, 3, 4, 4, 1, 5, >> 1, 3, 1, 2, 3, 1, 4, 2, >> 5, 4, 2, 4, 5, 4, 3, 4, 3, 3, 2, 4, 3, 2, 1, 1, >> 2, 1, 2, 5, 4, 4, 5, 2, 3, >> 5, 2, 3, 4, 1, 4, 1, 4, 2, 5, 1, 2, 1, 2, 3, 3, >> 1, 4, 5, 4, 3, 1, 5, 3, 1, >> 4, 2, 2, 3, 2, 3, 2, 1, 1 ] >> >> >> I think, there is a proper vertex colouring >> for the graph "eC" with 4 colours. Can I check this >> claim by GRAPE? >> Is there a function in GRAPE to compute the >> chromatic number? >> >> Thanks in advance. >> >> All the Best >> >> Alireza Abdollahi >> >> > ---------------------------------------------------------------- >> University of Isfahan (http://www.ui.ac.ir) > > Alireza Abdollahi > Department of Mathematics > University of Isfahan, > Isfahan 81746-73441,Iran > e-mail: abdollahi@member.ams.org > a.abdollahi@math.ui.ac.ir > URL: http://sci.ui.ac.ir/math/New/abdollahi.htm From alexander.konovalov at gmail.com Fri Apr 20 11:23:03 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Fri Apr 20 11:24:27 2007 Subject: [GAP Forum] spin group, finite subgroups In-Reply-To: <45F7B46D.4090302@math.univ.gda.pl> References: <45F7B46D.4090302@math.univ.gda.pl> Message-ID: <3EEC89D6-94D6-435C-9337-E16EE20F977A@gmail.com> Dear Bartosz, currently there is no immediate function in GAP to construct the Clifford algebra. If I understood correctly what are you going to do, that maybe the first step should be to find out how to do this. I think you should be able to construct it using the AlgebraByStructureConstants function, see http://www.gap-system.org/Manuals/doc/htm/ref/ CHAP060.htm#SSEC003.5 For example, this is how the QuaternionAlgebra function works, and quaternion algebras could be regarded as a special case of Clifford algebras. You can have a look on the function QuaternionAlgebra in gap4r4/lib/algsc.gi to get an idea how to write your code. When this will work, you should be able to generate subgroups by elements of this algebra, for example: gap> R:=QuaternionAlgebra(Rationals,1,1); gap> gens:=GeneratorsOfAlgebra(R); [ e, i, j, k ] gap> G:=Group(gens); #I default `IsGeneratorsOfMagmaWithInverses' method returns `true' for [ e, i, j, k ] gap> IdGroup(G); [ 8, 3 ] Also there is an undeposited implementation relevant to quaternion algebras over the Rationals: http://www.geocities.com/assafwool/Quat/Quat.html. Best wishes, Alexander On 14 Mar 2007, at 08:38, Bartosz Putrycz wrote: > Dear Forum, > > I need to have some way to put/represent in GAP finite subgroups of > the > spin group, > given by generators in Clifford algebra, > or given by their image in canonical epimorphism onto SO(n) > For example: > 1) > maped onto C2^2(diagonal +-1) in SO(3) > > 2) > <1/sqrt{2} (1 - e_3 e_4), 1/sqrt{2} e_1(e_3 - e_4)> -> D8 in SO(4) > > Of course I could analyze these groups by myself, first is Q8, > but I have more examples and I want to analyze them automatically > by GAP. > > > Regards, > Bartosz Putrycz. From mjoao at univ-ab.pt Tue Apr 24 13:14:36 2007 From: mjoao at univ-ab.pt (=?iso-8859-1?B?Sm/jbyBBcmH6am8=?=) Date: Tue Apr 24 13:22:09 2007 Subject: [GAP Forum] question about translations Message-ID: <001c01c7866a$23d5ad90$2e0aa8c0@jarajo> I have a matrix of transformations: [[Transformation([1,2]),Transformation([2,2])], [Transformation([2,2]),Transformation([2,2])], [Transformation([1,2]),Transformation([2,1])]] and I want to replace [Transformation([1,2]) by 1; [Transformation([2,2]) by 2; [Transformation([2,1]) by 3 obtaining the matrix [[1,2], [2,2], [1,3]]. The original matrix might be very big; so is there an automatic way of doing this? I would be very grateful if someone could help me with this. Joao From rm43 at evansville.edu Tue Apr 24 13:54:02 2007 From: rm43 at evansville.edu (Robert F. Morse) Date: Tue Apr 24 13:54:25 2007 Subject: [GAP Forum] question about translations In-Reply-To: <001c01c7866a$23d5ad90$2e0aa8c0@jarajo> References: <001c01c7866a$23d5ad90$2e0aa8c0@jarajo> Message-ID: <462DFDEA.9080803@evansville.edu> Jo?o Ara?jo wrote: > I have a matrix of transformations: > [[Transformation([1,2]),Transformation([2,2])], > [Transformation([2,2]),Transformation([2,2])], > [Transformation([1,2]),Transformation([2,1])]] > > and I want to replace > > [Transformation([1,2]) by 1; > [Transformation([2,2]) by 2; > [Transformation([2,1]) by 3 > > obtaining the matrix > > [[1,2], > [2,2], > [1,3]]. > Dear Jo?o, You need a to create some sort of mapping from the transformations to the integers. You can do this directly as follows: gap> d := Domain([ Transformation( [ 1, 2 ] ),Transformation( [ 2, 2 ] ) ,Transformation( [ 2, 1 ] )]); gap> d2 := Domain([1,2,3]); gap> tups := List([1..3], i->Tuple([AsList(d)[i],AsList(d2)[i]])); [ Tuple( [ Transformation( [ 1, 2 ] ), 1 ] ), Tuple( [ Transformation( [ 2, 2 ] ), 2 ] ), Tuple( [ Transformation( [ 2, 1 ] ), 3 ] ) ] gap> map := GeneralMappingByElements(d,d2,tups); -> > gap> IsBijective(map); true Then you can just use the map to obtain the matrix entries such as gap> Image(map,Transformation([1,2])); 1 Another way is to create this map indirectly by putting the transformations in a list and asking for their position such as gap> lst := [ Transformation( [ 1, 2 ] ), Transformation( [ 2, 2 ] ), Transformation( [ 2, 1 ] ) ]; [ Transformation( [ 1, 2 ] ), Transformation( [ 2, 2 ] ), Transformation( [ 2, 1 ] ) ] gap> t := Transformation([1,2]); Transformation( [ 1, 2 ] ) gap> Position(lst,t); 1 Hope this helps. Robert F. Morse From hulpke at math.colostate.edu Tue Apr 24 16:28:56 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Tue Apr 24 16:29:19 2007 Subject: [GAP Forum] question about translations In-Reply-To: <001c01c7866a$23d5ad90$2e0aa8c0@jarajo> References: <001c01c7866a$23d5ad90$2e0aa8c0@jarajo> Message-ID: <54A051BB-F32C-441B-90DF-D7750A24EB3E@math.colostate.edu> Dear Forum, > I have a matrix of transformations: > [[Transformation([1,2]),Transformation([2,2])], > [Transformation([2,2]),Transformation([2,2])], > [Transformation([1,2]),Transformation([2,1])]] > > and I want to replace > > [Transformation([1,2]) by 1; > [Transformation([2,2]) by 2; > [Transformation([2,1]) by 3 A rather simple way is to use `Position': t:=[Transformation([1,2]),Transformation([2,2]),Transformation([2,1])]; matn:=List(mat,i->List(i,j->Position(t,j))); Best, Alexander Hulpke From hetheo01 at student.uwa.edu.au Thu Apr 26 02:26:48 2007 From: hetheo01 at student.uwa.edu.au (hetheo01@student.uwa.edu.au) Date: Thu Apr 26 09:56:10 2007 Subject: [GAP Forum] Creating an Orbit Function Message-ID: <20070426092648.ppeet6nks80kg8kg@webmail-2.ucs.uwa.edu.au> Hi I am trying to complete a research project in which I need to define my own function to compute the orbit of a point given a sequence of permutations. I am aware that GAP has a predetermined function for computing the orbit of a point, however the requirements of this project require me to define all the functions by myself. Can you tell me how the "Orbit" function works (can I access the code from GAP to simplify it), or can you get me started on how to program my function. Thanks Owen From tim at timesup.org Thu Apr 26 10:44:24 2007 From: tim at timesup.org (Tim Boykett) Date: Thu Apr 26 11:53:38 2007 Subject: [GAP Forum] Creating an Orbit Function In-Reply-To: <20070426092648.ppeet6nks80kg8kg@webmail-2.ucs.uwa.edu.au> References: <20070426092648.ppeet6nks80kg8kg@webmail-2.ucs.uwa.edu.au> Message-ID: <5EF9A82B-94F6-4527-BF38-DA5F0CE4D14E@timesup.org> Hello Owen, the technique that I used is demonstrated below. One created an action (this can be quite complex) taking a group element and an object in the set to another element in the set. I have done ugly things with strange group actions on ordered pairs of sets, or sets of ordered pairs of sets, etc. The following code demonstrates this with: - creating the action congAction - creating the group group - finding the orbits of the group group on the Symmetric Group gap> congAction := function(x,g) return x^g; end; function( x, g ) ... end gap> group := Group((1,2,3),(1,4)); Group([ (1,2,3), (1,4) ]) gap> orbs := Orbits(group,SymmetricGroup(4),congAction); [ [ () ], [ (3,4), (1,4), (1,3), (2,4), (1,2), (2,3) ], [ (2,3,4), (1,4,3), (1,2,3), (1,2,4), (1,3,4), (1,4,2), (2,4,3), (1,3,2) ], [ (1,2)(3,4), (1,4)(2,3), (1,3)(2,4) ], [ (1,2,3,4), (1,4,2,3), (1,2,4,3), (1,3,4,2), (1,4,3,2), (1,3,2,4) ] ] gap> I hope this makes sense. If you need to see how GAP does it, you can open the gap code - or maybe you cannot any more. I cannot find the implementation in the GAP files right now. Perhaps it is written in C now... Cheers, tim On 26/04/2007, at 3:26 AM, hetheo01@student.uwa.edu.au wrote: > Hi > > I am trying to complete a research project in which I need to > define my own function to compute the orbit of a point given a > sequence of permutations. I am aware that GAP has a predetermined > function for computing the orbit of a point, however the > requirements of this project require me to define all the functions > by myself. > > Can you tell me how the "Orbit" function works (can I access the > code from GAP to simplify it), or can you get me started on how to > program my function. > > Thanks > > Owen > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From jhaqen at yahoo.co.uk Fri Apr 27 01:40:13 2007 From: jhaqen at yahoo.co.uk (=?iso-8859-1?Q?Breand=E1n_Mac_Parland?=) Date: Fri Apr 27 00:44:03 2007 Subject: [GAP Forum] Diagrams Message-ID: <001601c78864$9e73ba00$6600a8c0@c1f7r8> Hello, I was wondering if there is a way to output a tree diagram from GAP. Say you have a group G, then below this you could have output from MaximalSubgroups(G), then you could have the output to IsSolvable() below each maximal subgroup, for example, all connected in a diagram. Thanks, Breand?n. From dan_lanke at yahoo.com Fri Apr 27 04:11:39 2007 From: dan_lanke at yahoo.com (Dan Lanke) Date: Fri Apr 27 04:13:04 2007 Subject: [GAP Forum] Normal closure of a nilpotent subgroup Message-ID: <945425.15512.qm@web63312.mail.re1.yahoo.com> Dear GAP Forum, I am trying to find an example of a finite group G with a subnormal nilpotent subgroup H such that the normal closure of H in G is not nilpotent. I am not sure if such an example exists. I used GAP to see that no such example exists for |G| < 190. I run into memory problems with the computer for larger groups. Any suggestions please? Thanks, DL --------------------------------- Ahhh...imagining that irresistible "new car" smell? Check outnew cars at Yahoo! Autos. From jrh_email-gap at yahoo.com Fri Apr 27 06:37:55 2007 From: jrh_email-gap at yahoo.com (Jim Heckman) Date: Fri Apr 27 06:38:34 2007 Subject: [GAP Forum] Normal closure of a nilpotent subgroup Message-ID: <200704270538.l3R5cF3o003848@gap-system.org> On 26-Apr-2007, Dan Lanke wrote in message <945425.15512.qm@web63312.mail.re1.yahoo.com>: > Dear GAP Forum, > > I am trying to find an example of a finite group G with a subnormal > nilpotent subgroup H such that the normal closure of H in G is not > nilpotent. I am not > sure if such an example exists. I used GAP to see that no such example > exists for |G| < 190. I run into memory problems with the computer for > larger groups. Any suggestions please? > > Thanks, > DL Surely you've left out some condition. As written, wouldn't G = S_3, H = A_3 qualify? Perhaps you also require H to be non-normal? -- Jim Heckman From A.Camina at uea.ac.uk Fri Apr 27 08:44:39 2007 From: A.Camina at uea.ac.uk (Alan Camina) Date: Fri Apr 27 08:45:03 2007 Subject: [GAP Forum] Normal closure of a nilpotent subgroup In-Reply-To: <945425.15512.qm@web63312.mail.re1.yahoo.com> References: <945425.15512.qm@web63312.mail.re1.yahoo.com> Message-ID: Dera Dan The answer is that the normal closure of a subnormal nilpotent subgroup is nilpotent. Essentially is is Fitting's Theorem which says that the product of two nilpotent normal subgroups is nilpotent. Consider the chain K=K_1 Dear GAP Forum, > > I am trying to find an example of a finite group G with a subnormal nilpotent subgroup H such that the normal closure of H in G is not nilpotent. I am not > sure if such an example exists. I used GAP to see that no such example > exists for |G| < 190. I run into memory problems with the computer for > larger groups. Any suggestions please? > > Thanks, > DL > > > --------------------------------- > Ahhh...imagining that irresistible "new car" smell? > Check outnew cars at Yahoo! Autos. > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From reza_orfi at yahoo.com Fri Apr 27 21:15:17 2007 From: reza_orfi at yahoo.com (Reza Orfi) Date: Fri Apr 27 21:15:57 2007 Subject: [GAP Forum] 2 -groups of order 2^10 Message-ID: <405432.94294.qm@web57707.mail.re3.yahoo.com> Dear GAP Forum I need the complete list of 2-groups of order 2^10 with trivial Schur multiplier generated by three elements(not fewer). I would be very grateful if someone could help me with this. . Best regards. Reza Orfi --------------------------------- Ahhh...imagining that irresistible "new car" smell? Check outnew cars at Yahoo! Autos. From muntyan at tamu.edu Sat Apr 28 17:43:12 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Sat Apr 28 17:44:19 2007 Subject: [GAP Forum] Packages and global functions Message-ID: <463379A0.1000208@tamu.edu> Dear GAP people, We are writing a package which deals with automata groups (rooted tree automorphisms), and I just tried what happens if I load 'automata' package (the official one). There are name clashes, and all of them are caused by the fact that the automata package doesn't use operations, only global functions. So I have couple of questions. Should packages use operations as much as possible? It sounds sensible since methods can be overridden as one wishes, and operations with the same name can be declared for different types safely. It doesn't solve the problem with category names of course, but that's easier to deal with - a category with obscure name is fine as long as user doesn't have to type it in (unlike actual methods which are going to be used by a user). And related to this is real question, about namespaces. Are there some plans to implement something like that in GAP? Some method to separate names in a package would be awesome. At the moment there are about million global names, and you never know what your package will conflict with. Thank you, Yevgen From laurent.bartholdi at gmail.com Sat Apr 28 19:35:02 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Sat Apr 28 19:35:35 2007 Subject: [GAP Forum] Packages and global functions In-Reply-To: <463379A0.1000208@tamu.edu> References: <463379A0.1000208@tamu.edu> Message-ID: <1ff637850704281135y7cf91a8en1c4b9aeafaa111d3@mail.gmail.com> Dear Yevgen, dear forum, I have written a package that deals with 'automata groups', called "FR" (available on my webpage) and can explain a few of the design decisions I took. Either the remarks below will be helpful to you, or someone from the forum will correct me. > Should packages use operations as much as possible? It sounds > sensible since methods can be overridden as one wishes, and > operations with the same name can be declared for different > types safely. It doesn't solve the problem with category names > of course, but that's easier to deal with - a category with obscure > name is fine as long as user doesn't have to type it in (unlike > actual methods which are going to be used by a user). It seems that too much overloading causes performance loss. Therefore, it's good practice, if you know in advance which method will be used, to call the right one immediately. Therefore, e.g., automata have a 'Degree'. I have installed a method called 'DegreeAutomaton', which is used inside my code. For convenience of the user, I have also overloaded the general 'Degree' method. The idea is that a method lookup is inexpensive for a user, but may be costly within a subroutine. > > And related to this is real question, about namespaces. Are there > some plans to implement something like that in GAP? Some > method to separate names in a package would be awesome. > At the moment there are about million global names, and you > never know what your package will conflict with. I have created a single global variable 'FR_LOCAL', which is a record. this record contains all the local functions and variables of my subroutines. Best regards, Laurent -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From muntyan at tamu.edu Sat Apr 28 23:37:05 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Sat Apr 28 23:37:57 2007 Subject: [GAP Forum] Packages and global functions In-Reply-To: <1ff637850704281135y7cf91a8en1c4b9aeafaa111d3@mail.gmail.com> References: <463379A0.1000208@tamu.edu> <1ff637850704281135y7cf91a8en1c4b9aeafaa111d3@mail.gmail.com> Message-ID: <4633CC91.40202@tamu.edu> Laurent Bartholdi wrote: > Dear Yevgen, dear forum, > > I have written a package that deals with 'automata groups', called > "FR" (available on my webpage Last time I tried it wasn't available. There was a link named something like "frautomata.tar.gz" which you clicked and it said something like "email me if you actually want it" (wording is not precise). > ) and can explain a few of the design > decisions I took. Either the remarks below will be helpful to you, or > someone from the forum will correct me. > >> Should packages use operations as much as possible? It sounds >> sensible since methods can be overridden as one wishes, and >> operations with the same name can be declared for different >> types safely. It doesn't solve the problem with category names >> of course, but that's easier to deal with - a category with obscure >> name is fine as long as user doesn't have to type it in (unlike >> actual methods which are going to be used by a user). > > It seems that too much overloading causes performance loss. Therefore, > it's good practice, if you know in advance which method will be used, > to call the right one immediately. I actually have never had problems with this. Method lookup is generally lightning fast, and I haven't seen anything in GAP working slowly because of overloading. If you multiply something million times then perhaps it's faster to use some MultiplyIt function than multiplication operator; but then if you multiply something million times you probably want to avoid multiplication completely. In any case it's a separate problem. I do believe slowdown may be caused by overloading, i.e. blind "make everything operations" is not a sensible approach. But, just as you say below, if something needs to be fast, it can be called appropriately and used internally. The public API is what causes name clashes, and that should use operations more. > Therefore, e.g., automata have a > 'Degree'. I have installed a method called 'DegreeAutomaton', which is > used inside my code. For convenience of the user, I have also > overloaded the general 'Degree' method. The idea is that a method > lookup is inexpensive for a user, but may be costly within a > subroutine. > >> >> And related to this is real question, about namespaces. Are there >> some plans to implement something like that in GAP? Some >> method to separate names in a package would be awesome. >> At the moment there are about million global names, and you >> never know what your package will conflict with. > > I have created a single global variable 'FR_LOCAL', which is a record. > this record contains all the local functions and variables of my > subroutines. This approach is very inconvenient, it makes code uglier, and you lose completion in GAP (I do use such a thing for various things indeed). Still, it doesn't help at all for public interface: you have to create categories in global namespace (not too bad, since you can use obscure names), and public functions have to be in global namespace, which is a real problem, since names should be nice. E.g. 'automata' package grabs lot of nice names. Problems with different versions of GAP are a normal thing - new version brings new problems. It's not very hard problems, usually easy to solve (== rename what needs to be renamed), but they happen (naturally) at bad moments, when user gets the package and starts GAP. I am currently thinking what I like more: using prefixes like 'AG' everywhere or ignoring the problem completely. The latter isn't going to work nicely, but the former is ugly. Not sure what I am asking for here, but anyway, exchanging ideas is never bad :) Best regards, Yevgen From wdjoyner at gmail.com Sun Apr 29 04:21:00 2007 From: wdjoyner at gmail.com (David Joyner) Date: Sun Apr 29 02:25:56 2007 Subject: [GAP Forum] Packages and global functions In-Reply-To: <4633CC91.40202@tamu.edu> References: <463379A0.1000208@tamu.edu> <1ff637850704281135y7cf91a8en1c4b9aeafaa111d3@mail.gmail.com> <4633CC91.40202@tamu.edu> Message-ID: <46340F1C.1090804@gmail.com> Yevgen Muntyan wrote: > > > I am currently thinking what I like more: using prefixes like 'AG' > everywhere > or ignoring the problem completely. The latter isn't going to work nicely, > but the former is ugly. Not sure what I am asking for here, but anyway, > exchanging ideas is never bad :) Hi Yevgen! If memory serves, the "ugly" former way you described is more-or-less in line with the recommended policy of GAP. I forgot who wrote the email (Steve Linton I think?) or when (in the past year I think) but I think the namespace issue has been discussed at one point on one of the GAP lists by someone. I know this is next to useless information but perhaps someone else who remembers better than I can fill in more details. - David > > Best regards, > Yevgen > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From r_n_tsai at yahoo.com Mon Apr 30 20:00:55 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Mon Apr 30 20:02:11 2007 Subject: [GAP Forum] tensor product of lie algebra representations Message-ID: <124864.1392.qm@web34412.mail.mud.yahoo.com> Dear gap-forum, I have question regarding tensor products of representations of semisimple lie algebra. It's easier to setup the question with an example : # first define the Lie algebra A2 L := SimpleLieAlgebra("A",2,Rationals); # define V1 as module with highest weight [1,0]; (V1 is 3 dimensional) w1 := [1,0]; V1 := HighestWeightModule(L,w1); # define V2 as module with highest weight [0,1]; (V2 is 3 dimensional) w2 := [0,1]; V2 := HighestWeightModule(L,w2); # define V as tensor product of V1 and V2 (V is 9 dimensional) V := TensorProductOfAlgebraModules([V1,V2]); # GAP knows how V decomposes into irreducible modules : w := DecomposeTensorProduct(L,w1,w2); # this prints the decomposition, V = [1,1] (8 dimensional) + [0,0] (1 dimension) for i in [1..Length(w[1])] do Print(" weight=",w[1][i]," multiplicity=",w[2][i]," dimension=", DimensionOfHighestWeightModule(L,w[1][i]),"\n"); od; # define basis for V B := Basis(V); My question is the following : How would I get a basis for the irreducible constituents of V in terms of B. So for the example above, a basis for the 8 dimensional subspace and another for the 1 dimensional one. I hope I asked the question correctly and thanks for your help. Regards, R.N. --------------------------------- Ahhh...imagining that irresistible "new car" smell? Check outnew cars at Yahoo! Autos. From sal at cs.st-and.ac.uk Tue May 1 12:31:31 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Tue May 1 12:31:55 2007 Subject: [GAP Forum] Forum discussion on packages and global function names Message-ID: <20070501123131.0bdc3b96@caolila> Dear GAP Forum, Yevgen Muntyan's post and the discussion which follows raise the question of managing the global variable namespace as the number of packages in GAP grows. Some guidelines in this direction appear on the Web site at http://www.gap-system.org/Packages/Authors/variablenames.html. To answer specifically Yevgen's question: > Should packages use operations as much as possible? the answer, as explained on that page is "basically yes". Indeed, where appropriate, Attributes should even be preferred to Operations. In the ensuing discussion, there was some concern about performance costs of method selection. As someone else pointed out, this is very small. On my laptop (Pentium M 2.1 GHz) the cost of calling a one argument function that does nothing as a method of an operation is about 20ns more than calling it directly (about 100ns per call, vs about 80). Admittedly this is the ideal situation (since there are no other methods or calls to this operation, my method is sure to be first in the cache), but real life should get pretty close to this. GAP caches the last few sets of argument types with which an operation has been called and checks them first. Almost all operation calls are cache hits. Unless you have very clear evidence that it is a problem then, I would suggest that programming around the method selection system is likely to complicate your code without gaining you much performance. It can be helpful to also store your methods in global functions for debugging or profiling purposes, but in this case you should certainly either (a) use "non-obvious" names, or (b) remove these assignments from the released version of your package. I should say that there is one awkward exception to this generally good performance, namely when one of the arguments is a plain list with mutable entries. In this case determining its type must be repeated at every operation call, and can be expensive. We have some longer term plans to address this, but thy will involve significant changes and will take a while to work through. We have discussed the idea of introducing some version of namespaces into GAP, but nothing is currently planned. Steve Linton -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From alexander.konovalov at gmail.com Wed May 2 10:03:40 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Wed May 2 10:04:48 2007 Subject: [GAP Forum] Diagrams In-Reply-To: <001601c78864$9e73ba00$6600a8c0@c1f7r8> References: <001601c78864$9e73ba00$6600a8c0@c1f7r8> Message-ID: Dear Breand?n, in the UNIX environment (Linux, X11 under Mac OS, and may work also in Cygwin under Windows) you can use the XGAP package (http://www.gap-system.org/Packages/ xgap.html) to display the lattice of subgroups (all subgroups or with restrictions on some properties). Then you can right-click on vertices of the displayed graph to examine their properties. Also you can save the graphical output to the file, see http://ukrgap.exponenta.ru/ Examples/S4.pdf I have a page http://ukrgap.exponenta.ru/Examples/Lattice.htm which contains four screenshots of one of previous versions of XGAP. You can click on them to enlarge them up to 800x600 resolution to get an idea about capacities of the XGAP package. Best wishes, Alexander On 27 Apr 2007, at 01:40, Breand?n Mac Parland wrote: > Hello, > > I was wondering if there is a way to output a tree diagram from > GAP. Say you have a group G, then below this you could have output > from MaximalSubgroups(G), then you could have the output to > IsSolvable() below each maximal subgroup, for example, all > connected in a diagram. > > Thanks, > > Breand?n. From degraaf at science.unitn.it Thu May 3 00:37:16 2007 From: degraaf at science.unitn.it (degraaf@science.unitn.it) Date: Thu May 3 00:38:21 2007 Subject: [GAP Forum] tensor product of lie algebra representations In-Reply-To: <124864.1392.qm@web34412.mail.mud.yahoo.com> References: <124864.1392.qm@web34412.mail.mud.yahoo.com> Message-ID: <20070503013716.b57bt1ijw4c0s48g@www.unitn.it> Dear R.N. Tsai, You asked about decomposing a modulo over a semisimple Lie algebra: > How would I get a basis for the irreducible constituents of V in > terms of B. > In this case you can get the irreducible submodules by computing their highest weight vectors. Those are the vectors that are in the kernel of all positive root vectors. For example, we can do the following: gap> V1 := HighestWeightModule(L,[1,0]); <3-dimensional left-module over > gap> V2 := HighestWeightModule(L,[0,1]); <3-dimensional left-module over > gap> V:= TensorProductOfAlgebraModules( V1, V2 ); <9-dimensional left-module over > gap> x:= ChevalleyBasis(L)[1]; [ v.1, v.2, v.3 ] # x is a list containing the highest weight vectors. We compute their kernels: gap> nu:= List( x, y -> NullspaceMat( TransposedMat( MatrixOfAction( Basis(V), y ) ) ) );; gap> VV:= List( nu, b -> VectorSpace( Rationals, b ) ); [ , , ] # and their intersection: gap> hwv:=BasisVectors( Basis( Intersection( VV ) ) ); [ [ 1, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, -1, 0, -1, 0, 0 ] ] # Now we take the submodules generated by these vectors: gap> M:= List( hwv, v -> SubAlgebraModule( V, [ LinearCombination( Basis(V), v )] ) ); [ >, > ] gap> List( M, Dimension ); [ 8, 1 ] I hope this answers your question. Best wishes, Willem de Graaf From beick at tu-bs.de Thu May 3 08:58:06 2007 From: beick at tu-bs.de (Bettina Eick) Date: Thu May 3 08:58:31 2007 Subject: [GAP Forum] 2 -groups of order 2^10 In-Reply-To: <405432.94294.qm@web57707.mail.re3.yahoo.com> Message-ID: Dear GAP Forum, dear Reza Orfi, > I need the complete list of 2-groups of order 2^10 with > trivial Schur multiplier generated by three elements (not fewer). You could try to determine such a list with GAP. First, you could try to compute all 3-generator groups of order 2^10. For this purpose you have to loop over all 3-generator groups of order dividing 2^9 (these are available in the SmallGroups library) and compute their descendants of order 2^10 (the ANUPQ package contains a method for this purpose). Then, you could loop over your new list of 3-generator groups of order 2^10 and check which of them have trivial Schur multiplicator. (There is a function 'AbelianInvariantsSchurMultiplier' available for this purpose in GAP.) However, there is a caveat: both parts of this computation will probably be time- and space-consuming computations. So you may need serious resources to perform them. Perhaps you could cut down the number of 3-generator groups of order dividing 2^9 that you have to consider using theoretical arguments? Best wishes, Bettina From muntyan at tamu.edu Thu May 3 14:21:31 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Thu May 3 14:22:12 2007 Subject: [GAP Forum] Forum discussion on packages and global function names In-Reply-To: <20070501123131.0bdc3b96@caolila> References: <20070501123131.0bdc3b96@caolila> Message-ID: <4639E1DB.8070907@tamu.edu> Steve Linton wrote: > Dear GAP Forum, > > Yevgen Muntyan's post and the discussion which follows raise the question of > managing the global variable namespace as the number of packages in GAP grows. > > Some guidelines in this direction appear on the Web site at > http://www.gap-system.org/Packages/Authors/variablenames.html. > That's a nice link, indeed. And I haven't seen it until after I have sent this letter, even though that page is quite visible on the web page, and mentioned in the manual :) > To answer specifically Yevgen's question: > > >> Should packages use operations as much as possible? >> > > the answer, as explained on that page is "basically yes". Indeed, where > appropriate, Attributes should even be preferred to Operations. > Why should Attributes be preferred to Operations? Does it make something faster? We can have operation with the same name declared and defined for totally different objects, so the only difference between operation and attribute seems to be that attribute value is stored. Or is there something else? [snip] > I should say that there is one awkward exception to this generally good > performance, namely when one of the arguments is a plain list with mutable > entries. In this case determining its type must be repeated at every operation > call, and can be expensive. We have some longer term plans to address this, > but thy will involve significant changes and will take a while to work through. > Do you mean that it takes much time to distinguish between InstallMethod(Foobar, [IsList], ...) InstallMethod(Foobar, [IsList and IsSomeCollection], ...) or any operation which has a method installed for a list is affected? Thank you, Yevgen From sal at cs.st-and.ac.uk Thu May 3 14:46:30 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Thu May 3 14:47:47 2007 Subject: [GAP Forum] Forum discussion on packages and global function names In-Reply-To: <4639E1DB.8070907@tamu.edu> References: <20070501123131.0bdc3b96@caolila> <4639E1DB.8070907@tamu.edu> Message-ID: <20070503144630.1e6204bd@caolila> On Thu, 03 May 2007 08:21:31 -0500 Yevgen Muntyan wrote: > Why should Attributes be preferred to Operations? Does it make something > faster? We can have operation with the same name declared and defined > for totally different objects, so the only difference between operation and > attribute seems to be that attribute value is stored. Or is there something > else? > The reason is generality. If you declare something as an Attribute and never call it for any Attribute-storing object, then nothing is lost. But if you declare it to be an Operation, and someone comes along later and wants to use it for Attribute-storing objects, they will not be able to take advantage of the automatic storing and reuse of results. If you have an Operation which takes only one argument and is not defined to have any side-effects, then it should be declared as an Attribute unless you have a strong reason not too. > > [snip] > > I should say that there is one awkward exception to this generally good > > performance, namely when one of the arguments is a plain list with mutable > > entries. In this case determining its type must be repeated at every operation > > call, and can be expensive. We have some longer term plans to address this, > > but thy will involve significant changes and will take a while to work through. > > > Do you mean that it takes much time to distinguish between > > InstallMethod(Foobar, [IsList], ...) > InstallMethod(Foobar, [IsList and IsSomeCollection], ...) > > or any operation which has a method installed for a list is affected? > It has nothing to do with the Operation or the methods installed for it. Whenever an Operation is called, the types of each of the arguments is determined. Most of the time this is constant time, or, if significant work is involved, the results of the work are stored so that it will only need to be done once. For lists with mutable entries, however (not just mutable lists, but lists at least one of whose entries is a mutable object), this information cannot safely be stored, and so must be checked each time, and this can be expensive. Steve -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From muntyan at tamu.edu Thu May 3 16:31:09 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Thu May 3 16:32:16 2007 Subject: [GAP Forum] Forum discussion on packages and global function names In-Reply-To: <20070503144630.1e6204bd@caolila> References: <20070501123131.0bdc3b96@caolila> <4639E1DB.8070907@tamu.edu> <20070503144630.1e6204bd@caolila> Message-ID: <463A003D.90208@tamu.edu> Steve Linton wrote: > On Thu, 03 May 2007 08:21:31 -0500 > Yevgen Muntyan wrote: > > > >> Why should Attributes be preferred to Operations? Does it make something >> faster? We can have operation with the same name declared and defined >> for totally different objects, so the only difference between operation and >> attribute seems to be that attribute value is stored. Or is there something >> else? >> >> > > The reason is generality. If you declare something as an Attribute and never > call it for any Attribute-storing object, then nothing is lost. But if you > declare it to be an Operation, and someone comes along later and wants to use > it for Attribute-storing objects, they will not be able to take advantage of > the automatic storing and reuse of results. > Sorry, I don't quite understand this. Suppose we have two categories IsFoo and IsBar (not related at all), and the code: DeclareOperation("Something", [IsFoo]); # and elsewhere DeclareAttribute("Something", IsBar); Then Something(bar) will always invoke the appropriate method without storing the result? What happens if "Something" is declared as an attribute for two different types? (This is the question, what happens if you use the name which is used in some other package or in the library, like Degree, a good name which makes sense in given context; the name clash problem). [snip] >> [snip] >> >>> I should say that there is one awkward exception to this generally good >>> performance, namely when one of the arguments is a plain list with mutable >>> entries. In this case determining its type must be repeated at every operation >>> call, and can be expensive. We have some longer term plans to address this, >>> but thy will involve significant changes and will take a while to work through. >>> >>> >> Do you mean that it takes much time to distinguish between >> >> InstallMethod(Foobar, [IsList], ...) >> InstallMethod(Foobar, [IsList and IsSomeCollection], ...) >> >> or any operation which has a method installed for a list is affected? >> >> > > It has nothing to do with the Operation or the methods installed for it. > Whenever an Operation is called, the types of each of the arguments is > determined. Most of the time this is constant time, or, if significant work is > involved, the results of the work are stored so that it will only need to be > done once. For lists with mutable entries, however (not just mutable lists, > but lists at least one of whose entries is a mutable object), this information > cannot safely be stored, and so must be checked each time, and this can be > expensive. > Got it. Thank you, Yevgen From laurent.bartholdi at gmail.com Sun May 6 14:42:37 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Sun May 6 14:42:57 2007 Subject: [GAP Forum] a remark on the documentation Message-ID: <1ff637850705060642v9284e4av173fb32d192421eb@mail.gmail.com> dear group, i just crossed the following in 'programming tutorial', 2.6-1 ---------------------- Another example would be the implementation of the conclusion that every finite group of prime power order is nilpotent. This could be done by installing an immediate method for the attribute IsNilpotentGroup with requirement IsGroup and Tester( Size ). This method would then check whether the size is a finite prime power, return true in this case and otherwise call TryNextMethod (2.4-1). But this requires factoring of an integer, which cannot be guaranteed to be very cheap, so one should not install this method as an immediate method. ---------------------- this strikes me as strange: one doesn't have to factor the order, one just must check whether it's a proper power, and if not whether it's prime. both tests are polynomial in number of digits, and probably blindingly fast for all groups that GAP can handle. therefore 1) i think the example in the documentation is a bit confusing; 2) this method should be implemented if it's not there already. best, laurent -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From tim at timesup.org Wed May 9 09:30:12 2007 From: tim at timesup.org (Tim Boykett) Date: Wed May 9 10:15:45 2007 Subject: [GAP Forum] Diagrams In-Reply-To: <001601c78864$9e73ba00$6600a8c0@c1f7r8> References: <001601c78864$9e73ba00$6600a8c0@c1f7r8> Message-ID: <47EF314D-F4A4-47B0-8580-E3AC3E305FD5@timesup.org> Hello, when I want to construct diagrams from GAP data, I usually get "outside the box" and use graphViz (see http://graphviz.org for details) by creating data files from GAP using Print commands, then using this data file in graphviz. For instance the following code creates the diagram of a graph that is described by a permutation: RandomRevDynamicsGraph := function(n) local i,p; p := Random(SymmetricGroup(n)); Print("digraph dynamics {\n"); for i in [1..n] do Print (i, " -> ", i^p,";\n"); od; Print("}\n"); end; The printed output in GAP can be copy-pasted into a textfile (use the suffix .dot as the graph layout language is called DOT). If you have access to a Mac OSX machine, there is a simple front end for GraphViz, otherwise you have to use the programs dot, neato and other layout programs on the command line to create e.g. postscript or jpeg output. e.g. dot -Tps permAut3.dot > permAut3.ps Of course most layouts are more complex, the DOT language allows nodes and edges to be labelled, there are various formatting algorithms, one can fix certain nodes and have graphViz automatically position the rest. The above example is meant to be simple example to "get you started" as they say in those DIY books. This is the way that I have been doing this, and I find it quite satisfactory. Best, Tim On 27/04/2007, at 2:40 AM, Breand?n Mac Parland wrote: > Hello, > > I was wondering if there is a way to output a tree diagram from > GAP. Say you have a group G, then below this you could have output > from MaximalSubgroups(G), then you could have the output to > IsSolvable() below each maximal subgroup, for example, all > connected in a diagram. > > Thanks, > > Breand?n. > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From wdjoyner at gmail.com Sat May 12 20:56:39 2007 From: wdjoyner at gmail.com (David Joyner) Date: Sat May 12 20:57:04 2007 Subject: [GAP Forum] Molien series in GAP Message-ID: <8cf963450705121256m72504075wbd1dc8921e60fa62@mail.gmail.com> Hi: With kind help from Laurent Bartholdi, here is the answer to a question I recently sent to the GAP Support about Molien series. Specifically, how is GAP's command MolienSeries for a permutation group related to the function M(x) = (1/|G|)\sum_{g\in G} det(1-x*g)^(-1) which some call the Molien series of G. This is answered in the case of permutation groups having a transitive action on a set X. A group G, given as a permutation group on n points, has a "natural" representation of dimension n, given by permutation matrices. The "usual" Molien series is the one associated to that representation. Character values then count fixed points of the corresponding permutations. You have to realize the function M(x) as the MolienSeries attached to the "natural" (or permutation) character of G. Here is an example of the syntax used to compute M(x) using GAP: gap> pi := NaturalCharacter( SymmetricGroup(3) ); Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 3, 1, 0 ] ) gap> ConstituentsOfCharacter( pi ); [ Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, 1, 1 ] ), Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 2, 0, -1 ] ) ] gap> irr:= Irr( SymmetricGroup( 3 ) ); [ Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, -1, 1 ] ), Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 2, 0, -1 ] ), Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, 1, 1 ] ) ] gap> MolienSeries( irr[2]+irr[3] ); ( 1 ) / ( (1-z^3)*(1-z^2)*(1-z) ) Indeed, a direct computation verifies that M(x) = 1 / ( (1-x^3)*(1-x^2)*(1-x) ) For groups other than the symmetric group, you may need to replace NaturalCharacter by PermutationCharacter. - David Joyner and Laurent Bartholdi From mckay at encs.concordia.ca Sun May 13 12:12:30 2007 From: mckay at encs.concordia.ca (MCKAY john) Date: Sun May 13 12:13:02 2007 Subject: [GAP Forum] Molien series in GAP In-Reply-To: <8cf963450705121256m72504075wbd1dc8921e60fa62@mail.gmail.com> References: <8cf963450705121256m72504075wbd1dc8921e60fa62@mail.gmail.com> Message-ID: My understanding is that GAP code has been written by (or under the supervision of) Prof. Pahlings at Aachen - for the generalized Molien series with denominator Chi[i](g^-1). Perhaps someone can shed more light on this? A good test example is the group of isometries of the Leech lattice (dim = 24, |G| = 8315553613086720000). Careful coding is needed for large groups. [For Molien series,see Slo7 in SLAG = Amer Math Monthly 84 (1977) pp 82-107.] John McKay On Sat, 12 May 2007, David Joyner wrote: > Hi: > > With kind help from Laurent Bartholdi, here is the answer to > a question I recently sent to the GAP Support about Molien series. > Specifically, how is GAP's command MolienSeries for a permutation group > related to the function > > M(x) = (1/|G|)\sum_{g\in G} det(1-x*g)^(-1) > > which some call the Molien series of G. > > This is answered in the case of permutation groups having a > transitive action on a set X. > > A group G, given as a permutation group on n points, has a "natural" > representation of dimension n, given by permutation matrices. The > "usual" Molien series is the one associated to that representation. > Character values then count fixed points of the corresponding > permutations. > > You have to realize the function M(x) as the MolienSeries > attached to the "natural" (or permutation) character of G. > Here is an example of the syntax used to compute M(x) using GAP: > > > gap> pi := NaturalCharacter( SymmetricGroup(3) ); > Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 3, 1, 0 ] ) > gap> ConstituentsOfCharacter( pi ); > [ Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, 1, 1 ] ), > Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 2, 0, -1 ] ) ] > gap> irr:= Irr( SymmetricGroup( 3 ) ); > [ Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, -1, 1 ] ), > Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 2, 0, -1 ] ), > Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 1, 1, 1 ] ) ] > gap> MolienSeries( irr[2]+irr[3] ); > ( 1 ) / ( (1-z^3)*(1-z^2)*(1-z) ) > > > Indeed, a direct computation verifies that > M(x) = 1 / ( (1-x^3)*(1-x^2)*(1-x) ) > > For groups other than the symmetric group, you may need to replace > NaturalCharacter by PermutationCharacter. > > - David Joyner and Laurent Bartholdi > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From edmund at mcs.st-and.ac.uk Mon May 14 14:24:27 2007 From: edmund at mcs.st-and.ac.uk (Edmund Robertson) Date: Mon May 14 14:26:52 2007 Subject: [GAP Forum] GAP package RadiRoot Message-ID: Dear GAP Forum, I announce, with great pleasure, that the RadiRoot package by Andreas Distler has been accepted as a refereed GAP package and is available for download from the GAP Web site. The following description of the functionality of the package is taken form that site. The RadiRoot package can compute and display an expression by radicals for the roots of a solvable, rational polynomial. Related to this it is possible to create the Galois group and the splitting field of a rational polynomial. The package is written for GAP version 4.4. It requires the package Alnuth and can therefore be used on a UNIX system only. Beside this the external programs 'LaTex' and 'xdvi' are needed. Edmund Roberson ---------------------------------------------------------------------- Professor E F Robertson Chairman GAP Council Centre for Interdisciplinary Research in Computational Algebra School of Mathematics and Statistics Mathematical Institute University of St Andrews St Andrews KY16 9SS Scotland Email: edmund@mcs.st-and.ac.uk Tel: +44 (0)1334 463743 Fax: +44 (0)1334 463748 ---------------------------------------------------------------------- From muntyan at tamu.edu Mon May 14 20:41:43 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Mon May 14 20:43:58 2007 Subject: [GAP Forum] GAP package RadiRoot In-Reply-To: References: Message-ID: <4648BB77.9080503@tamu.edu> Hello forum, Edmund Robertson wrote: > [snip] > The RadiRoot package can compute and display an expression by radicals > for the roots of a solvable, rational polynomial. Related to this it > is possible to create the Galois group and the splitting field of a > rational polynomial. The package is written for GAP version 4.4. It > requires the package Alnuth and can therefore be used on a UNIX system > only. Why is it UNIX only? I looked at Alnuth, it doesn't seem to be windows-only, and KANT seems to have windows binaries available. Are there some hidden dependencies? Best regards, Yevgen From ffantino at gmail.com Tue May 15 21:47:16 2007 From: ffantino at gmail.com (Fernando Fantino) Date: Tue May 15 21:47:51 2007 Subject: [GAP Forum] A question. Message-ID: <4d4d8b940705151347j2192810fib2740d1bfc1cb4a3@mail.gmail.com> Hello, Forum. I do the following, and the program give me an error. What happens? Thank you in advance for any help! Bets, Fernando. ######## Lehrstuhl D fuer Mathematik ### #### RWTH Aachen ## ## ## # ####### ######### ## # ## ## # ## ## # # ## # ## #### ## ## # # ## ##### ### ## ## ## ## ######### # ######### ####### # # ## Version 3 # ### Release 4.4 # ## # 18 Apr 97 # ## # ## # Alice Niemeyer, Werner Nickel, Martin Schoenert ## # Johannes Meier, Alex Wegner, Thomas Bischops ## # Frank Celler, Juergen Mnich, Udo Polis ### ## Thomas Breuer, Goetz Pfeiffer, Hans U. Besche ###### Volkmar Felsch, Heiko Theissen, Alexander Hulpke Ansgar Kaup, Akos Seress, Erzsebet Horvath Bettina Eick For help enter: ? gap> S10:=SymmetricGroup(10); Group( ( 1,10), ( 2,10), ( 3,10), ( 4,10), ( 5,10), ( 6,10), ( 7,10), ( 8,10), ( 9,10) ) gap> pi:=(1,2)(3,4)(5,6,7)(8,9,10); ( 1, 2)( 3, 4)( 5, 6, 7)( 8, 9,10) gap> Z:=Centralizer(S10,pi); Subgroup( Group( ( 1,10), ( 2,10), ( 3,10), ( 4,10), ( 5,10), ( 6,10), ( 7,10), ( 8,10), ( 9,10) ), [ ( 1, 2), ( 1, 3)( 2, 4), ( 3, 4), ( 5, 6, 7), ( 5, 8)( 6, 9)( 7,10), ( 8, 9,10) ] ) gap> Size(Z); 144 gap> nCCZ:=NumberConjugacyClasses(Z); 45 gap> tcZ:=CharTable(Z); #W Warning: Group has no name Error, Function: must be a function at return Z( p ^ d ) ^ i ... in fun( arg[1][i] ) called from List( [ 0 .. d - 1 ], function ( i ) ... end ) called from GF( prime ) called from DixonInit( G, opt ) called from arg[1].operations.CharTable( arg[1] ) called from ... brk> From hulpke at math.colostate.edu Tue May 15 22:34:23 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Tue May 15 22:35:00 2007 Subject: [GAP Forum] A question. In-Reply-To: <4d4d8b940705151347j2192810fib2740d1bfc1cb4a3@mail.gmail.com> References: <4d4d8b940705151347j2192810fib2740d1bfc1cb4a3@mail.gmail.com> Message-ID: <6EE01598-1172-4DD9-81F5-EAAD2A4D9B09@math.colostate.edu> Dear Fernando Fantino, > I do the following, and the program give me an error. > What happens? > gap> Z:=Centralizer(S10,pi); > Subgroup( Group( ( 1,10), ( 2,10), ( 3,10), ( 4,10), ( 5,10), ( 6,10), > ( 7,10), ( 8,10), ( 9,10) ), [ ( 1, 2), ( 1, 3)( 2, 4), ( 3, 4), > ( 5, 6, 7), > ( 5, 8)( 6, 9)( 7,10), ( 8, 9,10) ] ) In GAP 3 (which you're using) defining a variable Z will destroy the finite field functionality and lead to weird error messages as you're observing. simply call the center differently (e.g. call it Y or ZZ or z) and things will be fine. The same problem will arise when overwriting X or E. In GAP4 these variables are protected against overwriting, so the problem cannot arise. Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From ffantino at gmail.com Wed May 16 04:38:36 2007 From: ffantino at gmail.com (Fernando Fantino) Date: Wed May 16 04:38:57 2007 Subject: [GAP Forum] All is ok. Message-ID: <4d4d8b940705152038n36ed2f9bx74e83747a5fe7123@mail.gmail.com> Dear Forum, Thank you for the help. The problem was to use Z to call the centralizer. I can compute that character table in both system: GAP3 and GAP4. All is ok. Thank you very much. Best, Fernando. From Rudolf.Zlabinger at chello.at Fri May 18 23:39:03 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Fri May 18 23:39:47 2007 Subject: [GAP Forum] Generating group products including ZS products Message-ID: <005901c7999d$56188070$d5476d50@zlabinger> Dear Forum, At 29.12.2006 Professor Burkhard H?fling wrote about ZS Products: > Note that in both cases, it would be nearly impossible to tell if h > and k indeed satisfy the properties required by the definition of the > Zappa Szep product. > In particular, I don't think that it would be computationally > feasible to list all possible Zappa Szep product of two given groups, > except for ridiculously small examples. Now I developed a function GenerateGroupProducts that produces group products from two groups and two homomorphisms from one group to the automorphism group to the another. These group products include also Zappa-Szep-Products for suiting pairs of Automorphism Homomorphisms. For two trivial homomorphisms the result is a direct product, for one trivial homomorphism it is a semidirect product, of course. The function file itself is included along with a drivnig function SomeZSProducts included in the file "Functions", that loops over pairs of representative automorphism homomorphisms, which are tested by function GenerateGroupProducts for giving raise to a ZS - product, and returns a representative number of ZS - product samples. By extending this loop over pairs of representative automorphism homomorphisms to the full subgroup conjugacy classes it would be theoretically possible to generate all ZS products of two groups. You can test function GenerateGroupProducts by reading in the file "Functions" and by reading in the driving file "StartGroupProducts". To test "SomeZSProducts" you can call it directly after reading in the file "Functions" giving two permutation groups. The functions should run properly up to a product size of the two groups of 10000. "SessionGroupProducts" is a session example. yours sincerely, Rudolf Zlabinger -------------- next part -------------- # V0030 for GenerateGroupProducts V0030 s3:= SymmetricGroup(3); a4:= AlternatingGroup(4); auts3:= AutomorphismGroup(s3); auta4:= AutomorphismGroup(a4); homss3:= AllGroupHomomorphismsRepresentative(s3,auta4); homsa4:= AllGroupHomomorphismsRepresentative(a4,auts3); nullgensauts3:= [One(auts3),One(auts3)]; nullgensauta4:= [One(auta4),One(auta4)]; genss3:= GeneratorsOfGroup(s3); gensa4:= GeneratorsOfGroup(a4); lefthom0010:= GroupHomomorphismByImages(s3,auta4,genss3,nullgensauta4); righthom0010:= homsa4[1][1]; righthom0020:= GroupHomomorphismByImages(a4,auts3,gensa4,nullgensauts3); lefthom0020:= homss3[1][1]; # Test SemidirectProduct(a4,righthom0010,s3) groups0010:= GenerateGroupProducts(s3,a4,lefthom0010,righthom0010); group0010:= groups0010.product; sd0010:= SemidirectProduct(a4,righthom0010,s3); iso0010:= IsomorphismGroups(group0010,sd0010); # Test SemidirectProduct(s3,lefthom0020,a4) groups0020:= GenerateGroupProducts(s3,a4,lefthom0020,righthom0020); group0020:= groups0020.product; sd0020:= SemidirectProduct(s3,lefthom0020,a4); iso0020:= IsomorphismGroups(group0020,sd0020); # Test ZS Product righthom0010 lefthom0020 groups0030:= GenerateGroupProducts(s3,a4,lefthom0020,righthom0010); homss3f:=Flat(homss3); lefthom0040:=homss3f[2]; # Test ZS Product righthom0010 lefthom0040 groups0040:= GenerateGroupProducts(s3,a4,lefthom0040,righthom0010); lefthom0050:=homss3f[3]; # Test ZS Product righthom0010 lefthom0050 groups0050:= GenerateGroupProducts(s3,a4,lefthom0050,righthom0010); -------------- next part -------------- #_______________________________________________________________________ #_______________________________________________________________________ AllGroupHomomorphismsRepresentative:=function(fromgroup,togroup) local nfromgroup,hfromgroup,ffromgroup,isgfromgrouptogroup,isgfromgrouptogroupp,homslist ; nfromgroup:=NormalSubgroups(fromgroup);; nfromgroup:=Filtered(nfromgroup,x->x<>fromgroup);; # the trivial homomorphism is not returned if nfromgroup = [] then return []; fi; # the trivial homomorphism is not returned ffromgroup:=List(nfromgroup,x->FactorGroup(fromgroup,x));; hfromgroup:=List(nfromgroup,x->NaturalHomomorphismByNormalSubgroup(fromgroup,x));; isgfromgrouptogroup:=List(ffromgroup,x->IsomorphicSubgroups(togroup,x)); isgfromgrouptogroupp:=Filtered([1..Length(isgfromgrouptogroup)],x->isgfromgrouptogroup[x]<>[]); if isgfromgrouptogroupp = [] then return []; fi; isgfromgrouptogroup:=isgfromgrouptogroup{isgfromgrouptogroupp}; hfromgroup:=hfromgroup{isgfromgrouptogroupp}; homslist:=List([1..Length(hfromgroup)],x->hfromgroup[x]*isgfromgrouptogroup[x]); return homslist; end; #_______________________________________________________ #_______________________________________________________ Array:=function(bounds) # creates an array of empty lists of arbitrary nesting levels (dimensions) # and bounds for each level # bounds is a list of positive integers determining the length of each dimension # the length of bounds is the dimension of the array # at element level the dimension of the array is 1 higher, # as the last level are also empty lists local array,IterateArray; IterateArray:=function(array,bounds) # iterative call for decreasing levels of array and bounds local i,dim,boundsrecall; # i.. index, # dim the recent level of bounds, # boundsrecall.. shortened bounds for recalls dim:=Length(bounds); # the varying length of bounds for i in [1..bounds[1]] do # 1 recallcascade for one add Add(array,[]); # enlarging the recent level of array if dim>1 then # dim=1 is the last level boundsrecall:=bounds{[2..dim]}; # shorten bounds for next level IterateArray(array[i],boundsrecall); # recursion for the next lower level of array fi; # end of dimension > 1 clause od; # end of bound loop return array; end; array:=[]; array:=IterateArray(array,bounds); # starting call of add cascade return array; end; #___________________________________________________ #___________________________________________________ # composes matrices to a compound matrix # mats is a list of lists of matrices; # the lists have to be of same length # the sum of the lengths of of the rows of matrices has to be the same in each list # the number of rows of the matrices in one list has to be the same MatrixArranged:=function(mats) local matrix,dim,x,y,z,rows,prerows,trans; dim:=[]; trans:=StructuralCopy(mats); # only to create an array of same bounds and dims of mats # without destroying mats prerows:=[]; dim[1]:=Length(mats[1]); dim[2]:=Length(mats); for x in [1..dim[2]] do; for y in [1..dim[1]] do; trans[x][y]:=TransposedMatMutable(mats[x][y]); #as concatenation processes rows matwise od; od; for x in [1..dim[2]] do; prerows[x]:=Concatenation(trans[x]); prerows[x]:=TransposedMatMutable(prerows[x]); #to revert to original orientation od; matrix:=Concatenation(prerows); return matrix; end; #____________________________________________________ #_____________________________________________________ # GenerateGroupProducts V0030 # complete with GenerateGroups GenerateGroupProducts:=function(leftgroup,rightgroup,lefthom,righthom) local GenerateRoot,GenerateLeftCosets,CompleteRoot,GenerateGroups, sizeleft,sizeright,sizesum,sizetotal,sizerest,sizenewelms, root,subgroupsrows,groups,selectorperm, positionsinrightcosets,rootdata,elmsleftgroup,elmsrightgroup, gensleftgroup,gensrightgroup,posgenslg,posgensrg, data ; #_____________________________________________ # Internal Procedures #_____________________________________________ #__________________________________________________________ GenerateRoot:= function() local leftcosets,rightcosets,newelm,cosetcolumn,cosetrow, leftmt,rightmt,rightrow,rightcolumn,roworcolumn,rightmtred, root,rootdata,positionsinrightcosets ; leftcosets:= Array([sizeright-1,sizeleft]); rightcosets:= Array([sizeleft,sizeright-1]); positionsinrightcosets:= Array([sizenewelms,3]); rootdata:=rec(); newelm:=sizesum-1; for cosetrow in [2..sizeleft] do for cosetcolumn in [1..sizeright-1] do newelm:= newelm+1; rightcosets[cosetrow][cosetcolumn]:= newelm; positionsinrightcosets[newelm-sizesum+1][1]:=newelm; positionsinrightcosets[newelm-sizesum+1][2]:=cosetrow; positionsinrightcosets[newelm-sizesum+1][3]:=cosetcolumn+sizeleft; od; # cosetrow od; # cosetcolumn leftmt:= MultiplicationTable(leftgroup); leftmt:= MutableCopyMat(leftmt); rightmt:= MultiplicationTable(rightgroup); rightmt:= MutableCopyMat(rightmt); rightmt:= rightmt +(sizeleft-1); for rightrow in [1..sizeright] do for rightcolumn in [1..sizeright] do if rightmt[rightrow][rightcolumn] = sizeleft then rightmt[rightrow][rightcolumn]:= 1; fi; od; # rightcolumn od; # rightrow for roworcolumn in [1..sizeright-1] do rightcosets[1][roworcolumn]:=rightmt[1][roworcolumn+1]; leftcosets [roworcolumn][1]:=rightmt[roworcolumn+1][1]; od; # i rightmtred:=rightmt{[2..sizeright]}{[2..sizeright]}; rootdata.root:=MatrixArranged([[leftmt,rightcosets],[leftcosets,rightmtred]]); rootdata.positions:=positionsinrightcosets; return rootdata; end; #____________________________________________________________________ GenerateLeftCosets:=function(root,lefthom,righthom) local leftcosetrow,leftcosetcolumn, CalculateLeftElm, leftcosetelm ; #___________________________________________________________________ # Inner procedures of GenerateLeftCosets #___________________________________________________________________ #__________________________________________________________________ CalculateLeftElm:=function() local leftcosetelm,elmleftgroup,elmrightgroup,autleftgroup, autrightgroup,rightcosetrowelm,rightcosetcolumnelm, rightcosetcolumn,rightcosetrow ; elmleftgroup:= elmsleftgroup[leftcosetcolumn]; elmrightgroup:= elmsrightgroup[leftcosetrow-sizeleft+1]; autleftgroup:= Image(righthom,elmrightgroup)^-1; autrightgroup:= Image(lefthom,elmleftgroup); rightcosetcolumnelm:= elmrightgroup^autrightgroup; rightcosetrowelm:= elmleftgroup ^autleftgroup; rightcosetcolumn:= Position(elmsrightgroup,rightcosetcolumnelm) + sizeleft - 1; rightcosetrow:= Position(elmsleftgroup,rightcosetrowelm); leftcosetelm:= root[rightcosetrow][rightcosetcolumn]; return leftcosetelm; end; # of inner procedure CalculateLeftPosition #___________________________________________________________________ #___________________________________________________________________ # Mainline of function GenerateLeftCosets #___________________________________________________________________ for leftcosetrow in posgensrg do for leftcosetcolumn in [2..sizeleft] do leftcosetelm:= CalculateLeftElm(); root[leftcosetrow][leftcosetcolumn]:= leftcosetelm; od; #leftcosetcolumn od; #leftcosetrow return root; end; # of function GenerateLeft Cosets #____________________________________________________________________ CompleteRoot:=function(root) local subgroupsrows,restrows,i,j,p2,genpositions, CalculateRight,CalculateLeft ; #____________________________________________________________________ # Internal Procedures #____________________________________________________________________ #____________________________________ CalculateLeft:=function(product,leftfactor) # a is in leftgroup, we form the product of poducts element by a # product by a: a2 * p1 = (a2 * a1) * b1 = a3 * b1 = p2 # 1. lookup p1 = a1 * b1 # 2. lookup a2 * a1 = a3 # 3. lookup p2 = a3 * b1 local a1,a2,a3,b1,p1,p2 ; a2:=leftfactor; a1:=positionsinrightcosets[product-sizesum +1][2]; a3:=root[a2][a1]; b1:=positionsinrightcosets[product-sizesum +1][3]; p2:=root[a3][b1]; return p2; end; # CalculateLeft #_______________________________________________ #_______________________________________________ CalculateRight:=function(product,rightfactor) # b is in rightgroup, we form the product of poducts element by b # product by b: b2 * p1 = (b2 * a1) * b1 = p2 * b1 = a3 * (b3 * b1) = a3 * b4 = p3 # 1. lookup p1 = a1 * b1 # 2. lookup b2 * a1 = p2 # 3. lookup p2 = a3 * b3 # 4. lookup b3 * b1 = b4 # 5. lookup p3 = a3 * b4 local b1,b2,b3,b4,a1,a3,p2,p3 ; a1:=positionsinrightcosets[product-sizesum+1][2]; b1:=positionsinrightcosets[product-sizesum+1][3]; b2:=rightfactor; p2:=root[b2][a1]; a3:=positionsinrightcosets[p2-sizesum +1][2]; b3:=positionsinrightcosets[p2-sizesum +1][3]; b4:=root[b3][b1]; p3:=root[a3][b4]; return p3; end; # CalculateRight #____________________________________________________________________ # Mainline #____________________________________________________________________ restrows:=Array([sizesum-1,sizenewelms]); for i in [1..sizenewelms] do restrows[1][i] := i + sizesum - 1; od; for i in [1..sizenewelms] do for j in posgenslg do p2:=CalculateLeft(restrows[1][i],j); restrows[j][i]:=p2; od; #i od; #j for i in [1..sizenewelms] do for j in posgensrg do p2:=CalculateRight(restrows[1][i],j); restrows[j][i]:=p2; od; #i od; #j subgroupsrows:=MatrixArranged([[root,restrows]]); return subgroupsrows; end; # of internal procedure CompleteRoot #____________________________________________________________________ #____________________________________________________________________ GenerateGroups:= function(subgroupsrows) local groups,positionslg,positionsrg,positionsall,genslg,gensrg,gensall, embeddedlgp,embeddedlg,embeddedrgp,embeddedrg,productp,product, smdegprod ; groups:=rec(); positionslg:= Concatenation([1],posgenslg); genslg:= subgroupsrows{positionslg}; embeddedlgp:= List(genslg,x->PermListList(genslg[1],x)); embeddedlg:= Group(embeddedlgp); positionsrg:= Concatenation([1],posgensrg); gensrg:= subgroupsrows{positionsrg}; embeddedrgp:= List(gensrg,x->PermListList(gensrg[1],x)); embeddedrg:= Group(embeddedrgp); positionsall:= Concatenation([1],posgenslg,posgensrg); gensall:= subgroupsrows{positionsall}; productp:= List(gensall,x->PermListList(gensall[1],x)); product:= Group(productp); if Size(product) = sizetotal then smdegprod:= SmallerDegreePermutationRepresentation(product); product:= Image(smdegprod); embeddedlg:= Image(smdegprod,embeddedlg); embeddedrg:= Image(smdegprod,embeddedrg); groups.embeddedleftgroup:= embeddedlg; groups.embeddedrightgroup:= embeddedrg; groups.product:= product; else groups:=fail; fi; return groups; end; #_____________________________________________ # Mainline #_____________________________________________ # Global Variables sizeleft:= Size(leftgroup); sizeright:= Size(rightgroup); sizesum:= sizeleft+sizeright; sizetotal:= sizeleft*sizeright; sizerest:= sizetotal-sizesum; sizenewelms:= (sizeleft-1)*(sizeright-1); # End of global variables rootdata:= GenerateRoot(); positionsinrightcosets:= rootdata.positions; root:= rootdata.root; elmsleftgroup:= AsSortedList(leftgroup); elmsrightgroup:= AsSortedList(rightgroup); gensleftgroup:= GeneratorsOfGroup(leftgroup); gensrightgroup:= GeneratorsOfGroup(rightgroup); posgenslg:= List(gensleftgroup, x->Position(elmsleftgroup,x)); posgensrg:= List(gensrightgroup,x->Position(elmsrightgroup,x)); posgensrg:= posgensrg + sizeleft -1; root:= GenerateLeftCosets(root,lefthom,righthom); subgroupsrows:= CompleteRoot(root); groups:= GenerateGroups(subgroupsrows); return groups; end; #_____________________________________________________ #_____________________________________________________ SomeZSProducts:= function(leftgroup,rightgroup) local autleftgroup,autrightgroup,homsleftl,homsrightl,homsleft,homsright, homsprod,homspair,groups,groupstable ; groupstable:=[]; autleftgroup:= AutomorphismGroup(leftgroup); autrightgroup:= AutomorphismGroup(rightgroup); homsleftl:= AllGroupHomomorphismsRepresentative(leftgroup,autrightgroup); homsrightl:= AllGroupHomomorphismsRepresentative(rightgroup,autleftgroup); homsleft:= Flat(homsleftl); homsright:= Flat(homsrightl); homsprod:= Cartesian(homsleft,homsright); Print("Number of pairs of Homomorphisms: ",Length(homsprod),"\n"); for homspair in homsprod do groups:= GenerateGroupProducts(leftgroup,rightgroup,homspair[1],homspair[2]); if groups <> fail then Add(groupstable,groups);fi; od; #homspair return groupstable; end; -------------- next part -------------- # GenerateGroupProducts V0030 # complete with GenerateGroups GenerateGroupProducts:=function(leftgroup,rightgroup,lefthom,righthom) local GenerateRoot,GenerateLeftCosets,CompleteRoot,GenerateGroups, sizeleft,sizeright,sizesum,sizetotal,sizerest,sizenewelms, root,subgroupsrows,groups,selectorperm, positionsinrightcosets,rootdata,elmsleftgroup,elmsrightgroup, gensleftgroup,gensrightgroup,posgenslg,posgensrg, data ; #_____________________________________________ # Internal Procedures #_____________________________________________ #__________________________________________________________ GenerateRoot:= function() local leftcosets,rightcosets,newelm,cosetcolumn,cosetrow, leftmt,rightmt,rightrow,rightcolumn,roworcolumn,rightmtred, root,rootdata,positionsinrightcosets ; leftcosets:= Array([sizeright-1,sizeleft]); rightcosets:= Array([sizeleft,sizeright-1]); positionsinrightcosets:= Array([sizenewelms,3]); rootdata:=rec(); newelm:=sizesum-1; for cosetrow in [2..sizeleft] do for cosetcolumn in [1..sizeright-1] do newelm:= newelm+1; rightcosets[cosetrow][cosetcolumn]:= newelm; positionsinrightcosets[newelm-sizesum+1][1]:=newelm; positionsinrightcosets[newelm-sizesum+1][2]:=cosetrow; positionsinrightcosets[newelm-sizesum+1][3]:=cosetcolumn+sizeleft; od; # cosetrow od; # cosetcolumn leftmt:= MultiplicationTable(leftgroup); leftmt:= MutableCopyMat(leftmt); rightmt:= MultiplicationTable(rightgroup); rightmt:= MutableCopyMat(rightmt); rightmt:= rightmt +(sizeleft-1); for rightrow in [1..sizeright] do for rightcolumn in [1..sizeright] do if rightmt[rightrow][rightcolumn] = sizeleft then rightmt[rightrow][rightcolumn]:= 1; fi; od; # rightcolumn od; # rightrow for roworcolumn in [1..sizeright-1] do rightcosets[1][roworcolumn]:=rightmt[1][roworcolumn+1]; leftcosets [roworcolumn][1]:=rightmt[roworcolumn+1][1]; od; # i rightmtred:=rightmt{[2..sizeright]}{[2..sizeright]}; rootdata.root:=MatrixArranged([[leftmt,rightcosets],[leftcosets,rightmtred]]); rootdata.positions:=positionsinrightcosets; return rootdata; end; #____________________________________________________________________ GenerateLeftCosets:=function(root,lefthom,righthom) local leftcosetrow,leftcosetcolumn, CalculateLeftElm, leftcosetelm ; #___________________________________________________________________ # Inner procedures of GenerateLeftCosets #___________________________________________________________________ #__________________________________________________________________ CalculateLeftElm:=function() local leftcosetelm,elmleftgroup,elmrightgroup,autleftgroup, autrightgroup,rightcosetrowelm,rightcosetcolumnelm, rightcosetcolumn,rightcosetrow ; elmleftgroup:= elmsleftgroup[leftcosetcolumn]; elmrightgroup:= elmsrightgroup[leftcosetrow-sizeleft+1]; autleftgroup:= Image(righthom,elmrightgroup)^-1; autrightgroup:= Image(lefthom,elmleftgroup); rightcosetcolumnelm:= elmrightgroup^autrightgroup; rightcosetrowelm:= elmleftgroup ^autleftgroup; rightcosetcolumn:= Position(elmsrightgroup,rightcosetcolumnelm) + sizeleft - 1; rightcosetrow:= Position(elmsleftgroup,rightcosetrowelm); leftcosetelm:= root[rightcosetrow][rightcosetcolumn]; return leftcosetelm; end; # of inner procedure CalculateLeftPosition #___________________________________________________________________ #___________________________________________________________________ # Mainline of function GenerateLeftCosets #___________________________________________________________________ for leftcosetrow in posgensrg do for leftcosetcolumn in [2..sizeleft] do leftcosetelm:= CalculateLeftElm(); root[leftcosetrow][leftcosetcolumn]:= leftcosetelm; od; #leftcosetcolumn od; #leftcosetrow return root; end; # of function GenerateLeft Cosets #____________________________________________________________________ CompleteRoot:=function(root) local subgroupsrows,restrows,i,j,p2,genpositions, CalculateRight,CalculateLeft ; #____________________________________________________________________ # Internal Procedures #____________________________________________________________________ #____________________________________ CalculateLeft:=function(product,leftfactor) # a is in leftgroup, we form the product of poducts element by a # product by a: a2 * p1 = (a2 * a1) * b1 = a3 * b1 = p2 # 1. lookup p1 = a1 * b1 # 2. lookup a2 * a1 = a3 # 3. lookup p2 = a3 * b1 local a1,a2,a3,b1,p1,p2 ; a2:=leftfactor; a1:=positionsinrightcosets[product-sizesum +1][2]; a3:=root[a2][a1]; b1:=positionsinrightcosets[product-sizesum +1][3]; p2:=root[a3][b1]; return p2; end; # CalculateLeft #_______________________________________________ #_______________________________________________ CalculateRight:=function(product,rightfactor) # b is in rightgroup, we form the product of poducts element by b # product by b: b2 * p1 = (b2 * a1) * b1 = p2 * b1 = a3 * (b3 * b1) = a3 * b4 = p3 # 1. lookup p1 = a1 * b1 # 2. lookup b2 * a1 = p2 # 3. lookup p2 = a3 * b3 # 4. lookup b3 * b1 = b4 # 5. lookup p3 = a3 * b4 local b1,b2,b3,b4,a1,a3,p2,p3 ; a1:=positionsinrightcosets[product-sizesum+1][2]; b1:=positionsinrightcosets[product-sizesum+1][3]; b2:=rightfactor; p2:=root[b2][a1]; a3:=positionsinrightcosets[p2-sizesum +1][2]; b3:=positionsinrightcosets[p2-sizesum +1][3]; b4:=root[b3][b1]; p3:=root[a3][b4]; return p3; end; # CalculateRight #____________________________________________________________________ # Mainline #____________________________________________________________________ restrows:=Array([sizesum-1,sizenewelms]); for i in [1..sizenewelms] do restrows[1][i] := i + sizesum - 1; od; for i in [1..sizenewelms] do for j in posgenslg do p2:=CalculateLeft(restrows[1][i],j); restrows[j][i]:=p2; od; #i od; #j for i in [1..sizenewelms] do for j in posgensrg do p2:=CalculateRight(restrows[1][i],j); restrows[j][i]:=p2; od; #i od; #j subgroupsrows:=MatrixArranged([[root,restrows]]); return subgroupsrows; end; # of internal procedure CompleteRoot #____________________________________________________________________ #____________________________________________________________________ GenerateGroups:= function(subgroupsrows) local groups,positionslg,positionsrg,positionsall,genslg,gensrg,gensall, embeddedlgp,embeddedlg,embeddedrgp,embeddedrg,productp,product, smdegprod ; groups:=rec(); positionslg:= Concatenation([1],posgenslg); genslg:= subgroupsrows{positionslg}; embeddedlgp:= List(genslg,x->PermListList(genslg[1],x)); embeddedlg:= Group(embeddedlgp); positionsrg:= Concatenation([1],posgensrg); gensrg:= subgroupsrows{positionsrg}; embeddedrgp:= List(gensrg,x->PermListList(gensrg[1],x)); embeddedrg:= Group(embeddedrgp); positionsall:= Concatenation([1],posgenslg,posgensrg); gensall:= subgroupsrows{positionsall}; productp:= List(gensall,x->PermListList(gensall[1],x)); product:= Group(productp); if Size(product) = sizetotal then smdegprod:= SmallerDegreePermutationRepresentation(product); product:= Image(smdegprod); embeddedlg:= Image(smdegprod,embeddedlg); embeddedrg:= Image(smdegprod,embeddedrg); groups.embeddedleftgroup:= embeddedlg; groups.embeddedrightgroup:= embeddedrg; groups.product:= product; else groups:=fail; fi; return groups; end; #_____________________________________________ # Mainline #_____________________________________________ # Global Variables sizeleft:= Size(leftgroup); sizeright:= Size(rightgroup); sizesum:= sizeleft+sizeright; sizetotal:= sizeleft*sizeright; sizerest:= sizetotal-sizesum; sizenewelms:= (sizeleft-1)*(sizeright-1); # End of global variables rootdata:= GenerateRoot(); positionsinrightcosets:= rootdata.positions; root:= rootdata.root; elmsleftgroup:= AsSortedList(leftgroup); elmsrightgroup:= AsSortedList(rightgroup); gensleftgroup:= GeneratorsOfGroup(leftgroup); gensrightgroup:= GeneratorsOfGroup(rightgroup); posgenslg:= List(gensleftgroup, x->Position(elmsleftgroup,x)); posgensrg:= List(gensrightgroup,x->Position(elmsrightgroup,x)); posgensrg:= posgensrg + sizeleft -1; root:= GenerateLeftCosets(root,lefthom,righthom); subgroupsrows:= CompleteRoot(root); groups:= GenerateGroups(subgroupsrows); return groups; end; -------------- next part -------------- gap> Read(Functions); # You read attachment file Functions gap> Read(Test0010); # You read attachment file StartGroupProducts gap> iso0010; [ (1,4,5)(2,6,3)(7,16,19)(8,17,20)(9,18,21)(10,22,13)(11,23,14)(12,24,15), (1,3)(2,5)(4,6)(7,13)(8,14)(9,15)(10,19)(11,20)(12,21)(16,22)(17,23)(18,24), (1,8)(2,11)(3,14)(4,17)(5,20)(6,23)(7,9)(10,12)(13,15)(16,18)(19,21)(22,24), (1,7)(2,10)(3,13)(4,16)(5,19)(6,22)(8,9)(11,12)(14,15)(17,18)(20,21)(23,24) , (2,6,3)(7,8,9)(10,23,15)(11,24,13)(12,22,14)(16,17,18)(19,20,21) ] -> [ (1,5,4)(2,6,3), (1,3)(2,4)(5,6), (7,8)(9,10), (7,9)(8,10), (1,5,4)(7,10,8) ] gap> iso0020; [ (1,4)(2,7)(3,10)(5,8)(6,11)(9,12), (1,9)(2,11)(3,5)(4,12)(6,7)(8,10), (1,3,2)(4,5,6)(7,9,8)(10,11,12), (2,3)(5,6)(7,10)(8,11)(9,12), (4,12,9)(5,10,8)(6,11,7) ] -> [ (1,9)(2,7)(3,8)(4,12)(5,10)(6,11), (1,4)(2,6)(3,5)(7,11)(8,10)(9,12), (1,4,9)(2,6,7)(3,5,8), (1,9)(2,8)(3,7)(5,6)(10,11), (1,7,5)(2,8,4)(3,9,6)(10,12,11) ] gap> groups0030; fail gap> groups0040; fail gap> groups0050; rec( embeddedleftgroup := Group([ (1,4,5)(2,6,3)(7,16,19)(8,17,20)(9,18,21)(10,22,13)(11,23,14)(12,24,15), (1,3)(2,5)(4,6)(7,13)(8,14)(9,15)(10,19)(11, 20)(12,21)(16,22)(17,23)(18,24) ]), embeddedrightgroup := Group([ (1,8)(2,11)(3,14)(4,17)(5,20)(6,23)(7,9)(10,12)(13,15)(16,18)(19,21)(22,24), (1,7)(2,10)(3,13)(4,16)(5,19)(6,22)(8,9)(11,12)(14,15)(17,18)(20,21)(23,24), (2,22,15)(3,10,24)(6,13,12)(7,8,9)(11,23,14)(16,17,18)(19,20,21) ]), product := ) gap> NrMovedPoints(groups0050.embeddedleftgroup); 24 gap> NrMovedPoints(groups0050.embeddedrightgroup); 24 gap> IsSubgroup(groups0050.product,groups0050.embeddedrightgroup); true gap> lg:=groups0050.embeddedleftgroup;; gap> rg:=groups0050.embeddedrightgroup;; gap> cartlgrg:=List(Cartesian(lg,rg),x->x[1]*x[2]);; gap> AsGroup(cartlgrg);; gap> last=groups0050.product; true gap> rightpre:=OneSmallGroup(98);; gap> right:=Image(IsomorphismPermGroup(rightpre));; gap> leftpre:=OneSmallGroup(102);; gap> left:=Image(IsomorphismPermGroup(leftpre));; gap> groupstable:=SomeZSProducts(left,right);; Number of pairs of Homomorphisms: 3 gap> Length(groupstable); 3 gap> # There are three ZS Products returned for left and right gap> groupstable; [ rec( embeddedleftgroup := , embeddedrightgroup := , product := ), rec( embeddedleftgroup := , embeddedrightgroup := , product := ), rec( embeddedleftgroup := , embeddedrightgroup := , product := ) ] gap> From andreas at mcs.st-and.ac.uk Mon May 21 16:14:29 2007 From: andreas at mcs.st-and.ac.uk (Andreas Distler) Date: Mon May 21 16:50:06 2007 Subject: [GAP Forum] GAP package RadiRoot In-Reply-To: <4648BB77.9080503@tamu.edu> References: <4648BB77.9080503@tamu.edu> Message-ID: <4651B755.3070400@mcs.st-andrews.ac.uk> Dear GAP Forum, dear Yevgen, It is correct that KANT works under Windows and those functions of the Alnuth package which use GAP only do as well. But the interface to KANT provided by Alnuth works under Unix systems only and the functionality of the RadiRoot package depends on this interface. Best wishes, Andreas Yevgen Muntyan wrote: > Hello forum, > > Edmund Robertson wrote: >> [snip] >> The RadiRoot package can compute and display an expression by >> radicals for the roots of a solvable, rational polynomial. Related to >> this it is possible to create the Galois group and the splitting >> field of a rational polynomial. The package is written for GAP >> version 4.4. It requires the package Alnuth and can therefore be used >> on a UNIX system only. > Why is it UNIX only? I looked at Alnuth, it doesn't seem to be > windows-only, and KANT seems to have windows binaries > available. Are there some hidden dependencies? > > Best regards, > Yevgen > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From Rudolf.Zlabinger at chello.at Wed May 23 06:18:35 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Wed May 23 06:20:32 2007 Subject: [GAP Forum] Definition of Zappa-Szep Product Message-ID: <002101c79cf9$d065a2e0$d5476d50@zlabinger> To support my message of Sat. 19., I am allowed to remember you the defintion of Zappa-Szep Product, as recommended by Professor Neub?ser to support my first contribution to this subject in 200612, as found in http://en.wikipedia.org/wiki/Zappa-Szep_product best regards, Rudolf Zlabinger From ad.huikeshoven at gmail.com Wed May 23 22:29:18 2007 From: ad.huikeshoven at gmail.com (Ad Huikeshoven) Date: Wed May 23 22:29:38 2007 Subject: [GAP Forum] cannot extend workspace anymore ... Message-ID: <67c46c210705231429q158d1706gf2fcbc921f1e359@mail.gmail.com> I installed GAP 4 on an new PC (Windows/Vista) with 2 GigaByte of RAM. I tried to start gap with the option -a 1000M and -o 1500M, but that would not start GAP: it complains at startup 'cannot extend workspace anymore'. In fact it stops with the same message when trying to start GAP with -a 400M. What I actually want to do is to compute a StructureDescription() which runs fines, consumes nearly 400M of memory for a while and then stops with 'cannot extend workspace anymore'. Clearly I installed enough RAM om my machine. I tried to reduce workspace requirement for the permutation group I am working on a bit with StraightLineProgGens, but that one returns another problem, saying that position on element is not a positive integer, which I do not understand. Maybe someone has a suggestion ... Ad Huikeshoven From mjoao at classic.univ-ab.pt Thu May 24 16:47:25 2007 From: mjoao at classic.univ-ab.pt (Joao Araujo) Date: Thu May 24 16:51:32 2007 Subject: [GAP Forum] question about strings Message-ID: I use some programs to produce a file, say text.txt with content This is the file. and I want to use GAP to manipulate it. In order to do that I open the file and write u:="This is the file.";; Then I save the file and run perl -e 'while (<>) { if (! /\|$/ ) { chomp; } print ;}' text.txt > text.out in order to remove line breaks. Finally I open a GAP session and write gap> READ("text.out"); to get my original file in the string u. However: 1. the original files are very very big. It might take hours to reach the end of the file using the scroll of nano or pico. So I have been transfering the files to a Windows machine and use a word processor to reach the end (and put ";; ). Then send the file back to the unix machine. 2. I have dozens of files of this kind... Therefore I would be very grateful if someone could help me devise a faster and more automatic way to put the original text.txt file into a GAP string. Many thanks, Joao From justin at mac.com Thu May 24 17:29:32 2007 From: justin at mac.com (Justin C. Walker) Date: Thu May 24 17:29:13 2007 Subject: [GAP Forum] question about strings In-Reply-To: References: Message-ID: <4DE50245-054F-4FD0-8977-14D8D27199A5@mac.com> On May 24, 2007, at 08:47 , Joao Araujo wrote: > 1. the original files are very very big. It might take hours to > reach the end of the file using the scroll of nano or pico. So I > have been transfering the files to a Windows machine and use a word > processor to > reach the end (and put ";; ). Then send the file back to the unix > machine. Sheesh...you're working pretty hard to get these two characters in there... Your best bet is to write a small C program to do the job: main(...) { fd = open(...); lseek(fd, 0, SEEK_END); write(fd, ";;\n", 3); } That, obviously, has not been compiled or tested :-}, nor is there any error-checking. It will beat the pants off the "scroll to the end and type ';;'" process, though. There may even be Perl or Pythonic ways of doing the same thing. Look for "seek" or "append" methods in these scripting languages. In essence, you want to seek to the end of the file, write the two characters there, and close the file. If you have a number of files to deal with, just put those operations in a loop. Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Absorption of Federal Funds -------- If you're not confused, You're not paying attention -------- From laurent.bartholdi at gmail.com Thu May 24 18:05:54 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Thu May 24 18:06:41 2007 Subject: [GAP Forum] question about strings In-Reply-To: <4DE50245-054F-4FD0-8977-14D8D27199A5@mac.com> References: <4DE50245-054F-4FD0-8977-14D8D27199A5@mac.com> Message-ID: <1ff637850705241005x3ac9974bu4e25a3eb001d71da@mail.gmail.com> Dear Joao, It seems to me that everything should be doable within GAP. Here's a sample for a small file: gap> s := InputTextFile("/home/laurent/.gaprc"); InputTextFile(/home/laurent/.gaprc) gap> t := "";; while true do u := ReadLine(s); if IsString(u) then Append(t,u); else break; fi; od; gap> t; "# .gaprc file by laurent ...\n" You may easily modify the GAP code so that it strips the '\n' from the string u before appending; you may consider inserting 'NormalizeWhitespace(u);' before the 'Append' command, for instance. Best, Laurent -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From sal at cs.st-and.ac.uk Thu May 24 18:11:53 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Thu May 24 18:14:07 2007 Subject: [GAP Forum] question about strings Message-ID: <200705241713.l4OHDgZp024129@gap-system.org> There is a GAP function StringFile which probably does what you want. Steve -----Original Message----- From: "Joao Araujo" To: forum@gap-system.org Sent: 24/05/07 16:47 Subject: [GAP Forum] question about strings I use some programs to produce a file, say text.txt with content This is the file. and I want to use GAP to manipulate it. In order to do that I open the file and write u:="This is the file.";; Then I save the file and run perl -e 'while (<>) { if (! /\|$/ ) { chomp; } print ;}' text.txt > text.out in order to remove line breaks. Finally I open a GAP session and write gap> READ("text.out"); to get my original file in the string u. However: 1. the original files are very very big. It might take hours to reach the end of the file using the scroll of nano or pico. So I have been transfering the files to a Windows machine and use a word processor to reach the end (and put ";; ). Then send the file back to the unix machine. 2. I have dozens of files of this kind... Therefore I would be very grateful if someone could help me devise a faster and more automatic way to put the original text.txt file into a GAP string. Many thanks, Joao _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum From muntyan at tamu.edu Thu May 24 18:16:32 2007 From: muntyan at tamu.edu (Yevgen Muntyan) Date: Thu May 24 18:18:37 2007 Subject: [GAP Forum] question about strings In-Reply-To: References: Message-ID: <4655C870.6040007@tamu.edu> Joao Araujo wrote: > > I use some programs to produce a file, say text.txt with content > > This is > the > file. > > and I want to use GAP to manipulate it. In order to do that I open the > file and write You can use GAP for this: input := InputTextFile("foolala"); contents := ReadAll(input); CloseStream(input); Best regards, Yevgen From Frank.Luebeck at math.rwth-aachen.de Thu May 24 21:45:53 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Thu May 24 21:46:20 2007 Subject: [GAP Forum] question about strings In-Reply-To: References: Message-ID: <20070524204553.GA29884@math.rwth-aachen.de> On Thu, May 24, 2007 at 04:47:25PM +0100, Joao Araujo wrote: > I use some programs to produce a file, say text.txt with content > > This is > the > file. > > and I want to use GAP to manipulate it. In order to do that I > open the file and write > > u:="This is > the > file.";; > > Then I save the file and run > > perl -e 'while (<>) { if (! /\|$/ ) { chomp; } print ;}' text.txt > text.out > > in order to remove line breaks. Dear Joao, dear Forum, Actually, GAP can deal quite efficiently with some sort of simple file manipulations via GAP strings. See the help section ?Reference: Operations to Produce or Manipulate Strings For example: For reading the content of an arbitrary file into a GAP string you can use 'StringFile' (and 'FileString' for writing to a file). For manipulations of the string functions like 'SplitString', 'JoinStringsWithSeparator', 'NormalizeWhitespace', 'PositionSublist', 'ReplacedString', 'RemoveCharacters' (I just noticed that this is missing in the documentation, will be added with the next update) can be useful. All of them work quite well with huge strings/files. So, take your file text.txt as produced by your other programs: This is the file. Then in GAP say gap> u := StringFile("text.txt"); "This is\nthe\nfile.\n\n" gap> RemoveCharacters(u, "\n"); u; "This isthefile." gap> u := StringFile("text.txt"); "This is\nthe\nfile.\n\n" gap> NormalizeWhitespace(u); u; "This is the file." With best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From aldoc9 at dm.uba.ar Thu May 24 18:44:09 2007 From: aldoc9 at dm.uba.ar (Mariano Suarez-Alvarez) Date: Fri May 25 11:58:04 2007 Subject: [GAP Forum] question about strings In-Reply-To: <200705241713.l4OHDgZp024129@gap-system.org> References: <200705241713.l4OHDgZp024129@gap-system.org> Message-ID: > -----Original Message----- > From: "Joao Araujo" > To: forum@gap-system.org > Sent: 24/05/07 16:47 > Subject: [GAP Forum] question about strings > > [snip] > > However: > > 1. the original files are very very big. It might take hours to reach the > end of the file using the scroll of nano or pico. So I have been > transfering the files to a Windows machine and use a word processor to > reach the end (and put ";; ). Then send the file back to the unix machine. > > [snip] FWIW, if you press Alt and the / key (depending on your keyboard, this may involve pressing three keys at the same time) you'll get to the end of the file in nano immediately. Of course, the correct way of dealing with your problem is probably what Steve Linton suggested. Cheers, -- m -- ------------------------------------------------------------------------------ Mariano Su?rez-Alvarez Departamento de Matem?tica Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires Ciudad Universitaria, Pabell?n I. Buenos Aires (1428). Argentina. http://mate.dm.uba.ar/~aldoc9 Pienso en efecto que, salvo si se cree en milagros, s?lo cabe esperar el progreso de la raz?n de una acci?n pol?tica racionalmente orientada hacia la defensa de las condiciones sociales del ejercicio de la raz?n, de una movilizaci?n permanente de todos los productores culturales con el prop?sito de defender, mediante intervenciones continuadas y modestas, las bases intelectuales de la actividad intelectual. Todo proyecto de desarrollo del esp?ritu humano que, olvidando el arraigo hist?rico de la raz?n, cuente con la ?nica fuerza de la raz?n y de la pr?dica racional para hacer progresar las causas de la raz?n, y que no apele a la lucha pol?tica para tratar de dotar a la raz?n y a la libertdad de los intrumentos propiamente pol?ticos que constituyen la condici?n de su realizaci?n en la hist?ria, contin?a todav?a prisionero de la ilusi?n escol?stica. Pierre Bourdieu, Le point de vue scolastique, ``Raisons pratiques. Sur la th?orie de l'action''. Points, vol. 331. Par?s: ?ditions du Seuil, 1994. ------------------------------------------------------------------------------ From f.heckenbach at fh-soft.de Sat May 26 01:02:27 2007 From: f.heckenbach at fh-soft.de (Frank Heckenbach) Date: Sun May 27 21:22:51 2007 Subject: [GAP Forum] question about strings In-Reply-To: <4DE50245-054F-4FD0-8977-14D8D27199A5@mac.com> References: <4DE50245-054F-4FD0-8977-14D8D27199A5@mac.com> Message-ID: <1180137747.29421.504717@goedel.fjf.gnu.de> Justin C. Walker wrote: > On May 24, 2007, at 08:47 , Joao Araujo wrote: > > > 1. the original files are very very big. It might take hours to > > reach the end of the file using the scroll of nano or pico. So I > > have been transfering the files to a Windows machine and use a word > > processor to > > reach the end (and put ";; ). Then send the file back to the unix > > machine. > > Sheesh...you're working pretty hard to get these two characters in > there... > > Your best bet is to write a small C program to do the job: > main(...) > { > fd = open(...); > lseek(fd, 0, SEEK_END); > write(fd, ";;\n", 3); > } > > That, obviously, has not been compiled or tested :-}, nor is there > any error-checking. It will beat the pants off the "scroll to the > end and type ';;'" process, though. > > There may even be Perl or Pythonic ways of doing the same thing. > Look for "seek" or "append" methods in these scripting languages. In > essence, you want to seek to the end of the file, write the two > characters there, and close the file. Though a bit OT here, the simplest way in Unix requires neither C, Perl, Python nor a text editor. The shell with its built-in "echo" command does it just fine (and very quickly): echo -n ";;" >> filename Frank Heckenbach -- Frank Heckenbach, heckenb@mi.uni-erlangen.de http://www.mi.uni-erlangen.de/~heckenb/ GnuPG and PGP keys: http://fjf.gnu.de/plan (7977168E) From A.Alecu at lboro.ac.uk Sun May 27 21:50:20 2007 From: A.Alecu at lboro.ac.uk (A.Alecu@lboro.ac.uk) Date: Sun May 27 21:50:48 2007 Subject: [GAP Forum] Primitive Root of Unity in Finite Fields Message-ID: <1180299020.4659ef0c1d7cb@staff-webmail.lboro.ac.uk> Dear forum I have the following problem: I need to implement the Discrete Fourier Transform on arbitrary finite fields. Basically starting from a sequence s of period N over a finite field F and having a primitive n-th root of unity \alpha within that field F, I need to calculate the transformed sequence S over the extension field of F which contains all the powers of \alpha. Each term of S is a sum of terms of s multiplied with powers of \alpha. Anyway... my problem is (and it might be an easy one) how to find the primitive n-th root of unity in a finite field? I noticed that for the complex numbers I could use E(n), I need something similar for a finite field. All I have at the moment is a way to find the primitive n-th root of unity for the cases when n = p^m - 1 where p is a prime and m > 1. For this I use the PrimitiveRoot(GF(p^m)) which returns the primitive root of the finite field GF(p^m). Please can I have your suggestions on how I should solve this problem. Alternatively could you point me to an existing implementation of the Discrete Fourier Transform over finite fields. Thank you for your help in anticipation. Kind regards, Alexandra ------ Alexandra Alecu Research Student Department of Computer Science Holywell Park Loughborough University Loughborough, LE11 3TU England Telephone +44 (0)1509 635717 Internal extn 5720 Fax +44 (0)1509 635722 E-mail A.Alecu at lboro.ac.uk From A.Alecu at lboro.ac.uk Sun May 27 22:01:08 2007 From: A.Alecu at lboro.ac.uk (A.Alecu@lboro.ac.uk) Date: Sun May 27 22:01:37 2007 Subject: [GAP Forum] Primitive n-th Root of Unity in Finite Fields Message-ID: <1180299668.4659f194b6f69@staff-webmail.lboro.ac.uk> Dear forum I have the following problem: I need to implement the Discrete Fourier Transform on arbitrary finite fields. Basically starting from a sequence s of period N over a finite field F and having a primitive n-th root of unity \alpha within that field F, I need to calculate the transformed sequence S over the extension field of F which contains all the powers of \alpha. Each term of S is a sum of terms of s multiplied with powers of \alpha. Anyway... my problem is (and it might be an easy one) how to find the primitive n-th root of unity in a finite field? I noticed that for the complex numbers I could use E(n), I need something similar for a finite field. All I have at the moment is a way to find the primitive n-th root of unity for the cases when n = p^m - 1 where p is a prime and m > 1. For this I use the PrimitiveRoot(GF(p^m)) which returns the primitive root of the finite field GF(p^m). Please can I have your suggestions on how I should solve this problem. Alternatively could you point me to an existing implementation of the Discrete Fourier Transform over finite fields. Thank you for your help in anticipation. Kind regards, Alexandra ------ Alexandra Alecu Research Student Department of Computer Science Holywell Park Loughborough University Loughborough, LE11 3TU England Telephone +44 (0)1509 635717 Internal extn 5720 Fax +44 (0)1509 635722 E-mail A.Alecu at lboro.ac.uk ----- End forwarded message ----- From hannes100 at gmx.net Mon May 28 13:56:44 2007 From: hannes100 at gmx.net (Hannes Riesterer) Date: Mon May 28 13:57:09 2007 Subject: [GAP Forum] question from a newbie Message-ID: <200705281456.45276.hannes100@gmx.net> Helo, i have just discovered gap and i have some questions i couldn't figure out. Is it possible to get all semidirect products of Z^2 by a cyclic group of order n ? Mor pricesly i want to compute the first Cohomology group of all such posible extensions, namely the commutator group of them. In the tutorial there are only examples of semidirect products of finite groups. I tryed to make the same with Z^2 interpreted as the free group generated by ("a","b"), but the examples didn't work with that. Thanks for any help. From hulpke at mac.com Mon May 28 18:46:12 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Mon May 28 18:46:53 2007 Subject: [GAP Forum] Primitive n-th Root of Unity in Finite Fields In-Reply-To: <1180299668.4659f194b6f69@staff-webmail.lboro.ac.uk> References: <1180299668.4659f194b6f69@staff-webmail.lboro.ac.uk> Message-ID: <26FC4379-5BFB-4BE2-BE52-AE53BD40A22D@mac.com> Dear GAP-Forum, Alexandra Alecu asked: > Anyway... my problem is (and it might be an easy one) how to find the > primitive n-th root of unity in a finite field? > I noticed that for the complex numbers I could use E(n), I need > something > similar for a finite field. > > All I have at the moment is a way to find the primitive n-th root > of unity > for the cases when n = p^m - 1 where p is a prime and m > 1. For > this I use > the PrimitiveRoot(GF(p^m)) which returns the primitive root of the > finite > field GF(p^m). The easiest way to find such a root is as power of a primitive root in a suitable field (which you also need to find): Given your prime p and n, find the smallest m such that n divides p^m-1: m:=1; while (p^m-1) mod n<>0 do m:=m+1; od; Then take the generator of the corresponding finite field (which has order p^m-1) and power it up to get a primitive root of order n: a:=PrimitiveRoot(GF(p^m))^((p^m-1)/n); Be aware that there are some limits on finite fields in GAP, e.g. you might not be able to do this for arbitrary large p or n. Best wishes, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From laurent.bartholdi at gmail.com Tue May 29 01:54:04 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Tue May 29 01:54:30 2007 Subject: [GAP Forum] Primitive Root of Unity in Finite Fields In-Reply-To: <1180299020.4659ef0c1d7cb@staff-webmail.lboro.ac.uk> References: <1180299020.4659ef0c1d7cb@staff-webmail.lboro.ac.uk> Message-ID: <1ff637850705281754y1fd688d1u9356b2b6f3b2be23@mail.gmail.com> Hi Alessandra! > Anyway... my problem is (and it might be an easy one) how to find the > primitive n-th root of unity in a finite field? I guess here, and below, you mean *a* primitive root. In the complex plane, there's a standard choice (thanks to the exponential map) but in general there is not. > All I have at the moment is a way to find the primitive n-th root of unity > for the cases when n = p^m - 1 where p is a prime and m > 1. For this I use > the PrimitiveRoot(GF(p^m)) which returns the primitive root of the finite > field GF(p^m). But this is quite general! to find a primitive n-th root of unity, you find m such that p^m-1 is divisible by n; and you take PrimitiveRoot(GF(p^m))^((p^m-1)/n). In GAP code: primroot := function(q,n) # returns a n-th primitive root in GF(q) local m; m := First([1..1000],m->RemInt(q^m,n)=1); return PrimitiveRoot(GF(q^m))^((q^m-1)/n); end; best, L -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From konygin at imm.uran.ru Sat Jun 9 11:53:27 2007 From: konygin at imm.uran.ru (konygin@imm.uran.ru) Date: Mon Jun 11 10:56:45 2007 Subject: [GAP Forum] permutation actions Message-ID: <62894.195.58.13.18.1181386407.squirrel@proxy.imm.uran.ru> Dear GAP-forum, I have the following question: Let G be a group generated by permutations g_1, ..., g_d on the set {1, ..., n} and H be a subgroup of G generated by permutations h_1, ..., h_k on the set {1, ..., n} (g_1, ..., g_d, h_1, ..., h_k are given explicitly). Can I use GAP to get the natural (permutation) action of g_1, ..., g_d on left cosets of G by H (ordering in some way)? For example, g_1 = (1 2 3 4 5 6), g_2 = (1 2), h_1 = g_1 = (1 2), h_2 = (1 3)(2 4), h_3 = (1 3 5)(2 4 6). Best regards, Anton Konygin From Rudolf.Zlabinger at chello.at Sun Jun 10 08:38:11 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Mon Jun 11 10:57:08 2007 Subject: [GAP Forum] IsInnerProduct Message-ID: <007a01c7ab32$4c40ad10$d5476d50@zlabinger> Dear Forum, does anybody know a better performing method than this sequence prods:=List(Cartesian(subgroup1,subgroup2),Product); if Length(AsSet(prods)) <> outsize then return false;fi; in the function IsInnerProduct:= function(outergroup,subgroup1,subgroup2) local outsize,subsize1,subsize2,prods ; if not IsSubgroup(outergroup,subgroup1) then return false;fi; if not IsSubgroup(outergroup,subgroup2) then return false;fi; if Intersection(subgroup1,subgroup2) <> Group(()) then return false;fi; outsize:= Size(outergroup); subsize1:= Size(subgroup1); subsize2:= Size(subgroup2); if outsize <> subsize1*subsize2 then return false;fi; prods:=List(Cartesian(subgroup1,subgroup2),Product); if Length(AsSet(prods)) <> outsize then return false;fi; return true; end; . The function should return true iff the subgroups subgroup1 and subgroup2 form a inner product for group outergroup. Thank you for your cooperation, Rudolf Zlabinger From jjm at mcs.st-and.ac.uk Mon Jun 11 11:06:14 2007 From: jjm at mcs.st-and.ac.uk (John McDermott) Date: Mon Jun 11 11:07:28 2007 Subject: [GAP Forum] forwarded message from Rudolf Zlabinger re PREFAG Message-ID: From: "Rudolf Zlabinger" Date: 8 June 2007 17:08:26 BDT To: "GAP Forum" Cc: Subject: package PREFAG Dear Forum, while the original message, with the package attached, is hold for size reasons (48KB, limit 40KB) I am allowed in the meantime to preannounce a rewritten package PREFAG 1.0.3 without the package attached. PREFAG stands for PRoducts and Exact FActorizations for Groups and gives exact factor groups of a given group and calculates external products including ZS - Products (where none of the embedded factor subgroups are normal in the product). Some help functions are also included. PREFAG 1.0.3 is a rewritten package, that adds valuable performance options to the original version. The factorization functions can be used now for AllSmalGroups, and, for special cases also above. The external product function can be used now up to a product size of about 100.000. As I unfortunately at the moment cannot maintain a homepage, the package now is distributed by mail on demand basis. If you are interested on the package, please send me a mail, I will send you an answer with the package attached. Later on the package will be deposited at the GAP homepage at level 1.0.3 and will be available from there. A formal acceptance procedure (refereeing) is also already initiated. It may be, that the usage of the package is for now restricted to Windows users, for the compress format *.zip and for readable documentation, I will supply formats for the other platforms as soon as possible. best regards, Rudolf Zlabinger -------------- next part -------------- -- John McDermott Scientific Officer Centre for Interdisciplinary Research in Computational Algebra School of Computer Science University of St Andrews North Haugh, St Andrews, Fife KY16 9SX SCOTLAND (Room 330, Mathematical Institute) tel +44 1334 463813 mob +44 7941 507531 From ws2007 at mcs.st-andrews.ac.uk Mon Jun 11 14:16:47 2007 From: ws2007 at mcs.st-andrews.ac.uk (GAP Workshop 2007) Date: Mon Jun 11 14:17:34 2007 Subject: [GAP Forum] GAP Package Authors Workshop 2007 - 2nd announcement Message-ID: GAP package authors workshop -- 2nd announcement -- This is the second announcement of the GAP package authors workshop in Braunschweig, Germany, September 11-15, 2007. This informal workshop is aimed at researchers who have some experience of using GAP and are interested in developing more substantial programs or packages. More information and a registration form are available on www.gap-system.org/workshop2007/index.html. Deadline: there is a deadline (July 10) for registration for those of you who would like us to reserve a hotel-room for you. See also www.braunschweig.de for information on Braunschweig and, in particular, hotels in Braunschweig. Morning sessions: The morning sessions of the workshop will be devoted to talks of the main speakers and the participants. Every participant is invited to suggest a talk. The confirmed main speakers are: - Graham Ellis (Galway) - David Joyner (Annapolis) - Max Neunh"offer (Aachen/St. Andrews) - Csaba Schneider (Budapest) The afternoon sessions of the workshop will be devoted to discussions, talks on technical aspects of the GAP system and practical sessions. Correspondence about the workshop should be reply to this mail, or to the equivalent address workshop@gap-system.org. -- The organizers. From maasiru at yahoo.com Mon Jun 11 14:45:16 2007 From: maasiru at yahoo.com (muniru asiru) Date: Mon Jun 11 14:45:47 2007 Subject: [GAP Forum] Need help with Lists Message-ID: <526391.92344.qm@web53303.mail.re2.yahoo.com> I need help. While working with Gap, I came accross the following list of list of list with 10,3 and 7 items respectively. My interest is to REPLACE (please note) this list of list of list (a5, below) with a list of list so that I will have 30 elements made up of 7 elements in each list of list. Thank you a5:=[ [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,24,27)(20,22, 25)(21,23,26), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,27,24)(20,25,22)(21,26,23), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,24,27)(20,22, 25)(21,23,26), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,27,24)(20,25,22)(21,26,23), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,24,27)(20,22, 25)(21,23,26), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,27,24)(20,25,22)(21,26,23), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,22)(20,26, 23)(21,27,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,25)(20,23,26)(21,24,27), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,22)(20,26, 23)(21,27,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,25)(20,23,26)(21,24,27), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,22)(20,26, 23)(21,27,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,25)(20,23,26)(21,24,27), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,23)(20,26, 24)(21,27,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,25)(20,24,26)(21,22,27), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,23)(20,26, 24)(21,27,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,25)(20,24,26)(21,22,27), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,23)(20,26, 24)(21,27,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,25)(20,24,26)(21,22,27), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,24)(20,26, 22)(21,27,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,25)(20,22,26)(21,23,27), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,24)(20,26, 22)(21,27,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,25)(20,22,26)(21,23,27), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,25,24)(20,26, 22)(21,27,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,25)(20,22,26)(21,23,27), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,22)(20,27, 23)(21,25,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,26)(20,23,27)(21,24,25), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,22)(20,27, 23)(21,25,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,26)(20,23,27)(21,24,25), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,22)(20,27, 23)(21,25,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,26)(20,23,27)(21,24,25), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,23)(20,27, 24)(21,25,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,26)(20,24,27)(21,22,25), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,23)(20,27, 24)(21,25,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,26)(20,24,27)(21,22,25), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,23)(20,27, 24)(21,25,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,26)(20,24,27)(21,22,25), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,24)(20,27, 22)(21,25,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,26)(20,22,27)(21,23,25), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,24)(20,27, 22)(21,25,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,26)(20,22,27)(21,23,25), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,26,24)(20,27, 22)(21,25,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,26)(20,22,27)(21,23,25), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,22)(20,25, 23)(21,26,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,27)(20,23,25)(21,24,26), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,22)(20,25, 23)(21,26,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,27)(20,23,25)(21,24,26), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,22)(20,25, 23)(21,26,24), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,22,27)(20,23,25)(21,24,26), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,23)(20,25, 24)(21,26,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,27)(20,24,25)(21,22,26), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,23)(20,25, 24)(21,26,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,27)(20,24,25)(21,22,26), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,23)(20,25, 24)(21,26,22), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,23,27)(20,24,25)(21,22,26), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ], [ [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,24)(20,25, 22)(21,26,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,27)(20,22,25)(21,23,26), (1,10,19)(2,11,20)(3,12,21)(4,13,22)(5,14,23)(6,15,24)(7,16,25)(8, 17,26)(9,18,27), (1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6, 24,15)(7,25,16)(8,26,17)(9,27,18) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,24)(20,25, 22)(21,26,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,27)(20,22,25)(21,23,26), (1,10,19)(2,14,26)(3,18,24)(4,13,22)(5,17,20)(6,12,27)(7,16,25)(8, 11,23)(9,15,21), (1,19,10)(2,26,14)(3,24,18)(4,22,13)(5,20,17)(6, 27,12)(7,25,16)(8,23,11)(9,21,15) ], [ (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23, 24)(25,26,27), (1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18, 17)(19,21,20)(22,24,23)(25,27,26), (), (1,4,7)(2,5,8)(3,6,9)(10,18,15)(11,16,13)(12,17,14)(19,27,24)(20,25, 22)(21,26,23), (1,7,4)(2,8,5)(3,9,6)(10,15,18)(11,13,16)(12,14, 17)(19,24,27)(20,22,25)(21,23,26), (1,10,19)(2,17,23)(3,15,27)(4,13,22)(5,11,26)(6,18,21)(7,16,25)(8, 14,20)(9,12,24), (1,19,10)(2,23,17)(3,27,15)(4,22,13)(5,26,11)(6, 21,18)(7,25,16)(8,20,14)(9,24,12) ] ] ];; Length(a5); Length(a5[1]); Length(a5[1][1]); ____________________________________________________________________________________ Never miss an email again! Yahoo! Toolbar alerts you the instant new Mail arrives. http://tools.search.yahoo.com/toolbar/features/mail/ From thomas.breuer at math.rwth-aachen.de Mon Jun 11 16:08:11 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Mon Jun 11 16:08:35 2007 Subject: [GAP Forum] Announcement: new version of the AtlasRep package Message-ID: <20070611150811.GA10720@math.rwth-aachen.de> Dear GAP Forum, I am happy to announce the release of version 1.3 of the AtlasRep package, which provides a GAP interface to the famous Atlas of Group Representations. The most important feature of this new version is that the access to remote data works again, so I suggest all AtlasRep users to upgrade to the new version. (The access broke down when the original server in Birmingham stopped working, and unfortunately more than just an address change was necessary in order to switch to the new server in London. I am sorry for the inconveniences you may have had.) More information about the package can be found in its home page, at http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep A list of changes w.r.t. the previous version of the package can be found at http://www.gap-system.org/Manuals/pkg/atlasrep/doc/chap1.html#sect:news If you have problems with installing and using the package or its documentation then please tell me about them. All the best, Thomas Breuer From Rudolf.Zlabinger at chello.at Mon Jun 11 15:41:07 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Mon Jun 11 16:13:00 2007 Subject: [GAP Forum] IsInnerProduct References: <007a01c7ab32$4c40ad10$d5476d50@zlabinger> Message-ID: <005201c7ac36$8bc82670$d5476d50@zlabinger> Dear Forum, the inquiry is already answered, of course, the sequence in question is not needed at all. Thanks to the contributors, all the best, Rudolf Zlabinger ----- Original Message ----- From: "Rudolf Zlabinger" To: "GAP Forum" Sent: Sunday, June 10, 2007 9:38 AM Subject: [GAP Forum] IsInnerProduct Dear Forum, does anybody know a better performing method than this sequence prods:=List(Cartesian(subgroup1,subgroup2),Product); if Length(AsSet(prods)) <> outsize then return false;fi; in the function IsInnerProduct:= function(outergroup,subgroup1,subgroup2) local outsize,subsize1,subsize2,prods ; if not IsSubgroup(outergroup,subgroup1) then return false;fi; if not IsSubgroup(outergroup,subgroup2) then return false;fi; if Intersection(subgroup1,subgroup2) <> Group(()) then return false;fi; outsize:= Size(outergroup); subsize1:= Size(subgroup1); subsize2:= Size(subgroup2); if outsize <> subsize1*subsize2 then return false;fi; prods:=List(Cartesian(subgroup1,subgroup2),Product); if Length(AsSet(prods)) <> outsize then return false;fi; return true; end; . The function should return true iff the subgroups subgroup1 and subgroup2 form a inner product for group outergroup. Thank you for your cooperation, Rudolf Zlabinger -------------------------------------------------------------------------------- > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From hulpke at mac.com Mon Jun 11 16:34:12 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Mon Jun 11 16:35:33 2007 Subject: [GAP Forum] permutation actions In-Reply-To: <62894.195.58.13.18.1181386407.squirrel@proxy.imm.uran.ru> References: <62894.195.58.13.18.1181386407.squirrel@proxy.imm.uran.ru> Message-ID: <95D4B565-B848-4AA6-8A30-BCA4139DA5F3@mac.com> Dear GAP-Forum, Anton Konygin wrote: > Let G be a group generated by permutations g_1, ..., g_d on the set > {1, > ..., n} and H be a subgroup of G generated by permutations > h_1, ..., h_k > on the set {1, ..., n} (g_1, ..., g_d, h_1, ..., h_k are given > explicitly). > > Can I use GAP to get the natural (permutation) action of g_1, ..., > g_d on > left cosets of G by H (ordering in some way)? GAP uses right cosets and action from the right: A:=Action(G,RightTransversal(G,H),OnRight); Then GeneratorsOfGroup(A) give the action of g1,..g_d. (To get the (left) action on the left cosets, you would have to simply invert the permutations.) If you want the homomorphism, you can use phi:=ActionHomomorphism(G,RightTransversal(G,H),OnRight); Best wishes, Alexander Hulpke From alexander.konovalov at gmail.com Mon Jun 11 18:13:13 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Mon Jun 11 18:14:10 2007 Subject: [GAP Forum] Need help with Lists In-Reply-To: <526391.92344.qm@web53303.mail.re2.yahoo.com> References: <526391.92344.qm@web53303.mail.re2.yahoo.com> Message-ID: Dear GAP Forum, On 11 Jun 2007, at 14:45, muniru asiru wrote: > I need help. > > While working with Gap, I came accross the following > list of list of list with 10,3 and 7 items > respectively. My interest is to REPLACE (please note) > this list of list of list (a5, below) with a list of > list so that I will have 30 elements made up of 7 > elements in each list of list. > > > Thank you A straightforward suggestion would be to use 'Concatenation': gap> a5 := Concatenation( a5 );; gap> Length( a5 ); 30 gap> ForAll( a5, x -> Length(x) = 7 ); true Best, Alexander From magidin at member.ams.org Mon Jun 11 20:27:58 2007 From: magidin at member.ams.org (Arturo Magidin) Date: Mon Jun 11 20:23:31 2007 Subject: [GAP Forum] Running through subspaces over finite field Message-ID: Dear Forum, I'm doing some experiments in which I am looking at subspaces over a finite field of p elements. I am sure I will have more questions later, but I wanted to start with a (hopefully) simple one. For the past several days I've been running the tests over the subspaces of dimension 8 of the space of dimension 10 over GF(3) (there are about 74 million such subspaces). After defining gap> V:=GF(3)^10; gap> subspaces:=Subspaces(V,8); I defined an iterator, gap> iter:=Iterator(subspaces); I am producing a list of subspaces that have the property I want, by having a counter that I increase whenever I apply NextIterator to iter, and then printing the number. My question is whether there is an easy way to acces the nth subspace produced by the iterator other than to iterate it a step at a time. For example, when p=3, the first subspace I find with the property I want is the 6591-st one. I want to look more closely at this subspace (e.g., its basis, etc). In this case, since it is a pretty small number, I can do a loop to advance the iterator to the position and thus obtain a pointer that points to the desired subspaces. So I can do: gap> for i in [1..6590] do > xx:=NextIterator(iter); > od; and so I end up with xx being the subspace I want to look at. Is there some better way? Is there some way to move the iterator directly a certain number of positions? After several days, for example, I know that the 5,428,815-st subspace checked has the property. Advancing the iterator that much with a loop as above would take a non-negligible amount of time. Or, I am running a similar experiment with p=5; here, I know none of the first 100,000 subspaces have the property, but even just running the iterator forward 100,000 times takes a non-negligible amount of time. So I would like to be able to simply move the iterator or a pointer to "the 100,001-st subspace" and start from there. Or check some small ranges for other primes (say, from the 1,000,000-th subspace to the 1,100,000-th). Or maybe even random subspaces. So, the question in summary is: is there some way to access the n-th subspace in Subspaces(V,k) without using an iterator, or some way of advancing the iterator a given number of steps directly? Thanks in advance, Arturo Magidin magidin@member.ams.org From Rudolf.Zlabinger at chello.at Mon Jun 11 20:03:49 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Tue Jun 12 09:38:58 2007 Subject: [GAP Forum] Need help with lists Message-ID: <00da01c7ac5b$3ecbe620$d5476d50@zlabinger> Dear GAP Forum, On 11 Jun 2007, at 14:45, muniru asiru wrote: > I need help. > > While working with Gap, I came accross the following > list of list of list with 10,3 and 7 items > respectively. My interest is to REPLACE (please note) > this list of list of list (a5, below) with a list of > list so that I will have 30 elements made up of 7 > elements in each list of list. > > > Thank you There is a more general solution using my function "Array" (attached). That means, thereby you can reformat deliberately your list structure: a5:=[ [ [ ... ] ] ]; a307:=Array([30,7]); a210:=Flat(a5); k:=0; for i in [1..30] do for j in [1..7] do k:=k+1; a307[i][j]:=a210[k]; od; #j od; #i gap> Length(a307); 30 gap> Length(a307[1]); 7 gap> a210test:=Flat(a307);; gap> a210=a210test; true gap> all the best, Rudolf Zlabinger -------------- next part -------------- Array:=function(bounds) # creates an array of empty lists of arbitrary nesting levels (dimensions) # and bounds for each level # bounds is a list of positive integers determining the length of each dimension # the length of bounds is the dimension of the array # at element level the dimension of the array is 1 higher, # as the last level are also empty lists local array,IterateArray; IterateArray:=function(array,bounds) # iterative call for decreasing levels of array and bounds local i,dim,boundsrecall; # i.. index, # dim the recent level of bounds, # boundsrecall.. shortened bounds for recalls dim:=Length(bounds); # the varying length of bounds for i in [1..bounds[1]] do # 1 recallcascade for one add Add(array,[]); # enlarging the recent level of array if dim>1 then # dim=1 is the last level boundsrecall:=bounds{[2..dim]}; # shorten bounds for next level IterateArray(array[i],boundsrecall); # recursion for the next lower level of array fi; # end of dimension > 1 clause od; # end of bound loop return array; end; array:=[]; array:=IterateArray(array,bounds); # starting call of add cascade return array; end; From Rudolf.Zlabinger at chello.at Mon Jun 11 21:54:52 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Tue Jun 12 09:39:01 2007 Subject: [GAP Forum] Running through subspaces over finite field References: Message-ID: <013601c7ac6a$c21ade00$d5476d50@zlabinger> Dear Arturo Magidin, if I understood right, you want to handle a collection: gap> v:=GF(3)^10; ( GF(3)^10 ) gap> subspaces:=Subspaces(v,8); Subspaces( ( GF(3)^10 ), 8 ) gap> IsCollection(subspaces); true gap> For collections that are not lists, the default method is IteratorList( Enumerator( C ) ). (Reference Manual.... Iterators) Normally you would use enum:=Enumerator(subspaces), and then set enum[xxx] to your desired element, but Enumerator(subspaces) runs out of time and out of storage. Whereas you can process an Enumerator in the same way as a list, an Iterator only is usable step by step, therefore the definition of an Iterator is unsignificant to time and storage independent from the magnitude of the collection. The problem now is, that Enumerator doesnt run for the magnitude of your collection, and an Iterator cannot be preset to a predefined element. The best I see, is, that an Iterator remembers the last element called by NextIterator, so you can remember different states by different variables, you have to use ShallowCopy to get a different Object:: gap> iterrat:=Iterator(Rationals); gap> NextIterator(iterrat); 0 gap> NextIterator(iterrat); 1 gap> NextIterator(iterrat); -1 gap> NextIterator(iterrat); 1/2 gap> iterrat0010:=ShallowCopy(iterrat); gap> NextIterator(iterrat); 2 gap> NextIterator(iterrat); -1/2 gap> NextIterator(iterrat); -2 gap> NextIterator(iterrat0010); 2 gap> Maybe, and I hope so, you get better messages, all the best, Rudolf ----- Original Message ----- From: "Arturo Magidin" To: "GAP Forum" Sent: Monday, June 11, 2007 9:27 PM Subject: [GAP Forum] Running through subspaces over finite field > Dear Forum, > > I'm doing some experiments in which I am looking at subspaces over a > finite field of p elements. I am sure I will have more questions later, > but I wanted to start with a (hopefully) simple one. > > For the past several days I've been running the tests over the subspaces > of dimension 8 of the space of dimension 10 over GF(3) (there are about 74 > million such subspaces). > > After defining > > gap> V:=GF(3)^10; > gap> subspaces:=Subspaces(V,8); > > I defined an iterator, > > gap> iter:=Iterator(subspaces); > > > I am producing a list of subspaces that have the property I want, by > having a counter that I increase whenever I apply NextIterator to iter, > and then printing the number. > > My question is whether there is an easy way to acces the nth subspace > produced by the iterator other than to iterate it a step at a time. > > For example, when p=3, the first subspace I find with the property I want > is the 6591-st one. I want to look more closely at this subspace (e.g., > its basis, etc). In this case, since it is a pretty small number, I can > do a loop to advance the iterator to the position and thus obtain a > pointer that points to the desired subspaces. So I can do: > > gap> for i in [1..6590] do > > xx:=NextIterator(iter); > > od; > > and so I end up with xx being the subspace I want to look at. > > Is there some better way? Is there some way to move the iterator directly > a certain number of positions? > > After several days, for example, I know that the 5,428,815-st subspace > checked has the property. Advancing the iterator that much with a loop as > above would take a non-negligible amount of time. > > Or, I am running a similar experiment with p=5; here, I know none of the > first 100,000 subspaces have the property, but even just running the > iterator forward 100,000 times takes a non-negligible amount of time. So I > would like to be able to simply move the iterator or a pointer to "the > 100,001-st subspace" and start from there. Or check some small ranges for > other primes (say, from the 1,000,000-th subspace to the 1,100,000-th). Or > maybe even random subspaces. > > So, the question in summary is: is there some way to access the n-th > subspace in > > Subspaces(V,k) > > without using an iterator, or some way of advancing the iterator a given > number of steps directly? > > Thanks in advance, > > Arturo Magidin > magidin@member.ams.org > > > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From magidin at member.ams.org Tue Jun 12 16:09:20 2007 From: magidin at member.ams.org (Arturo Magidin) Date: Tue Jun 12 16:04:49 2007 Subject: [GAP Forum] Running through subspaces over finite field In-Reply-To: <013601c7ac6a$c21ade00$d5476d50@zlabinger> References: <013601c7ac6a$c21ade00$d5476d50@zlabinger> Message-ID: On Mon, 11 Jun 2007, Rudolf Zlabinger wrote: > Dear Arturo Magidin, > > if I understood right, you want to handle a collection: > > gap> v:=GF(3)^10; > ( GF(3)^10 ) > gap> subspaces:=Subspaces(v,8); > Subspaces( ( GF(3)^10 ), 8 ) > gap> IsCollection(subspaces); > true > gap> > > For collections that are not lists, the default method is IteratorList( > Enumerator( C ) ). (Reference Manual.... Iterators) > > Normally you would use enum:=Enumerator(subspaces), and then set enum[xxx] to > your desired element, but Enumerator(subspaces) runs out of time and out of > storage. Whereas you can process an Enumerator in the same way as a list, an > Iterator only is usable step by step, therefore the definition of an Iterator > is unsignificant to time and storage independent from the magnitude of the > collection. > > The problem now is, that Enumerator doesnt run for the magnitude of your > collection, and an Iterator cannot be preset to a predefined element. I was afraid of that. > The best I see, is, that an Iterator remembers the last element called by > NextIterator, so you can remember different states by different variables, > you have to use ShallowCopy to get a different Object:: That's fine. I don't really need to "remember" more than one object at a time, so that is not really a problem. On a related topic, then. Is the order in which the subspaces iterate fixed, or can it change with different calls of an iterator for Subspaces(V,k)? If it is fixed, could someone point me in the direction of the algorithm used to iterate through them? Thanks, Arturo From Frank.Luebeck at math.rwth-aachen.de Tue Jun 12 16:52:09 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Tue Jun 12 16:52:46 2007 Subject: [GAP Forum] Running through subspaces over finite field In-Reply-To: References: Message-ID: <20070612155209.GJ28741@math.rwth-aachen.de> On Mon, Jun 11, 2007 at 02:27:58PM -0500, Arturo Magidin wrote: > over the subspaces of dimension 8 of the space of dimension 10 over > GF(3) (there are about 74 million such subspaces). > > After defining > > gap> V:=GF(3)^10; > gap> subspaces:=Subspaces(V,8); > > I defined an iterator, > > gap> iter:=Iterator(subspaces); [...] > My question is whether there is an easy way to acces the nth subspace > produced by the iterator other than to iterate it a step at a time. Dear Arturo Magidin, dear Forum, You are looking for what is called an 'Enumerator' in GAP. But in this case there is no efficient Enumerator implemented. Some remarks: - You can say Enumerator(subspaces) in GAP but it would just use the Iterator to produce a list of all subspaces and therefore run out of memory (on most machines). - You don't need to call Iterator explicitly, but can also use a loop like for u in subspaces do myfunc(u); od; (but this uses the iterator internally) - It seems that in your example you are looking for a not too large set of subspaces. So, in your loop you could just store all of them in a list: interesting := []; for u in subspaces do if IsInterestingForMe(u) then Add(interesting, u); fi; od; - The iterator for these subspaces works by running through matrices in (Hermite) normal form of the right rank. It wouldn't be too difficult to implement an efficient Enumerator as well. Best regards, Frank L?beck -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From Rudolf.Zlabinger at chello.at Tue Jun 12 21:57:11 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Tue Jun 12 21:57:53 2007 Subject: [GAP Forum] Running through subspaces over finite field References: <013601c7ac6a$c21ade00$d5476d50@zlabinger> Message-ID: <008201c7ad34$3f8ba710$d5476d50@zlabinger> Dear Arturo, to your last question, whether the order of elements of collections of different calls to Iterator are fixed: "If this is a collection C but not a list then iter iterates over the elements of C in an unspecified order, which may change for repeated calls of Iterator." (Reference Manual...Iterators) So a fixed order is not guaranted by description of Iterator. All the best, Rudolf ----- Original Message ----- From: "Arturo Magidin" To: "GAP Forum" Sent: Tuesday, June 12, 2007 5:09 PM Subject: Re: [GAP Forum] Running through subspaces over finite field > On Mon, 11 Jun 2007, Rudolf Zlabinger wrote: > >> Dear Arturo Magidin, >> >> if I understood right, you want to handle a collection: >> >> gap> v:=GF(3)^10; >> ( GF(3)^10 ) >> gap> subspaces:=Subspaces(v,8); >> Subspaces( ( GF(3)^10 ), 8 ) >> gap> IsCollection(subspaces); >> true >> gap> >> >> For collections that are not lists, the default method is IteratorList( >> Enumerator( C ) ). (Reference Manual.... Iterators) >> >> Normally you would use enum:=Enumerator(subspaces), and then set >> enum[xxx] to your desired element, but Enumerator(subspaces) runs out of >> time and out of storage. Whereas you can process an Enumerator in the >> same way as a list, an Iterator only is usable step by step, therefore >> the definition of an Iterator is unsignificant to time and storage >> independent from the magnitude of the collection. >> >> The problem now is, that Enumerator doesnt run for the magnitude of your >> collection, and an Iterator cannot be preset to a predefined element. > > I was afraid of that. > >> The best I see, is, that an Iterator remembers the last element called by >> NextIterator, so you can remember different states by different >> variables, you have to use ShallowCopy to get a different Object:: > > That's fine. I don't really need to "remember" more than one object at a > time, so that is not really a problem. > > On a related topic, then. Is the order in which the subspaces iterate > fixed, or can it change with different calls of an iterator for > Subspaces(V,k)? > > If it is fixed, could someone point me in the direction of the algorithm > used to iterate through them? > > Thanks, > > Arturo > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From r_n_tsai at yahoo.com Thu Jun 14 03:54:11 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Thu Jun 14 03:54:50 2007 Subject: [GAP Forum] algebra mapping problem Message-ID: <20070614025411.43267.qmail@web34406.mail.mud.yahoo.com> Dear gap-forum, I am trying a simple algebra mapping that takes a much longer time than it should (actually it looks like it gets stuck, I interrupt the operation after a while). Here's an example. Read("weylalg.gap"); A:=WeylAlgebra(Rationals,1); g:=GeneratorsOfAlgebra(A); h:=[g[1],g[2]-g[3],g[2]+g[3]]; hom:=AlgebraWithOneGeneralMappingByImages(A,A,g,h); a:=g[2]; # This operation gets stuck b:=Image(hom,a); Any ideas why this is happening? Regards, R.N. It uses "WeylAlgebra" which I downloaded from Jan Draisma's site : http://www.win.tue.nl/~jdraisma/index.php?location=programs It's fairly small, so I'm attaching it here : WeylAlgebra := function(R, n) #This algebra constructs the Weyl Algebra W in n variables, with #coefficients from the ring R. This is the associative algebra with one, #and generators x_1,...,x_n,D_1,...D_n among which the only non-trivial #commutation relations are [x_i,D_i]=-1. Hence, if one defines a Lie #algebra L with basis I,x_1,...,x_n,D_1,...,D_n and relations #[x_i,D_i]=-I, then W=U(L)/[I-1]. This simple fact is exploited as #follows: the code below is that of UniversalEnvelopingAlgebra, with the #following changes: #1. T is constructed from the above-mentioned L. #2. When `DescriptionOfNormalizedUEAElement' returns an extrep, the #occurence of the last generator, I, is simply left out. # # Jan Draisma, 24 August 2001. local F, # free associative algebra W, # Weyl algebra gen, # loop over algebra generators of `W' Fam, # elements family of `W' T, # s.c. table of a basis of `L' FamMon, # family of monomials FamFree, # elements family of `F' i; # loop variable #Structure constants of the Lie algebra L T:=EmptySCTable(2*n+1,0,"antisymmetric"); for i in [1..n] do SetEntrySCTable(T,i,i+n,[-1,2*n+1]); od; # Construct the Weyl Algebra F:= FreeAssociativeAlgebraWithOne( R, Concatenation( List([1..n],i->Concatenation("x_",String(i))), List([1..n],i->Concatenation("D_",String(i))))); W:= FactorFreeAlgebraByRelators( F, [ Zero( F ) ] ); # Enter knowledge about `W'. SetDimension( W, infinity ); for gen in GeneratorsOfLeftOperatorRingWithOne( W ) do SetIsNormalForm( gen, true ); od; SetIsNormalForm( Zero( W ), true ); # Enter data to handle elements. Fam:= ElementsFamily( FamilyObj( W ) ); Fam!.normalizedType:= NewType( Fam, IsElementOfFpAlgebra and IsPackedElementDefaultRep and IsNormalForm ); FamMon:= ElementsFamily( FamilyObj( UnderlyingMagma( F ) ) ); FamFree:= ElementsFamily( FamilyObj( F ) ); SetNiceNormalFormByExtRepFunction( Fam, function( Fam, extrep ) local zero, i; zero:= extrep[1]; extrep:= DescriptionOfNormalizedUEAElement( T, extrep[2] ); for i in [ 1, 3 .. Length( extrep ) - 1 ] do #Remove the superfluous generator with index 2n+1!! if Length(extrep[i])>0 then if extrep[i][Length(extrep[i])-1]=2*n+1 then extrep[i]:=extrep[i]{[1..Length(extrep[i])-2]}; fi; fi; extrep[i]:= ObjByExtRep( FamMon, extrep[i] ); od; return Objectify( Fam!.normalizedType, [ Objectify( FamFree!.defaultType, [ zero, extrep ] ) ] ); end ); SetOne( W, ElementOfFpAlgebra( Fam, One( F ) ) ); # Return the universal enveloping algebra. return W; end; #T missing: relators (only compute them if they are explicitly wanted) #T (attribute `Relators'?) Lie:=function(v,w) #For elements of an algebra, Lie(v,w) returns their commutator. return v*w-w*v; end; --------------------------------- Building a website is a piece of cake. Yahoo! Small Business gives you all the tools to get online. From Luc.Gillibert at info.unicaen.fr Thu Jun 14 07:35:23 2007 From: Luc.Gillibert at info.unicaen.fr (Luc Gillibert) Date: Thu Jun 14 10:22:44 2007 Subject: [GAP Forum] Finding [2,p]-generated groups Message-ID: <20070614083523.6eae03a1.Luc.Gillibert@info.unicaen.fr> Dear GAP Forum, I have the following problem: I want to list all the groups of order n generated by one element of order 2 and one element of order p>2, with p prime (and n divided by 2 and by p, of course). I can achieve that goal using the SmallGroup library and testing all the groups of order n, but is there any faster way ? Same question for the groups generated by two elements of order p, with p prime. Thank you. Best Regards, Luc Gillibert From degraaf at science.unitn.it Thu Jun 14 18:01:21 2007 From: degraaf at science.unitn.it (Willem de Graaf) Date: Thu Jun 14 17:53:29 2007 Subject: [GAP Forum] algebra mapping problem In-Reply-To: <20070614025411.43267.qmail@web34406.mail.mud.yahoo.com> References: <20070614025411.43267.qmail@web34406.mail.mud.yahoo.com> Message-ID: <1181840482.1527.48.camel@dhcp047.science.unitn.it> Dear Tsai, You noted the following behaviour: > Read("weylalg.gap"); > A:=WeylAlgebra(Rationals,1); > g:=GeneratorsOfAlgebra(A); > h:=[g[1],g[2]-g[3],g[2]+g[3]]; > hom:=AlgebraWithOneGeneralMappingByImages(A,A,g,h); > a:=g[2]; > # This operation gets stuck > b:=Image(hom,a); > > Any ideas why this is happening? As far as I can see the following happens. Unfortunately, GAP doesn't know how to compute the image in this case, i.e., there is no special method implemented. So GAP falls back on a method that is based on computing a basis of the algebra in question. But because the algebra here is infinite dimensional, this never terminates. Best wishes, Willem de Graaf From r_n_tsai at yahoo.com Thu Jun 14 19:09:59 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Thu Jun 14 19:10:44 2007 Subject: [GAP Forum] algebra mapping problem In-Reply-To: <1181840482.1527.48.camel@dhcp047.science.unitn.it> Message-ID: <476181.81307.qm@web34405.mail.mud.yahoo.com> Dear Willem and gap-forum, That's too bad. A simple "substitution rule" or "evaluation map" for algebras would be a useful feature to have in GAP. BTW, this problem occurs outside the WeylAlg package. Here's another simple example with lie algebras: A:=SimpleLieAlgebra("A",1,Rationals); U:=UniversalEnvelopingAlgebra(A); g:=GeneratorsOfAlgebraWithOne(U); a:=g[1]; hom:=AlgebraWithOneGeneralMappingByImages(U,U,g,g); # This gets stuck b:=Image(hom,a); Regards, R.N. Willem de Graaf wrote: Dear Tsai, You noted the following behaviour: > Read("weylalg.gap"); > A:=WeylAlgebra(Rationals,1); > g:=GeneratorsOfAlgebra(A); > h:=[g[1],g[2]-g[3],g[2]+g[3]]; > hom:=AlgebraWithOneGeneralMappingByImages(A,A,g,h); > a:=g[2]; > # This operation gets stuck > b:=Image(hom,a); > > Any ideas why this is happening? As far as I can see the following happens. Unfortunately, GAP doesn't know how to compute the image in this case, i.e., there is no special method implemented. So GAP falls back on a method that is based on computing a basis of the algebra in question. But because the algebra here is infinite dimensional, this never terminates. Best wishes, Willem de Graaf --------------------------------- Be a better Heartthrob. Get better relationship answers from someone who knows. Yahoo! Answers - Check it out. From vdovin at math.nsc.ru Fri Jun 15 08:22:45 2007 From: vdovin at math.nsc.ru (Vdovin Evgeni) Date: Fri Jun 15 08:23:52 2007 Subject: [GAP Forum] bug with semidirect product? Message-ID: <46723E45.7030506@math.nsc.ru> Dear Forum! When I try to construct semidirect product GL_2(9)*GF(9)^2, it returns a group with GF(3)^2 as a normal subgroup (see the listing below). gap> V:=GF(9)^2; ( GF(3^2)^2 ) gap> G:=GeneralLinearGroup(2,9); GL(2,9) gap> p:=SemidirectProduct(G,V); gap> L:=Image(Embedding(p,1)); Group( [ [ [ Z(3^2), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z(3), 0*Z(3), Z(3)^0 ] ], [ [ Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), Z(3)^0 ] ] ]) gap> U:=Image(Embedding(p,2)); Group( [ [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3)^0, 0*Z(3), Z(3)^0 ] ], [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z(3), Z(3)^0, Z(3)^0 ] ] ]) gap> Order(U); 9 Can anybody explain, what is wrong here? -- Best Regards Vdovin Evgenii Institute of Mathematics pr-t Acad. Koptyug, 4 630090, Novosibirsk, Russia Office +7 383 3333495 Home +7 383 2644892 Cellular +7 913 9475524 Fax +7 383 3332598 From mjoao at classic.univ-ab.pt Fri Jun 15 14:47:32 2007 From: mjoao at classic.univ-ab.pt (Joao Araujo) Date: Fri Jun 15 14:52:18 2007 Subject: [GAP Forum] test for subsemigroups Message-ID: Dear Forum, I would be grateful if someone could tell me if there is in GAP an easy way to check if a 10-elements semigroup of transformations S can be embedded in an 11-elements semigroup of transformations T. I thank in advance, Joao From dennis at rkd.math.cornell.edu Fri Jun 15 15:44:27 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Fri Jun 15 15:49:49 2007 Subject: [GAP Forum] Finding [2,p]-generated groups Message-ID: <200706151444.l5FEiR8H032346@rkd.math.cornell.edu> I'm doing similar, but more complicated computations now. In your case you can eliminate many groups from consideration almost instantly by using EulerianFunction(G,2) to determine if the group is generated by 2 elements or not. After that, I suppose you could save a bit by letting the first element range over representatives of conjugacy classes of elements of order 2 (resp p), but for the second element testing all relevant ones seems like the simplest way to go. I guess it depends on how many cases you want to check. Keith > I have the following problem: I want to list all the groups of order >n generated by one element of order 2 and one element of order p>2, >with p prime (and n divided by 2 and by p, of course). I can achieve >that goal using the SmallGroup library and testing all the groups of >order n, but is there any faster way ? Same question for the groups >generated by two elements of order p, with p prime. From Rudolf.Zlabinger at chello.at Fri Jun 15 16:09:08 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Fri Jun 15 16:09:57 2007 Subject: [GAP Forum] PREFAG V 1.0.6 Message-ID: <000801c7af5f$1fb6dc20$d5476d50@zlabinger> Dear Forum, in the meantime the Package PREFAG V 1.0.6 is available. It includes an enhanced factorizing function along with a documentation of theoretical background that was used to enhance the factorizing function. PREFAG "PRoducts and Exact FActorization of Groups" is available by mail attachment on a demand basis. best regards, Rudolf Zlabinger From hulpke at math.colostate.edu Fri Jun 15 18:48:44 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Fri Jun 15 18:49:53 2007 Subject: [GAP Forum] Finding [2,p]-generated groups In-Reply-To: <200706151444.l5FEiR8H032346@rkd.math.cornell.edu> References: <200706151444.l5FEiR8H032346@rkd.math.cornell.edu> Message-ID: Dear Keith, Dear Forum, On Jun 15, 2007, at 6/15/07 8:44, R. Keith Dennis wrote: > I'm doing similar, but more complicated computations now. In your > case you can eliminate many groups from consideration almost instantly > by using EulerianFunction(G,2) to determine if the group is generated > by 2 elements or not. After that, I suppose you could save a bit > by letting the first element range over representatives of conjugacy > classes of elements of order 2 (resp p), but for the second element > testing all relevant ones seems like the simplest way to go. It is possible to select the second element up to conjugacy with the centralizer of the first element. (A nice description is in section 9.1 of Holt, Eick, O'Brien: Handbook of CGT). The easiest way to do this in GAP is to use the function GQuotients on a suitable finitely presented group: For example one case for p=11: gap> f:=FreeGroup("x","y"); gap> AssignGeneratorVariables(f); #I Assigned the global variables [ x, y ] gap> rels:=[x^2,y^11]; #e.g. p=11 [ x^2, y^11 ] gap> g:=f/rels; gap> h:=MathieuGroup(11); Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]) gap> GQuotients(g,h); [ [ x, y ] -> [ (4,10)(5,8)(6,7)(9,11), (1,6,2,10,3,4,8,7,11,9,5) ], ... This lists one representative per conjugacy class of generating systems. The list returned is empty iff no generating system exists. I hope this is of help, Alexander From dennis at rkd.math.cornell.edu Fri Jun 15 18:52:10 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Fri Jun 15 18:57:31 2007 Subject: [GAP Forum] some questions Message-ID: <200706151752.l5FHqAjq000661@rkd.math.cornell.edu> Dear Colleagues: I have several questions and would appreciate any suggestions. I've only recently attempted to do any real programming in GAP, so probably the solutions are obvious: 1. How does one generate file names (by program) so that a given session may have multiple output files? E.g., run a program without for each group order - test.16, test.32, test.64,... or append a time stamp, or even better, "if file xxx.001 exists then newfile name = xxx.002". LogTo didn't seem to accept the names I attempted to give in (in quotes, it used the variable name & without gave an error). 2. How does one trap errors? E.g., something like if defined NumberSmallgroups(n) then Print(.....); else Print("NumberSmallGroups(",n,") is not defined\n"); fi; 3. How does one convert a matrix with integer entries to a matrix with entries mod q for some prime q? 4. Is there any reason SubdirectProduct is called that instead of PullBack? It seems to me the name is wrong or at least misleading. I would have thought a SubdirectProduct would, for example, take information such as an nxm matrix of group elements where the list in the i-th row are elements from the group G_i, and the subdirect product is the subgroup of the direct product generated by the m (columns) (g11,g21,...,gn1), ... , (g1m,g2m,...,gnm) in the direct product G1 x ... Gn. To ensure it's a subdirect product one would need that elements in the i-th row generate Gi (but there would be no reason to ask unless one really needed surjection on the factors). I have more, but will stop here. Thanks for your help! Keith From dennis at rkd.math.cornell.edu Fri Jun 15 19:39:52 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Fri Jun 15 19:44:42 2007 Subject: [GAP Forum] Finding [2,p]-generated groups Message-ID: <200706151839.l5FIdqwI000803@rkd.math.cornell.edu> Dear Alexander, thanks for the suggestion. I guess "simplest way to go" for me meant that I knew the additional reduction one could make, but it wasn't clear to me how much it would help to speed up the computation. Or it might simply reflect on the level of my programming skills ... But in any case I would not thought of using GQuotients for this purpose, as I was not thinking of answering a more specific question, where the second element was restricted. Thanks again for the comments & examples! Keith > > testing all relevant ones seems like the simplest way to go. > It is possible to select the second element up to conjugacy with the > centralizer of the first element. (A nice description is in section > 9.1 of Holt, Eick, O'Brien: Handbook of CGT). > > The easiest way to do this in GAP is to use the function GQuotients > on a suitable finitely presented group: > For example one case for p=11: > > gap> f:=FreeGroup("x","y"); > > gap> AssignGeneratorVariables(f); > #I Assigned the global variables [ x, y ] > gap> rels:=[x^2,y^11]; #e.g. p=11 > [ x^2, y^11 ] > gap> g:=f/rels; > > gap> h:=MathieuGroup(11); > Group([ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]) > gap> GQuotients(g,h); > [ [ x, y ] -> [ (4,10)(5,8)(6,7)(9,11), (1,6,2,10,3,4,8,7,11,9,5) ], > ... > > This lists one representative per conjugacy class of generating > systems. The list returned is empty iff no generating system exists. > > I hope this is of help, > > Alexander > > From savchuk at math.tamu.edu Sat Jun 16 02:03:08 2007 From: savchuk at math.tamu.edu (Dmytro Savchuk) Date: Sat Jun 16 02:04:02 2007 Subject: [GAP Forum] immutable --> mutable lists Message-ID: <42107507858.20070615200308@math.tamu.edu> Dear Forum, I have one simple question. Suppose we have an immutable list whose entries are immutable lists (e.g. l := [ [1,2], [3,4] ] ). What is the easiest way to make a mutable copy of this structure (so that the entries become also mutable). The one I came up with is obvious List(l, x->List(x)); It works here (where I need it), but what if the dimension of the list is bigger than 2? Maybe there is something more general? Or it is necessary to use some recursion? Thank you! Dmytro Savchuk From jack at ms.uky.edu Sun Jun 17 04:19:28 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Sun Jun 17 04:20:27 2007 Subject: [GAP Forum] some questions In-Reply-To: <200706151752.l5FHqAjq000661@rkd.math.cornell.edu> References: <200706151752.l5FHqAjq000661@rkd.math.cornell.edu> Message-ID: <4674A840.2080705@ms.uky.edu> Here are some hopefully helpful suggestions from Alexander Konovalov, Steve Linton, and myself. R. Keith Dennis wrote: > Dear Colleagues: > > I have several questions and would appreciate any suggestions. I've > only recently attempted to do any real programming in GAP, so probably > the solutions are obvious: > > 1. How does one generate file names (by program) so that a given > session may have multiple output files? E.g., run a program without > for each group order - test.16, test.32, test.64,... or append a time > stamp, or even better, "if file xxx.001 exists then newfile name = > xxx.002". > > LogTo didn't seem to accept the names I attempted to give in (in > quotes, it used the variable name & without gave an error). Some functions that take "string-like" arguments will convert your input for you, but some really require strings, or even a single string. LogTo and the related function PrintTo both require the filename to be a string. You can create such a string using the String and Concatenation functions. For instance gap> Concatenation("myfile.",String(23)); "myfile.23" or an old trick for padding: gap> Concatenation("myfile.",String(1023){[2..4]}); "myfile.023" You can check if a file already exists with IsExistingFile: gap> n:=1001;; gap> fn:=Concatenation( "myfile.", String(n){[2..4]} );; gap> while IsExistingFile( fn ) do > n:=n+1; > fn:=Concatenation( "myfile.", String(n){[2..4]} ); > od; gap> fn; "myfile.017" Most likely if you really want 999 output files, you will also want to use the PrintTo function rather than LogTo. LogTo is more suited to interactive sessions, and PrintTo is more suited to programming. > 2. How does one trap errors? E.g., something like > > if defined NumberSmallgroups(n) then > Print(.....); > else > Print("NumberSmallGroups(",n,") is not defined\n"); > fi; There is no method in GAP to trap errors, but the list of orders covered by the small groups library is at: http://www.tu-bs.de:8080/~hubesche/small.html If you would like, we would be happy to forward you this list as a simple GAP function that returns true/false based on whether an integer falls into one of these categories. > 3. How does one convert a matrix with integer entries to a matrix > with entries mod q for some prime q? You can multiply it by the identity element from the appropriate residue class ring or finite field: gap> [[1,2],[8,4]]*ZmodnZObj(1,6); [ [ ZmodnZObj( 1, 6 ), ZmodnZObj( 2, 6 ) ], [ ZmodnZObj( 2, 6 ), ZmodnZObj( 4, 6 ) ] ] gap> [[1,2],[8,4]]*ZmodnZObj(1,5); [ [ ZmodpZObj( 1, 5 ), ZmodpZObj( 2, 5 ) ], [ ZmodpZObj( 3, 5 ), ZmodpZObj( 4, 5 ) ] ] gap> [[1,2],[8,4]]*One(GF(5)); [ [ Z(5)^0, Z(5) ], [ Z(5)^3, Z(5)^2 ] ] Or if you prefer to have integer entries reduced to their least nonnegative residue mod q, you can just use "mod q": gap> [[1,2],[8,4]] mod 5; [ [ 1, 2 ], [ 3, 4 ] ] > 4. Is there any reason SubdirectProduct is called that instead of > PullBack? It seems to me the name is wrong or at least misleading. I > would have thought a SubdirectProduct would, for example, take > information such as an nxm matrix of group elements where the list in > the i-th row are elements from the group G_i, and the subdirect > product is the subgroup of the direct product generated by the m > (columns) (g11,g21,...,gn1), ... , (g1m,g2m,...,gnm) in the direct > product G1 x ... Gn. To ensure it's a subdirect product one would > need that elements in the i-th row generate Gi (but there would be no > reason to ask unless one really needed surjection on the factors). The definition in GAP corresponds to its main use in the construction of small perfect groups. This definition is equivalent to the standard definition for subdirect products of pairs of groups by Lemma 2.1.2.iii of Holt&Plesken's book, "Perfect Groups." As noted in section 2.1.3 of this book, the general case does not have an easy translation into this pullback framework, but within GAP one can only form subdirect products of two groups, so this issue does not arise. > I have more, but will stop here. Please do not hesitate to ask more questions! You can write to GAP Forum with questions that you believe are of general interest, and to GAP Support (support@gap-system.org) with more technical questions. From alexk at mcs.st-and.ac.uk Sun Jun 17 11:58:52 2007 From: alexk at mcs.st-and.ac.uk (Alexander Konovalov) Date: Sun Jun 17 11:59:31 2007 Subject: [GAP Forum] immutable --> mutable lists In-Reply-To: <42107507858.20070615200308@math.tamu.edu> References: <42107507858.20070615200308@math.tamu.edu> Message-ID: Dear Dmytro, 1) In your example, it is fine to use List(l, x->List(x)); Maybe I would use only the notation List(l, ShallowCopy ) to make more it more visible what's going on. 2) Besides this, if l is a matrix, you may use MutableCopyMat, that will use exactly List(l, ShallowCopy ) to produce the output: gap> l := [ [1,2], [3,4] ]; [ [ 1, 2 ], [ 3, 4 ] ] gap> MakeImmutable(l); gap> IsMutable(l[1]); false gap> IsMutable(l); false gap> m:=MutableCopyMat(l); [ [ 1, 2 ], [ 3, 4 ] ] gap> IsMutable(m); true gap> IsMutable(m[1]); true There are no other functions in GAP for more general cases. Best wishes, Alexander On 16 Jun 2007, at 02:03, Dmytro Savchuk wrote: > Dear Forum, > > I have one simple question. Suppose we have an immutable list whose > entries are immutable lists (e.g. l := [ [1,2], [3,4] ] ). What is the > easiest way to make a mutable copy of this structure (so that the > entries become also mutable). The one I came up with is obvious > > List(l, x->List(x)); > > It works here (where I need it), but what if the dimension of the list > is bigger than 2? Maybe there is something more general? Or it is > necessary to use some recursion? > > Thank you! > Dmytro Savchuk From dennis at rkd.math.cornell.edu Sun Jun 17 19:31:50 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Sun Jun 17 19:37:09 2007 Subject: [GAP Forum] some questions Message-ID: <200706171831.l5HIVolw018735@rkd.math.cornell.edu> Dear Jack, thanks very much for this note, as well as your earlier note. Just what I needed! > Here are some hopefully helpful suggestions from Alexander Konovalov, > Steve Linton, and myself. > > 2. How does one trap errors? E.g., something like > > > > if defined NumberSmallgroups(n) then > > Print(.....); > > else > > Print("NumberSmallGroups(",n,") is not defined\n"); > > fi; > > There is no method in GAP to trap errors, but the list of orders covered > by the small groups library is at: I realize that GAP is extremely useful for interactive programming, and 'break'ing upon errors helps to detect & fix problems, but not being able to gracefully exit from a computation and continue on to the next case, makes things a bit difficult, but perhaps mainly for those not so familiar with what might go wrong. > http://www.tu-bs.de:8080/~hubesche/small.html > > If you would like, we would be happy to forward you this list as a > simple GAP function that returns true/false based on whether an integer > falls into one of these categories. Thanks for the offer, but that's not necessary. I had hoped for a general solution that I presumed I had missed in the documentation. If there were a way to add such a feature to GAP it seems to me that it would be extremely valuable. I'm too accustomed to programming in perl where I protect myself (most of the time) by "if defined ... then". A related question: If one has defined a function of 2 or 3 or whatever variables of a certain type, is there a way to program in returning usage if no (or the wrong number, or type) entries are given? I write too many functions & it would be much more convenient if they would remind me as to what they do & what correct input should be, especially when I give them the wrong number of entries, or the wrong type. > > 4. Is there any reason SubdirectProduct is called that instead of > > PullBack? It seems to me the name is wrong or at least misleading. I > The definition in GAP corresponds to its main use in the construction of > small perfect groups. This definition is equivalent to the standard > definition for subdirect products of pairs of groups by Lemma 2.1.2.iii I can't seem to find my copy of the book at the moment, but it just struck me as strange terminology as, for example, direct product was not a special case. > of Holt&Plesken's book, "Perfect Groups." As noted in section 2.1.3 of > this book, the general case does not have an easy translation into this Exactly. I guess that was my point. > pullback framework, but within GAP one can only form subdirect products > of two groups, so this issue does not arise. > Please do not hesitate to ask more questions! You can write to GAP Forum > with questions that you believe are of general interest, and to GAP > Support (support@gap-system.org) with more technical questions. Thanks! Another simple one then: Is there a simple way to get the lattice of normal subgroups of a group? One can get the lattice of all subgroups, and the collection of normal subgroups, but I didn't see a SubLattice command nor could I find a way to filter. I presume there is a way. And the same question for the subnormal subgroups. Thanks again for your help! Keith From sal at cs.st-and.ac.uk Sun Jun 17 21:29:37 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Sun Jun 17 21:30:04 2007 Subject: [GAP Forum] some questions In-Reply-To: <200706171831.l5HIVolw018735@rkd.math.cornell.edu> References: <200706171831.l5HIVolw018735@rkd.math.cornell.edu> Message-ID: <20070617212937.0b99542f@caolila> Dear GAP Forum, On Sun, 17 Jun 2007 14:31:50 -0400 "R. Keith Dennis" wrote: > Dear Jack, > > thanks very much for this note, as well as your earlier note. > > Just what I needed! > Glad to hear it. > > I realize that GAP is extremely useful for interactive programming, > and 'break'ing upon errors helps to detect & fix problems, but not > being able to gracefully exit from a computation and continue on to > the next case, makes things a bit difficult, but perhaps mainly for > those not so familiar with what might go wrong. > > Thanks for the offer, but that's not necessary. I had hoped for a > general solution that I presumed I had missed in the documentation. > > If there were a way to add such a feature to GAP it seems to me that > it would be extremely valuable. > > I'm too accustomed to programming in perl where I protect myself > (most of the time) by "if defined ... then". > We are working on this. Already, many functions return 'fail' rather than giving errors (for instance trying to invert a singular matrix) to allow these conditions to be detected, but we are working on a general mechanism for catching errors. > A related question: If one has defined a function of 2 or 3 or > whatever variables of a certain type, is there a way to program in > returning usage if no (or the wrong number, or type) entries are > given? I write too many functions & it would be much more convenient > if they would remind me as to what they do & what correct input should > be, especially when I give them the wrong number of entries, or the > wrong type. The most general solution is write something like foo := function(arg) if Length(arg) <> 2 or not IsWidget(arg[1]) or not IsThingummy(arg[2]) then Error("foo: arguments should be a widget and a thingummy"); fi; I'll leave your remaining question, about normal subgroups for someone else to answer. Steve -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From jamesm at mcs.st-and.ac.uk Mon Jun 18 10:31:07 2007 From: jamesm at mcs.st-and.ac.uk (James Mitchell) Date: Mon Jun 18 10:31:01 2007 Subject: [GAP Forum] (no subject) Message-ID: <2274FB53-EEEE-4610-9D62-7CFE16298F66@mcs.st-and.ac.uk> Dear Joao, If the question is: Let S and T be semigroups of transformations of degree n where |S|=10 and |T|=11. Then is S a subsemigroup of T? Then the answer is yes, just use ForAll(S, x-> x in T); If the question is: Let S be a semigroup of transformations where |S| =10. Then does there exist T such that |T|=11 and S embeds in T? Then the answer is no, there is no method installed in GAP to handle this situation. If the question is: Let S be a semigroup of degree 10 given by its Cayley table and let T be a semigroup of degree 11 given by its Cayley table. Then is S isomorphic to a subsemigroup of T? Then the answer is: it is possible to do this in GAP but the method is not efficient. Look at the orbits of the 11 10x10 subtables of the Cayley table of T inside the symmetric group on 11 points acting on the pairs (i,j) i, j in {1,...,11}. If the Cayley table for S lies in any of these orbits, then the answer is yes! Otherwise, the answer is no. However it might take a long time to tell you an answer. Let me know if that helps. Regards, James > Message: 6 > Date: Fri, 15 Jun 2007 14:47:32 +0100 (WEST) > From: Joao Araujo > Subject: [GAP Forum] test for subsemigroups > To: forum@gap-system.org > Message-ID: > Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed > > > Dear Forum, > > I would be grateful if someone could tell me if there is in GAP an > easy way to check if a 10-elements semigroup of transformations S > can be embedded in an 11-elements semigroup of transformations T. > > I thank in advance, > Joao From Rudolf.Zlabinger at chello.at Mon Jun 18 11:42:55 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Mon Jun 18 11:43:27 2007 Subject: [GAP Forum] transfer fp relators Message-ID: <001301c7b195$6de731a0$d5476d50@zlabinger> Dear Forum, I am looking for a possibility to transfer relators of one fp group to another free group without transcripting the relators manually. I used in the following example a method, which is very restricting for the variable name of the target free group (= f) and is not allowed in a function, as AssignGeneratorVariables is forbidden there. Is there another possibility? As an example I reproduced the direct product of symmetric group (3) and alternating group (4). The manual method to produce the mutual relators rel0010 - rel0040 is no problem to me, as this is normally done by automatic methods in my functions. gap> f:=FreeGroup(4);; gap> AssignGeneratorVariables(f); #I Assigned the global variables [ f1, f2, f3, f4 ] gap> s3:=SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> a4:=AlternatingGroup(4);; gap> s3fp:=Image(IsomorphismFpGroup(s3));; gap> a4fp:=Image(IsomorphismFpGroup(a4));; gap> prod:=FreeProduct(s3fp,a4fp);; gap> prodrels:=RelatorsOfFpGroup(prod);; gap> rels0010:=[prod.1*prod.3*prod.1^-1*prod.3^-1]; [ f1*f3*f1^-1*f3^-1 ] gap> rels0020:=[prod.1*prod.4*prod.1^-1*prod.4^-1]; [ f1*f4*f1^-1*f4^-1 ] gap> rels0030:=[prod.2*prod.4*prod.2^-1*prod.4^-1]; [ f2*f4*f2^-1*f4^-1 ] gap> rels0040:=[prod.2*prod.3*prod.2^-1*prod.3^-1]; [ f2*f3*f2^-1*f3^-1 ] gap> relscon:=Concatenation(prodrels,rels0010,rels0020,rels0030,rels0040);; gap> relsstr:=String(relscon); "[ f1^2, f2^2, f1*f2*f1*f2*f1*f2, f3^3*f4^-3, f3^3*f4^-1*f3^-1*f4^-1*f3^-1, f3\ ^-1*f4^-1*f3*f4*f3^-1*f4^-1*f3*f4, f1*f3*f1^-1*f3^-1, f1*f4*f1^-1*f4^-1, f2*f4\ *f2^-1*f4^-1, f2*f3*f2^-1*f3^-1 ]" gap> f/EvalString(relsstr); gap> dirprodfp:=last; gap> dirprod:=DirectProduct(s3,a4); Group([ (1,2,3), (1,2), (4,5,6), (5,6,7) ]) gap> IsomorphismGroups(dirprodfp,dirprod); [ f1, f2, f3, f4 ] -> [ (1,2), (1,3), (4,7,6), (4,5,6) ] gap> Thank you, Rudolf Zlabinger From max at quendi.de Mon Jun 18 13:15:11 2007 From: max at quendi.de (Max Horn) Date: Mon Jun 18 13:15:38 2007 Subject: [GAP Forum] transfer fp relators In-Reply-To: <001301c7b195$6de731a0$d5476d50@zlabinger> References: <001301c7b195$6de731a0$d5476d50@zlabinger> Message-ID: <1006507.50822.XVdYXF9DRFA=.1182168911.squirrel@webmailer.hosteurope.de> Dear Rudolf Zlabinger, the following program performs what you want in a reasonably simple and extensible fashion. f:=FreeGroup(4);; s3:=SymmetricGroup(3); a4:=AlternatingGroup(4);; s3fp:=Image(IsomorphismFpGroup(s3));; a4fp:=Image(IsomorphismFpGroup(a4));; s3rels:=List(RelatorsOfFpGroup(s3fp), r->MappedWord(r, FreeGeneratorsOfFpGroup(s3fp), [f.1,f.2]));; a4rels:=List(RelatorsOfFpGroup(a4fp), r->MappedWord(r, FreeGeneratorsOfFpGroup(a4fp), [f.3,f.4]));; commrels:=ListX([f.1,f.2], [f.3,f.4], Comm);; dirprodfp:= f / Union(s3rels, a4rels,commrels);; dirprod:=DirectProduct(s3,a4);; IsomorphismGroups(dirprodfp,dirprod); Best regards, Max From dennis at rkd.math.cornell.edu Mon Jun 18 15:16:53 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Mon Jun 18 15:22:10 2007 Subject: [GAP Forum] some questions Message-ID: <200706181416.l5IEGruZ021960@rkd.math.cornell.edu> Dear Jack, Dear Steve, Thanks again for the helpful replies. > > I'm too accustomed to programming in perl where I protect myself > > (most of the time) by "if defined ... then". > > > We are working on this. Already, many functions return 'fail' rather than > giving errors (for instance trying to invert a singular matrix) to allow these > conditions to be detected, but we are working on a general mechanism for > catching errors. Ok, I was not aware that there were so many differences in the programming (e.g., I noted about 1000 instances of 'fail') and had preseumed that the programs all followed, more or less, the same standards. > I'll leave your remaining question, about normal subgroups for someone else to > answer. No suggestions yet. I hope there is still the patience to answer a few more questions: If one wanted to write a function, SubLattice say, that might behave in some reasonable way, e.g., maybe something like l:=LatticeSubgroups(G); n:=SubLattice(l,x->NormalSubgroups(G)); where SubLattice is supposed to remove all nodes and edges from l except for those in the collection of subgroups given (at the moment I won't worry if the resulting structure is actually a lattice), one at least needs to understand the way the lattice structure is stored in l. How do I determine that? IsRecord, IsRecordCollection, IsRecordCollColl all returned false. Display doesn't help. Is there a list of 'types' of objects used in GAP? If so, I somehow missed it. [I guess the code in xgap might give some hints, but I haven't had a chance to look at that carefully yet.] And a related question, if for example, I wanted to determine how RankMat worked, say, I wondered if (and I'm sure it does) immediately returned n as the rank for an m x n matix for m > n once enough independent rows are found, how would I go about tracing backwards through the code to find this? I'm sure these sorts of things have been asked before & there's probably some place I should have already looked, but I didn't manage to find it. I hope I'm not being too much of a pain. Thanks again for all your help! Keith From kohl at mathematik.uni-stuttgart.de Mon Jun 18 15:55:25 2007 From: kohl at mathematik.uni-stuttgart.de (Stefan Kohl) Date: Mon Jun 18 15:56:13 2007 Subject: [GAP Forum] RCWA 2.5 Message-ID: <46769CDD.5090302@mathematik.uni-stuttgart.de> Dear Forum, This is to announce the release of RCWA 2.5. Given disjoint residue classes r1(m1) and r2(m2) of the integers, let the corresponding class transposition be the permutation of Z which interchanges r1 + km1 and r2 + km2 for each integer k and which fixes all other points. Further let CT(Z) be the group which is generated by the set of all class transpositions of Z. This group is simple. The RCWA package permits to compute with subgroups of CT(Z). The class of finitely generated subgroups of CT(Z) includes for example - finite groups, - free groups of finite rank, - free products of finite groups, - divisible torsion groups, - groups which do not have finite presentations, and - groups whose membership problem is algorithmically unsolvable. This class of groups is closed under taking direct products and under taking wreath products with finite groups and with the infinite cyclic group (Z,+). The main changes since the last announced version RCWA 2.2 of September / October 2006 are: - The manual has undergone a revision. - Iterators for infinite groups have been implemented. - Orbit objects representing possibly infinite orbits have been introduced. - There are new operations - `EpimorphismFromFpGroup' and - `PartitionsIntoResidueClasses', the groups CT(R) are now available as GAP objects, and there are a couple of new functions, attributes and properties. - There are new methods available for various operations, and various existing methods have been improved -- Among others, the membership test has been improved, and the case that the underlying ring is a polynomial ring GF(q)[x] is now supported better. - Some functionality for monoids has been added -- see the short new manual chapter "Residue-Class-Wise Affine Monoids". - Graphics functions `SaveAsBitmapPicture', `ReadFromBitmapPicture' and `DrawOrbitPicture' have been added. Examples of pictures generated with `DrawOrbitPicture' can be found at http://www.cip.mathematik.uni-stuttgart.de/~kohlsn/rcwa/pictures.html . - Now there is a new preprint available, which describes a significant part of the algorithms and methods implemented in this package in detail. - A copy of my thesis is distributed with the package again, since a user suggested me to do so. - The source code has been restructured and commented better in many places. As usual, RCWA is available at http://www.gap-system.org/Packages/rcwa.html . It remains to say that I would very much appreciate any comments, bug reports, hints and of course reports about results found with the help of RCWA. Wishing you fun and success using this package, Stefan Kohl From rm43 at evansville.edu Mon Jun 18 20:00:47 2007 From: rm43 at evansville.edu (Robert F. Morse) Date: Mon Jun 18 20:03:41 2007 Subject: [GAP Forum] transfer fp relators In-Reply-To: <1006507.50822.XVdYXF9DRFA=.1182168911.squirrel@webmailer.hosteurope.de> References: <001301c7b195$6de731a0$d5476d50@zlabinger> <1006507.50822.XVdYXF9DRFA=.1182168911.squirrel@webmailer.hosteurope.de> Message-ID: <4676D65F.5040509@evansville.edu> Max Horn wrote: > Dear Rudolf Zlabinger, > > the following program performs what you want in a reasonably simple and > extensible fashion. > > f:=FreeGroup(4);; > s3:=SymmetricGroup(3); > a4:=AlternatingGroup(4);; > s3fp:=Image(IsomorphismFpGroup(s3));; > a4fp:=Image(IsomorphismFpGroup(a4));; > > s3rels:=List(RelatorsOfFpGroup(s3fp), r->MappedWord(r, > FreeGeneratorsOfFpGroup(s3fp), [f.1,f.2]));; > a4rels:=List(RelatorsOfFpGroup(a4fp), r->MappedWord(r, > FreeGeneratorsOfFpGroup(a4fp), [f.3,f.4]));; > commrels:=ListX([f.1,f.2], [f.3,f.4], Comm);; > > dirprodfp:= f / Union(s3rels, a4rels,commrels);; > dirprod:=DirectProduct(s3,a4);; > IsomorphismGroups(dirprodfp,dirprod); > > The direct product of two finitely presented groups will return a finitely presented group. Embedding and projection information is also available. For instance gap> A4 := AlternatingGroup(4); Alt( [ 1 .. 4 ] ) gap> S3 := SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> A4iso := IsomorphismFpGroup(A4); [ (1,2,4), (1,3,4) ] -> [ A_4.1, A_4.2 ] gap> S3iso := IsomorphismFpGroup(S3); [ (1,2), (2,3) ] -> [ S_3.1, S_3.2 ] gap> dpfp := DirectProduct(Image(A4iso),Image(S3iso)); gap> Embedding(dpfp,1); [ A_4.1, A_4.2 ] -> [ f1, f2 ] gap> Embedding(dpfp,2); [ S_3.1, S_3.2 ] -> [ f3, f4 ] gap> Projection(dpfp,1); [ f1, f2, f3, f4 ] -> [ A_4.1, A_4.2, , ] gap> Projection(dpfp,2); [ f1, f2, f3, f4 ] -> [ , , S_3.1, S_3.2 ] gap> A4Embed := A4iso*Embedding(dpfp,1); [ (1,2,4), (1,3,4) ] -> [ f1, f2 ] gap> S3Embed := S3iso*Embedding(dpfp,2); [ (1,2), (2,3) ] -> [ f3, f4 ] Regards, Robert F. Morse From szteven at gmail.com Tue Jun 19 11:28:13 2007 From: szteven at gmail.com (Istvan Szollosi) Date: Tue Jun 19 11:29:08 2007 Subject: [GAP Forum] GAP support in Scintilla/SciTE In-Reply-To: <697e914e0706190322h2199b9a7g740312c6b052f6d3@mail.gmail.com> References: <697e914e0706190302g5c218913kb65238d54cb0ca16@mail.gmail.com> <697e914e0706190322h2199b9a7g740312c6b052f6d3@mail.gmail.com> Message-ID: <3cb5e2b80706190328k23bddae2hebb45897bd0e6f57@mail.gmail.com> Dear GAP Forum, I would like to announce the availability of GAP language support in the newly released Scintilla code editing component and SciTE source code editor (http://www.scintilla.org). Syntax highlighting and code folding for GAP is officially available beginning with version 1.74. Visit http://scintilla.sourceforge.net/ScintillaHistory.html for a list of changes compared to the previous version. Since a lot of open source projects and commercial products are based on Scintilla (http://scintilla.sourceforge.net/ScintillaRelated.html), GAP support may appear in other editors (more sophisticated and complex than SciTE) as well, as they sync to this new version of the component. If you are using SciTE already for C/C++ code editing and alike you may consider upgrading to this new version, if not, it is worth giving it a try. You can download SciTE for the platform of your choice from http://scintilla.sourceforge.net/SciTEDownload.html. To enable GAP syntax highlighting in SciTE proceed as follows: 1. start SciTE, enable displaying of line numbers by checking View -> Line Numbers 2. go to Options -> Open Global Options File 3. uncomment (delete the '#' character) line 458 - "#Gap|g||\" 4. uncomment line 536 - "#import gap" 5. save the file and restart SciTE. Note: on Linux you might have to run SciTE with root privileges to be able to do this (i.e. to save the edited global properties file) In case everything went right, a "GAP" entry appears in the Language menu. You can force GAP syntax highlighting to be applied for a newly created file form the Language menu, or it will automatically start if you open a *.g, *.gi or *.gd file. Adding GAP support for Scintilla was just the first step in developing a complete GUI for GAP. An editor specially crafted for GAP integrated with a Maple-like GUI will be available for testing, soon. All these are developed using wxWidgets (www.wxwidgets.org) so that the multiplatform nature is assured. Sincerely yours, Szollosi Istvan -- S. Szollosi Istvan Babes-Bolyai University Faculty of Mathematics and Computer Science Faculty of Physics Mihail Kogalniceanu nr. 1 RO- 400084 Cluj-Napoca, Romania http://www.ubbcluj.ro From kohl at mathematik.uni-stuttgart.de Tue Jun 19 12:38:39 2007 From: kohl at mathematik.uni-stuttgart.de (Stefan Kohl) Date: Tue Jun 19 12:39:37 2007 Subject: [GAP Forum] bug with semidirect product? In-Reply-To: <46723E45.7030506@math.nsc.ru> References: <46723E45.7030506@math.nsc.ru> Message-ID: <4677C03F.8070201@mathematik.uni-stuttgart.de> Dear Forum, Vdovin Evgeni wrote: > When I try to construct semidirect product GL_2(9)*GF(9)^2, it returns a > group with GF(3)^2 as a normal subgroup (see the listing below). > > gap> V:=GF(9)^2; > ( GF(3^2)^2 ) > gap> G:=GeneralLinearGroup(2,9); > GL(2,9) > gap> p:=SemidirectProduct(G,V); > > gap> L:=Image(Embedding(p,1)); > Group( > [ [ [ Z(3^2), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z(3), > 0*Z(3), > Z(3)^0 ] ], > [ [ Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), > Z(3)^0 ] ] ]) > gap> U:=Image(Embedding(p,2)); > Group( > [ [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3)^0, > 0*Z(3), > Z(3)^0 ] ], > [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], > [ 0*Z(3), Z(3)^0, Z(3)^0 ] ] ]) > gap> Order(U); > 9 > > Can anybody explain, what is wrong here? Thanks for the report. In fact this is a known bug, which will be fixed in the next release: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ! Date 2007/01/17 ! Changed by AH ! Reported by anvita21 ! Type of Change Fix: wrong result ! Description When forming the semidirect product of a matrix group with a vector space over a non-prime field the embedding of the vector space gives a wrong result. ! Changed Files lib/gprd.gi ! End %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% If you need a workaround for this bug already now, then please write to support@gap-system.org . Best wishes, Stefan Kohl From Rudolf.Zlabinger at chello.at Tue Jun 19 23:17:27 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Tue Jun 19 23:18:20 2007 Subject: [GAP Forum] bug with semidirect product? References: <46723E45.7030506@math.nsc.ru> <4677C03F.8070201@mathematik.uni-stuttgart.de> Message-ID: <000b01c7b2bf$9f313b90$d5476d50@zlabinger> Dear Forum, there is something wrong with that semidirect product in general: The Reference Manual says for SemidirectProduct(autgrp,N) (the second variant), as used in our case: In the second variant, autgp must be a group of automorphism of N, it is a shorthand for SemidirectProduct(autgp,IdentityMapping(autgp),N). Note that (unless autgrp has been obtained by the operation AutomorphismGroup) you have to test IsGroupOfAutomorphisms(autgrp) to ensure that GAP knows that autgrp consists of group automorphisms. As the conditions dont hold in the following way: gap> v:=GF(9)^2; ( GF(3^2)^2 ) gap> g:=GL(2,9); GL(2,9) gap> IsGroupOfAutomorphisms(g); false gap> the result is not well defined by function description, and may be wrong in any way. best regards, Rudolf Zlabinger ----- Original Message ----- From: "Stefan Kohl" To: "GAP Forum" Sent: Tuesday, June 19, 2007 1:38 PM Subject: Re: [GAP Forum] bug with semidirect product? > Dear Forum, > > Vdovin Evgeni wrote: > >> When I try to construct semidirect product GL_2(9)*GF(9)^2, it returns a >> group with GF(3)^2 as a normal subgroup (see the listing below). >> >> gap> V:=GF(9)^2; >> ( GF(3^2)^2 ) >> gap> G:=GeneralLinearGroup(2,9); >> GL(2,9) >> gap> p:=SemidirectProduct(G,V); >> >> gap> L:=Image(Embedding(p,1)); >> Group( >> [ [ [ Z(3^2), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z(3), >> 0*Z(3), >> Z(3)^0 ] ], >> [ [ Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), 0*Z(3), >> Z(3)^0 ] ] ]) >> gap> U:=Image(Embedding(p,2)); >> Group( >> [ [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3)^0, >> 0*Z(3), >> Z(3)^0 ] ], >> [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], >> [ 0*Z(3), Z(3)^0, Z(3)^0 ] ] ]) >> gap> Order(U); >> 9 >> >> Can anybody explain, what is wrong here? > > Thanks for the report. > > In fact this is a known bug, which will be fixed in the next release: > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > ! Date > 2007/01/17 > ! Changed by > AH > ! Reported by > anvita21 > ! Type of Change > Fix: wrong result > ! Description > When forming the semidirect product of a matrix group with a vector space > over a non-prime field > the embedding of the vector space gives a wrong result. > ! Changed Files > lib/gprd.gi > ! End > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > If you need a workaround for this bug already now, then please write to > support@gap-system.org . > > Best wishes, > > Stefan Kohl > > > > > > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From nagyg at math.u-szeged.hu Wed Jun 20 08:12:17 2007 From: nagyg at math.u-szeged.hu (=?ISO-8859-2?Q?G=E1bor_Nagy?=) Date: Wed Jun 20 08:11:24 2007 Subject: [GAP Forum] Rewriting steps in fp groups Message-ID: <4678D351.9010705@math.u-szeged.hu> Dear Forum, I have a relatively small fp group G of order 3840 given by 2 generators and 6 relators. According to GAP, a given word w of G is equal to One(G). However, for a publication, I want to show w=1 in a "human readable" format. Therefore I need the steps how GAP rewrites w to 1. My question is if it is possible to output the steps of the rewriting process in GAP? Thanks in advance, bye, Gabor Nagy ============================== gap> f:=FreeGroup("c","d"); gap> rels:=[f.1^2,f.2^8,(f.1*f.2)^5,Comm(f.1,f.2)^3,Comm(f.1^2,f.2)^2, > Comm(f.2^4,Comm(f.2^2,Comm(f.2,f.1)))]; [ c^2, d^8, c*d*c*d*c*d*c*d*c*d, c^-1*d^-1*c*d*c^-1*d^-1*c*d*c^-1*d^-1*c*d, c^-2*d^-1*c^2*d*c^-2*d^-1*c^2*d, d^-4*c^-1*d^-1*c*d^-2*c^-1*d*c*d^ 4*c^-1*d^-1*c*d^2*c^-1*d*c ] gap> g:=f/rels; gap> Size(g); 3840 gap> gap> gap> gap> gap> w:=Product(Orbit(g,g.2^4)); d^4*c^-1*d^4*c*d^-1*c^-1*d^4*c*d*c^-1*d^-1*c^-1*d^4*c*d*c*d^-1*c^-1*d^ -1*c^-1*d^4*c*d*c*d*c^-1*d^-1*c^-1*d^-1*c^-1*d^4*c*d*c*d*c gap> w=One(g); true From havas at itee.uq.edu.au Wed Jun 20 09:00:05 2007 From: havas at itee.uq.edu.au (GH UQ) Date: Wed Jun 20 09:01:39 2007 Subject: [GAP Forum] Rewriting steps in fp groups In-Reply-To: <4678D351.9010705@math.u-szeged.hu> References: <4678D351.9010705@math.u-szeged.hu> Message-ID: On Wed, 20 Jun 2007, Gábor Nagy wrote: > I have a relatively small fp group G of order 3840 given by 2 generators and > 6 relators. According to GAP, a given word w of G is equal to One(G). > However, for a publication, I want to show w=1 in a "human readable" format. > > Therefore I need the steps how GAP rewrites w to 1. > > My question is if it is possible to output the steps of the rewriting process > in GAP? > Not yet. A package called PEACE (Proof Extraction After Coset Enumeration) which is in the process of being finalized for submission as a Gap package can (in principle) do this. I will try to see how well it goes on this problem. Best wishes... George Havas http://www.itee.uq.edu.au/~havas From dennis at rkd.math.cornell.edu Sat Jun 23 00:33:36 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Sat Jun 23 00:39:19 2007 Subject: [GAP Forum] groups of order p^7? Message-ID: <200706222333.l5MNXaGx010688@rkd.math.cornell.edu> E. A. O'Brien a, M. R. Vaughan-Lee in The groups with order p^7 for odd prime p, J. Algebra 292 (2005), 243-258 make the statement "We have created a database of parametrised presentations for the groups with order p^7 for p >= 3. The database is currently designed for use with MAGMA [3]; the data can readily be incorporated into other computer algebra systems." Are there plans to add that collection to GAP as well? Thanks. Keith From perugine at mail.dm.unipi.it Wed Jun 27 17:15:14 2007 From: perugine at mail.dm.unipi.it (Giulio Peruginelli) Date: Wed Jun 27 17:16:27 2007 Subject: [GAP Forum] Automorphism Group as Permutation group on Conj.Classes Message-ID: <1182960914.12612.9.camel@studidott3.dm.unipi.it> Dear GAP-Forum members, I have a finite group G and I want to compute a representation of Aut(G) as a permutation group on the set of the conjugacy classes of G. So I wrote down these lines in Gap 3 (I am using this version; I don't know if there exists a command or a package to do it directly), where G is a finite group (in my case it's already been identified in the SmallGroup library): AutG:=AutomorphismGroup(G); C:=ConjugacyClasses(G); D:=[]; for k in [1..Length(C)] do D[k]:=Representative(C[k]); od; AutG1:=Operation(AutG,D); But I have encountered some problems with certains groups of the smallgroup library and I don't know why.... For example SmallGroup(12,1) or even SmallGroup(16,8). Here it is the error message I get, at the last line of the above ones: > AutG1:=Operation(AutG,D); > Error, List Element: [8] must have a value at > prm[i] := pos[PositionSorted( set, D[i] ^ gen )] ... in > arg[1].operations.Operation( arg[1], arg[2], OnPoints ) called from > Operation( AutG, D ) called from > main loop > brk> > Thanks in advance Giulio Peruginelli PhD student in Pisa. From laurent.bartholdi at gmail.com Wed Jun 27 18:24:56 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Wed Jun 27 18:28:32 2007 Subject: [GAP Forum] Automorphism Group as Permutation group on Conj.Classes In-Reply-To: <1182960914.12612.9.camel@studidott3.dm.unipi.it> References: <1182960914.12612.9.camel@studidott3.dm.unipi.it> Message-ID: <1ff637850706271024g44805d22t6fc948a6d8ededc5@mail.gmail.com> Dear Giulio, I can't comment on GAP3, which I'm too young to have used :), but with GAP4 the following gives you a permutation action: gap> G:=SmallGroup(12,1); gap> AutG:=AutomorphismGroup(G); gap> C:=ConjugacyClasses(G); [ of ...^G, f1^G, f2^G, f3^G, f1*f2^G, f2*f3^G ] gap> Action(AutG,C,function(pnt,g) > return ConjugacyClass(G,Representative(pnt)^g); end); Group([ (), (2,5), () ]) Action() takes a group, a set, and a function which describes the action of an element of the group on an element of the set. The function I put here takes a conjugacy class, picks a representative, acts on it, and re-constructs a conjugacyclass. Best, L -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From hulpke at math.colostate.edu Wed Jun 27 18:27:04 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Wed Jun 27 18:29:10 2007 Subject: [GAP Forum] Automorphism Group as Permutation group on Conj.Classes In-Reply-To: <1182960914.12612.9.camel@studidott3.dm.unipi.it> References: <1182960914.12612.9.camel@studidott3.dm.unipi.it> Message-ID: Dear GAP-forum, dear Giulio Peruginelli, > I have a finite group G and I want to compute a representation of > Aut(G) > as a permutation group on the set of the conjugacy classes of G. > > So I wrote down these lines in Gap 3 > AutG:=AutomorphismGroup(G); > C:=ConjugacyClasses(G); > D:=[]; > for k in [1..Length(C)] do > D[k]:=Representative(C[k]); > od; > AutG1:=Operation(AutG,D); This ``action'' on the representatives of classes is not well defined -- the image of a representative is not necessarily a representative. Instead you will have to act on the classes themselves. For this you will have to define your own action. The following is GAP4 code for it: (In GAP3 you would need `cl.group' instead of `ActingDomain(cl)' and `Operation' instead of `Action' I believe.) OnClasses:=function(cl,g) # function to describe the action return ConjugacyClass(ActingDomain(cl),Representative(cl)^g); end; AutG:=AutomorphismGroup(G); C:=ConjugacyClasses(G); Action(AutG,C,OnClasses); If you need the connection to the original group you might prefer: ActionHomomorphism(AutG,C,OnClasses,"surjective"); instead of `Action'. Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From ndroock1 at gmail.com Thu Jun 28 12:32:08 2007 From: ndroock1 at gmail.com (Nilo de Roock) Date: Thu Jun 28 12:32:45 2007 Subject: [GAP Forum] Change ring to group ? Message-ID: Dear Forum, In Gap I did T:=GroupRing(ZmodnZ(2),SymmetricGroup(3)) Gap replied with I want to somehow with the structure T as if it were a Group ( which it also is ). How can this be done? I want at least to be able to do a StructureDescription(T), i.e. what is the underlying group of T? ( I studied the chapters on Domains and Categories but I did not find answers there. ) Thanks in advance. -- met vriendelijke groet, nilo de roock From ndroock1 at gmail.com Thu Jun 28 20:51:10 2007 From: ndroock1 at gmail.com (Nilo de Roock) Date: Thu Jun 28 20:51:52 2007 Subject: [GAP Support] Re: [GAP Forum] Change ring to group ? In-Reply-To: <1ff637850706281157p48deb3e9k5974601bc3ee5029@mail.gmail.com> References: <4683B2C4.2040202@mathematik.uni-stuttgart.de> <4683C215.9040405@mathematik.uni-stuttgart.de> <4683FF57.5010001@mathematik.uni-stuttgart.de> <1ff637850706281157p48deb3e9k5974601bc3ee5029@mail.gmail.com> Message-ID: Dear Laurent, Thank you very much! If only my knowledge of GAP was a fraction as deep as yours. I don't quite understand what the intracies of List(Basis(r),AdditiveElementAsMultiplicativeElement); are yet, but at least I am now able to construct an additive Group from a Ring. kind regards, nilo de roock 2007/6/28, Laurent Bartholdi : > > Dear Nilo, > You have a ring R, and you want to treat it as a group. This group is > written additively in GAP; so you must convert it to a multiplicative > group first. > > Here is a simple example of what you (probably) want to do. Hope it helps: > > gap> r := GroupRing(GF(2),SymmetricGroup(3)); > > gap> rplus := > Group(List(Basis(r),AdditiveElementAsMultiplicativeElement)); > > gap> StructureDescription(rplus); > "C2 x C2 x C2 x C2 x C2 x C2" > -- > Laurent Bartholdi \ laurent.bartholdigmailcom > EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 > Station 8 \ Secr?taire: +41 21-6935471 > CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 > -- met vriendelijke groet, nilo From perugine at mail.dm.unipi.it Sun Jul 1 11:22:14 2007 From: perugine at mail.dm.unipi.it (Giulio Peruginelli) Date: Sun Jul 1 11:23:06 2007 Subject: [GAP Forum] Problem with certains nonsolvable groups... Message-ID: <20070701101219.M27855@mail.dm.unipi.it> Dear Gap-forum users, I have a problem with two nonsolvable groups, (120, 35) and (504,156) Gap3 says the 1st is A5x2 (I don't know what x2 means...) and the 2nd one is PSL(2,8). I computed the orders of its conjugacy classes two times and I obtain two different results! 1st group: G:=SmallGroup(120,35);; C:=ConjugacyClasses(G);; l:=[];; for i in [1..Length(C)] do l[i]:=Order(G, Representative(C[i])); od; l; [ 1, 2, 3, 6, 2, 2, 5, 10, 5, 10 ] (other result: [1,5,5,10,10, 3,6,2,2,2]). 2nd group: G:=SmallGroup(504,156);; C:=ConjugacyClasses(G);; l:=[];; for i in [1..Length(C)] do l[i]:=Order(G, Representative(C[i])); od; l; [ 1, 7, 7, 7, 2, 3, 9, 9, 9 ] (but I computed again these orders with the help of char table and I obtain a different result: [1,7,7,7,3, 9,9,9,2]; which is right and which is wrong? they are equal vectors, up to the order, see the question below) As you told me I use these two function in order to compute the representation of the automorphism group as permutation group on the set of the conjugacy classes of G OnClasses:=function(cl,g) return ConjugacyClass(cl.group,Representative(cl)^g); end; Aut:=function(G) local AutomG, C ; AutomG:=AutomorphismGroup(G); C:=ConjugacyClasses(G); return Operation(AutomG,C,OnClasses); end; In the 1st case I obtain: gap> Aut(SmallGroup(120,35)); Group( ( 2, 3)( 4, 5) ) which is impossible because the order of the 2nd and the 3rd classes of G are different. The right answer should be Group( ( 7, 9)( 8, 10) ) In the 2nd case: gap> Aut(SmallGroup(504,156)); Group( (2,3,4)(6,8,7) ) impossible again for the same reason (look at the 6th and 7th classes, for the 1st output) Where am I wrong? maybe I am using the 2 functions above in a wrong way... by the way, in which order are the conjugacy classes of a finite group represented? I mean, which comes 1st, after the identity and so on? do you know if it's the same order used in magma? thanks best wishes p.s. I am using Gap3... -- Open WebMail Project (http://openwebmail.org) From anvita21 at usa.com Wed Jul 4 22:04:24 2007 From: anvita21 at usa.com (Anvita) Date: Wed Jul 4 22:14:54 2007 Subject: [GAP Forum] Problem with orbits on RightTransversal Message-ID: <20070704210424.B877B83BFA@ws3-1.us4.outblaze.com> Dear forum, The first part of the following code returns a strange result: two orbits of size 6 on a 6-element right transversal. Shouldn't the given action coincide with the action on the right cosets as shown in the second part of the code? Thank you, Anvita ---------------------------------------------------------------- gap> gap> S4:=SymmetricGroup(4); Sym( [ 1 .. 4 ] ) gap> S3:=SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> K:=Group((1,2),(1,2)(3,4)); Group([ (1,2), (1,2)(3,4) ]) gap> RT:=RightTransversal(S4,K); RightTransversal(Sym( [ 1 .. 4 ] ),Group([ (1,2), (1,2)(3,4) ])) gap> ORT:=Orbits(S3,RT,OnRight);; gap> List(ORT,Size); [ 6, 6 ] gap> gap>############################################################ gap> gap> RC:=RightCosets(S4,K);; gap> ORC:=Orbits(S3,RC,OnRight);; gap> List(ORC,Size); [ 3, 3 ] gap> ---------------------------------------------------------------- = Make Alternative Medicine at Home Use our empty capsules and our capsule-filling machines to create your own alternative medicines in the comfort of your own home. http://a8-asy.a8ww.net/a8-ads/adftrclick?redirectid=3ab280b45adaa32bb728985f9cefeb74 From nagyg at math.u-szeged.hu Thu Jul 5 07:38:49 2007 From: nagyg at math.u-szeged.hu (=?ISO-8859-2?Q?G=E1bor_Nagy?=) Date: Thu Jul 5 07:38:25 2007 Subject: [GAP Forum] Problem with TransposedMat Message-ID: <468C91F9.9070302@math.u-szeged.hu> Dear Forum, When trying to transpose large matrices with TransposedMat(), GAP4 often runs out of memory, even if I start it with a workspace size of 300M. The matrices we have been working were: a) approx. 16.000 x 15.000 binary matrix over GF(2), and b) 6.500 x 6.500 square matrix with elements from [1..6500]. Then we wrote some trivial function to invert the matrix simply using for-do cycles and it was no problem for GAP. Can anybody explain this behaviour? Thank you in advance, Gabor Nagy From marc_roeder at web.de Thu Jul 5 11:58:06 2007 From: marc_roeder at web.de (Marc Roeder) Date: Thu Jul 5 11:58:38 2007 Subject: [GAP Forum] Problem with TransposedMat In-Reply-To: <468C91F9.9070302@math.u-szeged.hu> References: <468C91F9.9070302@math.u-szeged.hu> Message-ID: <468CCEBE.6030003@web.de> Dear Gabor, > When trying to transpose large matrices with TransposedMat(), GAP4 often > runs out of memory, even if I start it with a workspace size of 300M. The problem her is that TransposedMat() returns a new matrix. So it has to store the original matrix and the transposed one. Of course, this needs double the space. If you do not need the original matrix, try TransposedMatDestructive(). > Then we wrote some trivial function to invert the matrix simply using > for-do cycles and it was no problem for GAP. You probably did this by changing the original matrix. Hope that helps, Marc From anvita21 at usa.com Thu Jul 5 12:36:33 2007 From: anvita21 at usa.com (Anvita) Date: Thu Jul 5 12:47:39 2007 Subject: [GAP Forum] Problem with orbits on RightTransversal Message-ID: <20070705113633.D949A23F06A@ws3-4.us4.outblaze.com> Ah, I see. I was misguided by the following sentence in Section 37.8 of the Manual: >Functions that implement group actions such as Action or Permutation >(see Chapter Group Actions) use PositionCanonical, therefore it is possible to ``act'' >on a right transversal to implement the action on the cosets. This is often much >more efficient than acting on cosets. So I thought that, in my case, Orbits would return the orbits with respect to that action instead of generating an S3-set. The distinction can already be seen in the following code: gap> gap> List(Orbits(Action(S3,RT,OnRight)),Size); [ 3, 3 ] gap> List(Orbits(S3,RT,OnRight),Size); [ 6, 6 ] gap> A very subtle difference... Anvita. > >While it looks strange, this is the intended and documented behavior. > >In your first example, your code is asking for the orbits of S3 on >the S3-set generated by RT. This set has 12 elements and is not a >terribly interesting set. The elements of RT are elements of S4, not >cosets and not equivalence classes of elements. > >In your second example your code is asking for the orbits of S3 on >the S3-set generated by RC. This set is equal to RC and has 6 >elements, each of which is a coset. > >There was a similar question on the forum earlier about actions on >conjugacy classes versus conjugacy class representatives, so perhaps >it would be good to put this sort of question on the FAQ. > >Anvita wrote: >> Dear forum, >> >> The first part of the following code returns a strange result: >> two orbits of size 6 on a 6-element right transversal. >> Shouldn't the given action coincide with the action on >> the right cosets as shown in the second part of the code? >> >> Thank you, >> Anvita >> >> ---------------------------------------------------------------- >> gap> >> gap> S4:=SymmetricGroup(4); >> Sym( [ 1 .. 4 ] ) >> gap> S3:=SymmetricGroup(3); >> Sym( [ 1 .. 3 ] ) >> gap> K:=Group((1,2),(1,2)(3,4)); >> Group([ (1,2), (1,2)(3,4) ]) >> gap> RT:=RightTransversal(S4,K); >> RightTransversal(Sym( [ 1 .. 4 ] ),Group([ (1,2), (1,2)(3,4) ])) >> gap> ORT:=Orbits(S3,RT,OnRight);; >> gap> List(ORT,Size); >> [ 6, 6 ] >> gap> >> gap>############################################################ >> gap> >> gap> RC:=RightCosets(S4,K);; >> gap> ORC:=Orbits(S3,RC,OnRight);; >> gap> List(ORC,Size); >> [ 3, 3 ] >> gap> >> ---------------------------------------------------------------- >> > = From kksa at math.ku.dk Thu Jul 5 13:40:42 2007 From: kksa at math.ku.dk (Kasper Andersen) Date: Thu Jul 5 13:41:13 2007 Subject: [GAP Forum] Speedup of GAP program Message-ID: Hi, In connection with a joint project with Bob Oliver and Joana Ventura I have been carrying out a number of computations for the 2-groups of order at most 2^8 in Magma. To check them and to learn GAP at the same time, I have tried to port my programs to GAP. Unfortunately GAP seems to be significantly slower (a factor of acround 2.7) than Magma. Before I go any further I wonder if there is a way to speed up GAP. As a test I have been running the following GAP program: iscritical := function(S,P) return 1; end; criticalsubgroups := function(S) local kappa,SmodZ,L; if IsAbelian(S) then return []; else # Only check subgroups containg Z(S) kappa:=NaturalHomomorphismByNormalSubgroup(S,Center(S)); SmodZ:=FactorGroup(S,Center(S)); L:=SubgroupsSolvableGroup(SmodZ); L:=List(L,x->PreImage(kappa,x)); return Filtered(L,P->(iscritical(S,P) <> -1)); fi; end; n:=2^7; for i in [1..NumberSmallGroups(n)] do S:=SmallGroup(n,i); L:=criticalsubgroups(S); Print(n," ",i,"\n"); od; Some comments are in order: To simplify the timings I have left out the code for the function iscritical, so the above program simply computes the conjugacy classes of subgroups P containing Z(S) for all 2-groups S of order 2^7. Moreover my original function does not return true/false but rather -1 (=false), 0 (=undecided) and 1 (=true). For simplicity I have left this in. Unfortunaly even this simple program runs a factor of 2.7 slower than the corresponding Magma program. Are there any ways to speed this up? Another question: One of the conditions for criticality is that P is centric in S, i.e. that C_S(P) is contained in P. Does anyone know any better algorithm for computing all such subgroups than testing all subgroups containing Z(S) one by one? best wishes, Kasper Andersen From thomas.breuer at math.rwth-aachen.de Thu Jul 5 17:41:45 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Thu Jul 5 17:42:14 2007 Subject: [GAP Forum] Problem with certains nonsolvable groups... Message-ID: <20070705164145.GA31940@math.rwth-aachen.de> Dear GAP Forum, Giulio Peruginelli wrote: > I have a problem with two nonsolvable groups, (120, 35) and (504,156) > Gap3 says the 1st is A5x2 (I don't know what x2 means...) > and the 2nd one is PSL(2,8). > > I computed the orders of its conjugacy classes two times and I obtain > two different results! > 1st group: > G:=SmallGroup(120,35);; > C:=ConjugacyClasses(G);; > l:=[];; > for i in [1..Length(C)] do > l[i]:=Order(G, Representative(C[i])); > od; > l; > [ 1, 2, 3, 6, 2, 2, 5, 10, 5, 10 ] > (other result: [1,5,5,10,10, 3,6,2,2,2]). > > [...] It is documented that the ordering of conjugacy classes of two equal groups may be different, except that the identity element is always in the first class, see ``ConjugacyClasses'' in the GAP Reference Manual. More generally, there are several operations which do not guarantee the same result when they are called several times with equal arguments. One possible reason is that although the arguments for two calls are equal, the known attributes stored in the arguments might be different and thus GAP chooses different methods for the computation. Another possible reason is that the method in question calls `Random', which may yield different representatives of conjugacy classes (or a different Sylow p subgroup) also when the same method is called. In the example given, the two different results arise in the following situations. gap> g:= SmallGroup( 120, 35 );; gap> c:= ConjugacyClasses( g );; gap> List( c, x -> Order( g, Representative( x ) ) ); [ 1, 2, 3, 6, 2, 2, 5, 10, 5, 10 ] gap> g:= SmallGroup( 120, 35 );; gap> RationalClasses( g );; # call this before `ConjugacyClasses' gap> c:= ConjugacyClasses( g );; gap> List( c, x -> Order( g, Representative( x ) ) ); [ 1, 5, 5, 10, 10, 3, 6, 2, 2, 2 ] > As you told me I use these two function in order to compute the > representation of the > automorphism group as permutation group on the set of the conjugacy classes > of G > > OnClasses:=function(cl,g) > return ConjugacyClass(cl.group,Representative(cl)^g); > end; > > Aut:=function(G) > local AutomG, C ; > AutomG:=AutomorphismGroup(G); > C:=ConjugacyClasses(G); > return Operation(AutomG,C,OnClasses); > end; The solution is to create the group only once (and to store it in a local variable), to compute its conjugacy classes only once (and to store the list in a local variable), and then to refer to these variables whenever one needs a consistent order of classes. Of course this does *not* solve the problem that in another GAP session, a different order of classes may be chosen. > Where am I wrong? maybe I am using the 2 functions above in a wrong way... > > by the way, in which order are the conjugacy classes of a finite group > represented? > I mean, which comes 1st, after the identity and so on? do you know if it's > the same > order used in magma? As sketched above: The point is that GAP does not support a unique ``standard'' ordering of conjugacy classes of a group. Creating a group twice from generators and calling `ConjugacyClasses' for the two objects may give different lists of classes. All the best, Thomas Breuer From Frank.Luebeck at math.rwth-aachen.de Fri Jul 6 09:56:58 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Fri Jul 6 09:57:40 2007 Subject: [GAP Forum] Problem with TransposedMat In-Reply-To: <468C91F9.9070302@math.u-szeged.hu> References: <468C91F9.9070302@math.u-szeged.hu> Message-ID: <20070706085658.GB1849@beteigeuze> On Thu, Jul 05, 2007 at 08:38:49AM +0200, G?bor Nagy wrote: > When trying to transpose large matrices with TransposedMat(), GAP4 often > runs out of memory, even if I start it with a workspace size of 300M. > > The matrices we have been working were: > > a) approx. 16.000 x 15.000 binary matrix over GF(2), and > > b) 6.500 x 6.500 square matrix with elements from [1..6500]. Dear G?bor, dear Forum, Ad case a): There is special function (method) in GAP to transpose compressed matrices over GF(2). But you have to help GAP to detect that this method can be used. If m is your matrix call 'ConvertToMatrixRep(m, 2);' first. In this case your matrix needs 15000*16000/8 bytes (~ 30MB) plus some small overhead. In a GAP with about 140MB I had no problem to transpose such a matrix. Ad case b): This matrix needs (on a 32bit system) 6500*6500*4 bytes plus some small overhead (double on a 64bit system), that is ~170MB. Therefore you cannot hold your matrix and its transpose in 300MB. Actually, the current GAP allocates ~200MB for the resulting transposed matrix due to GAPs strategy to allocate memory for growing lists (I will change this with the next update). If you do no longer need the first matrix, there is TransposedMatDestructive which does the transposing almost in place. This works nicely in your case b), but it takes a very long time in case a), so for a) transpose with the fast method and Unbind the first matrix afterwards. With best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From jack at ms.uky.edu Sun Jul 8 00:33:42 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Sun Jul 8 00:34:19 2007 Subject: [GAP Forum] Speedup of GAP program - centric subgroups In-Reply-To: References: Message-ID: <469022D6.4090008@ms.uky.edu> Just to address the theoretical question of computing centric subgroups: If P is a proper centric subgroup of S, then it is contained in some maximal subgroup M of S and so C_S(M) <= C_S(P) <= P <= M. A simple algorithmic change then is to use Centralizer( S, FrattiniSubgroup( S ) ) instead of Center( S ). This improved performance a fair amount in both GAP and magma. For GAP, 2^6 went from 30 seconds to 7 seconds, and 2^7 went from 500 seconds to 80 seconds. Of course, you could also check which maximal subgroups of S are centric, and only consider their subgroups, but it looked like over 80% of maximal subgroups were centric, and nearly 80% of groups had all maximals centric, so it may not be worth the headache. Kasper Andersen wrote: > Hi, > > In connection with a joint project with Bob Oliver and Joana Ventura I > have been carrying out a number of computations for the 2-groups of > order at most 2^8 in Magma. To check them and to learn GAP at the same > time, I have tried to port my programs to GAP. > > Unfortunately GAP seems to be significantly slower (a factor of acround > 2.7) than Magma. Before I go any further I wonder if there is a way to > speed up GAP. As a test I have been running the following GAP program: > > iscritical := function(S,P) > return 1; > end; > > criticalsubgroups := function(S) > local kappa,SmodZ,L; > if IsAbelian(S) then > return []; > else > # Only check subgroups containg Z(S) > kappa:=NaturalHomomorphismByNormalSubgroup(S,Center(S)); > SmodZ:=FactorGroup(S,Center(S)); > L:=SubgroupsSolvableGroup(SmodZ); > L:=List(L,x->PreImage(kappa,x)); > return Filtered(L,P->(iscritical(S,P) <> -1)); > fi; > end; > > n:=2^7; > > for i in [1..NumberSmallGroups(n)] do > S:=SmallGroup(n,i); > L:=criticalsubgroups(S); > Print(n," ",i,"\n"); > od; > > Some comments are in order: To simplify the timings I have left out the > code for the function iscritical, so the above program simply computes > the conjugacy classes of subgroups P containing Z(S) for all 2-groups S > of order 2^7. Moreover my original function does not return true/false > but rather -1 (=false), 0 (=undecided) and 1 (=true). For simplicity I > have left this in. > > Unfortunaly even this simple program runs a factor of 2.7 slower than > the corresponding Magma program. Are there any ways to speed this up? > > Another question: One of the conditions for criticality is that P is > centric in S, i.e. that C_S(P) is contained in P. Does anyone know any > better algorithm for computing all such subgroups than testing all > subgroups containing Z(S) one by one? > > best wishes, > > Kasper Andersen > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From Goetz.Pfeiffer at nuigalway.ie Tue Jul 10 16:08:39 2007 From: Goetz.Pfeiffer at nuigalway.ie (Goetz Pfeiffer) Date: Tue Jul 10 16:09:32 2007 Subject: [GAP Forum] PhD Position in Computational Group Theory Message-ID: <20070710150839.GA32105@schmidt.nuigalway.ie> Dear Forum, I would be grateful you could bring the advertisement below to the attention of interested students. Goetz Pfeiffer ----------------------------------------------------------------------------- PhD Position in Computational Group Theory Applications are invited for a fully funded 3 YEAR POSTGRADUATE STUDENTSHIP at the Department of Mathematics, NUI, Galway, Ireland, starting on September 1, 2007. Funding is provided by the Science Foundation Ireland grant MATF466 and covers registration fees, a stipend of EUR 16000 per annum, and travel costs. The successful candidate will contribute to the development and implementation of new algorithms and a data base for tables of marks of finite groups, and will therefore have a strong interest in finite group theory and some experience in computer programming. Applications (CV with cover letter and other relevant information) should be sent by email to Goetz Pfeiffer (goetz.pfeiffer@nuigalway.ie). Closing date is August 1, 2007. ------------------------------------------------------------------------- Goetz.Pfeiffer@NUIGalway.ie http://schmidt.nuigalway.ie/~goetz/ National University of Ireland, Galway. phone +353-91-49-3591 From Mathieu.Dutour at ens.fr Mon Jul 16 16:34:15 2007 From: Mathieu.Dutour at ens.fr (Mathieu Dutour) Date: Mon Jul 16 16:35:08 2007 Subject: [GAP Forum] A strange error Message-ID: <20070716153415.GA14267@orge.ens.fr> Dear Gap forum, see below a program that creates a strange error. --------------------------------------------- n:=4; for i in [1..n] do eMat:=4; H:=List([1..n], x->x*i*eMat); od; --------------------------------------------- running it with "gap.sh TheProg" produce the following message: . . Syntax error: warning: unbound global variable in BugSearch line 5 H:=List([1..n], x->x*i*eMat); ^ Why is it so? Mathieu -- Mathieu Dutour Sikiric Researcher in Mathematics Telephone:.(+385)1 4571 237 and Computer Science Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute http://www.liga.ens.fr/~dutour Zagreb Croatia skype name: mathieudutour From justin at mac.com Mon Jul 16 19:43:05 2007 From: justin at mac.com (Justin C. Walker) Date: Mon Jul 16 19:46:46 2007 Subject: [GAP Forum] A strange error In-Reply-To: <20070716153415.GA14267@orge.ens.fr> References: <20070716153415.GA14267@orge.ens.fr> Message-ID: <564B7008-B369-4EAB-8A80-E73500A01D1B@mac.com> Dear Gap Forum and Mathieu, On Jul 16, 2007, at 08:34 , Mathieu Dutour wrote: > Dear Gap forum, > see below a program that creates a strange error. > --------------------------------------------- > n:=4; > for i in [1..n] > do > eMat:=4; > H:=List([1..n], x->x*i*eMat); > od; > --------------------------------------------- > running it with "gap.sh TheProg" produce the following message: > . > . > Syntax error: warning: unbound global variable in BugSearch line 5 > H:=List([1..n], x->x*i*eMat); > ^ > > Why is it so? The manual seems silent on the subject, but after a bit of fiddling, I will guess that it's a funny sort of scoping problem. Although scoping seems to be limited to "global" and "local (function)", it might be that there is block scoping as well. Since you are introducing 'eMat' within the "scope" of the for loop, perhaps the variable name 'eMat' does not actually become known until the loop is (textually) complete. Certainly, if you assign to 'eMat' prior to typing in the above loop, it works without a problem. I'll be interested in the real explanation, since I'm no expert in the Gap language. Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Enhancement of the Director's Income -------- Experience is what you get when you don't get what you want. -------- From burkhard at hoefling.name Mon Jul 16 21:49:24 2007 From: burkhard at hoefling.name (=?ISO-8859-1?Q?Burkhard_H=F6fling?=) Date: Mon Jul 16 21:50:20 2007 Subject: [GAP Forum] A strange error In-Reply-To: <20070716153415.GA14267@orge.ens.fr> References: <20070716153415.GA14267@orge.ens.fr> Message-ID: Dear Mathieu, > Dear Gap forum, > see below a program that creates a strange error. > --------------------------------------------- > n:=4; > for i in [1..n] > do > eMat:=4; > H:=List([1..n], x->x*i*eMat); > od; > --------------------------------------------- > running it with "gap.sh TheProg" produce the following message: > . > . > Syntax error: warning: unbound global variable in BugSearch line 5 > H:=List([1..n], x->x*i*eMat); > ^ this is absolutely normal and intended behaviour. Please note that this is only a warning and your code is absolutely correct. What happens is the following. GAP first reads (parses) the entire `for' loop before executing it. While reading the GAP function x- >x*i*eMat, it discovers that the variable `eMat' is (yet) undefined and produces a warning. After the `for' loop has been read, execution starts. Of course, the assignment `eMat:=4' takes place before eMat is needed in the function, so that the code runs correctly. > The manual seems silent on the subject, but after a bit of > fiddling, I will guess that it's a funny sort of scoping problem. > Although scoping seems to be limited to "global" and "local > (function)", it might be that there is block scoping as well. > Since you are introducing 'eMat' within the "scope" of the for > loop, perhaps the variable name 'eMat' does not actually become > known until the loop is (textually) complete. There is no block scoping in GAP; in particular, any global variable defined in a for loop remains defined outside the loop. The reason for this behaviour is that in most cases, the warning occurs if one mis-types the name of a variable. In this way, such an error can be spotted before the function is being run. In order to avoid this problem, simply define the variable before the `for' loop (by assigning a more or less meaningful value). In your case, you could even move the line `eMat := 4;' before the loop. Cheers, Burkhard. From savchuk at math.tamu.edu Tue Jul 17 10:12:37 2007 From: savchuk at math.tamu.edu (Dmytro Savchuk) Date: Tue Jul 17 10:13:03 2007 Subject: [GAP Forum] big domains Message-ID: <128224546661.20070717121237@math.tamu.edu> Dear Forum, I have the following question. Is it possible to loop over domains containing more then 2^28 elements? For example, the code k:=0; for g in AlternatingGroup(13) do k:=k+1; od; returns an error "List Element: must be a positive integer (not a integer (>= 2^28))..." in just few hours, which is a very reasonable time for computations. Thank you, Dima Savchuk From alexander.konovalov at gmail.com Wed Jul 18 11:44:30 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Wed Jul 18 11:45:42 2007 Subject: [GAP Forum] bug with semidirect product? In-Reply-To: <000b01c7b2bf$9f313b90$d5476d50@zlabinger> References: <46723E45.7030506@math.nsc.ru> <4677C03F.8070201@mathematik.uni-stuttgart.de> <000b01c7b2bf$9f313b90$d5476d50@zlabinger> Message-ID: Dear Rudolf, I think that here you misinterpreted the meaning of IsGroupOfAutomorphisms. This is an example of its intended usage: gap> G:=DihedralGroup(8); gap> A:=AutomorphismGroup(G); gap> x:=GeneratorsOfGroup(A)[1]; Pcgs([ f1, f2, f3 ]) -> [ f1*f2, f2, f3 ] gap> H:=Group(x); gap> IsGroupOfAutomorphisms(H); true Thus, H s a group whose elements are group automorphisms - without any relation to the fact whether H is a (full) automorphism group of some other group or not. Best wishes, Alexander On 19 Jun 2007, at 23:17, Rudolf Zlabinger wrote: > Dear Forum, > > there is something wrong with that semidirect product in general: > > The Reference Manual says for SemidirectProduct(autgrp,N) (the > second variant), as used in our case: > > In the second variant, autgp must be a group of automorphism of N, > it is a shorthand for SemidirectProduct(autgp,IdentityMapping > (autgp),N). Note that (unless autgrp has been obtained by the > operation AutomorphismGroup) you have to test IsGroupOfAutomorphisms > (autgrp) to ensure that GAP knows that autgrp consists of group > automorphisms. > > As the conditions dont hold in the following way: > > gap> v:=GF(9)^2; > ( GF(3^2)^2 ) > gap> g:=GL(2,9); > GL(2,9) > gap> IsGroupOfAutomorphisms(g); > false > gap> > > the result is not well defined by function description, and may be > wrong in any way. > > best regards, Rudolf Zlabinger > > > > > > > > ----- Original Message ----- From: "Stefan Kohl" > > To: "GAP Forum" > Sent: Tuesday, June 19, 2007 1:38 PM > Subject: Re: [GAP Forum] bug with semidirect product? > > >> Dear Forum, >> >> Vdovin Evgeni wrote: >> >>> When I try to construct semidirect product GL_2(9)*GF(9)^2, it >>> returns a group with GF(3)^2 as a normal subgroup (see the >>> listing below). >>> >>> gap> V:=GF(9)^2; >>> ( GF(3^2)^2 ) >>> gap> G:=GeneralLinearGroup(2,9); >>> GL(2,9) >>> gap> p:=SemidirectProduct(G,V); >>> >>> gap> L:=Image(Embedding(p,1)); >>> Group( >>> [ [ [ Z(3^2), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z >>> (3), 0*Z(3), >>> Z(3)^0 ] ], >>> [ [ Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), >>> 0*Z(3), >>> Z(3)^0 ] ] ]) >>> gap> U:=Image(Embedding(p,2)); >>> Group( >>> [ [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3) >>> ^0, 0*Z(3), >>> Z(3)^0 ] ], >>> [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], >>> [ 0*Z(3), Z(3)^0, Z(3)^0 ] ] ]) >>> gap> Order(U); >>> 9 >>> >>> Can anybody explain, what is wrong here? >> >> Thanks for the report. >> >> In fact this is a known bug, which will be fixed in the next release: >> >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >> %%%%%%%%%%% >> ! Date >> 2007/01/17 >> ! Changed by >> AH >> ! Reported by >> anvita21 >> ! Type of Change >> Fix: wrong result >> ! Description >> When forming the semidirect product of a matrix group with a >> vector space >> over a non-prime field >> the embedding of the vector space gives a wrong result. >> ! Changed Files >> lib/gprd.gi >> ! End >> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >> %%%%%%%%%%% >> >> If you need a workaround for this bug already now, then please >> write to >> support@gap-system.org . >> >> Best wishes, >> >> Stefan Kohl >> >> >> >> >> >> >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dr. Alexander Konovalov School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44/0 (1334) 461633 http://www.cs.st-andrews.ac.uk/~alexk Fax +44/0 (1334) 463278 From Rudolf.Zlabinger at chello.at Wed Jul 18 12:23:11 2007 From: Rudolf.Zlabinger at chello.at (Rudolf Zlabinger) Date: Wed Jul 18 12:24:06 2007 Subject: [GAP Forum] bug with semidirect product? References: <46723E45.7030506@math.nsc.ru> <4677C03F.8070201@mathematik.uni-stuttgart.de> <000b01c7b2bf$9f313b90$d5476d50@zlabinger> Message-ID: <000d01c7c92e$064c22c0$d5476d50@zlabinger> Dear Alexander, after a time ago I wrote this message, I saw that the description of the reference manual is a little bit misleading and my considerations was a little bit "hair splitting" on the other hand. If read in this way: "If N is a full row space over a field F, alpha must be a homomorphism from G into a matrix group of the right dimension over a subfield of F, or into a permutation group (in this case permutation matrices are taken). In the second variant, autgp must be a group of automorphism of N, it is a shorthand for SemidirectProduct(autgp,IdentityMapping(autgp),N). " (except for the case above, where autgp is to be interpreted as a matrix group) there is no need for autgp to be an automorphism group, as N is a full row space in our case and the last sentence: "Note that (unless autgrp has been obtained by the operation AutomorphismGroup) you have to test IsGroupOfAutomorphisms(autgrp) to ensure that GAP knows that autgrp consists of group automorphisms." doesnt apply. Thank you for your explanation nevertheless, all the best, Rudolf ----- Original Message ----- From: "Alexander Konovalov" To: "Rudolf Zlabinger" Cc: "GAP Forum" Sent: Wednesday, July 18, 2007 12:44 PM Subject: Re: [GAP Forum] bug with semidirect product? > Dear Rudolf, > > I think that here you misinterpreted the meaning of > IsGroupOfAutomorphisms. > This is an example of its intended usage: > > gap> G:=DihedralGroup(8); > > gap> A:=AutomorphismGroup(G); > > gap> x:=GeneratorsOfGroup(A)[1]; > Pcgs([ f1, f2, f3 ]) -> [ f1*f2, f2, f3 ] > gap> H:=Group(x); > > gap> IsGroupOfAutomorphisms(H); > true > > Thus, H s a group whose elements are group automorphisms - without any > relation > to the fact whether H is a (full) automorphism group of some other group > or not. > > Best wishes, > Alexander > > > On 19 Jun 2007, at 23:17, Rudolf Zlabinger wrote: > >> Dear Forum, >> >> there is something wrong with that semidirect product in general: >> >> The Reference Manual says for SemidirectProduct(autgrp,N) (the second >> variant), as used in our case: >> >> In the second variant, autgp must be a group of automorphism of N, it is >> a shorthand for SemidirectProduct(autgp,IdentityMapping (autgp),N). Note >> that (unless autgrp has been obtained by the operation >> AutomorphismGroup) you have to test IsGroupOfAutomorphisms (autgrp) to >> ensure that GAP knows that autgrp consists of group automorphisms. >> >> As the conditions dont hold in the following way: >> >> gap> v:=GF(9)^2; >> ( GF(3^2)^2 ) >> gap> g:=GL(2,9); >> GL(2,9) >> gap> IsGroupOfAutomorphisms(g); >> false >> gap> >> >> the result is not well defined by function description, and may be wrong >> in any way. >> >> best regards, Rudolf Zlabinger >> >> >> >> >> >> >> >> ----- Original Message ----- From: "Stefan Kohl" >> >> To: "GAP Forum" >> Sent: Tuesday, June 19, 2007 1:38 PM >> Subject: Re: [GAP Forum] bug with semidirect product? >> >> >>> Dear Forum, >>> >>> Vdovin Evgeni wrote: >>> >>>> When I try to construct semidirect product GL_2(9)*GF(9)^2, it returns >>>> a group with GF(3)^2 as a normal subgroup (see the listing below). >>>> >>>> gap> V:=GF(9)^2; >>>> ( GF(3^2)^2 ) >>>> gap> G:=GeneralLinearGroup(2,9); >>>> GL(2,9) >>>> gap> p:=SemidirectProduct(G,V); >>>> >>>> gap> L:=Image(Embedding(p,1)); >>>> Group( >>>> [ [ [ Z(3^2), 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ 0*Z (3), >>>> 0*Z(3), >>>> Z(3)^0 ] ], >>>> [ [ Z(3), Z(3)^0, 0*Z(3) ], [ Z(3), 0*Z(3), 0*Z(3) ], [ 0*Z(3), >>>> 0*Z(3), >>>> Z(3)^0 ] ] ]) >>>> gap> U:=Image(Embedding(p,2)); >>>> Group( >>>> [ [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], [ Z(3) ^0, >>>> 0*Z(3), >>>> Z(3)^0 ] ], >>>> [ [ Z(3)^0, 0*Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0, 0*Z(3) ], >>>> [ 0*Z(3), Z(3)^0, Z(3)^0 ] ] ]) >>>> gap> Order(U); >>>> 9 >>>> >>>> Can anybody explain, what is wrong here? >>> >>> Thanks for the report. >>> >>> In fact this is a known bug, which will be fixed in the next release: >>> >>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>> %%%%%%%%%%% >>> ! Date >>> 2007/01/17 >>> ! Changed by >>> AH >>> ! Reported by >>> anvita21 >>> ! Type of Change >>> Fix: wrong result >>> ! Description >>> When forming the semidirect product of a matrix group with a vector >>> space >>> over a non-prime field >>> the embedding of the vector space gives a wrong result. >>> ! Changed Files >>> lib/gprd.gi >>> ! End >>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >>> %%%%%%%%%%% >>> >>> If you need a workaround for this bug already now, then please write to >>> support@gap-system.org . >>> >>> Best wishes, >>> >>> Stefan Kohl >>> >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> Forum mailing list >>> Forum@mail.gap-system.org >>> http://mail.gap-system.org/mailman/listinfo/forum >> >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum > > -- > Dr. Alexander Konovalov School of Computer Science > & Centre for Interdisciplinary Research in Computational Algebra > University of St Andrews Tel +44/0 (1334) 461633 > http://www.cs.st-andrews.ac.uk/~alexk Fax +44/0 (1334) 463278 > > > From dennis at rkd.math.cornell.edu Sun Jul 22 23:52:19 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Sun Jul 22 23:51:47 2007 Subject: [GAP Forum] GAP and rings? Message-ID: <200707222252.l6MMqJHr002658@rkd.math.cornell.edu> Dear Colleagues: I have another simple question to ask. However, I'd like to first thank everyone who has helped me thus far. In particular, I'm most grateful to Bettina Eick and Jack Schmidt for providing much more than one might hope for. Thanks! Bettina Eick showed me how to use the ANUPQ package to generate larger p-groups. In particular it was possible for me to construct the groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, which were some of the things I needed. These computations went fairly quickly; the constructions of groups of the same orders of even larger ranks seems to go much more slowly though. The GAP forum has been extremely helpful to me! I have some computations I'd like to make in a quotient ring (i.e. R/I) for R the integral group ring of a finite group. Sometimes R/I is finite, sometimes not. I can of course determine the abelian group structure of R/I, but I'd like to find ring generators of the summands & determine their multiplication, particularly in the finite case. However, I did not see any methods in GAP for working with R/I. Did I miss something? Is there a ring package available for GAP? With a google search I found a Diplomarbeit (pdf) at Linz: "Everything you always wanted to know about rings in GAP. (but were afraid to ask)", J"urgen Ecker (October 7, 1999). It has the source code (in the pdf file) of the new functions added. At first I thought that the code might be included in SONATA, but that did not seem to be the case. Ok, so that's everything I was able to determine & the question is: Is there a ring package already available (or at least some collection of programs) or do I need to develop my own? Thanks for any suggestions. Keith From ndroock1 at gmail.com Mon Jul 23 09:18:34 2007 From: ndroock1 at gmail.com (Nilo de Roock) Date: Mon Jul 23 09:19:17 2007 Subject: [GAP Forum] GAP and rings? In-Reply-To: <200707222252.l6MMqJHr002658@rkd.math.cornell.edu> References: <200707222252.l6MMqJHr002658@rkd.math.cornell.edu> Message-ID: Hello Keith, For rings there is a wide selection of available packages. I can confirm that the following - Macaulay2 - Cocoa - Singular all do the basic stuff really well. Seek and you'll find a wealth of information. Macaulay2 and Singular are integrated with GAP in the SAGE package, which I particularly recommend. Kind regards, nilo de roock 2007/7/23, R. Keith Dennis : > > Dear Colleagues: > > I have another simple question to ask. > > However, I'd like to first thank everyone who has helped me thus far. > In particular, I'm most grateful to Bettina Eick and Jack Schmidt for > providing much more than one might hope for. Thanks! > > Bettina Eick showed me how to use the ANUPQ package to generate larger > p-groups. In particular it was possible for me to construct the > groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, > which were some of the things I needed. These computations went > fairly quickly; the constructions of groups of the same orders of even > larger ranks seems to go much more slowly though. > > The GAP forum has been extremely helpful to me! > > I have some computations I'd like to make in a quotient ring > (i.e. R/I) for R the integral group ring of a finite group. Sometimes > R/I is finite, sometimes not. I can of course determine the abelian > group structure of R/I, but I'd like to find ring generators of the > summands & determine their multiplication, particularly in the finite > case. > > However, I did not see any methods in GAP for working with R/I. Did I > miss something? Is there a ring package available for GAP? > > With a google search I found a Diplomarbeit (pdf) at Linz: "Everything > you always wanted to know about rings in GAP. (but were afraid to > ask)", J"urgen Ecker (October 7, 1999). It has the source code (in the > pdf file) of the new functions added. At first I thought that the > code might be included in SONATA, but that did not seem to be the > case. > > Ok, so that's everything I was able to determine & the question is: > Is there a ring package already available (or at least some > collection of programs) or do I need to develop my own? > > Thanks for any suggestions. > > Keith > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- met vriendelijke groet, nilo From byron75 at yahoo.com Sat Jul 21 19:48:38 2007 From: byron75 at yahoo.com (Kristin Farwell) Date: Mon Jul 23 10:20:59 2007 Subject: [GAP Forum] coset enumeration Message-ID: <541181.57867.qm@web30905.mail.mud.yahoo.com> On Friday May 26, 2006 Beth wrote: Dear GAP forum, I want to enumerate some cosets. The manual tells me that I can set the maximum number of cosets but that if I exceed this number then I will enter a break loop. I want to do lots of coset enumerations in a row without having to stand over my computer. Is there any way I can make the coset enumerator return 'fail' then continue with the next command, instead of waiting for me to give it permission? Beth I am trying to do exactly what this person was asking about and I also found the max and silent options. I also know how to push these options onto the stack. My program still does not break out of the loop when it reaches the max. Approximate code: f:=FreeGroup(2); PushOptions(rec(max:=2000)); PushOptions(rec(silent:=true)); for p in [1..5] do g:=f/[f.1^3,f.2^3,(f.1*f.2)^3,(f.1*f.2*f.1)^p]; s:=Size(g); if s = fail then break; else Print("p=",p," size=",s); fi; od; Kris ____________________________________________________________________________________ Pinpoint customers who are looking for what you sell. http://searchmarketing.yahoo.com/ From Juergen.Ecker at fh-hagenberg.at Mon Jul 23 05:37:33 2007 From: Juergen.Ecker at fh-hagenberg.at (Ecker Juergen) Date: Mon Jul 23 10:21:01 2007 Subject: AW: [GAP Forum] GAP and rings? References: <200707222252.l6MMqJHr002658@rkd.math.cornell.edu> Message-ID: <30ADCB6EAE35FB4592E3B95C597CFBBE01A010@MXBE01.fhs-hagenberg.ac.at> Dear Keith. Your observation is correct. The functions for rings that I have implemented in my diploma thesis are not available in the sonata near-ring package. The main reason is that the representation of near rings is not the same as the one used for rings in GAP. Also, the questions asked in nearring theory differ from those in ring theory (the situation is much like with rings and fields). I am sorry to say that my old functions for rings have also never been updated for GAP4, since my focus has changed to near rings. Best regards, Juergen ________________________________ Von: forum-bounces@gap-system.org im Auftrag von R. Keith Dennis Gesendet: Mo 23.07.2007 00:52 An: forum@gap-system.org Betreff: [GAP Forum] GAP and rings? Dear Colleagues: I have another simple question to ask. However, I'd like to first thank everyone who has helped me thus far. In particular, I'm most grateful to Bettina Eick and Jack Schmidt for providing much more than one might hope for. Thanks! Bettina Eick showed me how to use the ANUPQ package to generate larger p-groups. In particular it was possible for me to construct the groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, which were some of the things I needed. These computations went fairly quickly; the constructions of groups of the same orders of even larger ranks seems to go much more slowly though. The GAP forum has been extremely helpful to me! I have some computations I'd like to make in a quotient ring (i.e. R/I) for R the integral group ring of a finite group. Sometimes R/I is finite, sometimes not. I can of course determine the abelian group structure of R/I, but I'd like to find ring generators of the summands & determine their multiplication, particularly in the finite case. However, I did not see any methods in GAP for working with R/I. Did I miss something? Is there a ring package available for GAP? With a google search I found a Diplomarbeit (pdf) at Linz: "Everything you always wanted to know about rings in GAP. (but were afraid to ask)", J"urgen Ecker (October 7, 1999). It has the source code (in the pdf file) of the new functions added. At first I thought that the code might be included in SONATA, but that did not seem to be the case. Ok, so that's everything I was able to determine & the question is: Is there a ring package already available (or at least some collection of programs) or do I need to develop my own? Thanks for any suggestions. Keith _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum From dennis at rkd.math.cornell.edu Mon Jul 23 13:36:46 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Mon Jul 23 13:36:03 2007 Subject: [GAP Forum] GAP and rings? Message-ID: <200707231236.l6NCakdb005352@rkd.math.cornell.edu> Thanks for the suggestions. However, I'm not sure that any of them work in this situation: the rings I want to look at are non-commutative the characteristic is almost never 0 nor prime I believe that eliminates Macaulay2 and Singular; I'm not sure about Cocoa as I haven't had a chance to look at the documentation. Please let me know if I've misunderstood what can be done with these packages. Keith > For rings there is a wide selection of available packages. > > I can confirm that the following > - Macaulay2 > - Cocoa > - Singular > all do the basic stuff really well. > > Seek and you'll find a wealth of information. > > Macaulay2 and Singular are integrated with GAP in the SAGE package, > which I particularly recommend. > > Kind regards, > nilo de roock > > > 2007/7/23, R. Keith Dennis : > > > > Dear Colleagues: > > > > I have another simple question to ask. > > > > However, I'd like to first thank everyone who has helped me thus far. > > In particular, I'm most grateful to Bettina Eick and Jack Schmidt for > > providing much more than one might hope for. Thanks! > > > > Bettina Eick showed me how to use the ANUPQ package to generate larger > > p-groups. In particular it was possible for me to construct the > > groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, > > which were some of the things I needed. These computations went > > fairly quickly; the constructions of groups of the same orders of even > > larger ranks seems to go much more slowly though. > > > > The GAP forum has been extremely helpful to me! > > > > I have some computations I'd like to make in a quotient ring > > (i.e. R/I) for R the integral group ring of a finite group. Sometimes > > R/I is finite, sometimes not. I can of course determine the abelian > > group structure of R/I, but I'd like to find ring generators of the > > summands & determine their multiplication, particularly in the finite > > case. > > > > However, I did not see any methods in GAP for working with R/I. Did I > > miss something? Is there a ring package available for GAP? > > > > With a google search I found a Diplomarbeit (pdf) at Linz: "Everything > > you always wanted to know about rings in GAP. (but were afraid to > > ask)", J"urgen Ecker (October 7, 1999). It has the source code (in the > > pdf file) of the new functions added. At first I thought that the > > code might be included in SONATA, but that did not seem to be the > > case. > > > > Ok, so that's everything I was able to determine & the question is: > > Is there a ring package already available (or at least some > > collection of programs) or do I need to develop my own? > > > > Thanks for any suggestions. > > > > Keith > > > > _______________________________________________ > > Forum mailing list > > Forum@mail.gap-system.org > > http://mail.gap-system.org/mailman/listinfo/forum > > > > > > -- > met vriendelijke groet, > nilo > > ------=_Part_59803_32102713.1185178714054 > Content-Type: text/html; charset=ISO-8859-1 > Content-Transfer-Encoding: 7bit > Content-Disposition: inline > > Hello Keith,

For rings there is a wide selection of available packages.

I can confirm that the following
- Macaulay2
- Cocoa
- Singular
all do the basic stuff really well.

Seek and you'll find a wealth of information. >

Macaulay2 and Singular are integrated with GAP in the SAGE package, which I particularly recommend.

Kind regards,
nilo de roock 


2007/7/23, R. Keith Dennis < > dennis@rkd.math.cornell.edu>:
> Dear Colleagues:

I have another simple question to ask.

However, I'd like to first thank everyone who has helped me thus far.
In particular, I'm most grateful to Bettina Eick and Jack Schmidt for
> providing much more than one might hope for.  Thanks!

Bettina Eick showed me how to use the ANUPQ package to generate larger
p-groups.  In particular it was possible for me to construct the
groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, >
which were some of the things I needed.  These computations went
fairly quickly; the constructions of groups of the same orders of even
larger ranks seems to go much more slowly though.

The GAP forum has been extremely helpful to me! >

I have some computations I'd like to make in a quotient ring
(i.e. R/I) for R the integral group ring of a finite group.  Sometimes
R/I is finite, sometimes not.  I can of course determine the abelian
> group structure of R/I, but I'd like to find ring generators of the
summands & determine their multiplication, particularly in the finite
case.

However, I did not see any methods in GAP for working with R/I.  Did I >
miss something?  Is there a ring package available for GAP?

With a google search I found a Diplomarbeit (pdf) at Linz:  "Everything
you always wanted to know about rings in GAP. (but were afraid to
ask)", J"urgen Ecker (October 7, 1999).  It has the source code (in the >
pdf file) of the new functions added.  At first I thought that the
code might be included in SONATA, but that did not seem to be the
case.

Ok, so that's everything I was able to determine & the question is: >
Is there a ring package already available (or at least some
collection of programs) or do I need to develop my own?

Thanks for any suggestions.

Keith

_______________________________________________ >
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum
>



--
met vriendelijke groet,
nilo > > ------=_Part_59803_32102713.1185178714054-- > From ndroock1 at gmail.com Mon Jul 23 14:55:27 2007 From: ndroock1 at gmail.com (Nilo de Roock) Date: Mon Jul 23 14:55:59 2007 Subject: [GAP Forum] GAP and rings? In-Reply-To: <200707231236.l6NCakdb005352@rkd.math.cornell.edu> References: <200707231236.l6NCakdb005352@rkd.math.cornell.edu> Message-ID: Hello Keith, Sorry. I don't do much with non-cummutative rings, can't really help you with that. If there is an open source package supporting such rings then it's probably included in SAGE. kind regards, nilo de roock 2007/7/23, R. Keith Dennis : > > Thanks for the suggestions. > > However, I'm not sure that any of them work in this situation: > > the rings I want to look at are non-commutative > > the characteristic is almost never 0 nor prime > > I believe that eliminates Macaulay2 and Singular; I'm not sure about > Cocoa as I haven't had a chance to look at the documentation. > > Please let me know if I've misunderstood what can be done with these > packages. > > Keith > > > For rings there is a wide selection of available packages. > > > > I can confirm that the following > > - Macaulay2 > > - Cocoa > > - Singular > > all do the basic stuff really well. > > > > Seek and you'll find a wealth of information. > > > > Macaulay2 and Singular are integrated with GAP in the SAGE package, > > which I particularly recommend. > > > > Kind regards, > > nilo de roock > > > > > > 2007/7/23, R. Keith Dennis : > > > > > > Dear Colleagues: > > > > > > I have another simple question to ask. > > > > > > However, I'd like to first thank everyone who has helped me thus far. > > > In particular, I'm most grateful to Bettina Eick and Jack Schmidt for > > > providing much more than one might hope for. Thanks! > > > > > > Bettina Eick showed me how to use the ANUPQ package to generate larger > > > p-groups. In particular it was possible for me to construct the > > > groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, > > > which were some of the things I needed. These computations went > > > fairly quickly; the constructions of groups of the same orders of even > > > larger ranks seems to go much more slowly though. > > > > > > The GAP forum has been extremely helpful to me! > > > > > > I have some computations I'd like to make in a quotient ring > > > (i.e. R/I) for R the integral group ring of a finite group. Sometimes > > > R/I is finite, sometimes not. I can of course determine the abelian > > > group structure of R/I, but I'd like to find ring generators of the > > > summands & determine their multiplication, particularly in the finite > > > case. > > > > > > However, I did not see any methods in GAP for working with R/I. Did I > > > miss something? Is there a ring package available for GAP? > > > > > > With a google search I found a Diplomarbeit (pdf) at > Linz: "Everything > > > you always wanted to know about rings in GAP. (but were afraid to > > > ask)", J"urgen Ecker (October 7, 1999). It has the source code (in > the > > > pdf file) of the new functions added. At first I thought that the > > > code might be included in SONATA, but that did not seem to be the > > > case. > > > > > > Ok, so that's everything I was able to determine & the question is: > > > Is there a ring package already available (or at least some > > > collection of programs) or do I need to develop my own? > > > > > > Thanks for any suggestions. > > > > > > Keith > > > > > > _______________________________________________ > > > Forum mailing list > > > Forum@mail.gap-system.org > > > http://mail.gap-system.org/mailman/listinfo/forum > > > > > > > > > > > -- > > met vriendelijke groet, > > nilo > > > > ------=_Part_59803_32102713.1185178714054 > > Content-Type: text/html; charset=ISO-8859-1 > > Content-Transfer-Encoding: 7bit > > Content-Disposition: inline > > > > Hello Keith,

For rings there is a wide selection of available > packages.

I can confirm that the following
- Macaulay2
- > Cocoa
- Singular
all do the basic stuff really > well.

Seek and you'll find a wealth of information. > > >

Macaulay2 and Singular are integrated with GAP in the SAGE package, which I particularly recommend.

Kind regards,
nilo de roock 


class="gmail_quote">2007/7/23, R. Keith Dennis < > > dennis@rkd.math.cornell.edu>:
class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; > margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; > border-left-width: 1px; border-left-style: solid; padding-left: 1ex"> > > Dear Colleagues:

I have another simple question to > ask.

However, I'd like to first thank everyone who has helped me > thus far.
In particular, I'm most grateful to Bettina Eick and Jack > Schmidt for
> > providing much more than one might hope > for.  Thanks!

Bettina Eick showed me how to use the ANUPQ > package to generate larger
p-groups.  In particular it was > possible for me to construct the
groups of order 3^7 of rank 2 & the > groups of order 1024 of rank 2, > >
which were some of the things I needed.  These > computations went
fairly quickly; the constructions of groups of the same > orders of even
larger ranks seems to go much more slowly > though.

The GAP forum has been extremely helpful to me! > >

I have some computations I'd like to make in a quotient > ring
(i.e. R/I) for R the integral group ring of a finite > group.  Sometimes
R/I is finite, sometimes not.  I > can of course determine the abelian
> > group structure of R/I, but I'd like to find ring generators of > the
summands & determine their multiplication, particularly in the > finite
case.

However, I did not see any methods in GAP for working > with R/I.  Did I > >
miss something?  Is there a ring package available for > GAP?

With a google search I found a Diplomarbeit (pdf) at > Linz:  "Everything
you always wanted to know about rings > in GAP. (but were afraid to
ask)", J"urgen Ecker (October 7, > 1999).  It has the source code (in the > >
pdf file) of the new functions added.  At first I thought > that the
code might be included in SONATA, but that did not seem to be > the
case.

Ok, so that's everything I was able to determine > & the question is: > >
Is there a ring package already available (or at least > some
collection of programs) or do I need to develop my > own?

Thanks for any > suggestions.

Keith

_______________________________________________ > >
Forum mailing list
> Forum@mail.gap-system.org
> http://mail.gap-system.org/mailman/listinfo/forum
> >



--
met vriendelijke groet,
nilo > > > > ------=_Part_59803_32102713.1185178714054-- > > > -- met vriendelijke groet, nilo From wdjoyner at gmail.com Mon Jul 23 15:05:29 2007 From: wdjoyner at gmail.com (David Joyner) Date: Mon Jul 23 15:05:59 2007 Subject: [GAP Forum] GAP and rings? In-Reply-To: References: <200707231236.l6NCakdb005352@rkd.math.cornell.edu> Message-ID: <8cf963450707230705j403ec7dbp46d004d187da2bd0@mail.gmail.com> I think SAGE does not yet have that functionality. I vaguely remember something on the sage devel list about a guy who said he'd work on that (a bright undergrad at Harvey Mudd whose name escapes me now) is traveling over the summer and may not be reachable until the fall. +++++++++++++++++++++++++++++++++++++++++++++++ On 7/23/07, Nilo de Roock wrote: > Hello Keith, > > Sorry. I don't do much with non-cummutative rings, can't really > help you with that. > > If there is an open source package supporting such rings then it's probably > included in SAGE. > > kind regards, > nilo de roock > > > > 2007/7/23, R. Keith Dennis : > > > > Thanks for the suggestions. > > > > However, I'm not sure that any of them work in this situation: > > > > the rings I want to look at are non-commutative > > > > the characteristic is almost never 0 nor prime > > > > I believe that eliminates Macaulay2 and Singular; I'm not sure about > > Cocoa as I haven't had a chance to look at the documentation. > > > > Please let me know if I've misunderstood what can be done with these > > packages. > > > > Keith > > > > > For rings there is a wide selection of available packages. > > > > > > I can confirm that the following > > > - Macaulay2 > > > - Cocoa > > > - Singular > > > all do the basic stuff really well. > > > > > > Seek and you'll find a wealth of information. > > > > > > Macaulay2 and Singular are integrated with GAP in the SAGE package, > > > which I particularly recommend. > > > > > > Kind regards, > > > nilo de roock > > > > > > > > > 2007/7/23, R. Keith Dennis : > > > > > > > > Dear Colleagues: > > > > > > > > I have another simple question to ask. > > > > > > > > However, I'd like to first thank everyone who has helped me thus far. > > > > In particular, I'm most grateful to Bettina Eick and Jack Schmidt for > > > > providing much more than one might hope for. Thanks! > > > > > > > > Bettina Eick showed me how to use the ANUPQ package to generate larger > > > > p-groups. In particular it was possible for me to construct the > > > > groups of order 3^7 of rank 2 & the groups of order 1024 of rank 2, > > > > which were some of the things I needed. These computations went > > > > fairly quickly; the constructions of groups of the same orders of even > > > > larger ranks seems to go much more slowly though. > > > > > > > > The GAP forum has been extremely helpful to me! > > > > > > > > I have some computations I'd like to make in a quotient ring > > > > (i.e. R/I) for R the integral group ring of a finite group. Sometimes > > > > R/I is finite, sometimes not. I can of course determine the abelian > > > > group structure of R/I, but I'd like to find ring generators of the > > > > summands & determine their multiplication, particularly in the finite > > > > case. > > > > > > > > However, I did not see any methods in GAP for working with R/I. Did I > > > > miss something? Is there a ring package available for GAP? > > > > > > > > With a google search I found a Diplomarbeit (pdf) at > > Linz: "Everything > > > > you always wanted to know about rings in GAP. (but were afraid to > > > > ask)", J"urgen Ecker (October 7, 1999). It has the source code (in > > the > > > > pdf file) of the new functions added. At first I thought that the > > > > code might be included in SONATA, but that did not seem to be the > > > > case. > > > > > > > > Ok, so that's everything I was able to determine & the question is: > > > > Is there a ring package already available (or at least some > > > > collection of programs) or do I need to develop my own? > > > > > > > > Thanks for any suggestions. > > > > > > > > Keith > > > > > > > > _______________________________________________ > > > > Forum mailing list > > > > Forum@mail.gap-system.org > > > > http://mail.gap-system.org/mailman/listinfo/forum > > > > > > > > > > > > > > > > -- > > > met vriendelijke groet, > > > nilo > > > > > > ------=_Part_59803_32102713.1185178714054 > > > Content-Type: text/html; charset=ISO-8859-1 > > > Content-Transfer-Encoding: 7bit > > > Content-Disposition: inline > > > > > > Hello Keith,

For rings there is a wide selection of available > > packages.

I can confirm that the following
- Macaulay2
- > > Cocoa
- Singular
all do the basic stuff really > > well.

Seek and you'll find a wealth of information. > > > > >

Macaulay2 and Singular are integrated with GAP in the SAGE package, which I particularly recommend.

Kind regards,
nilo de roock 


> class="gmail_quote">2007/7/23, R. Keith Dennis < > > > dennis@rkd.math.cornell.edu>:
> class="gmail_quote" style="margin-top: 0; margin-right: 0; margin-bottom: 0; > > margin-left: 0; margin-left: 0.80ex; border-left-color: #cccccc; > > border-left-width: 1px; border-left-style: solid; padding-left: 1ex"> > > > Dear Colleagues:

I have another simple question to > > ask.

However, I'd like to first thank everyone who has helped me > > thus far.
In particular, I'm most grateful to Bettina Eick and Jack > > Schmidt for
> > > providing much more than one might hope > > for.  Thanks!

Bettina Eick showed me how to use the ANUPQ > > package to generate larger
p-groups.  In particular it was > > possible for me to construct the
groups of order 3^7 of rank 2 & the > > groups of order 1024 of rank 2, > > >
which were some of the things I needed.  These > > computations went
fairly quickly; the constructions of groups of the same > > orders of even
larger ranks seems to go much more slowly > > though.

The GAP forum has been extremely helpful to me! > > >

I have some computations I'd like to make in a quotient > > ring
(i.e. R/I) for R the integral group ring of a finite > > group.  Sometimes
R/I is finite, sometimes not.  I > > can of course determine the abelian
> > > group structure of R/I, but I'd like to find ring generators of > > the
summands & determine their multiplication, particularly in the > > finite
case.

However, I did not see any methods in GAP for working > > with R/I.  Did I > > >
miss something?  Is there a ring package available for > > GAP?

With a google search I found a Diplomarbeit (pdf) at > > Linz:  "Everything
you always wanted to know about rings > > in GAP. (but were afraid to
ask)", J"urgen Ecker (October 7, > > 1999).  It has the source code (in the > > >
pdf file) of the new functions added.  At first I thought > > that the
code might be included in SONATA, but that did not seem to be > > the
case.

Ok, so that's everything I was able to determine > > & the question is: > > >
Is there a ring package already available (or at least > > some
collection of programs) or do I need to develop my > > own?

Thanks for any > > suggestions.

Keith

_______________________________________________ > > >
Forum mailing list
> > Forum@mail.gap-system.org
> > http://mail.gap-system.org/mailman/listinfo/forum
> > >



--
met vriendelijke groet,
nilo > > > > > > ------=_Part_59803_32102713.1185178714054-- > > > > > > > > > -- > met vriendelijke groet, > nilo > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From hulpke at math.colostate.edu Mon Jul 23 18:19:06 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Mon Jul 23 18:22:06 2007 Subject: [GAP Forum] coset enumeration In-Reply-To: <541181.57867.qm@web30905.mail.mud.yahoo.com> References: <541181.57867.qm@web30905.mail.mud.yahoo.com> Message-ID: <83ECDB08-3E03-4F34-B680-147E83D15D2F@math.colostate.edu> Dear Forum, Dear Kristin Farwell, > without having to stand over my computer. Is there > any way I can make the > coset enumerator return 'fail' then continue with the > next command, instead > of waiting for me to give it permission? > > Beth > > > I am trying to do exactly what this person was asking > about and I also found the max and silent options. I > also know how to push these options onto the stack. > My program still does not break out of the loop when > it reaches the max. Approximate code: > > f:=FreeGroup(2); > PushOptions(rec(max:=2000)); > PushOptions(rec(silent:=true)); > for p in [1..5] do > g:=f/[f.1^3,f.2^3,(f.1*f.2)^3,(f.1*f.2*f.1)^p]; > s:=Size(g); `Size' (which does coset enumeration by a cyclic subgroup and then considers the presentation for this subgroup) calls an augmented coset table calculation that does not respect the `silent' option. (Indeed this would be troublesome as then `Size' would be stored as `fail'). If you want to do an opportunistic finiteness test I would call the internal function FinIndexCyclicSubgroupGenerator(g,max); (BTW you set max to 2000 -- Unless your machine is older than 15 years you probably want to set it to at least 256000 which is the standard coset table default in GAP. Coset enumeration often needs initially more cosets.) This routine will either return `fail' or return a cyclic subgroup of finite index. In this second case you the can call `Size'. Best, Alexander Hulpke > ______________________________________________________________________ > ______________ > Senseless footer added by yohoo email > http://weareannoying.yahoo.com/ > From dan_lanke at yahoo.com Tue Jul 24 19:06:11 2007 From: dan_lanke at yahoo.com (Dan Lanke) Date: Tue Jul 24 19:07:03 2007 Subject: [GAP Forum] Character table of D_{2n}, n odd Message-ID: <333085.44000.qm@web63315.mail.re1.yahoo.com> Dear GAP Forum, Let n be an odd integer. Let D_{2n} denote the dihedral group of order 2n. Let T denote the character table of D_{2n}. Is it true that, up to isomorphism, D_{2n} is the only group with character table T? If no, any suggestions on how to use GAP for finding an example please? Thanks, Dan --------------------------------- Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. From fridmam at macs.biu.ac.il Wed Jul 25 12:12:58 2007 From: fridmam at macs.biu.ac.il (Michael Fridman) Date: Wed Jul 25 12:13:34 2007 Subject: [GAP Forum] calculating ideals Message-ID: Hello everyone! I have an n*m matrix with values in Z[t,t^(-1)]. I need to compute the ideal generated by the (n-r) minors (1<=r References: <333085.44000.qm@web63315.mail.re1.yahoo.com> Message-ID: <20070725125004.GC23366@antares> Dear GAP Forum, Dan Lanke wrote > Let n be an odd integer. > Let D_{2n} denote the dihedral group of order 2n. > Let T denote the character table of D_{2n}. > > Is it true that, up to isomorphism, D_{2n} is the only group with character > table T? If no, any suggestions on how to use GAP for finding an example please? Let $G$ be a group with the given table as character table. - The kernel of the nontrivial linear character of $G$ is a normal subgroup $N$, say, of index two. - $N$ is cyclic: For $n = 3$ this is clear, for larger $n$ there is a nonlinear irreducible character of $G$ that takes values of the form $\zeta + \zeta^{-1}$ on $N$, where $\zeta$ is a primitive $n$-th root of unity, and such values do not lie in a smaller cyclotomic field. So $N$ contains elements of order $n$. - The group is a semidirect product of $N$ and a group of order two. - Finally, each complement of $N$ in $G$ acts by inverting. This determines $G$ up to isomorphism. All the best, Thomas From Mathieu.Dutour at ens.fr Mon Aug 6 11:37:53 2007 From: Mathieu.Dutour at ens.fr (Mathieu Dutour) Date: Mon Aug 6 11:38:33 2007 Subject: [GAP Forum] Real field Message-ID: <20070806103753.GA23050@orge.ens.fr> Dear all, I would like to work with numbers of the form (1+Sqrt(5))/2 in order to work with 600-cell, 120-cell and such kind of polytopes. Currently such numbers are coded in GAP with cyclotomic extensions, which means that we have no comparison and functions like (1+Sqrt(5))/2 > 30 does not return what I would like. Is there a way to code a real field like Q(Sqrt(5)) in GAP so as to have reliable comparison operator? -- Mathieu Dutour Sikiric Researcher in Mathematics Telephone:.(+385)1 4571 237 and Computer Science Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute http://www.liga.ens.fr/~dutour Zagreb Croatia skype name: mathieudutour From Mathieu.Dutour at ens.fr Tue Aug 7 11:53:17 2007 From: Mathieu.Dutour at ens.fr (Mathieu Dutour) Date: Tue Aug 7 11:54:02 2007 Subject: [GAP Forum] Real field In-Reply-To: References: Message-ID: <20070807105317.GA29780@orge.ens.fr> Thank you for this reference I will look at it. But the main problem is not there. I have my existing software for polyhedral computations of polytope defined over the rational numbers. I want to work with 600-cell, 120-cell whose vertices are defined over Q(Sqrt(5)) preferably without having to modify the code. The question is on the structure of GAP itself. Is it possible to redefine the ">" test so that it is the natural order of the real field, which is used, when comparing two elements of Q(Sqrt(5)) ? Mathieu On Tue, Aug 07, 2007 at 12:19:20PM +0300, pasechni@ima.umn.edu wrote: >> One can implement in GAP exact algorithms for real algebraic numbers, as described e.g. in the recent monograph Algorithms in Real Algebraic Geometry by Basu, Pollack, and Roy (there is also an online version of it on the net). >> But this is quite a bit of work. >> HTH, >> Dima >> >> -original message- >> Subject: [GAP Forum] Real field >> From: "Mathieu Dutour" >> Date: 06/08/2007 13:37 >> >> Dear all, >> >> I would like to work with numbers of the form (1+Sqrt(5))/2 >> in order to work with 600-cell, 120-cell and such kind of >> polytopes. >> >> Currently such numbers are coded in GAP with cyclotomic >> extensions, which means that we have no comparison and functions >> like (1+Sqrt(5))/2 > 30 does not return what I would like. >> >> Is there a way to code a real field like Q(Sqrt(5)) in GAP >> so as to have reliable comparison operator? >> >> -- >> Mathieu Dutour Sikiric Researcher in Mathematics >> Telephone:.(+385)1 4571 237 and Computer Science >> Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography >> E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute >> http://www.liga.ens.fr/~dutour Zagreb Croatia >> skype name: mathieudutour >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum -- Mathieu Dutour Sikiric Researcher in Mathematics Telephone:.(+385)1 4571 237 and Computer Science Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute http://www.liga.ens.fr/~dutour Zagreb Croatia skype name: mathieudutour From wdjoyner at gmail.com Tue Aug 7 12:11:41 2007 From: wdjoyner at gmail.com (David Joyner) Date: Tue Aug 7 12:12:16 2007 Subject: [GAP Forum] Real field In-Reply-To: <20070807105317.GA29780@orge.ens.fr> References: <20070807105317.GA29780@orge.ens.fr> Message-ID: <8cf963450708070411j255695d7v4eab5bef56960864@mail.gmail.com> Frank Luebeck has written some utilities for doing just this type of thing: http://www.math.rwth-aachen.de/~Frank.Luebeck/gap/FUtil/index.html Perhaps they will help. ++++++++++++++++++++++++++++++++++++++++++++++++ On 8/7/07, Mathieu Dutour wrote: > Thank you for this reference I will look at it. > > But the main problem is not there. I have my existing > software for polyhedral computations of polytope defined over > the rational numbers. I want to work with 600-cell, 120-cell > whose vertices are defined over Q(Sqrt(5)) preferably without > having to modify the code. > > The question is on the structure of GAP itself. Is it possible > to redefine the ">" test so that it is the natural order > of the real field, which is used, when comparing two elements > of Q(Sqrt(5)) ? > > Mathieu > > On Tue, Aug 07, 2007 at 12:19:20PM +0300, pasechni@ima.umn.edu wrote: > >> One can implement in GAP exact algorithms for real algebraic numbers, as described e.g. in the recent monograph Algorithms in Real Algebraic Geometry by Basu, Pollack, and Roy (there is also an online version of it on the net). > >> But this is quite a bit of work. > >> HTH, > >> Dima > >> > >> -original message- > >> Subject: [GAP Forum] Real field > >> From: "Mathieu Dutour" > >> Date: 06/08/2007 13:37 > >> > >> Dear all, > >> > >> I would like to work with numbers of the form (1+Sqrt(5))/2 > >> in order to work with 600-cell, 120-cell and such kind of > >> polytopes. > >> > >> Currently such numbers are coded in GAP with cyclotomic > >> extensions, which means that we have no comparison and functions > >> like (1+Sqrt(5))/2 > 30 does not return what I would like. > >> > >> Is there a way to code a real field like Q(Sqrt(5)) in GAP > >> so as to have reliable comparison operator? > >> > >> -- > >> Mathieu Dutour Sikiric Researcher in Mathematics > >> Telephone:.(+385)1 4571 237 and Computer Science > >> Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography > >> E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute > >> http://www.liga.ens.fr/~dutour Zagreb Croatia > >> skype name: mathieudutour > >> > >> _______________________________________________ > >> Forum mailing list > >> Forum@mail.gap-system.org > >> http://mail.gap-system.org/mailman/listinfo/forum > > -- > Mathieu Dutour Sikiric Researcher in Mathematics > Telephone:.(+385)1 4571 237 and Computer Science > Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography > E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute > http://www.liga.ens.fr/~dutour Zagreb Croatia > skype name: mathieudutour > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From hulpke at math.colostate.edu Tue Aug 7 18:46:51 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Tue Aug 7 18:47:48 2007 Subject: [GAP Forum] Real field In-Reply-To: <20070807105317.GA29780@orge.ens.fr> References: <20070807105317.GA29780@orge.ens.fr> Message-ID: Dear Mathieu, Dear Forum, > But the main problem is not there. I have my existing > software for polyhedral computations of polytope defined over > the rational numbers. I want to work with 600-cell, 120-cell > whose vertices are defined over Q(Sqrt(5)) preferably without > having to modify the code. > > The question is on the structure of GAP itself. Is it possible > to redefine the ">" test so that it is the natural order > of the real field, which is used, when comparing two elements > of Q(Sqrt(5)) ? In the current form alas no. The `<' comparison for cyclotomics is handled in the kernel before it ever gets to the \< operation in the library. Thus, short of rewriting the kernel you are stuck with the code as-is. (The reason the comparison between cyclotomics does not respect the real numbers is that this actually rather delicate to do if you want to do it in full generality.) You could get around this by creating new ``wrapper'' objects that simply embed a cyclotomic but this will substantially increase memory use and decrease arithmetic performance. What I would do is (as annoying as it looks) to use your own function for the comparison and replace < and > (i.e. <> and not <) with it. (As your field is just Q(sqrt(5)) it is easy to get rational part and ER(5)-part and use squaring to reduce to a rational comparison.) What this unfortunately cannot resolve is if you are using other peoples code (or library code) which should use the new ordering. Sorry to not being able to offer a better solution. Alexander From Mathieu.Dutour at ens.fr Tue Aug 7 21:38:15 2007 From: Mathieu.Dutour at ens.fr (Mathieu Dutour) Date: Tue Aug 7 21:38:52 2007 Subject: [GAP Forum] Re: Real field Message-ID: <20070807203815.GA31981@orge.ens.fr> Dear all, first thanks for your help, I see a little bit better about what should be the solution. It is not possible for me to use continued fractions since for example the facets of 600-cell are icosahedron and I want to decide incidence exactly, I really need to be able to decide if a=b. >From the various comments I understand that it is not reasonable to try to use the existing cyclotomic fields but that the "right" solution would be to redefine from scratch the new field Q(Sqrt(5)). Gap offers cyclotomic fields, finite fields, number fields, various kind of rings, but not real fields. Is there an intrisic obstacle to it? Mathieu -- Mathieu Dutour Sikiric Researcher in Mathematics Telephone:.(+385)1 4571 237 and Computer Science Cell Phone: (+385)9 19 36 30 80 Laboratory of satellite oceanography E-mail: Mathieu.Dutour@ens.fr Rudjer Boskovic Institute http://www.liga.ens.fr/~dutour Zagreb Croatia skype name: mathieudutour From ffantino at gmail.com Tue Aug 7 22:31:11 2007 From: ffantino at gmail.com (Fernando Fantino) Date: Tue Aug 7 22:31:36 2007 Subject: [GAP Forum] Question. Message-ID: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> Dear forum, Let G be the symmetric group in n letters. Let s be in G. I want to compute a "minimal" decomposition of s as a product of the traspositions: s_1,...,s_{n-1}, where s_i=(i,i+1). "Minimal" means: of minimal length. For instance: if n=7 and s=(2,4,5,3) (6,7), such a decomposition would be s=(3,4)(2,3)(4,5)(6,7)=s_3 s_2 s_4 s_6. So, I would like something like this: ???(G,s); (3,4)(2,3)(4,5)(6,7) ????(G,s); 4 (the length). How can I do that? Thank you in advance. Best, Fernando F. From hulpke at math.colostate.edu Tue Aug 7 23:15:51 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Tue Aug 7 23:16:35 2007 Subject: [GAP Forum] Question. In-Reply-To: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> References: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> Message-ID: <6A218E9A-D984-4691-9612-C2C272218FD4@math.colostate.edu> Dear Fernando Fantino, Dear GAP-Forum, > Let G be the symmetric group in n letters. Let s be in G. > I want to compute a "minimal" decomposition of s as a product of the > traspositions: > s_1,...,s_{n-1}, where s_i=(i,i+1). > "Minimal" means: of minimal length. > > For instance: if n=7 and s=(2,4,5,3) (6,7), such a decomposition > would be > s=(3,4)(2,3)(4,5)(6,7)=s_3 s_2 s_4 s_6. The following is not the most elegant or efficient way but has the advantage that it needs no extra code or packages: It uses that in the particular case of S_n the presentation yields a confluent rewriting system wrt shortlex order and Knuth-Bendix reduction can be used to obtain a shortest word. This is probably easiest demonstrated in an example: Make the group gap> g:=SymmetricGroup(7); Sym( [ 1 .. 7 ] ) Now calculate a presentation. GAP automatically chooses for S_n the coxeter generators gap> hom:=IsomorphismFpGroup(g); [ (1,2), (2,3), (3,4), (4,5), (5,6), (6,7) ] -> [ S_7.1, S_7.2, S_7.3, S_7.4, S_7.5, S_7.6 ] gap> gfp:=Range(hom); Now `hom' can be used to translate frompermutations to words. However it is not guaranteed to use the shortest possible words. For this we force this group to alwatys reduce elements, using Knuth-Bendix rewriting: gap> SetReducedMultiplication(gfp); Now we can translate: gap> s:=(3,4)*(2,3)(4,5)(6,7); (2,3,5,4)(6,7) gap> w:=Image(hom,s); S_7.6*S_7.3*S_7.4*S_7.2 For processing the following might be useful: gap> LetterRepAssocWord(UnderlyingElement(w)); # As List of generators [ 6, 3, 4, 2 ] gap> Length(w); # length 4 The same mechanism would work in principle for arbitrary groups, but the computation of a confluent rewriting system, triggered by `SetReducedMultiplication' could take long and use much memory. Thus I would use this with care for different or large groups. The avid reader of the GAP manual might ask herself at this point why I did not suggest `Factorization'. Indeed gap> g:=Group((1,2), (2,3), (3,4), (4,5), (5,6), (6,7)); Group([ (1,2), (2,3), (3,4), (4,5), (5,6), (6,7) ]) gap> Factorization(g,s); x6*x3*x4*x2 produces the same result with seemingly less effort. However `Factorization' is very general code that needs to enumerate all elements of the group. If the degree gets larger (e.g. try the same with 15 instead of 7) this will run out of memory, while the method proposed will still work. I hope this is of help, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From hulpke at math.colostate.edu Tue Aug 7 23:30:26 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Tue Aug 7 23:31:08 2007 Subject: [GAP Forum] Re: Real field In-Reply-To: <20070807203815.GA31981@orge.ens.fr> References: <20070807203815.GA31981@orge.ens.fr> Message-ID: Dear Forum, Dear Mathieu, >> From the various comments I understand that it is not reasonable > to try to use the existing cyclotomic fields but that the "right" > solution would be to redefine from scratch the new field Q(Sqrt(5)). > > Gap offers cyclotomic fields, finite fields, number fields, various > kind of rings, but not real fields. Is there an intrisic obstacle > to it? GAP offers subfields of the cyclotomics (and thus real subfields of the cyclotomics). The problem is simply with the comparison: GAP needs to have a comparison (via `<`) defined on all of the cyclotomics for example to form sets. at the moment this comparison is rather ad-hoc and for irrational real numbers is not compatible with the ordering induced by the real numbers. This is indeed a pity, however doing so would be rather hard: It is not sufficient to have a comparison only for some subfield, but a comparison must be possible for any elements. Leaving out non-real elements this means we have to be able to compare real elements of CF (5), say, with elements of CF(317). The only method for this which I am aware of is via numerical approximation, which is potentially very expensive. If anybody has a better idea of how to define a total order on the cyclotomics that for the real subfield is compatible with the natural ordering I'd be very happy to hear about. Best, Alexander -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From Frank.Luebeck at math.rwth-aachen.de Wed Aug 8 09:52:36 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Wed Aug 8 09:56:14 2007 Subject: [GAP Forum] Question. In-Reply-To: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> References: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> Message-ID: <20070808085236.GA10177@beteigeuze> On Tue, Aug 07, 2007 at 11:31:11PM +0200, Fernando Fantino wrote: > Let G be the symmetric group in n letters. Let s be in G. > I want to compute a "minimal" decomposition of s as a product of the > traspositions: > s_1,...,s_{n-1}, where s_i=(i,i+1). > "Minimal" means: of minimal length. > > For instance: if n=7 and s=(2,4,5,3) (6,7), such a decomposition would be > s=(3,4)(2,3)(4,5)(6,7)=s_3 s_2 s_4 s_6. > > > So, I would like something like this: > ???(G,s); > (3,4)(2,3)(4,5)(6,7) > ????(G,s); > 4 (the length). > > How can I do that? Dear Fernando Fantino, dear Forum, You can use the following observations which are easy to prove if you consider a permutation on N = {1,2,...,n} as list of images of 1,2,...,n: Let s be a permutation of N, define M(s) = { [i,j] | i, j in N, i < j, i^s > j^s } and L(s) = { s_i = (i,i+1) | [i,i+1] in M(s) }. Then s = () iff |M(s)| = 0 iff |L(s)| = 0 and |M(s_i * s)| = |M(s)| - 1 if s_i in L(s) and |M(s_i * s)| = |M(s)| + 1 otherwise. From this it follows that |M(s)| is the minimal length as you have defined above and L(s) is the "left descend set", i.e., the set of generators s_i which multiplied to s from the left give a shorter element. So, one could write the functions you are looking for as follows: MinLengthSn := function(s) local n; n := LargestMovedPoint(s); return Sum([1..n-1], i-> Number([i+1..n], j-> i^s > j^s)); end; MinWordSn := function(s) local n, res, i; res := []; while s <> () do # we construct the "lexicographically smallest" word i := 1; while i^s < (i+1)^s do i := i+1; od; Add(res, i); # use s = s_i * (s_i * s) and recurse on second factor s := (i,i+1) * s; od; return res; # or: return List(res, i-> (i,i+1)); end; Applied to your example: gap> s := (2,4,5,3) (6,7); (2,4,5,3)(6,7) gap> MinLengthSn(s); 4 gap> sw := MinWordSn(s); [ 2, 4, 3, 6 ] gap> Product(sw, i-> (i,i+1)); (2,4,5,3)(6,7) gap> MinLengthSn(Random(SymmetricGroup(1000))); 242170 [Note that your example s=(3,4)(2,3)(4,5)(6,7) doesn't fit with GAPs definition of the product of permutations (which act on the points from the right), so in GAP s = (6,7)*(4,5)*(2,3)*(3,4).] With best regards, Frank L?beck -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From ffantino at gmail.com Wed Aug 8 23:49:45 2007 From: ffantino at gmail.com (Fernando Fantino) Date: Wed Aug 8 23:50:36 2007 Subject: [GAP Forum] Question. In-Reply-To: <20070808085236.GA10177@beteigeuze> References: <4d4d8b940708071431x50ef1c78qd1c4b1b73f983ae7@mail.gmail.com> <20070808085236.GA10177@beteigeuze> Message-ID: <4d4d8b940708081549x5c31e0d8na160f618fba24465@mail.gmail.com> Dear all, dear GAP-Forum, Thank you for all your suggestions. I will prove with them. And...yes, I wanted to write s=(3,4)*(2,3)*(4,5)*(6,7)=s_3*s_2*s_4*s_6, instead of s=(3,4)(2,3)(4,5)(6,7)=s_3 s_2 s_4 s_6. Thank you again. Best wishes, Fernando Fantino. 2007/8/8, Frank L?beck : > > On Tue, Aug 07, 2007 at 11:31:11PM +0200, Fernando Fantino wrote: > > Let G be the symmetric group in n letters. Let s be in G. > > I want to compute a "minimal" decomposition of s as a product of the > > traspositions: > > s_1,...,s_{n-1}, where s_i=(i,i+1). > > "Minimal" means: of minimal length. > > > > For instance: if n=7 and s=(2,4,5,3) (6,7), such a decomposition would > be > > s=(3,4)(2,3)(4,5)(6,7)=s_3 s_2 s_4 s_6. > > > > > > So, I would like something like this: > > ???(G,s); > > (3,4)(2,3)(4,5)(6,7) > > ????(G,s); > > 4 (the length). > > > > How can I do that? > > Dear Fernando Fantino, dear Forum, > > You can use the following observations which are easy to prove if you > consider > a permutation on N = {1,2,...,n} as list of images of 1,2,...,n: > Let s be a permutation of N, define > M(s) = { [i,j] | i, j in N, i < j, i^s > j^s } and > L(s) = { s_i = (i,i+1) | [i,i+1] in M(s) }. > Then > s = () iff |M(s)| = 0 iff |L(s)| = 0 > and > |M(s_i * s)| = |M(s)| - 1 if s_i in L(s) and > |M(s_i * s)| = |M(s)| + 1 otherwise. > > From this it follows that |M(s)| is the minimal length as you have defined > above and L(s) is the "left descend set", i.e., the set of generators s_i > which > multiplied to s from the left give a shorter element. > > So, one could write the functions you are looking for as follows: > MinLengthSn := function(s) > local n; > n := LargestMovedPoint(s); > return Sum([1..n-1], i-> Number([i+1..n], j-> i^s > j^s)); > end; > MinWordSn := function(s) > local n, res, i; > res := []; > while s <> () do > # we construct the "lexicographically smallest" word > i := 1; > while i^s < (i+1)^s do > i := i+1; > od; > Add(res, i); > # use s = s_i * (s_i * s) and recurse on second factor > s := (i,i+1) * s; > od; > return res; # or: return List(res, i-> (i,i+1)); > end; > > Applied to your example: > > gap> s := (2,4,5,3) (6,7); > (2,4,5,3)(6,7) > gap> MinLengthSn(s); > 4 > gap> sw := MinWordSn(s); > [ 2, 4, 3, 6 ] > gap> Product(sw, i-> (i,i+1)); > (2,4,5,3)(6,7) > gap> MinLengthSn(Random(SymmetricGroup(1000))); > 242170 > > > [Note that your example s=(3,4)(2,3)(4,5)(6,7) doesn't fit with GAPs > definition > of the product of permutations (which act on the points from the right), > so in > GAP s = (6,7)*(4,5)*(2,3)*(3,4).] > > With best regards, > > Frank L?beck > > -- > /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// > \\\ 52062 Aachen, Germany \\\ > /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// > \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ > From dfh at maths.warwick.ac.uk Thu Aug 9 14:25:00 2007 From: dfh at maths.warwick.ac.uk (Derek Holt) Date: Thu Aug 9 14:27:09 2007 Subject: [GAP Forum] The nilmat package Message-ID: <20070809132500.GA7149@maths.warwick.ac.uk> Dear GAP Forum This is to announce that the Nilmat GAP package described below has been refereed and accepted. The Nilmat GAP package by Alla Detinko (Galway), Bettina Eick (Braunschweig), Dane Flannery (Galway) Available at: http://larmor.nuigalway.ie/~dane/nilmat/ This package implements functions for computing with nilpotent matrix groups defined over finite fields or over the rational field. These include a function to test whether an arbitrary matrix group is nilpotent. If the group is nilpotent, then the functions provided for computing the size of the group, and various subgroups, such as its Sylow subgroups run significantly faster than the default GAP functions for these purposes. The package also contains facilities for constructing various examples of nilpotent matrix groups, such as maximal absolutely irreducible nilpotent groups and primitive nilpotent groups. Regards, Derek Holt. From anvita21 at gmail.com Mon Aug 13 13:29:06 2007 From: anvita21 at gmail.com (Anvita) Date: Mon Aug 13 13:29:46 2007 Subject: [GAP Forum] Argument values in function calls Message-ID: <6a52effd0708130529g4aa77728pad5801761cd98774@mail.gmail.com> Dear Forum, Could someone please explain to me why in some cases a function call may result in a change of the argument's value while in others it does not. (See in the two examples below the behavior of the value of "a"). The chapter 4.10 of the manual says that for each argument of a function GAP allocates a new variable. Doesn't it mean that the initial variable's value should always remain intact? Thank you, Anvita ### Example 1 ### gap> f1:=function(l) > l[1]:=l[1]+1; > return l; > end; function( l ) ... end gap> gap> a:=[1]; [ 1 ] gap> b:=f1(a); [ 2 ] gap> a; [ 2 ] ### Example 2 ### gap> f2:=function(l) > l:=l+1; > return l; > end; function( l ) ... end gap> gap> a:=1; 1 gap> b:=f2(a); 2 gap> a; 1 ------------------------------- From laurent.bartholdi at gmail.com Mon Aug 13 14:27:06 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Mon Aug 13 14:27:47 2007 Subject: [GAP Forum] Argument values in function calls In-Reply-To: <6a52effd0708130529g4aa77728pad5801761cd98774@mail.gmail.com> References: <6a52effd0708130529g4aa77728pad5801761cd98774@mail.gmail.com> Message-ID: <1ff637850708130627h215bab8bh51ff5b6ad7402cb@mail.gmail.com> Dear Anvita, A new variable is allocated in fuction calls, and therefore in Example 2 the variable l is not affected. However, lists are passed by reference, and not copied; therefore, the contents of l are changed in Example 1. Consider Example 1.5: gap> f1:=function(l) > l := l+[1]; > return l; > end; function( l ) ... end Then this example behaves just like Example 2. (I don't think that any programming language would consider copying lists before passing them to a function; this is usually too expensive in computational time). Moral: you may change _l_ without affecting the argument; you may not change _l's contents_. Best, Laurent On 8/13/07, Anvita wrote: > Dear Forum, > > Could someone please explain to me why in some cases > a function call may result in a change of the argument's > value while in others it does not. (See in the two examples below > the behavior of the value of "a"). The chapter 4.10 > of the manual says that for each argument of a function > GAP allocates a new variable. Doesn't it mean that > the initial variable's value should always remain intact? > > Thank you, > Anvita > > ### Example 1 ### > > gap> f1:=function(l) > > l[1]:=l[1]+1; > > return l; > > end; > function( l ) ... end > gap> > gap> a:=[1]; > [ 1 ] > gap> b:=f1(a); > [ 2 ] > gap> a; > [ 2 ] > > ### Example 2 ### > > gap> f2:=function(l) > > l:=l+1; > > return l; > > end; > function( l ) ... end > gap> > gap> a:=1; > 1 > gap> b:=f2(a); > 2 > gap> a; > 1 > ------------------------------- > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From justin at mac.com Tue Aug 14 00:20:45 2007 From: justin at mac.com (Justin C. Walker) Date: Tue Aug 14 00:21:54 2007 Subject: [GAP Forum] Argument values in function calls In-Reply-To: <1ff637850708130627h215bab8bh51ff5b6ad7402cb@mail.gmail.com> References: <6a52effd0708130529g4aa77728pad5801761cd98774@mail.gmail.com> <1ff637850708130627h215bab8bh51ff5b6ad7402cb@mail.gmail.com> Message-ID: <5E36E3DE-6844-4FE5-B0B4-E73F688A010C@mac.com> Dear Laurent and Forum, On Aug 13, 2007, at 6:27 AM, Laurent Bartholdi wrote: > Dear Anvita, > A new variable is allocated in fuction calls, and therefore in Example > 2 the variable l is not affected. However, lists are passed by > reference, and not copied; therefore, the contents of l are changed in > Example 1. > > Consider Example 1.5: > > gap> f1:=function(l) >> l := l+[1]; >> return l; >> end; > function( l ) ... end > > Then this example behaves just like Example 2. > (I don't think that any programming language would consider copying > lists before passing them to a function; this is usually too expensive > in computational time). This may be off-topic, but I want to comment on the statement above. The treatment of "large" or "structured" parameter values is not straight-forward, and is generally part of the language specification. The approaches to this go under the names "call by value", "call by name", "call by reference", with a panoply of modifications to deal with specific issues in language design. Some languages define the treatment once for all, with no programmer control (python, for example). Others (Magma, familiar to many here) let the programmer decide. The language C in fact will copy structures, but not arrays, when used as arguments to functions. Defining the function foo as, say, int foo(struct xx *x) requires the language to pass a reference. Defining it as int foo(struct xx x) more or less requires that any modification to 'x' inside foo() can't be reflected in the copy at the call site. Arrays in C are special, in that they are, implicitly, references: an array of ints is "int *", so there's no (obvious) way to pass an array by value. Regards, Justin -- Justin C. Walker, Curmudgeon-At-Large, Director Institute for the Enhancement of the Director's Income -------- The path of least resistance: it's not just for electricity any more. -------- From ault at math.ohio-state.edu Thu Aug 16 17:49:41 2007 From: ault at math.ohio-state.edu (Shaun Van Ault) Date: Thu Aug 16 17:50:41 2007 Subject: [GAP Forum] Use of GAP for Homological Algebra Message-ID: <46C48025.5020005@math.ohio-state.edu> Dear GAP forum, In my PhD research, I have been using GAP to calculate the homology of various types of chain complex, essentially by setting up the differential maps as matrices (with rational or integral entries), then applying NormalFormIntMat iteratively. For low-dimensional chain groups (i.e., differential matrices on the order of 100 x 100), this process works quite well and quickly. However, I have recently found it necessary to construct differential matrices on the order of 10000 x 10000 and significantly larger. The computations for homology get bogged down considerably. Even computing rationally (i.e., just making computations of ranks of matrices instead of doing a full SNF), I run out of resources. My question is this: Is there a method for computing rank of a sparse matrix using much less resources than for a dense matrix? The large differential matrices I am constructing are incredibly sparse. Additionally, are there any existing methods for dealing with spectral sequence calculations? Here is a link to the preprint outlining the thesis and the work done by myself and my advisor, Zbigniew Fiedorowicz. The homology calculations in question would be those of the chain complexes Sym_*^{(p)} defined on p.6. http://www.math.ohio-state.edu/~ault/Papers/symmetric_arxiv-1.pdf Thank you, -Shaun Ault From thomasrehnde at yahoo.de Tue Aug 28 22:57:47 2007 From: thomasrehnde at yahoo.de (Thomas Rehn) Date: Tue Aug 28 22:58:16 2007 Subject: [GAP Forum] Technical question / interface Message-ID: <200708282357.49397.thomasrehnde@yahoo.de> Hello, for a research project I try to utilize the group calculation facilities of GAP. Due to performance and design issues the main program implementing various algorithms is written in C and C++. For using GAP I wrote a wrapper class (which uses popen and two pipes) for the GAP binary and its command line. The problem here is that on writing a "g := Group(...);" command the "gap> "-prompt appears twice (whereas on other used commands it appears only once), so I have no unique easy mark to use to recognize the end of a GAP calculation. Treating the group assignments separately waiting for two prompts would be possible, but this is not a very general approach. Do you know a better way to interface GAP for this purpose or a flexible workaround for the prompt-mark problem? Best regards, Thomas. ___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de From Frank.Luebeck at math.rwth-aachen.de Thu Aug 30 11:58:41 2007 From: Frank.Luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Thu Aug 30 11:59:18 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <200708282357.49397.thomasrehnde@yahoo.de> References: <200708282357.49397.thomasrehnde@yahoo.de> Message-ID: <20070830105841.GB23479@beteigeuze> On Tue, Aug 28, 2007 at 11:57:47PM +0200, Thomas Rehn wrote: > for a research project I try to utilize the group calculation facilities of > GAP. Due to performance and design issues the main program implementing > various algorithms is written in C and C++. For using GAP I wrote a wrapper > class (which uses popen and two pipes) for the GAP binary and its command > line. The problem here is that on writing a "g := Group(...);" command > the "gap> "-prompt appears twice (whereas on other used commands it appears > only once), so I have no unique easy mark to use to recognize the end of a > GAP calculation. Treating the group assignments separately waiting for two > prompts would be possible, but this is not a very general approach. > > Do you know a better way to interface GAP for this purpose or a flexible > workaround for the prompt-mark problem? Dear Thomas, dear Forum, For remote GAP processes I'm calling GAP with the options: gap -b -q -e -n -T -r Try 'gap -h' to get an explanation of these options. In particular, the -q makes GAP "quiet" and it doesn't print prompts anymore. When sending a request to such a remote GAP process I append a statement like 'Print("\nENDGAPOUTPUT\n");' such that I know that the output corresponding to my input is finished when I find a line containing "ENDGAPOUTPUT". With best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From rm43 at evansville.edu Thu Aug 30 13:16:14 2007 From: rm43 at evansville.edu (Robert Morse) Date: Thu Aug 30 13:16:40 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <200708282357.49397.thomasrehnde@yahoo.de> References: <200708282357.49397.thomasrehnde@yahoo.de> Message-ID: <1ff1501f0708300516u61a86172tb5865856a0d7ef72@mail.gmail.com> Dear Thomas, You might also consider the GAPd project http://csprojects.evansville.edu/~tm61/about Regards, Robert F. Morse On 8/28/07, Thomas Rehn wrote: > Hello, > > for a research project I try to utilize the group calculation facilities of > GAP. Due to performance and design issues the main program implementing > various algorithms is written in C and C++. For using GAP I wrote a wrapper > class (which uses popen and two pipes) for the GAP binary and its command > line. The problem here is that on writing a "g := Group(...);" command > the "gap> "-prompt appears twice (whereas on other used commands it appears > only once), so I have no unique easy mark to use to recognize the end of a > GAP calculation. Treating the group assignments separately waiting for two > prompts would be possible, but this is not a very general approach. > > Do you know a better way to interface GAP for this purpose or a flexible > workaround for the prompt-mark problem? > > Best regards, > Thomas. > > > > > > ___________________________________________________________ > Der fr?he Vogel f?ngt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From szteven at gmail.com Fri Aug 31 00:08:38 2007 From: szteven at gmail.com (Istvan Szollosi) Date: Fri Aug 31 00:09:06 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <200708282357.49397.thomasrehnde@yahoo.de> References: <200708282357.49397.thomasrehnde@yahoo.de> Message-ID: <3cb5e2b80708301608t5c0c338do55d6d134856d612c@mail.gmail.com> Dear Thomas, I'm working on a fully featured worksheet based graphical user interface for GAP and have dealt already with this problem. If you want the most possible control over the GAP process you should run it with the -p option. When run as "gap -p", GAP will enter in a special mode - suited for piping - and all GAP output is accompanied (surrounded) by meta-characters (meta sequences begin with a '@' character). For example when you encounter in GAP's output "...blabla1234@J@ngap> @i" you'll know _for_sure_ that GAP has finished everything, displayed the prompt and it's waiting for standard input. If an output line is terminated by "@e" means GAP is waiting for "error output" etc. This protocol is not that easy at first sight, but understandable if you dive into the sources for the XGAP package. Also take a look at how SAGE communicates with GAP: http://www.sagemath.org/hg/sage-main?f=67e365631df5;file=sage/interfaces/gap.py (search for the Python function "_execute_line"). If you absolutely need to do it in this way, i can also send you my implementation with explanations, comments etc. The interface will be out for testing in a few weeks (1-2) - (if everything goes as planned :) ). Regards, Istvan PS: If you are concerned about efficiency and want to mix up GAP with external code you have also the possibility to run an external process from within GAP, or even compile GAP code into C with GAC (the GAP compiler) and link it with yours - see the manual. -- S. Szollosi Istvan Babes-Bolyai University Faculty of Mathematics and Computer Science Faculty of Physics Mihail Kogalniceanu nr. 1 RO- 400084 Cluj-Napoca, Romania http://www.ubbcluj.ro From mmarco at unizar.es Fri Aug 31 11:48:55 2007 From: mmarco at unizar.es (Miguel Marco) Date: Fri Aug 31 11:42:06 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <3cb5e2b80708301608t5c0c338do55d6d134856d612c@mail.gmail.com> References: <200708282357.49397.thomasrehnde@yahoo.de> <3cb5e2b80708301608t5c0c338do55d6d134856d612c@mail.gmail.com> Message-ID: <200708311248.56139.mmarco@unizar.es> As we speak about interfaces: someone knows if there exists (or if it can be done easily) a texmacs plug-in for gap? Miguel Angel Marco Buzunariz Departamento de matematicas Universidad de Zaragoza From wdjoyner at gmail.com Fri Aug 31 16:53:38 2007 From: wdjoyner at gmail.com (David Joyner) Date: Fri Aug 31 16:54:00 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <200708311248.56139.mmarco@unizar.es> References: <200708282357.49397.thomasrehnde@yahoo.de> <3cb5e2b80708301608t5c0c338do55d6d134856d612c@mail.gmail.com> <200708311248.56139.mmarco@unizar.es> Message-ID: <8cf963450708310853q3bf8c4b9p137faed43a7ef2db@mail.gmail.com> I looked into this once. It does not exist directly. However, there is a TeXmacs plug-in for SAGE, which includes GAP. http://www.sagemath.org:9001/TeXmacs (To go into GAP mode, type gap_console().) I have not tested it out though. On 8/31/07, Miguel Marco wrote: > As we speak about interfaces: someone knows if there exists (or if it can be > done easily) a texmacs plug-in for gap? > > > Miguel Angel Marco Buzunariz > Departamento de matematicas > Universidad de Zaragoza > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From thomasrehnde at yahoo.de Mon Sep 3 22:55:43 2007 From: thomasrehnde at yahoo.de (Thomas Rehn) Date: Mon Sep 3 22:56:27 2007 Subject: [GAP Forum] Technical question / interface In-Reply-To: <200708282357.49397.thomasrehnde@yahoo.de> References: <200708282357.49397.thomasrehnde@yahoo.de> Message-ID: <200709032355.48211.thomasrehnde@yahoo.de> Thank you for all your responses. The original reason for my confusion was a non-striped \n at the end of some commands (shame on me) I was surprised that there are already existing projects that provide an interface for communicating with GAP and that I hadn't found during my first investigation. Perhaps a collection of links on the GAP homepage to those related projects might help other programmers, too. Regards, Thomas. ___________________________________________________________ Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de From dennis at rkd.math.cornell.edu Fri Sep 7 23:33:42 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Fri Sep 7 23:35:22 2007 Subject: [GAP Forum] elements of wreath products? Message-ID: <200709072233.l87MXgXa022810@rkd.math.cornell.edu> I'm sure this is trivial, but the reference manual seems unclear on this, and the "obvious" thing doesn't seem to work. If one looks at a wreath product W:=WreathProduct(G,P), and thinks of an element as being represented as a product bp (or the other way around) where b is in the base group and p is in the permuation group P (b = (b_1,...,b_n), the simplest version: G^n semi P, where n is the order of P), how does one find the coordinates of an element w in W? I.e., the b_i. Presumably this should be given by Image(Projection(W,i),w) for i between 1 and n, however that leads to an error message. It seems I'm missing something. What? Thanks. Keith From hulpke at math.colostate.edu Mon Sep 10 21:40:39 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Mon Sep 10 21:43:02 2007 Subject: [GAP Forum] elements of wreath products? In-Reply-To: <200709072233.l87MXgXa022810@rkd.math.cornell.edu> References: <200709072233.l87MXgXa022810@rkd.math.cornell.edu> Message-ID: <38D94BFD-4597-4080-9B1C-F9C96B13A058@math.colostate.edu> Dear Keith, > I'm sure this is trivial, but the reference manual seems unclear on > this, and the "obvious" thing doesn't seem to work. If one looks at a > wreath product W:=WreathProduct(G,P), and thinks of an element as > being represented as a product bp (or the other way around) where b is > in the base group and p is in the permuation group P (b = > (b_1,...,b_n), the simplest version: G^n semi P, where n is the order > of P), how does one find the coordinates of an element w in W? I.e., > the b_i. Presumably this should be given by Image(Projection(W,i),w) > for i between 1 and n, however that leads to an error message. It > seems I'm missing something. What? The problem stems from the fact that the only mappings defined for wreath products are group homomorphisms -- projection onto the G- components is not a group homomorphism and therefore does not exist. What exists for a wreath product as described is Projection(W); # no index! which is the projection onto P, Embedding(W,i) # i=1..n the homomorphism G->W giving the i-th copy of G and Embedding(W,n+1) giving the complement P to G^n. To get the i-th component of an element x thus one needs to split off- the p-part first and then use the pre-image under a suitable embedding: PreImagesRepresentative(Embedding(W,i),x/Image(Embedding(W,n+1),Image (Projection(W),x))); Admittedly this looks a bit contorted. I'd be happy to entertain the introduction of a special operation to decompose elements of a wreath product if anybody needs to do this kind of decomposition more often or time-critical. Best, Alexander -- Alexander Hulpke, Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From dennis at rkd.math.cornell.edu Mon Sep 10 22:40:39 2007 From: dennis at rkd.math.cornell.edu (R. Keith Dennis) Date: Mon Sep 10 22:42:27 2007 Subject: [GAP Forum] elements of wreath products? Message-ID: <200709102140.l8ALedJ5015987@rkd.math.cornell.edu> Dear Alexander, thanks very much for the reply. > > I'm sure this is trivial, but the reference manual seems unclear on > > this, and the "obvious" thing doesn't seem to work. If one looks at a > > wreath product W:=WreathProduct(G,P), and thinks of an element as > > being represented as a product bp (or the other way around) where b is > > in the base group and p is in the permuation group P (b = > > (b_1,...,b_n), the simplest version: G^n semi P, where n is the order > > of P), how does one find the coordinates of an element w in W? I.e., > > the b_i. Presumably this should be given by Image(Projection(W,i),w) > > for i between 1 and n, however that leads to an error message. It > > seems I'm missing something. What? > > The problem stems from the fact that the only mappings defined for > wreath products are group homomorphisms -- projection onto the G- Ah, a reasonable convention. But sometimes one needs other maps as well. > components is not a group homomorphism and therefore does not exist. > > What exists for a wreath product as described is > Projection(W); # no index! > which is the projection onto P, > Embedding(W,i) # i=1..n > the homomorphism G->W giving the i-th copy of G and > Embedding(W,n+1) > giving the complement P to G^n. > > To get the i-th component of an element x thus one needs to split off- > the p-part first and then use the pre-image under a suitable embedding: > > PreImagesRepresentative(Embedding(W,i),x/Image(Embedding(W,n+1),Image > (Projection(W),x))); Laurent Bartholdi had already suggested that I try PreImagesRepresentative(Embedding(W,i),w) which seems to work. However, the manual seems to suggest that this shouldn't exist, or at best be unreliable as w is not in the image of Embedding(W,i). Am I taking a chance with using it? Or does it indeed always give the right thing? > Admittedly this looks a bit contorted. I'd be happy to entertain the > introduction of a special operation to decompose elements of a wreath > product if anybody needs to do this kind of decomposition more often > or time-critical. That in fact seems like a reasonable thing to do at some point. I haven't checked, but perhaps one would like the same sort of non-homomorphism in the case of a non-trivial semi-direct product (or maybe it's already there?). Perhaps you could suggest the right part of the GAP code I should look at to create a version, as it probably would be worth my time to get a reliable, efficient version of this as I will need to use it thousands (if not millions) of times in a test for fixed point free actions of certain groups I'm trying to construct. Thanks again for your help. Best regards, Keith From burkhard at hoefling.name Tue Sep 11 13:50:04 2007 From: burkhard at hoefling.name (=?ISO-8859-1?Q?Burkhard_H=F6fling?=) Date: Tue Sep 11 13:50:45 2007 Subject: [GAP Forum] elements of wreath products? In-Reply-To: <200709102140.l8ALedJ5015987@rkd.math.cornell.edu> References: <200709102140.l8ALedJ5015987@rkd.math.cornell.edu> Message-ID: <05788DDB-8FF8-4E0C-883D-16FE54BE96A7@hoefling.name> Dear Keith, dear all, >> What exists for a wreath product as described is >> Projection(W); # no index! >> which is the projection onto P, >> Embedding(W,i) # i=1..n >> the homomorphism G->W giving the i-th copy of G and >> Embedding(W,n+1) >> giving the complement P to G^n. >> >> To get the i-th component of an element x thus one needs to split >> off- >> the p-part first and then use the pre-image under a suitable >> embedding: >> >> PreImagesRepresentative(Embedding(W,i),x/Image(Embedding(W,n+1),Image >> (Projection(W),x))); > > Laurent Bartholdi had already suggested that I try > > PreImagesRepresentative(Embedding(W,i),w) > > which seems to work. However, the manual seems to suggest that this > shouldn't exist, or at best be unreliable as w is not in the image of > Embedding(W,i). Unfortunately, the same is true for Alexander's proposal - a generic element in the base group does not lie in the image of any embedding. I do not see any "clean" way of getting the components, either. So I guess we have to think about adding suitable `Projection' methods as well. > Am I taking a chance with using it? Or does it indeed always give > the right thing? I wouldn't rely on it (although in your case, it seems to work). Probably depends on the kind of group the bottom group is, though. > Perhaps you could suggest the right part of the GAP code I should look > at to create a version, as it probably would be worth my time to get a > reliable, efficient version of this as I will need to use it thousands > (if not millions) of times in a test for fixed point free actions of > certain groups I'm trying to construct. This depend on the kinds of groups do you use to construct for the wreath products (perm groups, pc groups, anything else). Maybe you can send sample input to support@gap-system.org, which might be a more appropriate place for such a technical discussion. Cheers, Burkhard. From sal at cs.st-and.ac.uk Tue Sep 11 21:02:39 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Tue Sep 11 21:05:48 2007 Subject: [GAP Forum] elements of wreath products? In-Reply-To: <05788DDB-8FF8-4E0C-883D-16FE54BE96A7@hoefling.name> References: <200709102140.l8ALedJ5015987@rkd.math.cornell.edu> <05788DDB-8FF8-4E0C-883D-16FE54BE96A7@hoefling.name> Message-ID: <20070911220239.45512f97@caolila> It seems to me we need a slightly more general function than Projection. Maybe something like Components(W ,w) returning a list of n+1 elements of suitable subgroups. Alternatively, and perhaps cleaner, one could provide a way to get at the subgroup of W which is a direct product with its Projections and Embeddings. Steve On Tue, 11 Sep 2007 14:50:04 +0200 Burkhard H?fling wrote: > Dear Keith, dear all, > > >> What exists for a wreath product as described is > >> Projection(W); # no index! > >> which is the projection onto P, > >> Embedding(W,i) # i=1..n > >> the homomorphism G->W giving the i-th copy of G and > >> Embedding(W,n+1) > >> giving the complement P to G^n. > >> > >> To get the i-th component of an element x thus one needs to split > >> off- > >> the p-part first and then use the pre-image under a suitable > >> embedding: > >> > >> PreImagesRepresentative(Embedding(W,i),x/Image(Embedding(W,n+1),Image > >> (Projection(W),x))); > > > > Laurent Bartholdi had already suggested that I try > > > > PreImagesRepresentative(Embedding(W,i),w) > > > > which seems to work. However, the manual seems to suggest that this > > shouldn't exist, or at best be unreliable as w is not in the image of > > Embedding(W,i). > > Unfortunately, the same is true for Alexander's proposal - a generic > element > in the base group does not lie in the image of any embedding. > > I do not see any "clean" way of getting the components, either. > So I guess we have to think about adding suitable `Projection' > methods as well. > > > Am I taking a chance with using it? Or does it indeed always give > > the right thing? > > I wouldn't rely on it (although in your case, it seems to work). > Probably depends on the kind of group the bottom group is, though. > > > Perhaps you could suggest the right part of the GAP code I should look > > at to create a version, as it probably would be worth my time to get a > > reliable, efficient version of this as I will need to use it thousands > > (if not millions) of times in a test for fixed point free actions of > > certain groups I'm trying to construct. > > This depend on the kinds of groups do you use to construct for the > wreath products (perm groups, pc groups, anything else). Maybe you > can send sample input to support@gap-system.org, which might be a > more appropriate place for such a technical discussion. > > Cheers, > > Burkhard. > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From hulpke at frii.com Tue Sep 11 23:23:05 2007 From: hulpke at frii.com (Alexander Hulpke) Date: Tue Sep 11 23:23:43 2007 Subject: [GAP Forum] elements of wreath products? In-Reply-To: <20070911220239.45512f97@caolila> References: <200709102140.l8ALedJ5015987@rkd.math.cornell.edu> <05788DDB-8FF8-4E0C-883D-16FE54BE96A7@hoefling.name> <20070911220239.45512f97@caolila> Message-ID: <05DDC12E-1C45-44E8-9695-A710329C2CB3@frii.com> On Sep 11, 2007, at 2:02 PM, Steve Linton wrote: > It seems to me we need a slightly more general function than > Projection. > > Maybe something like Components(W ,w) returning a list of n+1 > elements of > suitable subgroups. Something like this -- also for semidirect products -- looks the best to me and I will implement such functions. > > Alternatively, and perhaps cleaner, one could provide a way to get > at the > subgroup of W which is a direct product with its Projections and > Embeddings. I communicated privately with Keith Dennis -- his application is time sensitive which makes it worth not having to go through multiple mappings. Best, Alexander > > Steve > > On Tue, 11 Sep 2007 14:50:04 +0200 > Burkhard H?fling wrote: > >> Dear Keith, dear all, >> >>>> What exists for a wreath product as described is >>>> Projection(W); # no index! >>>> which is the projection onto P, >>>> Embedding(W,i) # i=1..n >>>> the homomorphism G->W giving the i-th copy of G and >>>> Embedding(W,n+1) >>>> giving the complement P to G^n. >>>> >>>> To get the i-th component of an element x thus one needs to split >>>> off- >>>> the p-part first and then use the pre-image under a suitable >>>> embedding: >>>> >>>> PreImagesRepresentative(Embedding(W,i),x/Image(Embedding(W,n >>>> +1),Image >>>> (Projection(W),x))); >>> >>> Laurent Bartholdi had already suggested that I try >>> >>> PreImagesRepresentative(Embedding(W,i),w) >>> >>> which seems to work. However, the manual seems to suggest that this >>> shouldn't exist, or at best be unreliable as w is not in the >>> image of >>> Embedding(W,i). >> >> Unfortunately, the same is true for Alexander's proposal - a generic >> element >> in the base group does not lie in the image of any embedding. >> >> I do not see any "clean" way of getting the components, either. >> So I guess we have to think about adding suitable `Projection' >> methods as well. >> >>> Am I taking a chance with using it? Or does it indeed always give >>> the right thing? >> >> I wouldn't rely on it (although in your case, it seems to work). >> Probably depends on the kind of group the bottom group is, though. >> >>> Perhaps you could suggest the right part of the GAP code I should >>> look >>> at to create a version, as it probably would be worth my time to >>> get a >>> reliable, efficient version of this as I will need to use it >>> thousands >>> (if not millions) of times in a test for fixed point free actions of >>> certain groups I'm trying to construct. >> >> This depend on the kinds of groups do you use to construct for the >> wreath products (perm groups, pc groups, anything else). Maybe you >> can send sample input to support@gap-system.org, which might be a >> more appropriate place for such a technical discussion. >> >> Cheers, >> >> Burkhard. >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum > > > -- > Steve Linton School of Computer Science & > Centre for Interdisciplinary Research in Computational Algebra > University of St Andrews Tel +44 (1334) 463269 > http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From paranoia at math.cornell.edu Sat Sep 15 15:53:31 2007 From: paranoia at math.cornell.edu (Russ Woodroofe) Date: Sat Sep 15 15:53:40 2007 Subject: [GAP Forum] ANN: Native Macintosh OS X GUI Message-ID: <75A07250-013E-46B7-AB02-F0672A9BB2AE@math.cornell.edu> Dear all, I'm pleased to announce CocoaGap: a native Macintosh OS X GUI for GAP. Version 0.1 is available for download now from SourceForge at http://cocoagap.sourceforge.net/ Currently, CocoaGap is an almost feature-complete replacement for xgap. It allows interaction with the GAP command line, display of subgroup lattices, inspection of subgroups, and most other features supported by xgap. It is probably lacking a few features: command- line completions is one that I am aware of. It also has some improvements over running xgap under Apple's X11 environment. At this time, these are mostly by-products of being a native program -- Cut/Copy/Paste work as one would expect, the save dialogs are native (with access to favorites, etc). There is also the beginnings of a preferences dialog, and a progress bar while loading the GAP library on startup. I hope to make further improvements to CocoaGap as time goes on. The Cocoa libraries are quite a bit richer than the X11/Athena libraries, which should make it easy to add such things as an in-program html help browser, an application bundle for the entire GAP system, etc. However, it's likely to be a while before I have time to add such features, and what exists now works well enough to be helpful. I have been using it as my main GAP environment for the last couple of months, and found it to generally work well. I would appreciate any comments or suggestions. CocoaGap is licensed under the GPL. Sincerely, --Russ From anvita21 at gmail.com Tue Sep 18 14:32:19 2007 From: anvita21 at gmail.com (Anvita) Date: Tue Sep 18 14:32:45 2007 Subject: [GAP Forum] wreath product with a sparse permutation group Message-ID: <6a52effd0709180632q39aeacb9paf95e2fd71a58dbb@mail.gmail.com> Dear Forum, The manual says that the function WreathProduct( G, P ) constructs the wreath product of the group G with the permutation group P (acting on its MovedPoints). Presumably, this means that the resulting group should have size |G|^n * |P|, where n = Size(MovedPoints(P)). However, this is not so in the case where P is a "sparse" permutation group. For example: -------------------------------------- gap> R:=Group((1,3,5)); Group([ (1,3,5) ]) gap> MovedPoints(R); [ 1, 3, 5 ] gap> Size(last); 3 gap> WreathProduct(CyclicGroup(5),R); gap> 5^3*3; 375 gap> 5^5*3; 9375 -------------------------------------- Is this the expected behavior? Thank you, Anvita From laurent.bartholdi at gmail.com Tue Sep 18 16:08:43 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Tue Sep 18 16:09:07 2007 Subject: Fwd: [GAP Forum] wreath product with a sparse permutation group In-Reply-To: <1ff637850709180808m6704f1a5k475ce0314d0a4ee8@mail.gmail.com> References: <6a52effd0709180632q39aeacb9paf95e2fd71a58dbb@mail.gmail.com> <1ff637850709180808m6704f1a5k475ce0314d0a4ee8@mail.gmail.com> Message-ID: <1ff637850709180808m4fbba7a0sa0de594ea511684c@mail.gmail.com> ---------- Forwarded message ---------- From: Laurent Bartholdi Date: Sep 18, 2007 5:08 PM Subject: Re: [GAP Forum] wreath product with a sparse permutation group To: Anvita Dear Anvita, This is definitely a bug in the documentation. WreathProduct() of permutation groups constructs the wreath product with the permutation group G, acting on [1..LargestMovedPoint(G)]. There has been some talk on extending / generalizing the construction of WreathProduct; however, I'm sure that in this precise case the documentation, and not the code, will be changed. Best wishes, Laurent On 9/18/07, Anvita wrote: > Dear Forum, > > The manual says that the function > > WreathProduct( G, P ) > > constructs the wreath product of the group G with > the permutation group P (acting on its MovedPoints). > Presumably, this means that the resulting group > should have size > > |G|^n * |P|, > > where n = Size(MovedPoints(P)). > However, this is not so in the case where P is a > "sparse" permutation group. For example: > > -------------------------------------- > gap> R:=Group((1,3,5)); > Group([ (1,3,5) ]) > gap> MovedPoints(R); > [ 1, 3, 5 ] > gap> Size(last); > 3 > gap> WreathProduct(CyclicGroup(5),R); > > gap> 5^3*3; > 375 > gap> 5^5*3; > 9375 > -------------------------------------- > > Is this the expected behavior? > > Thank you, > Anvita > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From judelrio at gmail.com Fri Sep 14 16:07:21 2007 From: judelrio at gmail.com (=?ISO-8859-1?Q?Julio_del_R=EDo?=) Date: Wed Sep 19 10:44:18 2007 Subject: [GAP Forum] problems with gap Message-ID: Good afternoon, I've just installed gap 4 in al Linux red hat cluster, and iv put the gap.shfile generated in the /etc/profile.d. The problem I have now I cant access to the cluster remotely, when I try to access I only am able to reach the gap prompt, including from root user. How can I solve this situation? Thanks a lot and regards. Julio del Rio -- Julio del R?o From sal at cs.st-and.ac.uk Wed Sep 19 11:07:54 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Wed Sep 19 11:08:16 2007 Subject: [GAP Forum] problems with gap In-Reply-To: References: Message-ID: <20070919110754.17b829a3@caolila> Dear Julio, /etc/profile.d is not the right place to put gap.sh. /usr/local/bin/gap would be more typical. To fix your immediate problem, I suggest logging in as root and then doing gap> Exec("mv /etc/profile.d/gap.sh /usr/local/bin/gap"); gap> quit; Then, probably, login should behave normally and `gap' should work as a shell command to run GAP. Steve On Fri, 14 Sep 2007 17:07:21 +0200 "Julio del R?o" wrote: > Good afternoon, > > > > I've just installed gap 4 in al Linux red hat cluster, and iv put the > gap.shfile generated in the /etc/profile.d. > > > > The problem I have now I cant access to the cluster remotely, when I try to > access I only am able to reach the gap prompt, including from root user. > > > > How can I solve this situation? Thanks a lot and regards. > > > > Julio del Rio > > > -- > > Julio del R?o > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From phjelmstad at msn.com Sat Sep 29 22:16:33 2007 From: phjelmstad at msn.com (PAUL HJELMSTAD) Date: Sat Sep 29 22:17:04 2007 Subject: [GAP Forum] Polya Polynomials Message-ID: I would like to be able to list Polya Polynomials in GAP for these group direct products: (among others): C4 X C3 D4 X C3 D4 X S3 C8 X C3 D8 X S3 etc. I will study the manual and look for the Polya Polynomial function. Would something like D4 X S3 also have a character table available? If it gave generators, that would be nice too. PGH From neunhoef at mcs.st-and.ac.uk Mon Oct 8 16:56:54 2007 From: neunhoef at mcs.st-and.ac.uk (Max Neunhoeffer) Date: Mon Oct 8 16:57:28 2007 Subject: [GAP Forum] Announcement of the update to GAP 4.4.10 Message-ID: <20071008155654.GA28730@mcs.st-and.ac.uk> Dear GAP Forum, We are delighted to announce the release of GAP 4 release 4 update 10 (GAP 4.4.10 for short), which is available now from the GAP Web pages and FTP site. The priority of this upgrade is high, since it contains among other things fixes for bugs which can return wrong results without warning. All users should update to this release as soon as possible. The upgrade also adds some new functionality and cleans up a lot of minor issues. For example, dynamically loaded modules now work on Mac OS X. As a consequence, this allows to work with the Browse, EDIM and IO packages on Mac OS X. The full details of the update can be found on the web pages at http://www.gap-system.org/Download/Updates/gap4r4p10.html. You can download and install the new version as usual from http://www.gap-system.org/Download/index.html Note that also the combined archive of all packages has been updated last week. Alexander Konovalov, John McDermott and Max Neunhoeffer for the GAP Group. From alexander.konovalov at gmail.com Mon Oct 8 17:03:09 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Mon Oct 8 17:05:15 2007 Subject: [GAP Forum] Experimental GAP Installer for Windows: update for GAP 4.4.10 Message-ID: <544D847C-6820-4C38-9DB5-7F35A76B0D69@gmail.com> Dear GAP Forum, following the announcement of GAP 4.4.10, let me note that the Experimental GAP Installer for Windows was also updated. You can find instructions and downloads on the following pages: http://ukrgap.exponenta.ru/wininst/wininst.htm (English version) http://ukrgap.exponenta.ru/wininst/wininstr.htm (Russian version) For those who already used this installer for GAP 4.4.6-4.4.9 installation, the update fix4r4p10.exe is also available. The packages archive in exe-format was also updated last week. Best wishes, Alexander Konovalov From frank.luebeck at math.rwth-aachen.de Mon Oct 8 17:06:51 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Mon Oct 8 17:07:59 2007 Subject: [GAP Forum] GAP on Linux via rsync Message-ID: <20071008160651.GA9377@beteigeuze> Dear Forum, This is an announcement for users who use GAP on Linux machines, and (may want to) use the binary distribution available at: (*) http://www.math.rwth-aachen.de:8001/RsyncLinuxGAP/ Starting with GAP 4.4.10-which is announced today-this distribution is extended to provide both, 32-bit and 64-bit executables for PCs with a Linux operating system. Of course, the 64-bit GAP can only be used on newer machines with a 64-bit version of Linux. This includes installations of all packages, as far as possible. The webpage (*) contains some hints about when it is sensible to use the 64-bit version (see close to the bottom). New users of this distribution just choose a path for the installation and issue two commands as explained on the webpage (*). Afterwards upgrades are by one simple command. To previous users of the distribution I suggest to upgrade their 'gapsync' script to be able to use the new features. One easy way to do this is to follow the instructions of the initial installation: Just tell the newly downloaded 'gapsync' the same two paths as in the initial installation. When you are asked if existing scripts should be deleted answer 'y' and start the download. Thats it. Comments are welcome. Have fun and success using GAP, best regards, Frank L?beck -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From justin at mac.com Mon Oct 8 18:00:16 2007 From: justin at mac.com (Justin C. Walker) Date: Mon Oct 8 18:00:52 2007 Subject: [GAP Forum] Announcement of the update to GAP 4.4.10 In-Reply-To: <20071008155654.GA28730@mcs.st-and.ac.uk> References: <20071008155654.GA28730@mcs.st-and.ac.uk> Message-ID: <7A39CA98-941C-4D05-AB4C-0D92FF792306@mac.com> Dear Max and GAP Forum, On Oct 8, 2007, at 8:56 AM, Max Neunhoeffer wrote: > We are delighted to announce the release of GAP 4 release > 4 update 10 (GAP 4.4.10 for short), which is available now > from the GAP Web pages and FTP site. The priority of this > upgrade is high, since it contains among other things fixes > for bugs which can return wrong results without warning. All > users should update to this release as soon as possible. Thanks for the hard work you and the GAP team have put into GAP, and in particular, for the effort to support Mac OS X. I have a question about the information on this page: Is it the case that "MacOS" refers only to versions of Mac OS preceding Mac OS X? Also, it is stated there that only the .zoo archive contains support for "MacOS", but I noticed that at least the .bz2 archive also contains "GAP 4 PPC" (which I assume is a Mac OS 9 binary). Regards, Justin -- Justin C. Walker, Curmudgeon-At-Large Director Institute for the Enhancement of the Director's Income -------- "Weaseling out of things is what separates us from the animals. Well, except the weasel." - Homer J Simpson -------- From akos at math.ohio-state.edu Mon Oct 8 19:59:45 2007 From: akos at math.ohio-state.edu (Akos Seress) Date: Mon Oct 8 20:00:07 2007 Subject: [GAP Forum] conference on groups and computation Message-ID: Dear Forum Members: A conference on Groups and Computation will be held at The Ohio State University, in Columbus, Ohio, between March 17--21, 2008. The talks will cover many areas of computational group theory and representation theory, as well as exploring applications in group theory, combinatorics, and geometry. Some of the confirmed participants are Henrik Baarnhielm, Alexander Borovik, Peter Brooksbank, John Cannon, Jon Carlson, Bettina Eick, Gerhard Hiss, Derek Holt, Charles Leedham-Green, Steve Linton, Frank Lubeck, Gunter Malle, Scott Murray, Max Neunhoeffer, Eamonn O'Brien, Tim Penttila, Cheryl Praeger, Alexander Ryba, Colva Roney-Dougal, James Wilson. We have some funds for travel support. Students and postdocs in need of travel assistance should contact the organizers: William Kantor kantor@math.uoregon.edu Akos Seress akos@math.ohio-state.edu Further information, as becomes available, will be posted on the conference website: http://www.uoregon.edu/~kantor/conference.html From neunhoef at mcs.st-and.ac.uk Mon Oct 8 22:03:16 2007 From: neunhoef at mcs.st-and.ac.uk (Max Neunhoeffer) Date: Mon Oct 8 22:03:39 2007 Subject: [GAP Forum] Announcement of the update to GAP 4.4.10 In-Reply-To: <7A39CA98-941C-4D05-AB4C-0D92FF792306@mac.com> References: <20071008155654.GA28730@mcs.st-and.ac.uk> <7A39CA98-941C-4D05-AB4C-0D92FF792306@mac.com> Message-ID: <20071008210316.GA31561@mcs.st-and.ac.uk> Dear Justin and GAP Forum, On Mon, Oct 08, 2007 at 10:00:16AM -0700, Justin C. Walker wrote: > Dear Max and GAP Forum, > > On Oct 8, 2007, at 8:56 AM, Max Neunhoeffer wrote: > > >We are delighted to announce the release of GAP 4 release > >4 update 10 (GAP 4.4.10 for short), which is available now > >from the GAP Web pages and FTP site. The priority of this > >upgrade is high, since it contains among other things fixes > >for bugs which can return wrong results without warning. All > >users should update to this release as soon as possible. > > Thanks for the hard work you and the GAP team have put into GAP, and > in particular, for the effort to support Mac OS X. > > I have a question about the information on this page: > > > Is it the case that "MacOS" refers only to versions of Mac OS > preceding Mac OS X? Also, it is stated there that only the .zoo Yes this was meant. > archive contains support for "MacOS", but I noticed that at least > the .bz2 archive also contains "GAP 4 PPC" (which I assume is a Mac > OS 9 binary). We chose to put the Mac OS 9 binary into all versions of the archives from 4.4.10 on since it might be interesting for some users to use other archives than the .zoo archives on Mac OS 9. We simply forgot to remove the note on the web page, which I did just now. Thanks for the hint, Max. > > Regards, > > Justin > > -- > Justin C. Walker, Curmudgeon-At-Large > Director > Institute for the Enhancement of the Director's Income > -------- > "Weaseling out of things is what separates us from the animals. > Well, except the weasel." > - Homer J Simpson > -------- > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From neunhoef at mcs.st-and.ac.uk Mon Oct 8 23:14:56 2007 From: neunhoef at mcs.st-and.ac.uk (Max Neunhoeffer) Date: Mon Oct 8 23:15:03 2007 Subject: [GAP Forum] Windows binaries for dynamic loading of modules Message-ID: <20071008221456.GA32216@mcs.st-and.ac.uk> Dear Forum, I have set up a web page from which one can download new experimental Windows binaries for GAP 4.4.10. Download and installation instructions are at http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/winbinary.html With these binaries it is possible to dynamically load compiled modules into the GAP kernel also under Windows. In this way, the GAP packages Browse, EDIM and IO work under Windows. Compiled modules for these packages in their current versions are included in the above binary archive. As mentioned above this is all still experimental. I would welcome any feedback about how it works. Best regards, Max. From r_adhamy at yahoo.com Tue Oct 9 13:23:53 2007 From: r_adhamy at yahoo.com (Roghiyeh Adhamy) Date: Tue Oct 9 14:45:45 2007 Subject: [GAP Forum] asking about GAP Message-ID: <213062.32654.qm@web51401.mail.re2.yahoo.com> Dear GAP Forum, I am working with GAP and for obtaining all finite groups of order 32 as permutation groups (not pc groups) I need details of programing. Is it possible for you to send me the details of the program that will help me? Best Regards, S. R. Adhamy --------------------------------- Pinpoint customers who are looking for what you sell. From rm43 at evansville.edu Tue Oct 9 15:02:04 2007 From: rm43 at evansville.edu (Robert Morse) Date: Tue Oct 9 15:02:49 2007 Subject: [GAP Forum] asking about GAP In-Reply-To: <213062.32654.qm@web51401.mail.re2.yahoo.com> References: <213062.32654.qm@web51401.mail.re2.yahoo.com> Message-ID: <1ff1501f0710090702x44ece4d4teb68bedd1118d7ed@mail.gmail.com> Dear Adhamy, A simple method is the following: gap> gps32 := AllGroups(Size,32);; gap> gps32p := List(gps32, x->Image(IsomorphismPermGroup(x))); Regards, Robert F. Morse On 10/9/07, Roghiyeh Adhamy wrote: > Dear GAP Forum, > I am working with GAP and for obtaining all finite groups of order 32 as permutation groups (not pc groups) I need details of programing. > Is it possible for you to send me the details of the program that will help me? > Best Regards, > S. R. Adhamy > > > --------------------------------- > Pinpoint customers who are looking for what you sell. > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From aodabas at ogu.edu.tr Wed Oct 10 10:08:34 2007 From: aodabas at ogu.edu.tr (=?iso-8859-9?Q?Alper_Odaba=FE?=) Date: Wed Oct 10 10:09:33 2007 Subject: [GAP Forum] bug with group ring Message-ID: <005501c80b1d$22babe40$a3838cc1@ogu229> Hi all If H is a subgroup of G, then R[H] is a subring of R[G]. Similarly, if S is a subring of R, S[G] is a subring of R[G]. for exapmle; let R=Z_2 , G=C_3={e,g,g^2} and H={e} . A=Z_2C_3 = {0,1,g,g^2,g+g^2,1+g,1+g^2,1+g+g^2} and B=Z_2H={0,1} then B is a subring A. but in GAP gap> G:=Group((1,2,3));; gap> H:=Subgroup(C,[()]);; gap> IsSubgroup(G,H); true gap> A:=GroupRing(GF(2),G);; gap> B:=GroupRing(GF(2),H);; gap> Elements(A); [ of ..., (Z(2)^0)*(), (Z(2)^0)*()+(Z(2)^0)*(1,2,3), (Z(2)^0)*()+(Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2), (Z(2)^0)*()+(Z(2)^0)*(1,3,2), (Z(2)^0)*(1,2,3), (Z(2)^0)*(1,2,3)+(Z(2)^0)*(1,3,2), (Z(2)^0)*(1,3,2) ] gap> Elements(B); [ of ..., (Z(2)^0)*() ] gap> IsSubset(A,B); false gap> IsIdeal(A,B); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IsTwoSidedIdealOp' on 2 arguments calle\ d from oper( super, sub ) called from ( ) called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> From alexander.konovalov at gmail.com Wed Oct 10 16:27:58 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Wed Oct 10 16:28:33 2007 Subject: [GAP Forum] Windows binaries for dynamic loading of modules In-Reply-To: <20071008221456.GA32216@mcs.st-and.ac.uk> References: <20071008221456.GA32216@mcs.st-and.ac.uk> Message-ID: <4F44FFEC-3367-4FDF-B847-3609389A03A1@gmail.com> Dear Forum, following the announcement of new experimental Windows binaries for GAP 4.4.10 with the support of dynamically loaded modules and, as a consequence, availability of packages Browse, Edim and IO under Windows, I am happy to announce the corresponding Windows installer: ftp://ftp.gap-system.org/pub/gap/windowsinstaller/ winbin4r4p10ED123IO23BR11.exe that may be used if the previous GAP installation was made using the Experimental GAP Installer for Windows (http://ukrgap.exponenta.ru/wininst/ wininst.htm). Please note that this is experimental work, and it is advised to study the description at http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/ winbinary.html before any installation. Any feedback will be welcomed. Best wishes, Alexander On 8 Oct 2007, at 23:14, Max Neunhoeffer wrote: > Dear Forum, > > I have set up a web page from which one can download new > experimental Windows binaries for GAP 4.4.10. Download and > installation instructions are at > > http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/ > winbinary.html > > With these binaries it is possible to dynamically load > compiled modules into the GAP kernel also under Windows. > In this way, the GAP packages Browse, EDIM and IO work > under Windows. Compiled modules for these packages in their > current versions are included in the above binary archive. > > As mentioned above this is all still experimental. I would > welcome any feedback about how it works. > > Best regards, > Max. From hulpke at math.colostate.edu Wed Oct 10 17:17:32 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Wed Oct 10 17:18:59 2007 Subject: [GAP Forum] wreath product with a sparse permutation group In-Reply-To: <6a52effd0709180632q39aeacb9paf95e2fd71a58dbb@mail.gmail.com> References: <6a52effd0709180632q39aeacb9paf95e2fd71a58dbb@mail.gmail.com> Message-ID: <97D1256A-2C37-40AE-AA16-EF9CD328EC5D@math.colostate.edu> Dear Forum, On Sep 18, 2007, at 9/18/07 7:32, Anvita wrote: > WreathProduct( G, P ) > constructs the wreath product of the group G with the permutation > group P (acting on its MovedPoints). Presumably, this means that > the resulting group should have size |G|^n * |P|, where n = Size > (MovedPoints(P)). However, this is not so in the case where P is a > "sparse" permutation group. Indeed this is a bug and will be corrected in a future release. Thank you for reporting it! We will also clarify the manual about how the case of a ``sparse'' P is to be interpreted. Best regards, Alexander Hulpke From amukti2000 at yahoo.com Sun Oct 14 14:38:49 2007 From: amukti2000 at yahoo.com (arun muktibodh) Date: Sun Oct 14 14:39:32 2007 Subject: [GAP Forum] query Message-ID: <888102.45188.qm@web53009.mail.re2.yahoo.com> Dear sir, I am new to GAP. I have GAP4 installed on my pc (Windows). Could anybody please suggest how to create, save and reload a file ? Arun India Mr. Arun Muktibodh ____________________________________________________________________________________ Yahoo! oneSearch: Finally, mobile search that gives answers, not web links. http://mobile.yahoo.com/mobileweb/onesearch?refer=1ONXIC From justin at mac.com Sun Oct 14 20:27:07 2007 From: justin at mac.com (Justin C. Walker) Date: Sun Oct 14 20:28:07 2007 Subject: [GAP Forum] query In-Reply-To: <888102.45188.qm@web53009.mail.re2.yahoo.com> References: <888102.45188.qm@web53009.mail.re2.yahoo.com> Message-ID: Dear Arun and Forum, On Oct 14, 2007, at 6:38 AM, arun muktibodh wrote: > Dear sir, > I am new to GAP. I have GAP4 installed on > my pc (Windows). Could anybody please suggest how to > create, save and reload a file ? The documentation for GAP4 does cover this question, although it might not be easy to locate if you haven't had any experience with GAP before. See the discussion of File Streams (section 10) and the discussion of Files (section 9) in the reference manual. This is available in the 'doc' directory of your installation or on-line at the GAP website: If this does not fully answer your question, please post again. Regards, Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Enhancement of the Director's Income -------- Experience is what you get when you don't get what you want. -------- From justin at mac.com Mon Oct 15 17:59:18 2007 From: justin at mac.com (Justin C. Walker) Date: Mon Oct 15 18:00:02 2007 Subject: [GAP Forum] query In-Reply-To: <888102.45188.qm@web53009.mail.re2.yahoo.com> References: <888102.45188.qm@web53009.mail.re2.yahoo.com> Message-ID: <0603AEC1-93E5-41E0-8B5E-A44FC5C62FBC@mac.com> Dear Forum, On Oct 14, 2007, at 6:38 AM, arun muktibodh wrote: > I am new to GAP. I have GAP4 installed on > my pc (Windows). Could anybody please suggest how to > create, save and reload a file ? After answering Arun's query, I started poking around in the documentation, and ran across a minor doc glitch, viz: Section 9.7 (on-line and my 4.4.10 version) gives an example of the use of ReadAsFunction() that does not match its current behavior. Given the file /tmp/Foo.g, containing code, the call as documented in this section appears to execute the code directly, while in fact, the call causes the code in the file to be "wrapped", as if declared something like F := function() ... # lines from the file end;; The example should then be something like ========================================== gap> a := 1; 1 gap> F1:=ReadAsFunction("/tmp/example.g"); function( ) ... end gap> F1(); 100 gap> a; 1 ========================================== In addition, it's not clear from the description that you need to treat ReadAsFunction() as a function (that returns a function body (with no formal arguments)). Unless, of course, I've missed something along the way, in which case, please correct my misstatements. Regards, Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Enhancement of the Director's Income -------- Experience is what you get when you don't get what you want. -------- From soicram at icmc.usp.br Tue Oct 16 19:07:38 2007 From: soicram at icmc.usp.br (=?iso-8859-1?Q?M=E1rcio_de_Jesus_Soares?=) Date: Tue Oct 16 19:08:54 2007 Subject: [GAP Forum] Conjugacy classes in SL(3,p) Message-ID: <65235.201.95.73.152.1192558058.squirrel@mail2.icmc.usp.br> Hi, I'm in first pages of GAP Manual and I need to know how do to discovery the number of p-Sylow Subgroups of SpecialLinearGroup(3,p). Indeed, I need to know how many conjugacy classes to the groups of order p. Thanks for your attention M?rcio J. Soares ---------------------------- S?o Carlos/ SP Tel.(16) 3371-8045 ---------------------------- From wdjoyner at gmail.com Mon Oct 22 18:45:25 2007 From: wdjoyner at gmail.com (David Joyner) Date: Mon Oct 22 18:46:15 2007 Subject: [GAP Forum] new GAP package: cubefree Message-ID: <8cf963450710221045h7300a67p9af45291889ea4b2@mail.gmail.com> Hello all: This is to announce that Heiko Dietrich's package cubefree http://www.gap-system.org/Packages/cubefree.html has been accepted as an official GAP package. The Cubefree package contains methods to construct up to isomorphism the groups of a given (reasonable) cubefree order. Cubefree is, like GAP, released under the GPL. Though the GAP packages webpage http://www.gap-system.org/Packages/packages.html now indicates that cubefree is accepted, please be patient while we update the changes to the cubefree webpage itself. Congratulations to Heiko Dietrich, and many thanks to the anonymous referee. - David Joyner (cubefree editor and GAP Council member) From amukti2000 at yahoo.com Tue Oct 23 11:47:17 2007 From: amukti2000 at yahoo.com (arun muktibodh) Date: Tue Oct 23 11:48:01 2007 Subject: [GAP Forum] query Message-ID: <754814.10877.qm@web53009.mail.re2.yahoo.com> Dear sirs, I am A.S.Muktibodh from India, Nagpur (Maharashtra). I would like to know the members in India who are Working with GAP. Regards Arun India Mr. Arun Muktibodh __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From savchuk at math.tamu.edu Thu Oct 25 05:33:28 2007 From: savchuk at math.tamu.edu (Dmytro Savchuk) Date: Thu Oct 25 05:34:03 2007 Subject: [GAP Forum] Announcement: new package AutomGrp Message-ID: <173517315850.20071024233328@math.tamu.edu> Dear Forum, We are glad to announce the first release of the new package AutomGrp V 1.0. It provides methods for computations with groups and semigroups generated by finite automata or given by wreath recursion, as well as with their finitely generated subgroups and elements. The package and documentation is available at http://finautom.sourceforge.net/ If you have any problems with installation, please let us know. Note, that it depends on FGA package. In general, any feedback is more than welcome. Best Wishes! Dmytro From beick at tu-bs.de Fri Oct 26 12:15:01 2007 From: beick at tu-bs.de (Bettina Eick) Date: Fri Oct 26 12:15:48 2007 Subject: [GAP Forum] The LiealgDB Package Message-ID: Dear GAP Forum, it is my pleasure to announce that the GAP package 'LieAlgDB' by Willem de Graaf and Csaba Schneider has been accepted as an official GAP package. The package provides access to some classifications of small-dimensional Lie algebras including: * the non-solvable Lie algebras over finite fields up to dimension 6; * the nilpotent Lie algebras of dimension up to 9 over GF(2) and of dimension up to 7 over GF(3) or GF(5); * the simple Lie algebras of dimensions between 7 and 9 over GF(2); * the solvable Lie algebras of dimension at most 4; * the nilpotent Lie algebras of dimensions at most 5 and of dimension 6 over fields of odd characteristic. The package is written in GAP code and is available from the GAP web pages. Best wishes, Bettina From pmanol1 at uic.edu Sat Oct 27 21:51:22 2007 From: pmanol1 at uic.edu (peter manolov) Date: Sat Oct 27 21:51:43 2007 Subject: [GAP Forum] GAP and SL(4,3) Message-ID: <2210.68.72.130.90.1193518282.squirrel@webmail.uic.edu> Hi, Can I use GAP to find the character table of SL(4,3) ? (Special linear group of 4x4 matrices of determinant 1 over field with 3 elements) I'm particularly interested in the cuspidal characters of SL(4,3). I've never used GAP before. If it is possible to find that character table, how do I start? Petar Manolov PhD student UIC From dima at ntu.edu.sg Sun Oct 28 01:14:06 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Sun Oct 28 01:14:40 2007 Subject: [GAP Forum] GAP and SL(4,3) In-Reply-To: <2210.68.72.130.90.1193518282.squirrel@webmail.uic.edu> Message-ID: Dear Petar, This table (for SL(4,3)) is in the GAP's library of character tables, so it doesn't need to be computed. Just do t:= CharacterTable("2.L4(3)"); then you can do many things: e.g. just display the table: Display(t) Read the manual etc for more... By the way, CharacterTable("L4(3)") gives the table for PSL(4,3). HTH, Dmitrii On 10/28/07 4:51 AM, "peter manolov" wrote: > Hi, > Can I use GAP to find the character table of SL(4,3) ? (Special linear > group of 4x4 matrices of determinant 1 over field with 3 elements) > > I'm particularly interested in the cuspidal characters of SL(4,3). I've > never used GAP before. If it is possible to find that character table, how > do I start? > > Petar Manolov > PhD student > UICt > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From r_adhamy at yahoo.com Sun Oct 28 05:58:45 2007 From: r_adhamy at yahoo.com (Roghiyeh Adhamy) Date: Sun Oct 28 05:59:24 2007 Subject: [GAP Forum] asking about gap Message-ID: <256842.33744.qm@web51410.mail.re2.yahoo.com> Dear GAP Forum, Thank you for your response, but I would like the structure of the following Groups: G1=SmallGroup(32,6) with the minimal generating set { (1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20, 27)(21,29)(22,30)(23,32)(24,31), (1,17,3,19)(2,18,4,20)(5,22,7,24)(6,21,8,23)(9,29,11,31)(10,30,12,32)(13,26,15,28)(14,25,16,27)} G2=SmallGroup(32,7) with the minimal generating set {(1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20,27)(21,29)(22,30)(23,32)(24,31), (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,26,15,28,14,25,16,27) } G3=SmallGroup(32,8) with the minimal generating set {(1,9,2,10)(3,12,4,11)(5,13,6,14)(7,16,8,15)(17,25,18,26)(19,28,20,27)(21,29,22,30)(23,32,24,31), (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,26,15,28,14,25,16,27) } G4=SmallGroup(32,11) with the minimal generating set {(1,9)(2,10)(3,11)(4,12)(5,14)(6,13)(7,16)(8,15)(17,25)(18,26)(19,27)(20,28)(21,30)(22,29)(23,32)(24,31), (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,25,15,27,14,26,16,28) } G5=SmallGroup(32,27) with the minimal generating set {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)(17,25)(18,26)(19,27)(20,28)(21,29)(22,30)(23,31)(24,32), (1,17)(2,18)(3,19)(4,20)(5,22)(6,21)(7,24)(8,23)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } G6=SmallGroup(32,34) with the minimal generating set {(1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), (1,9,3,11)(2,10,4,12)(5,13,7,15)(6,14,8,16)(17,25,19, 27)(18,26,20,28)(21,29,23,31)(22,30,24,32), (1,17)(2,18)(3,19)(4,20)(5,22)(6,21)(7,24)(8,23)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } G7=SmallGroup(32,35) with the minimal generating set {(1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), (1,9,3,11)(2,10,4,12)(5,13,7,15)(6,14,8,16)(17,25,19,27)(18,26,20,28)(21,29,23,31)(22,30,24,32), (1,17,3,19)(2,18,4,20)(5,22,7,24)(6,21,8,23)(9,27,11,25)(10,28,12,26)(13,32,15,30)(14,31,16,29) } G8=SmallGroup(32,43) with the minimal generating set {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), (1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20,27)(21,29)(22,30)(23,32)(24,31), (1,17)(2,18)(3,20)(4,19)(5,22)(6,21)(7,23)(8,24)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } G9=SmallGroup(32,44) with the minimal generating set {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), (1,9,2,10)(3,12,4,11)(5,13,6,14)(7,16,8,15)(17,25,18,26)(19,28,20,27)(21,29,22,30)(23,32,24,31), (1,17)(2,18)(3,20)(4,19)(5,22)(6,21)(7,23)(8,24)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29)} G10=SmallGroup(32,49) with the minimal generating set { (1,3)(2,4)(5,7)(6,8)(9,11)(10,12)(13,15)(14,16)(17,19)(18,20)(21,23)(22,24)(25,27)(26,28)(29,31)(30,32), (1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), (1,9)(2,10)(3,11)(4,12)(5,14)(6,13)(7,16)(8,15)(17,25)(18,26)(19,27)(20, 28)(21,30)(22,29)(23,32)(24,31), (1,17)(2,18)(3,20)(4,19)(5,21)(6,22)(7, 24)(8,23)(9,26)(10,25)(11,27)(12,28)(13,30)(14,29)(15,31)(16,32) } G11=SmallGroup(32,50) with the minimal generating set {(1,3)(2,4)(5,7)(6,8)(9,11)(10,12)(13,15)(14,16)(17,19)(18,20)(21,23)(22, 24)(25,27)(26,28)(29,31)(30,32), (1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), (1,9,2,10)(3,11,4,12)(5,14,6,13)(7,16,8,15)(17,25,18,26)(19,27,20,28)(21,30,22,29)(23,32,24,31), (1,17)(2,18)(3,20)(4,19)(5,21)(6,22)(7,24)(8,23)(9,26)(10,25)(11,27)(12,28)(13,30)(14,29)(15,31)(16,32) } In fact I would like to know what is the isomorphism of Gi with the well-known groups (for example symmetric groups,dihedral groups,...) I am looking forward to hearing from you. With Best Regards, S. R. Adhamy __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From mschaps at macs.biu.ac.il Sun Oct 28 09:22:18 2007 From: mschaps at macs.biu.ac.il (Malka Schaps) Date: Sun Oct 28 09:22:57 2007 Subject: [GAP Forum] asking about gap In-Reply-To: <256842.33744.qm@web51410.mail.re2.yahoo.com> References: <256842.33744.qm@web51410.mail.re2.yahoo.com> Message-ID: Dear Roghiyeh, A lot of the information you want is probably on my Database of groups up to order 100 at http:\\www.cs.biu.ac.il\~mschaps\math.html In particular, the dihedral, semidihedral, and generalized quaternion groups are identified, some sort of description by extensions is given, and user friendly relations with a normal series (plus character table, block decomposition, ect.) Unfortunately, this database was created a long time ago in GAP3, and so uses the old numbering of the solvable groups. However, there is a an easy way to get the old number >gr := SmallGroup([32,6]); >Gap3CatalogueIdGroup(gr); [ 32 , 46 ] I seem to remember that there is a function going the other way, but I don't find it in the online GAP4 manual. Sincerely, Mary Schaps On Sat, 27 Oct 2007, Roghiyeh Adhamy wrote: > Dear GAP Forum, > Thank you for your response, but I would like the structure of the following Groups: > > G1=SmallGroup(32,6) > with the minimal generating set > { (1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20, 27)(21,29)(22,30)(23,32)(24,31), > (1,17,3,19)(2,18,4,20)(5,22,7,24)(6,21,8,23)(9,29,11,31)(10,30,12,32)(13,26,15,28)(14,25,16,27)} > > G2=SmallGroup(32,7) > with the minimal generating set > {(1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20,27)(21,29)(22,30)(23,32)(24,31), > (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,26,15,28,14,25,16,27) } > > G3=SmallGroup(32,8) > with the minimal generating set > {(1,9,2,10)(3,12,4,11)(5,13,6,14)(7,16,8,15)(17,25,18,26)(19,28,20,27)(21,29,22,30)(23,32,24,31), > (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,26,15,28,14,25,16,27) } > > G4=SmallGroup(32,11) > with the minimal generating set > {(1,9)(2,10)(3,11)(4,12)(5,14)(6,13)(7,16)(8,15)(17,25)(18,26)(19,27)(20,28)(21,30)(22,29)(23,32)(24,31), > (1,17,3,19,2,18,4,20)(5,22,7,24,6,21,8,23)(9,29,11,31,10,30,12,32)(13,25,15,27,14,26,16,28) } > > G5=SmallGroup(32,27) > with the minimal generating set > {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), > (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)(17,25)(18,26)(19,27)(20,28)(21,29)(22,30)(23,31)(24,32), > (1,17)(2,18)(3,19)(4,20)(5,22)(6,21)(7,24)(8,23)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } > > G6=SmallGroup(32,34) > with the minimal generating set > {(1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), > (1,9,3,11)(2,10,4,12)(5,13,7,15)(6,14,8,16)(17,25,19, 27)(18,26,20,28)(21,29,23,31)(22,30,24,32), > (1,17)(2,18)(3,19)(4,20)(5,22)(6,21)(7,24)(8,23)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } > > G7=SmallGroup(32,35) > with the minimal generating set > {(1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), > (1,9,3,11)(2,10,4,12)(5,13,7,15)(6,14,8,16)(17,25,19,27)(18,26,20,28)(21,29,23,31)(22,30,24,32), > (1,17,3,19)(2,18,4,20)(5,22,7,24)(6,21,8,23)(9,27,11,25)(10,28,12,26)(13,32,15,30)(14,31,16,29) } > > G8=SmallGroup(32,43) > with the minimal generating set > {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), > (1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20,27)(21,29)(22,30)(23,32)(24,31), > (1,17)(2,18)(3,20)(4,19)(5,22)(6,21)(7,23)(8,24)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29) } > > G9=SmallGroup(32,44) > with the minimal generating set > {(1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), > (1,9,2,10)(3,12,4,11)(5,13,6,14)(7,16,8,15)(17,25,18,26)(19,28,20,27)(21,29,22,30)(23,32,24,31), > (1,17)(2,18)(3,20)(4,19)(5,22)(6,21)(7,23)(8,24)(9,27)(10,28)(11,25)(12,26)(13,32)(14,31)(15,30)(16,29)} > > G10=SmallGroup(32,49) > with the minimal generating set > { (1,3)(2,4)(5,7)(6,8)(9,11)(10,12)(13,15)(14,16)(17,19)(18,20)(21,23)(22,24)(25,27)(26,28)(29,31)(30,32), > (1,5)(2,6)(3,7)(4,8)(9,13)(10,14)(11,15)(12,16)(17,21)(18,22)(19,23)(20,24)(25,29)(26,30)(27,31)(28,32), > (1,9)(2,10)(3,11)(4,12)(5,14)(6,13)(7,16)(8,15)(17,25)(18,26)(19,27)(20, 28)(21,30)(22,29)(23,32)(24,31), > (1,17)(2,18)(3,20)(4,19)(5,21)(6,22)(7, 24)(8,23)(9,26)(10,25)(11,27)(12,28)(13,30)(14,29)(15,31)(16,32) } > > G11=SmallGroup(32,50) > with the minimal generating set > {(1,3)(2,4)(5,7)(6,8)(9,11)(10,12)(13,15)(14,16)(17,19)(18,20)(21,23)(22, 24)(25,27)(26,28)(29,31)(30,32), > (1,5,2,6)(3,7,4,8)(9,13,10,14)(11,15,12,16)(17,21,18,22)(19,23,20,24)(25,29,26,30)(27,31,28,32), > (1,9,2,10)(3,11,4,12)(5,14,6,13)(7,16,8,15)(17,25,18,26)(19,27,20,28)(21,30,22,29)(23,32,24,31), > (1,17)(2,18)(3,20)(4,19)(5,21)(6,22)(7,24)(8,23)(9,26)(10,25)(11,27)(12,28)(13,30)(14,29)(15,31)(16,32) } > > In fact I would like to know what is the isomorphism of Gi with the well-known groups (for example symmetric groups,dihedral groups,...) > > I am looking forward to hearing from you. > With Best Regards, > S. R. Adhamy > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From dima at ntu.edu.sg Sun Oct 28 10:33:05 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Sun Oct 28 10:33:37 2007 Subject: [GAP Forum] asking about gap In-Reply-To: <256842.33744.qm@web51410.mail.re2.yahoo.com> Message-ID: Dear Roghiyeh Adhamy, first of all, let me point out that it is entirely unnecessary to send to the forum the generating sets of these groups, as they are uniquely determined by their order (32) and their numbers in the GAP library of small groups. On 10/28/07 1:58 PM, "Roghiyeh Adhamy" wrote: > Thank you for your response, but I would like the structure of the following > Groups: > > G1=SmallGroup(32,6) [...] > > In fact I would like to know what is the isomorphism of Gi with the > well-known groups (for example symmetric groups,dihedral groups,...) well, there are e.g. GAP commands, IsDihedralGroup, IsElementaryAbelian, etc, that can answer a part of your question. I would like to point out, too, that there is no symmetric group of order 32... > HTH, -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From laurent.bartholdi at gmail.com Sun Oct 28 13:49:18 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Sun Oct 28 13:56:52 2007 Subject: [GAP Forum] asking about gap In-Reply-To: References: <256842.33744.qm@web51410.mail.re2.yahoo.com> Message-ID: <1ff637850710280649t6dfa21ffh421ab4cffc23b6ea@mail.gmail.com> Dear Roghiyeh Adhamy, There have been quite a few responses to your email, but it seems to me that you could help us in specifying a bit more what you mean by "the structure" of a group. One could understand this as: asking for a presentation; or a decomposition as a direct product; or by extensions; etc. Here's an example: gap> G1:=SmallGroup(32,6); gap> StructureDescription(G1); "((C4 x C2) : C2) : C2" which describes G1 by extensions. You may check that the generating set you give does generate G1: gap> IsomorphismGroups(G1,Group((1,9)(2,10)(3,12)(4,11)(5,13)(6,14)(7,16)(8,15)(17,25)(18,26)(19,28)(20,27)(21,29)(22,30)(23,32)(24,31),(1,17,3,19)(2,18,4,20)(5,22,7,24)(6,21,8,23)(9,29,11,31)(10,30,12,32)(13,26,15,28)(14,25,16,27))); [ f1, f2, f3, f4, f5 ] -> [ (1,32,7,26)(2,31,8,25)(3,29,5,27)(4,30,6,28)(9,20,15,22)(10,19,16,21)(11,17,13, 23)(12,18,14,24), (1,10)(2,9)(3,11)(4,12)(5,14)(6,13)(7,15)(8,16)(17,26)(18,25)(19,27)(20,28)(21,30)(22, 29)(23,31)(24,32), (1,6)(2,5)(3,8)(4,7)(9,14)(10,13)(11,16)(12,15)(17,22)(18,21)(19,24)(20,23)(25, 30)(26,29)(27,32)(28,31), (1,7)(2,8)(3,5)(4,6)(9,15)(10,16)(11,13)(12,14)(17,23)(18,24)(19,21)(20, 22)(25,31)(26,32)(27,29)(28,30), (1,2)(3,4)(5,6)(7,8)(9,10)(11,12)(13,14)(15,16)(17,18)(19,20)(21, 22)(23,24)(25,26)(27,28)(29,30)(31,32) ] It's also easy to ask GAP to give you relators for the given presentation. -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From jao204 at gmail.com Mon Oct 29 20:36:13 2007 From: jao204 at gmail.com (jim ostrowski) Date: Mon Oct 29 20:36:36 2007 Subject: [GAP Forum] Question regarding testing lex min representatives of orbits Message-ID: <6044d10f0710291336k5cb05626m9c71f158fa4b710e@mail.gmail.com> Hello, I am a graduate student in Industrial Engineering and I trying to learn how to use GAP. I am still trying to improve my computational algebra, so please excuse any misuses of notation. I am trying to solve Integer programs of the form min e^t x s.t. Ax \geq e, x in {0, 1}. The matrix A has a lot of symmetry (permutations of the columns s.t. there exists a permutation of the rows which send A to A). I am trying to solve this problem by branch and bound. At each node in the enumeration tree I have a set of variables, F, fixed to 1. I need to check if there exists a set F' in the orbit of F (w.r.t. a given symmetry group) which is lexicographically smaller than F. For example, I have a group consisting of the permutation (1,2). I need to test if the set (word) {2,3} is a lex min representative of its orbit (which it is not, since {1,3} < {2,3}). Can I do this directly in GAP? I have tried to read through the documentation, and I haven't seen anything that makes me think I can do it. If not, is there any other software available which would do this? Would it be difficult to write code in GAP which would do this? Assuming I am able to do the above, I am next interested in testing for lex min using a rank vector. So, using the above example, if the rank of the element "2" is less than the rank of the element "1", then {2,3} < {1,3}. Thank you for reading my question. I feel bad asking what I am sure is a basic question, but I thought it wouldn't hurt to send this out before I start having to code something from scratch. ~Jim Ostrowski From sal at cs.st-and.ac.uk Tue Oct 30 07:38:30 2007 From: sal at cs.st-and.ac.uk (Steve Linton) Date: Tue Oct 30 07:39:02 2007 Subject: [GAP Forum] Question regarding testing lex min representatives of orbits In-Reply-To: <6044d10f0710291336k5cb05626m9c71f158fa4b710e@mail.gmail.com> References: <6044d10f0710291336k5cb05626m9c71f158fa4b710e@mail.gmail.com> Message-ID: <20071030073830.6c96dd79@cs.st-and.ac.uk> Dear GAP Forum, Jim Ostrowski asked: On Mon, 29 Oct 2007 16:36:13 -0400 "jim ostrowski" wrote: I need to check > if there exists a set F' in the orbit of F (w.r.t. a given symmetry group) > which is lexicographically smaller than F. For example, I have a group > consisting of the permutation (1,2). I need to test if the set (word) {2,3} > is a lex min representative of its orbit (which it is not, since {1,3} < > {2,3}). > > Can I do this directly in GAP? I have tried to read through the > documentation, and I haven't seen anything that makes me think I can do it. > If not, is there any other software available which would do this? Would it > be difficult to write code in GAP which would do this? > There is a function SmallestImageSet in the GRAPE package which could be used for this. That function is based on some code of mine, and if it would be useful I can probably send you a more recent version. In particular, I have versions that test for lex-minimality rather than constructing the lex-minimal element, which can be cheaper. > Assuming I am able to do the above, I am next interested in testing for lex > min using a rank vector. So, using the above example, if the rank of the > element "2" is less than the rank of the element "1", then {2,3} < {1,3}. > I would suggest conjugating your permutation group so as to renumber the points so that the natural order on points corresponds to your "ranks". Then you have reduced the problem to the one avove. > Thank you for reading my question. I feel bad asking what I am sure is a > basic question, but I thought it wouldn't hurt to send this out before I > start having to code something from scratch. No problem. I've been meaning for years to put all my "Smallest Image" code into a proper package, I just haven't got round to it. Steve -- Steve Linton School of Computer Science & Centre for Interdisciplinary Research in Computational Algebra University of St Andrews Tel +44 (1334) 463269 http://www.cs.st-and.ac.uk/~sal Fax +44 (1334) 463278 From mlederer at math.uni-bielefeld.de Tue Oct 30 17:11:52 2007 From: mlederer at math.uni-bielefeld.de (Mathias Lederer) Date: Tue Oct 30 17:12:51 2007 Subject: [GAP Forum] GL(3,3) acting on a tensor product Message-ID: <2D34BDEA-4394-413C-AC75-0610926CFBC8@math.uni-bielefeld.de> Dear GAP forum, I would like to compute the 1st cohomology of the group GL(3,3) acting on the tensor product of the modules M and D, where M and D are the following. * M is the direct sum of 3 copies of GF(3) (on which GL(3,3) acts canonically). * D is the determinant of the 3-times-3-matrices over GL(3,3) (on which GL(3,3) also acts canonically). As I am a novice to computing cohomology with GAP, I would be very happy about a hint if this can be done or not. Best, Mathias From mim_ at op.pl Wed Oct 31 09:07:02 2007 From: mim_ at op.pl (mim_@op.pl) Date: Wed Oct 31 16:14:04 2007 Subject: [GAP Forum] Exceptional compact Lie algebras Message-ID: Hello, I am trying to obtain compact exceptional Lie algebras: e7,e8 in matrix represantation. I have this already created for f4 and e6 as matrices 27*27 real and complex. For e7 it is 56-dimensional, and it is quaternionic, so I would like to have inclusion e7 in sp(28). 28 contains 27 dimensions from h3O and additional dimension for DerH. I have tried Adams way but no luck. I am going to try Freudenthal "Beziehungen..." now. For e8 I have obtained compact version from default e8 GAP algebra by manipulating the basis and multiplying by i=Sqrt(-1). The adjoint representation gives 248*248 matrices. However I have difficulties to find spin(16) there. I can try random subalgebras generated by the 6-10 base elements and see the results. My idea is to look at them as 31*8 matrices, 31=3*8+3+4, so we have 27 dimensions from h3O and additional 4 dimensions for DerO. 1. Do you have any ideas for building matrix representations of compact e7, e8 in dimensions 56,248 respectively ? 2. The root system in GAP is different to the one presented on wikipedia for F4, E6,E7,E8. Is there way to take wikipedia roots and build lie algebra from it ? 3. When I tried to do Derivations from 54 dimensional algebra C*h3O there is out-of-memory error which close the GAP session. Any workaround ? Regards, Marek Mitros From amukti2000 at yahoo.com Wed Oct 31 17:08:27 2007 From: amukti2000 at yahoo.com (arun muktibodh) Date: Wed Oct 31 17:10:06 2007 Subject: [GAP Forum] query Message-ID: <544377.59392.qm@web53007.mail.re2.yahoo.com> Hello, I am still in trouble and cant do the basic things. I have tried all the commands from the manual. I have two basic questions. I am working with GAP installed on my pc with Windows-2000. I am working on RXVT. 1) If I have written a program of say 10 lines and I want to cut the last 5 lines so that I start working again from 5th line. How to do this ? 2) Suppose I save the program with; gap> SaveWorkspace("asm.g"); true gap> quit; I again start a new session with; gap> Read("asm.g"); starts infinite loop with number of errors. Even by putting complete path my file asm.g would not open. I will highly appreciate your help. Arun India Mr. Arun Muktibodh __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com From alexander.konovalov at gmail.com Wed Oct 31 17:45:21 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Wed Oct 31 17:45:58 2007 Subject: [GAP Forum] query In-Reply-To: <544377.59392.qm@web53007.mail.re2.yahoo.com> References: <544377.59392.qm@web53007.mail.re2.yahoo.com> Message-ID: Dear Arun, > I am still in trouble and cant do the basic > things. I have tried all the commands from the manual. > I have two basic questions. > > I am working with GAP installed on my pc with > Windows-2000. I am working on RXVT. Thanks for the relevant details, this helps to answer. > 1) If I have written a program of say 10 lines and I > want to cut the last 5 lines so that I start working > again from 5th line. How to do this ? 1) In your text editor select the text that you would like to paste into RXVT window 2) Press Ctrl-C to copy it to the buffer 3) Click with the mouse on the RXVT window to activate it 4) Press Shift-Ins to insert the text > 2) Suppose I save the program with; > > gap> SaveWorkspace("asm.g"); > true > gap> quit; > > I again start a new session with; > gap> Read("asm.g"); > starts infinite loop with number of errors. > > Even by putting complete path my file asm.g would not > open. > I will highly appreciate your help. This is a mix of two things - workspaces to save a ``snapshot'' of current GAP workspace in a file, and text files with programs written in GAP. What you really need is to: 1) Open some text editor (e.g. Windows Notepad) 2) Enter the text of your GAP program 3) Save the file, e.g. with the name "myprog.g" (be careful - Windows notepad may automatically save is as "myprog.g.txt". Let us assume that this file is in "C:\mygap" folder. 4) in GAP, enter the command Read("C:/mygap/myprog.g"); (note the slash "/" after C:, not backslash). This will read your code into the GAP session. To see how workspaces work, type ?SaveWorkspace in the command line. In particular, Read will never be able to read workspace created with SaveWorkspace and having special format. Hope this helps! Best wishes, Alexander From nikos.ap at gmail.com Sun Nov 4 10:15:17 2007 From: nikos.ap at gmail.com (Nikos Apostolakis) Date: Sun Nov 4 15:39:43 2007 Subject: [GAP Forum] Questions about representations in Sn and Tz Transformations Message-ID: <86tzo2l3ka.fsf@knotter.bcc.cuny.edu> Dear Forum, I am looking for representations of some fp groups in to symmetric groups. Searching the documentation and the archives I came up with the following code: sncolorings := function( gp, n ) local ls; ls := ShallowCopy(LowIndexSubgroupsFpGroup(gp, TrivialSubgroup(gp), n)); ls := List(ls, g -> CosetTable(gp, g)); ls := List(ls, ct -> List(ct, PermList)); return List(ls, x -> x{[2,4..Length(x)]}); end; My first question is: Is there a way to specify *a priory* that the generators will be mapped within a given conjugacy class? For example I would like all the generators to be mapped to transpositions. (I work with Wirtinger presentations of knot and link groups where the generators are in relatively few conjugacy classes.) The second question has to do with Tietze transformations. The above process seems to be faster if I first apply the function TzGo to the presentation. Also checking if the resulting representation maps in the desired conjugacy cass is easier since there are fewer generators. However, I need to know the images of the original generators. So the question is, after I apply TzGo how can I get the old generators expressed in terms of the new ones? I mean, by setting "printLevel=2" I can have this information printed out but how can I use it in a program? TIA From rm43 at evansville.edu Mon Nov 5 01:48:02 2007 From: rm43 at evansville.edu (Robert Morse) Date: Mon Nov 5 01:50:43 2007 Subject: [GAP Forum] Harlaxton 2008 Group Theory Conference Message-ID: <1ff1501f0711041748t62650bfdrf6807f94dc691067@mail.gmail.com> CONFERENCE ANNOUNCEMENT Conference on Computational Group Theory and Cohomology August 4-8, 2008 Harlaxton College, Lincolnshire UK This conference will be focused on computational group theory and its applications to cohomology and to the theory of groups. This conference is a continuation of the Special Session on Computational Group Theory held at Davidson College March 2007 (http://www.ams.org/amsmtgs/2134_program_ss3.html#title). Harlaxton College is located at Harlaxton Manor (http://www.harlaxton.ac.uk), which is 8km from Grantham, Lincolnshire. Accommodations, meals, and the technical program will be in the Harlaxton Manor. Harlaxton Manor has wireless internet available throughout including the grounds. If you are interested in participating in the conference please write to the conference email address below. Information will be posted on the conference website and email updates will be sent out. This will include cost information. We plan to make this conference affordable and family friendly. Conference website: http://rfmorse.evansville.edu/~morse Conference email: harlax2008@csserver.evansville.edu Conference Organizers: Bettina Eick (Technische Universit?t Braunschweig) Graham Ellis (National University of Ireland - Galway) Robert Morse (University of Evansville) Sponsoring Organizations: De Brun Centre for Computational Algebra, Galway Institute for Global Enterprise in Indiana University of Evansville Funding: Marie Curie grant 042685 Lilly Endowment Inc. From degraaf at science.unitn.it Mon Nov 5 11:41:59 2007 From: degraaf at science.unitn.it (degraaf@science.unitn.it) Date: Mon Nov 5 11:43:08 2007 Subject: [GAP Forum] Re: Exceptional compact Lie algebras Message-ID: <20071105124159.z481nl71z4w4kkss@www.unitn.it> Dear Marek Mitros, You asked some questions about constructing compact forms of exceptional Lie algebras in GAP. I may have some partial answers to your questions. > 1. Do you have any ideas for building matrix representations of > compact e7, e8 in dimensions 56,248 respectively ? Unfortunately I do not, but maybe somebody else does. > 2. The root system in GAP is different to the one presented on > wikipedia for F4, E6,E7,E8. Is there way to take wikipedia roots and > build lie algebra from it ? Not directly. However, the simple Lie algebras in GAP come with a root system, that have a Cartan matrix and a system of simple roots. One can use this data to identify the GAP root system with any other preferred one. > 3. When I tried to do Derivations from 54 dimensional algebra C*h3O > there is out-of-memory error which close the GAP session. Any > workaround ? The algorithm for computing derivations solves a rather large amount of linear equations. This may indeed lead to memory problems. But I don't know of any other algorithm to compute derivations. Best wishes, Willem de Graaf From ault at math.ohio-state.edu Mon Nov 5 15:04:46 2007 From: ault at math.ohio-state.edu (Shaun Van Ault) Date: Mon Nov 5 15:05:54 2007 Subject: [GAP Forum] Re: Exceptional compact Lie algebras In-Reply-To: <20071105124159.z481nl71z4w4kkss@www.unitn.it> References: <20071105124159.z481nl71z4w4kkss@www.unitn.it> Message-ID: <472F310E.6050504@math.ohio-state.edu> Dear Marek Mitros, You may also want to look into the LiE system http://wwwmathlabo.univ-poitiers.fr/~maavl/LiE/ This system offers many built-in Lie functions that seem to perform faster than their GAP counterparts. On the downside, the scripting language associated with LiE is not very powerful, so you may need to write programs in another language accessing the LiE functions only when necessary. There is a GAP-LiE interface, called "liegap", but for the life of me, I cannot remember how to obtain it! I do have a copy of the binaries for "liegap", though, if you are interested. Best, -Shaun Ault degraaf@science.unitn.it wrote: > Dear Marek Mitros, > > You asked some questions about constructing compact forms of exceptional > Lie algebras in GAP. I may have some partial answers to your questions. > >> 1. Do you have any ideas for building matrix representations of >> compact e7, e8 in dimensions 56,248 respectively ? > > Unfortunately I do not, but maybe somebody else does. > >> 2. The root system in GAP is different to the one presented on >> wikipedia for F4, E6,E7,E8. Is there way to take wikipedia roots and >> build lie algebra from it ? > > Not directly. However, the simple Lie algebras in GAP come with a root > system, > that have a Cartan matrix and a system of simple roots. One can use this > data to identify the GAP root system with any other preferred one. > >> 3. When I tried to do Derivations from 54 dimensional algebra C*h3O >> there is out-of-memory error which close the GAP session. Any >> workaround ? > > The algorithm for computing derivations solves a rather large amount of > linear > equations. This may indeed lead to memory problems. But I don't know of any > other algorithm to compute derivations. > > Best wishes, > > Willem de Graaf > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From mckay at encs.concordia.ca Mon Nov 5 15:11:36 2007 From: mckay at encs.concordia.ca (MCKAY john) Date: Mon Nov 5 15:11:58 2007 Subject: [GAP Forum] Harlaxton 2008 Group Theory Conference In-Reply-To: <1ff1501f0711041748t62650bfdrf6807f94dc691067@mail.gmail.com> References: <1ff1501f0711041748t62650bfdrf6807f94dc691067@mail.gmail.com> Message-ID: I am interested in attending. Please keep me informed. Thanks, John McKay From frank.luebeck at math.rwth-aachen.de Mon Nov 5 21:53:31 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Mon Nov 5 21:54:05 2007 Subject: [GAP Forum] Re: Exceptional compact Lie algebras In-Reply-To: <20071105124159.z481nl71z4w4kkss@www.unitn.it> References: <20071105124159.z481nl71z4w4kkss@www.unitn.it> Message-ID: <20071105215331.GD21490@beteigeuze> On Mon, Nov 05, 2007 at 12:41:59PM +0100, degraaf@science.unitn.it wrote: > Dear Marek Mitros, > > >1. Do you have any ideas for building matrix representations of > >compact e7, e8 in dimensions 56,248 respectively ? > > Unfortunately I do not, but maybe somebody else does. Dear Forum, Just for the records: I have sent Marek generating matrices, including some which generate the subgroups he was looking for. Best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From hulpke at mac.com Tue Nov 6 04:47:36 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Tue Nov 6 04:48:31 2007 Subject: [GAP Forum] Questions about representations in Sn and Tz Transformations In-Reply-To: <86tzo2l3ka.fsf@knotter.bcc.cuny.edu> References: <86tzo2l3ka.fsf@knotter.bcc.cuny.edu> Message-ID: Dear Nikos Apostolakis, Dear Forum, > I am looking for representations of some fp groups in to symmetric > groups. Searching the documentation and the archives I came up with > the following code: > > > My first question is: Is there a way to specify *a priory* that the > generators will be mapped within a given conjugacy class? For > example I would like all the generators to be mapped to > transpositions. (I work with Wirtinger presentations of knot and > link groups where the generators are in relatively few conjugacy > classes.) Using slightly different code (the machinery driving `GQuotients' this would be possible. However this extra testing comes at an extra cost in runtime. If your image group is (likely to be) Sn, and if your presentation contains a relator a^2=1 (if the image of a is to be an involution we can easily demand this, if its not yet in the presentation) my guess is that `LowIndexSubgroups' actually will run faster. > > The second question has to do with Tietze transformations. The > above process seems to be faster if I first apply the function TzGo > to the presentation. Also checking if the resulting representation > maps in the desired conjugacy cass is easier since there are fewer > generators. However, I need to know the images of the original > generators. So the question is, after I apply TzGo how can I get > the old generators expressed in terms of the new ones? I mean, > by setting "printLevel=2" I can have this information printed out > but how can I use it in a program? If you use `IsomorphismSimplifiedFpGroup' instead of running the low level Tietze code, you get a nice homomorphism that gives you all translation information. Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From mim_ at op.pl Tue Nov 6 11:27:23 2007 From: mim_ at op.pl (mim_@op.pl) Date: Tue Nov 6 11:28:00 2007 Subject: [GAP Forum] Re: Exceptional compact Lie algebras In-Reply-To: 20071105215331.GD21490@beteigeuze Message-ID: Hi All, Thank you very much for your answers and hints ! I have to study it and try in GAP. Frankly speaking I am having doubts whether I understand when set of vectors form root system and how to decompose Lie algebra into root subspaces. In the real compact case these subspaces are 2-dimensional. For example for compact e6 there is decomposition into 6-dimensional Cartan algebra and 36 2-dimensional subspaces Vi. My hypothesis is that [Vi,Vj]=Vk for some k. Corresponding roots satisfy condition ri+rj=rk or ri-rj=rk. If you take two perpendicular vectors v,w from Vi, then [v,w] = ri and is isomorfic to su2. Is this hypothesis true ? Regards, Marek Mitros U¿ytkownik Frank Lübeck napisa³: >On Mon, Nov 05, 2007 at 12:41:59PM +0100, degraaf@science.unitn.it wrote: >> Dear Marek Mitros, >> >> >1. Do you have any ideas for building matrix representations of >> >compact e7, e8 in dimensions 56,248 respectively ? >> >> Unfortunately I do not, but maybe somebody else does. > >Dear Forum, > >Just for the records: I have sent Marek generating matrices, including some >which generate the subgroups he was looking for. > >Best regards, > > Frank > >-- >/// Dr. Frank Lübeck, Lehrstuhl D für Mathematik, Templergraben 64, /// >\\\\\\ 52062 Aachen, Germany \\\\\\ >/// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// >\\\\\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\\\\ > >_______________________________________________ >Forum mailing list >Forum@mail.gap-system.org >http://mail.gap-system.org/mailman/listinfo/forum > From frank.luebeck at math.rwth-aachen.de Wed Nov 7 15:25:26 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Wed Nov 7 16:25:51 2007 Subject: [GAP Forum] GAP and SL(4,3) In-Reply-To: <2210.68.72.130.90.1193518282.squirrel@webmail.uic.edu> References: <2210.68.72.130.90.1193518282.squirrel@webmail.uic.edu> Message-ID: <20071107152526.GH27598@beteigeuze> On Sat, Oct 27, 2007 at 03:51:22PM -0500, peter manolov wrote: > Can I use GAP to find the character table of SL(4,3) ? (Special linear > group of 4x4 matrices of determinant 1 over field with 3 elements) > > I'm particularly interested in the cuspidal characters of SL(4,3). I've > never used GAP before. If it is possible to find that character table, how > do I start? Dear Petar, dear Forum, It was already pointed out how the character table of SL(4,3) can be obtained from the GAP character table library by CharacterTable("2.L4(3)"). But this table may not have enough of the information you are interested in, for example representatives of the conjugacy classes or the identification of the cuspidal characters (I think these are the characters of degrees 416 and 208, right?). The information on the character degrees expressed as "polynomials in q" which you can find on http://www.math.rwth-aachen.de/~Frank.Luebeck/chev/DegMult/ could be interesting for you. Actually, with current computers one can explore SL(4,3), its characters and subgroups quite nicely in GAP. I append below some example GAP input. Maybe you find it useful to get started. First find out in GAP with gap> ?help how to use the GAP help system. You can use the help system to get more information on the shown commands. Feel free to ask if you have more questions (but maybe off this list, write to support@gap-system.org). Best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ ################## some example GAP input ############################# gap> # create group and find its order gap> s := SL(4,3); SL(4,3) gap> Size(s); 12130560 gap> # the conjugacy classes and their representatives gap> cl := ConjugacyClasses(s);; gap> clrep := List(cl, Representative);; gap> # explore the representatives gap> Display(clrep[20]); . . . 1 1 . . 1 . 1 . 2 . . 2 1 gap> Order(clrep[20]); 24 gap> Eigenvalues(GF(3^4),clrep[20]); [ Z(3^2)^5, Z(3^2)^7 ] gap> # compute the character table, the first step is fast gap> ct := CharacterTable(s);; gap> # only now the character values are computed, takes some minutes ... gap> Display(ct);; # or try: LoadPackage("Browse");; Browse(ct); gap> # function to give element of root subgroup (entry a in position (i,j)) gap> rootelt := function(i, j, a) local res; > res := MutableCopyMat(One(s)); res[i][j] := a; return res; end;; gap> # subgroup u of upper triangular unipotent elements (3-Sylow) gap> ugens := []; gap> for i in [1..4] do for j in [i+1..4] do > Add(ugens, rootelt(i,j,Z(3)^0)); od; od; gap> u := Subgroup(s, ugens); gap> # maximally split torus gap> torelt := function(a,b,c) local res; > res := MutableCopyMat(One(s)); res[1][1] := a; res[2][2] := b; res[3][3] := c; res[4][4] := (a*b*c)^-1; return res; end;; gap> tgens := [torelt(Z(3),Z(3)^0,Z(3)^0), torelt(Z(3)^0,Z(3),Z(3)^0), > torelt(Z(3)^0,Z(3)^0,Z(3))];; gap> t := Subgroup(s, tgens);; gap> # standard parabolic subgroup of type A_1 gap> p := Subgroup(s, Concatenation(tgens, ugens, [rootelt(2,1,Z(3)^0)]));; gap> # this is quick, character table of parabolic subgroup gap> ctp := CharacterTable(p);; gap> Irr(ctp);; gap> # induce them to s gap> indp := InducedClassFunctions(ctp, Irr(ctp), s);; gap> # express each induced character as linear combination of irreducibles of s gap> sc := MatScalarProducts(indp, Irr(s));; gap> # for example look at decomposition of 20-th irreducible of p induced to s gap> Irr(p)[20]; Character( CharacterTable( ), [ 3, 3, 3, 3, 3, 3, -1, 0, 0, 0, 0, 3, 3, 3, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, -1, -1, -3, -3, -3, -3, -3, -3, 1, 0, 0, 0, 0, -3, -3, -3, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 1, 1 ] ) gap> indp[20]; Character( CharacterTable( SL(4,3) ), [ 1560, -75, -12, -12, -3, 0, 0, -1560, 75, 12, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, -4, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ) gap> sc[20]; [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1 ] From dongjc at njau.edu.cn Thu Nov 8 05:15:51 2007 From: dongjc at njau.edu.cn (=?gb2312?B?tq2+rrPJ?=) Date: Thu Nov 8 05:39:16 2007 Subject: [GAP Forum] Can GAP compute indecomposble modules of group algebra KSn? Message-ID: Hi, I am a new man in this field? I have a question: Can GAP compute indecomposble modules of group algebra KSn? For example KS3,where K is a finite field with 2 elements. Best wishes! Dong From dima at ntu.edu.sg Thu Nov 8 13:18:14 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Thu Nov 8 13:18:52 2007 Subject: [GAP Forum] Can GAP compute indecomposble modules of group algebra KSn? In-Reply-To: Message-ID: Dear Dong, IMHO you have to be more specific when you say "compute". What exactly do you mean? There can be infinitely many nonisomorphic modules like this, isn't it? On 11/8/07 1:15 PM, "???" wrote: > Hi, > I am a new man in this field? I have a question: > Can GAP compute indecomposble modules of group algebra KSn? For example > KS3,where K is a finite field with 2 elements. > Best wishes! > Dong > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From frank.luebeck at math.rwth-aachen.de Thu Nov 8 13:38:57 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Thu Nov 8 13:46:06 2007 Subject: [GAP Forum] Can GAP compute indecomposble modules of group algebra KSn? In-Reply-To: References: Message-ID: <20071108133857.GF14416@beteigeuze> On Thu, Nov 08, 2007 at 01:15:51PM +0800, ??? wrote: > Can GAP compute indecomposble modules of group algebra KSn? For example KS3,where K is a finite field with 2 elements. Dear Dong, dear Forum, For small n you can do this as follows: gap> # create the group gap> s3 := SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> # and the irreducible representation over GF(2) gap> reps := IrreducibleRepresentations(s3, GF(2)); [ [ (1,2,3), (1,2) ] -> [ , ], [ (1,2,3), (1,2) ] -> [ , ] ] gap> # there are 2 of them gap> Length(reps); 2 gap> # compute image of (2,3) in s3 under second representation gap> Image(reps[2], (2,3)); gap> # for looking at the entries do gap> Display(last); . 1 1 . Please, use the GAP help system to find out more about the mentioned commands. For larger n it would be more complicated, but one could use matrices for the characteristic 0 Specht modules and find the irreducibles over a finite field with the 'MeatAxe'. To get larger dimensional Specht modules into GAP some programs available from http://www.math.rwth-aachen.de/~Frank.Luebeck/software.html can be useful. For MeatAxe functionality in GAP see '?the meataxe' in GAPs help system. (In the small n cases as above the MeatAxe is applied to the regular representation.) Best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From frank.luebeck at math.rwth-aachen.de Thu Nov 8 14:31:25 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Thu Nov 8 14:31:53 2007 Subject: [GAP Forum] Can GAP compute indecomposble modules of group algebra KSn? In-Reply-To: References: Message-ID: <20071108143125.GJ14416@beteigeuze> On Thu, Nov 08, 2007 at 09:18:14PM +0800, Dmitrii Pasechnik wrote: > IMHO you have to be more specific when you say "compute". What exactly do > you mean? There can be infinitely many nonisomorphic modules like this, > isn't it? > > > On 11/8/07 1:15 PM, "???" wrote: > > > Hi, > > I am a new man in this field? I have a question: > > Can GAP compute indecomposble modules of group algebra KSn? For example In my answer I have only talked about irreducible modules (which is part of the problem and which are not known in general for symmetric groups). Finding all indecomposable modules is much harder. I don't know by heart what can be said for S_n with very small n, maybe someone else can provide information? Best regards again, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From vdovin at math.nsc.ru Tue Nov 13 03:50:56 2007 From: vdovin at math.nsc.ru (Vdovin Evgeni) Date: Tue Nov 13 03:54:06 2007 Subject: [GAP Forum] worm in GAP-doc files Message-ID: <47391F20.4080207@math.nsc.ru> Dear forum, After scanning my system with Dr.Web antivirus, there was detected a worm Win32.HLLM.Graz in the following two GAP DOC files: ...\gap4r4\doc\htmie\ref\CHAP064.htm ...\gap4r4\pkg\ace\htm\CHAP004.htm For the possible damage this worm can do, see http://info.drweb.com/virus_description/471?lng=en From dima at ntu.edu.sg Tue Nov 13 14:06:42 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Tue Nov 13 14:07:18 2007 Subject: [GAP Forum] worm in GAP-doc files In-Reply-To: <47391F20.4080207@math.nsc.ru> Message-ID: Evgeni, are you saying that your machine is infected with a virus? Well, this often happens with Windows computers, as we know. This obviously does not really imply that you got it from a GAP distro. On 11/13/07 11:50 AM, "Vdovin Evgeni" wrote: > Dear forum, > > After scanning my system with Dr.Web antivirus, there was detected a worm > > Win32.HLLM.Graz > > in the following two GAP DOC files: > > ...\gap4r4\doc\htmie\ref\CHAP064.htm > ...\gap4r4\pkg\ace\htm\CHAP004.htm > > For the possible damage this worm can do, see > > http://info.drweb.com/virus_description/471?lng=en > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From josef.lauri at um.edu.mt Thu Nov 15 13:04:34 2007 From: josef.lauri at um.edu.mt (Josef Lauri) Date: Thu Nov 15 13:05:35 2007 Subject: [GAP Forum] An elementary question about matrices Message-ID: <473C43E2.207@um.edu.mt> Is there a function in GAP or one of its packages which, given an n \times m matrix A and a subset lst of [1..m], returns the submatrix of A obtained from the columns of A indexed by lst? Thank you. Josef Lauri Department of Mathematics From ault at math.ohio-state.edu Thu Nov 15 15:49:06 2007 From: ault at math.ohio-state.edu (Shaun Van Ault) Date: Thu Nov 15 15:49:45 2007 Subject: [GAP Forum] An elementary question about matrices In-Reply-To: <473C43E2.207@um.edu.mt> References: <473C43E2.207@um.edu.mt> Message-ID: <473C6A72.7060408@math.ohio-state.edu> Josef, If M is the n-by-m matrix, and L is the subset of [1..m], then you can use: TransposedMat(TransposedMat(M){L}); or, for a mutable version, MutableTransposedMat(TransposedMat(M){L}); Note, you may obtaining the rows of M corresponding to L, by simply using M{L}, if L is a subset of [1..n]. Best wishes, -Shaun Josef Lauri wrote: > Is there a function in GAP or one of its packages which, given an n > \times m matrix A and a subset lst of [1..m], returns the submatrix of A > obtained from the columns of A indexed by lst? > > Thank you. > > Josef Lauri > Department of Mathematics > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From laurent.bartholdi at gmail.com Thu Nov 8 08:53:31 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Fri Nov 16 15:14:26 2007 Subject: Fwd: [GAP Forum] Can GAP compute indecomposble modules of group algebra KSn? In-Reply-To: <1ff637850711080052pde2fb06vb823c7aa1c85a55c@mail.gmail.com> References: <1ff637850711080052pde2fb06vb823c7aa1c85a55c@mail.gmail.com> Message-ID: <1ff637850711080053s15f757b2n2c020eb83d092c41@mail.gmail.com> Dear Dong, Yes, this is very easy for GAP. The indecomposable modules are returned as matrices. Here's a sample computation. For more commands, try '?Meataxe'. gap> ks3 := GModuleByMats(List(GeneratorsOfGroup(SymmetricGroup(I3)),x->PermutationMat(x,6,GF(2))),GF(2));; gap> MTX.Indecomposition(ks3); [ [ , rec( field := GF(2), isMTXModule := true, dimension := 1, generators := [ , ], basisModuleEndomorphisms := [ ], smashMeataxe := rec( endAlgResidue := [ [ [ Z(2)^0 ] ], 1 ], basisEndoRad := [ ] ), isIndecomposable := true ) ], [ , rec( field := GF(2), isMTXModule := true, dimension := 1, generators := [ , ], basisModuleEndomorphisms := [ ], smashMeataxe := rec( endAlgResidue := [ [ [ Z(2)^0 ] ], 1 ], basisEndoRad := [ ] ), isIndecomposable := true ) ], [ , rec( field := GF(2), isMTXModule := true, dimension := 1, generators := [ , ], basisModuleEndomorphisms := [ ], smashMeataxe := rec( endAlgResidue := [ [ [ Z(2)^0 ] ], 1 ], basisEndoRad := [ ] ), isIndecomposable := true ) ], [ , rec( field := GF(2), isMTXModule := true, dimension := 1, generators := [ , ], basisModuleEndomorphisms := [ ], smashMeataxe := rec( endAlgResidue := [ [ [ Z(2)^0 ] ], 1 ], basisEndoRad := [ ] ), isIndecomposable := true ) ], [ , rec( field := GF(2), isMTXModule := true, dimension := 2, generators := [ , ], basisModuleEndomorphisms := [ ], smashMeataxe := rec( endAlgResidue := [ , 1 ], basisEndoRad := [ ] ), isIndecomposable := true ) ] ] On 11/8/07, ¶­¾®³É wrote: > Hi, > I am a new man in this field? I have a question: > Can GAP compute indecomposble modules of group algebra KSn? For example KS3,where K is a finite field with 2 elements. > Best wishes! > Dong > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > > -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T¨¦l¨¦phone: +41 21-6935458 Station 8 \ Secr¨¦taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T¨¦l¨¦phone: +41 21-6935458 Station 8 \ Secr¨¦taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From laurent.bartholdi at gmail.com Thu Nov 15 14:32:14 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Fri Nov 16 15:14:30 2007 Subject: [GAP Forum] An elementary question about matrices In-Reply-To: <473C43E2.207@um.edu.mt> References: <473C43E2.207@um.edu.mt> Message-ID: <1ff637850711150632u4e13e8aev1ae0ed8014220da2@mail.gmail.com> Dear Josef, There is one: gap> A := List([1..10],i->List([1..10],j->10*i+j)); [ [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ], [ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ], [ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 ], [ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ], [ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 ], [ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70 ], [ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 ], [ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], [ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 ], [ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110 ] ] gap> S := [2,4,6]; [ 2, 4, 6 ] gap> T := [3,5,7]; [ 3, 5, 7 ] gap> A{S}{T}; [ [ 23, 25, 27 ], [ 43, 45, 47 ], [ 63, 65, 67 ] ] -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From 207525917 at ukzn.ac.za Wed Nov 14 08:45:43 2007 From: 207525917 at ukzn.ac.za (Thekiso Seretlo) Date: Fri Nov 16 15:17:13 2007 Subject: [GAP Forum] Re:Orbit Lengths Message-ID: <473AD1D70200004900015DCA@DBNSMTP.UKZN.AC.ZA> Let V := FullRowSpace(GF(2),2) m1:=One(GF(2))*[[0,1,0],[1,0,0],[0,0,1]]; m2:=One(GF(2))*[[0,1,0],[0,0,1],[1,0,0]]; m:=Group(m1,m2); this is a matrix representation of $S3$ in GF(2) If we say OrbitLengths(m,V) we get [2,4,4,4] that is we show that this has four orbits and of the lenghts given that is the conjugacy classes here. Moving to irreducible characters by Brauer we know that the number of orbits is four, my problem is how do we get the orbitlengths of the orbits of irreducible characters ? Yours faithfully TT Seretlo Please find our Email Disclaimer here: http://www.ukzn.ac.za/disclaimer/ From dima at ntu.edu.sg Fri Nov 16 16:46:36 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Fri Nov 16 16:47:10 2007 Subject: [GAP Forum] Re:Orbit Lengths In-Reply-To: <473AD1D70200004900015DCA@DBNSMTP.UKZN.AC.ZA> Message-ID: I suppose you mean V := FullRowSpace(GF(2),3); Then OrbitLengths(m,V) gives the correct answer: [ 1, 3, 3, 1 ] (it's puzzling that you got [2,4,4,4] somehow...) On 11/14/07 4:45 PM, "Thekiso Seretlo" <207525917@ukzn.ac.za> wrote: > Let V := FullRowSpace(GF(2),2) > m1:=One(GF(2))*[[0,1,0],[1,0,0],[0,0,1]]; > m2:=One(GF(2))*[[0,1,0],[0,0,1],[1,0,0]]; > m:=Group(m1,m2); > this is a matrix representation of $S3$ in GF(2) > If we say > OrbitLengths(m,V) > we get [2,4,4,4] that is we show that this has four orbits and of the lenghts > given that is the conjugacy classes here. Moving to irreducible characters by > Brauer we know that the number of orbits is four, my problem is how do we get > the orbitlengths of the orbits of irreducible characters ? > Yours faithfully > TT Seretlo > > Please find our Email Disclaimer here: http://www.ukzn.ac.za/disclaimer/ > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From thomas.breuer at math.rwth-aachen.de Mon Nov 19 10:07:41 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Mon Nov 19 10:08:15 2007 Subject: [GAP Forum] Re:Orbit Lengths In-Reply-To: <473AD1D70200004900015DCA@DBNSMTP.UKZN.AC.ZA> References: <473AD1D70200004900015DCA@DBNSMTP.UKZN.AC.ZA> Message-ID: <20071119100741.GA4220@gemma.math.rwth-aachen.de> Dear GAP Forum, Thekiso Seretlo wrote > Let V := FullRowSpace(GF(2),2) > m1:=One(GF(2))*[[0,1,0],[1,0,0],[0,0,1]]; > m2:=One(GF(2))*[[0,1,0],[0,0,1],[1,0,0]]; > m:=Group(m1,m2); > this is a matrix representation of $S3$ in GF(2) > If we say > OrbitLengths(m,V) > we get [2,4,4,4] that is we show that this has four orbits and of the > lenghts given that is the conjugacy classes here. Moving to irreducible > characters by Brauer we know that the number of orbits is four, > my problem is how do we get the orbitlengths of the orbits of irreducible > characters ? The situation is that a matrix group G, say, acts on a finite row vector space V, say, by multiplication from the right. In the semidirect product S of G and V defined by this action, the orbits of G on V correspond to the conjugacy classes of S that lie in the normal subgroup corresponding to V. The induced action of an element g in G on the complex irreducible characters of V, that is, on Hom(V,\C), is just the transposed map of action of g on V. It can be described by the left multiplication with g on column vectors. So all one has to do for computing the orbit lengths in GAP is to consider the group of transposed matrices. Since the above example is obviously not correct (3x3 matrices do not act on vectors of length two, and the zero vector yields always an orbit of length one), I show another example. Let us consider a dihedral subgroup of order six in GL(2,3), acting on GF(3)^2. The two actions yield four orbits each, but with different orbit lengths. gap> gens:= Z(3)^0 * [ [ [ 0, 1 ], [ -1, -1 ] ], > [ [ 0, 1 ], [ 1, 0 ] ] ];; gap> OrbitLengths( Group( gens ), GF(3)^2 ); [ 1, 3, 3, 2 ] gap> OrbitLengths( Group( List( gens, TransposedMat ) ), GF(3)^2 ); [ 1, 6, 1, 1 ] All the best, Thomas From mim_ at op.pl Tue Nov 20 11:36:32 2007 From: mim_ at op.pl (mim_@op.pl) Date: Tue Nov 20 11:37:33 2007 Subject: [GAP Forum] Lists and sub-functions Message-ID: Hello, I have following questions regarding lists. 1. Is it safe to pass lists as parameters to functions ? 2. Is it safe to return lists from functions ? And also additional question. 3. Is it allowed to define sub-functions inside a function ? I have seen such example in lib/alglie.gi - there is subfunction in RootSystem function. But when I tried I see error. Regarding first 2 questions. Since assignment a:=b; for list do not create new list, I assume that list is really a pointer (however this is never mentioned in GAP documentation). So if I declare local variable in function, create list inside function and return it. Then pointer to a list is returned but local memory of the function can be overwritten now. So my list is not safe !? Here is example create_mat:=function (n) local i, m; m:=[]; for i in [1..n] do Add(m, [i..i+n-1]); od; return m; end;; a:= create_mat(5); # what is it now ? Is it matrix (list) or just pointer to piece of memory which can be overwritten ? I am asking because I am receiving strange errors when working with matrices. The error is saying that boolean is found where list is expected !? For interested persons I attach my code in example.txt file. So far everything worked OK (almost) with my matrix GAP code. Regards, Marek Mitros -------------- next part -------------- # For matrix m returns coordinates [x,y] of all elements equal to e.g. a=1. # Assuming that in each row there is only one element equal to 1 mat_ones:=function(m,a) local i,j, l,x,y; l:=[]; for i in [1..Length(m)] do if ForAny(m[i], x->x=a) then Add(l, [i, Position(m[i], a)]); fi; od; return l; end;; # received pair of numbers from range 1..24, returned 0..3 group24:=function(p) local s; #Print(p, " ", p[1]," ", p[2], "\n"); s:=Set([Int(p[1]/8),Int(p[2]/8)]); if Length(s)=1 then return 0; else # 01, 02, 12 return s[1]+s[2]; fi; end;; # here is ..... piece of code inside another function # mm is matrix 28*28 ll:=mat_ones(mm,1); # something is wrong here #pp:=First(ll, x->IsSubset([1..24],x)); #pair of indexes from set [1..24] pp:=ll[Position(List(ll, x->IsSubset([1..24],x)), true)]; #Print(pp, IsList(pp),"\n"); f[3]:=group24(pp); # I see error message that pp is not list but boolean !? From mim_ at op.pl Tue Nov 20 12:06:53 2007 From: mim_ at op.pl (mim_@op.pl) Date: Tue Nov 20 12:07:40 2007 Subject: [GAP Forum] Re: Lists and sub-functions In-Reply-To: Q42714200-09020184f99b657c3b5d9387a1ff0bd4@pmq2.test.onet.pl Message-ID: Sorry, please disregard my first two questions ! The reason of my problem was that list was empty. I have discovered this finally. Anyway sending of the problem to the list helped :) Regards, Marek Mitros mim_@op.pl napisa³: >Hello, > >I have following questions regarding lists. > >1. Is it safe to pass lists as parameters to functions ? >2. Is it safe to return lists from functions ? > >And also additional question. > >3. Is it allowed to define sub-functions inside a function ? I have seen such example in lib/alglie.gi - there is subfunction in RootSystem function. But when I tried I see error. > >Regarding first 2 questions. Since assignment >a:=b; >for list do not create new list, I assume that list is really a pointer (however this is never mentioned in GAP documentation). So if I declare local variable in function, create list inside function and return it. Then pointer to a list is returned but local memory of the function can be overwritten now. So my list is not safe !? > >Here is example >create_mat:=function (n) > local i, m; > m:=[]; > for i in [1..n] do > Add(m, [i..i+n-1]); > od; > return m; >end;; > >a:= create_mat(5); ># what is it now ? Is it matrix (list) or just pointer to piece of memory which can be overwritten ? > >I am asking because I am receiving strange errors when working with matrices. The error is saying that boolean is found where list is expected !? >For interested persons I attach my code in example.txt file. >So far everything worked OK (almost) with my matrix GAP code. > >Regards, >Marek Mitros > From binodkumar at gmail.com Fri Nov 23 19:00:52 2007 From: binodkumar at gmail.com (Binod Kumar Sahoo) Date: Fri Nov 23 19:04:58 2007 Subject: [GAP Forum] Using GAP-system Message-ID: Dear Members, Could you please help me with the following: Let C be a subset of a given finite group G. I want to determine whether C is closed under commuting product. That is, x*y is an element of C whenever [x,y]=1 for *distinct* x and y in C. Using GAP, how should I perform this? With regards, Binod Kumar Sahoo From laurent.bartholdi at gmail.com Sat Nov 24 11:48:21 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Sat Nov 24 11:48:59 2007 Subject: [GAP Forum] Using GAP-system In-Reply-To: References: Message-ID: <1ff637850711240348j16b5cad6v5c5b686ce9b26142@mail.gmail.com> Very easy: ForAll(Combinations(C,2),p->p[1]*p[2] in C or p[1]*p[2]<>p[2]*p[1]); On Nov 23, 2007 8:00 PM, Binod Kumar Sahoo wrote: > Dear Members, > > Could you please help me with the following: > > Let C be a subset of a given finite group G. I want to determine whether C > is closed under commuting product. > That is, x*y is an element of C whenever [x,y]=1 for *distinct* x and y in > C. > Using GAP, how should I perform this? > > With regards, > Binod Kumar Sahoo > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T?l?phone: +41 21-6935458 Station 8 \ Secr?taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From laurawicklund at comcast.net Sat Nov 24 22:09:22 2007 From: laurawicklund at comcast.net (laurawicklund@comcast.net) Date: Sat Nov 24 22:09:50 2007 Subject: [GAP Forum] direct sums and counting subgroups Message-ID: <112420072209.7236.4748A1120002BC7C00001C4422147564020B029A04050C07990E9D9A0E04@comcast.net> I recently installed GAP on my computer and am trying to figure out how to solve the following problem using GAP (I spent a few hours reading through the manual but haven't been successful). Let p be prime. Find the number of subgroups of order p^2 of the additive abelian group $G:=Z_{p^3}\oplus Z_{p^2}$ The group G is the direct sum of additive groups ZmodnZ(p^3) and ZmodnZ(p^2) I would be content solving by problem for a specific p, say p=3. Thank you for your time. -Laura From ault at math.ohio-state.edu Sat Nov 24 22:53:38 2007 From: ault at math.ohio-state.edu (Shaun Van Ault) Date: Sat Nov 24 22:54:32 2007 Subject: [GAP Forum] direct sums and counting subgroups In-Reply-To: <112420072209.7236.4748A1120002BC7C00001C4422147564020B029A04050C07990E9D9A0E04@comcast.net> References: <112420072209.7236.4748A1120002BC7C00001C4422147564020B029A04050C07990E9D9A0E04@comcast.net> Message-ID: <4748AB72.8080602@math.ohio-state.edu> Dear Laura, The following seems to work, since these groups are abelian (Note, for group structures, CyclicGroup() is more appropriate than ZmodnZ()). -Shaun Ault > gap> G := DirectProduct(CyclicGroup(3^3), CyclicGroup(3^2)); > > gap> n := Size(SubgroupsSolvableGroup(G)); > 36 > gap> laurawicklund@comcast.net wrote: > I recently installed GAP on my computer and am trying to figure out how to solve the following problem using GAP (I spent a few hours reading through the manual but haven't been successful). > > Let p be prime. Find the number of subgroups of order p^2 of the additive abelian group $G:=Z_{p^3}\oplus Z_{p^2}$ > > The group G is the direct sum of additive groups ZmodnZ(p^3) and ZmodnZ(p^2) > > I would be content solving by problem for a specific p, say p=3. > > Thank you for your time. > > -Laura > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From dima at ntu.edu.sg Sun Nov 25 13:15:32 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Sun Nov 25 13:16:12 2007 Subject: [GAP Forum] direct sums and counting subgroups In-Reply-To: <112420072209.7236.4748A1120002BC7C00001C4422147564020B029A04050C07990E9D9A0E04@comcast.net> Message-ID: surely you don't need GAP for solving this problem. The answer is 3. There are 2 possibilities for an abelian group to be of order p^2; one of them is realised only once, the other - twice. I don't like giving more details, as this could be your homework :) On 11/25/07 6:09 AM, "laurawicklund@comcast.net" wrote: > I recently installed GAP on my computer and am trying to figure out how to > solve the following problem using GAP (I spent a few hours reading through the > manual but haven't been successful). > > Let p be prime. Find the number of subgroups of order p^2 of the additive > abelian group $G:=Z_{p^3}\oplus Z_{p^2}$ > > The group G is the direct sum of additive groups ZmodnZ(p^3) and ZmodnZ(p^2) > > I would be content solving by problem for a specific p, say p=3. > > Thank you for your time. > > -Laura > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From dima at ntu.edu.sg Sun Nov 25 14:20:34 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Sun Nov 25 14:21:03 2007 Subject: [GAP Forum] direct sums and counting subgroups In-Reply-To: <112520071337.27485.47497A9F000C465500006B5D22155670740B029A04050C07990E9D9A0E04@comcast.net> Message-ID: Dear Laura, you?re right, I wasn?t thinking straight when I replied (sitting in front of 230 exam papers on calculus 1 that I have to mark in 2 days :( ) anyhow, the count is easy (the only facts needed are essentially that in a finite cyclic group of order n a subgroup of given order k is unique, k divides n, and some obvioups properties of the direct sum): first, there is only one subgroup isomorphic to Z_p x Z_p. second, a subgroup H=<(x,y)> isomorphic to Z_{p^2} must have the projection isomorphic to Z_{p^2} to either the first or to the second summand. (At this point I rushed to conclusion that there are no more cases to count...) However, in both cases we have to deal with the projection of H to the other summand. First, let x be of order p^2. Then the order of y must divide p^2. The first case is when the order of y equals p^2. In the cyclic group of order p^2 there are p^2-p elements of order p^2. This gives p^2-p possibilities. The second case is when the order of y equals p. In the cyclic group of order p there are p-1 elements of order p^2. This gives p-1 further possibilities. The third case is when the order of y equals 1. Such an element is unique. This gives 1 further possibility. Now, it remains to consider the case when y is order p^2, and x is of order either p or 1. Just as above, this gives (p-1)+1=p more possibilites. Thus, we get p^2+p+1 possibilities in total. Please let me know if you need to know more details in the above. On 11/25/07 9:37 PM, "laurawicklund@comcast.net" wrote: > I have the answer. There are p^2+p+1 subgroups of order p^2 in the abelian > group Z_{p^3}\oplus Z_{p^2}. I found the same results using GAP. For > example, I found that there are 13 subgroups of order 9 in the group > > G := DirectProduct(CyclicGroup(3^3), CyclicGroup(3^2)); > Using GAP is not part of my course work. It is just an interest of mine. > > I assume you are speaking up to an isomorphism. Is this correct? If so, I > thought there were only two. Namely, > > Z_{p^2} and Z_p X Z_p > > I am not aware that one of these groups is realized twice. I don't really > understand what you mean by this. My text books only state that there are two > (up to an isomorphism). If you have a chance, please explain. > > Thank you for your time. > > -Laura > >> -------------- Original message -------------- >> From: Dmitrii Pasechnik >> >>> surely you don't need GAP for solving this problem. >>> The answer is 3. There are 2 possibilities for an abelian group to be of >>> order p^2; one of them is realised only once, the other - twice. >>> I don't like giving more details, as this could be your homework :) >>> >>> >>> On 11/25/07 6:09 AM, "laurawicklund@comcast.net" >>> wrote: >>> >>>> I recently installed GAP on my computer and am trying to figure out how to >>>> solve the following problem using GAP (I spent a few hours reading through >>>> the >>>> manual but haven't been successful). >>>> >>>> Let p be prime. Find the number of subgroups of order p^2 of the additive >>>> abelian group $G:=Z_{p^3}\oplus Z_ {p^2}$ >>>> >>>> The group G is the direct sum of additive groups ZmodnZ(p^3) and >>>> ZmodnZ(p^2) >>>> >>>> I would be content solving by problem for a specific p, say p=3. >>>> >>>> Thank you for your time. >>>> >>>> -Laura -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From ffantino at gmail.com Mon Nov 26 02:27:25 2007 From: ffantino at gmail.com (Fernando Fantino) Date: Mon Nov 26 02:27:58 2007 Subject: [GAP Forum] Sporadic groups. Message-ID: <4d4d8b940711251827p649cb8e7q38273fc62835c433@mail.gmail.com> Dear, Forum I write you in order to do the following question. With a colleague, Leandro Vendramin, I am working on some problem related to finite groups. In particular, we need to do some computations with the sporadic groups (G); for instance, we need to compute character tables of centralizers of (some) elements in G, etc. When the (sporadic) group is not so long these operation can be implemented without (serious) problems. But, for instance, in the monster cases the centralizers are so long that the program cannot do such a operation. Nevertheless, many of these centralizers are in the Library of GAP. THE QUESTION: is that true? In that case, how can I identify them? I would be happy with any suggestion or reference. Thank you in advance. With regards, F. Fantino. From aodabas at ogu.edu.tr Mon Nov 26 09:55:44 2007 From: aodabas at ogu.edu.tr (Alper Odabas) Date: Mon Nov 26 09:57:23 2007 Subject: [GAP Forum] A strange error about group rings and alegbras Message-ID: <005201c83012$82effe50$a3838cc1@ogu229> Hi all I assigment two different variables say G and H for the same group. I expect that the obtained group rings (and algebars) will be same but the result is not. ??? ----------------------------------------------- gap> G:=Group((1,2,3)); Group([ (1,2,3) ]) gap> H:=Group((1,2,3)); Group([ (1,2,3) ]) gap> G=H; true gap> A:=GroupRing(GF(2),G); gap> B:=GroupRing(GF(2),H); gap> A=B; false gap> Size(A); Size(B); 8 8 gap> GeneratorsOfAlgebra(A); GeberatorsOfAlgebra(B); [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3) ] gap> GeneratorsOfAlgebra(A); GeneratorsOfAlgebra(B); [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3) ] [ (Z(2)^0)*(), (Z(2)^0)*(1,2,3) ] ---------------------------------- All the best, Alper From mim_ at op.pl Mon Nov 26 09:58:31 2007 From: mim_ at op.pl (mim_@op.pl) Date: Mon Nov 26 09:58:59 2007 Subject: [GAP Forum] Quaternion vs real algebras Message-ID: Hello, I want to define real lie algebra using quaternion matrices. How to do this ? See below code with example. It seems that there is no way in GAP to convert algebra over quaternions into quaternion over reals (Rationals) !? The workaround is to define quaternions in M2C or M4R matrices, but this is not so nice. Or define my lie algebra using structure constants but this is also annoying. Regards, Marek Mitros H:=QuaternionAlgebra(Rationals); bh:=Basis(H); e:=bh[1]; i:=bh[2]; j:=bh[3]; k:=bh[4]; g1:=e*[[i,0],[0,-i]]; g2:=e*[[j,0],[0,-j]]; g3:=e*[[k,0],[0,-k]]; g4:=e*[[0,1],[-1,0]]; ralg:=LieAlgebra(Rationals, [g1,g2,g3,g4]); halg:=LieAlgebra(H, [g1,g2,g3,g4]); Dimension(halg); # returns 3 Dimension(ralg); # returns error, should be 10 as ralg=sp(2)=C2 hb:=MutableBasis(H, [g1,g2]); # returns one vector rb:=MutableBasis(Rationals, [g1,g2]); # returns error From mim_ at op.pl Mon Nov 26 10:08:34 2007 From: mim_ at op.pl (mim_@op.pl) Date: Mon Nov 26 10:09:16 2007 Subject: [GAP Forum] Re: Quaternion vs real algebras In-Reply-To: Q44922329-366915ffabf8c156999549af09cb2379@pmq5.test.onet.pl Message-ID: Hello again, The fourth sentence in my first mail should be "It seems that there is no way in GAP to convert algebra over quaternions into algebra over reals (Rationals) !?" I am sorry ! Regards, Marek Mitros mim_@op.pl napisa?: >Hello, > >I want to define real lie algebra using quaternion matrices. How to do this ? See below code with example. It seems that there is no way in GAP to convert algebra over quaternions into algebra over reals (Rationals) !? > >The workaround is to define quaternions in M2C or M4R matrices, but this is not so nice. >Or define my lie algebra using structure constants but this is also annoying. > >Regards, >Marek Mitros > >H:=QuaternionAlgebra(Rationals); >bh:=Basis(H); >e:=bh[1]; i:=bh[2]; j:=bh[3]; k:=bh[4]; > >g1:=e*[[i,0],[0,-i]]; g2:=e*[[j,0],[0,-j]]; g3:=e*[[k,0],[0,-k]]; g4:=e*[[0,1],[-1,0]]; > >ralg:=LieAlgebra(Rationals, [g1,g2,g3,g4]); > >halg:=LieAlgebra(H, [g1,g2,g3,g4]); > >Dimension(halg); # returns 3 > >Dimension(ralg); # returns error, should be 10 as ralg=sp(2)=C2 > >hb:=MutableBasis(H, [g1,g2]); # returns one vector > >rb:=MutableBasis(Rationals, [g1,g2]); # returns error > From thomas.breuer at math.rwth-aachen.de Mon Nov 26 17:56:05 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Mon Nov 26 17:56:39 2007 Subject: [GAP Forum] Sporadic groups. In-Reply-To: <4d4d8b940711251827p649cb8e7q38273fc62835c433@mail.gmail.com> References: <4d4d8b940711251827p649cb8e7q38273fc62835c433@mail.gmail.com> Message-ID: <20071126175605.GD23755@gemma.math.rwth-aachen.de> Dear GAP Forum, Fernando Fantino wrote > I write you in order to do the following question. > With a colleague, Leandro Vendramin, I am working on some problem related > to finite groups. > In particular, we need to do some computations with the sporadic > groups (G); for instance, we need to compute character > tables of centralizers of (some) elements in G, etc. When the > (sporadic) group is not so long these operation can be implemented > without (serious) problems. But, for instance, in the monster > cases the centralizers are so long that the program cannot do such > a operation. Nevertheless, many of these centralizers are in the > Library of GAP. > THE QUESTION: is that true? In that case, how can I identify them? Let us take the Fischer group Fi22 an example. A look into the Atlas of Finite group shows that the centralizers of involutions in the classes 2A and 2B are maximal subgroups of Fi22, in the 1st and 7th class of maximal subgroups. In GAP, one can get them as follows. gap> t:= CharacterTable( "Fi22" ); CharacterTable( "Fi22" ) gap> mx:= Maxes( t ); [ "2.U6(2)", "O7(3)", "Fi22M3", "O8+(2).3.2", "2^10:m22", "2^6:s6f2", "(2x2^(1+8)):U4(2):2", "S3xU4(3).2_2", "2F4(2)'", "2^(5+8):(S3xA6)", "3^(1+6):2^(3+4):3^2:2", "A10.2", "A10.2", "M12" ] gap> CharacterTable( mx[1] ); CharacterTable( "2.U6(2)" ) gap> CharacterTable( mx[7] ); CharacterTable( "(2x2^(1+8)):U4(2):2" ) Alternatively, also the following works. gap> CharacterTable( "Fi22C2A" ); CharacterTable( "2.U6(2)" ) gap> CharacterTable( "Fi22C2B" ); CharacterTable( "(2x2^(1+8)):U4(2):2" ) Other element centralizers may be not maximal. For example, the 3A centralizer has order 19595520, and it has index two in the 3A normalizer, which is maximal and has the structure $S_3 \times U_4(3).2_2$; so the 3A centralizer has the structure $3 \times U_4(3).2_2$, and its character table can be obtained as follows. gap> s:= CharacterTable( "C3" ) * CharacterTable( "U4(3).2_2" ); CharacterTable( "C3xU4(3).2_2" ) Other element centralizers are very small, so it is no problem to compute them from a representation of the group. All the best, Thomas From dongjc at njau.edu.cn Tue Nov 27 02:15:37 2007 From: dongjc at njau.edu.cn (=?gb2312?B?tq2+rrPJ?=) Date: Tue Nov 27 02:40:29 2007 Subject: [GAP Forum] I am puzzled by the function DihedralGroup(n)! Message-ID: Dear Forum,Dear Everyone: As we all know, a dihedral group $D_{2n}$ is generated by two elements $a$ and $b$ such that $a^n=1,b^2=1$ and $aba=b$. Hence $D_{2n}$ consists of $2n$ elements. However the following statements puzzle me: gap>d8:=DihedralGroup(8); gap>d10:=DihedralGroup(10); The first statement implies that d8 has 3 generators. The second statement implies that d10 has 2 elements. WHY? Best wishes! From dima at ntu.edu.sg Tue Nov 27 04:22:03 2007 From: dima at ntu.edu.sg (Dima Pasechnik) Date: Tue Nov 27 04:19:28 2007 Subject: [GAP Forum] I am puzzled by the function DihedralGroup(n)! In-Reply-To: References: Message-ID: <1196137323.7538.3.camel@localhost> On Tue, 2007-11-27 at 10:15 +0800, ??? wrote: > Dear Forum,Dear Everyone: > As we all know, a dihedral group $D_{2n}$ is > generated by two elements $a$ and $b$ such that $a^n=1,b^2=1$ and $aba=b$. > Hence $D_{2n}$ consists of $2n$ elements. However the following statements puzzle me: > gap>d8:=DihedralGroup(8); > > gap>d10:=DihedralGroup(10); > > The first statement implies that d8 has 3 generators. > The second statement implies that d10 has 2 elements. WHY? the 1st statement just says that this concrete representation has 3 generators. It does not contradict anything. There are many possible representations... HTH, Dmitrii From laurent.bartholdi at gmail.com Tue Nov 27 08:04:13 2007 From: laurent.bartholdi at gmail.com (Laurent Bartholdi) Date: Tue Nov 27 08:04:47 2007 Subject: [GAP Forum] I am puzzled by the function DihedralGroup(n)! In-Reply-To: References: Message-ID: <1ff637850711270004h538cc1bfg3ae66dfe2e5c0db3@mail.gmail.com> Very simple: groups are sometimes presented with minimal generating set, sometimes not. (D_{2n} could also be given by 2n generators; this would be very inefficient). In this case, the groups are finite pc-groups, which means they have a series of subgroups such that the successive quotients are cyclic of prime order. There is one generator per quotient. (try n=12, 14, 16, 18 to see!) If you really need a 2-element generating set, you may consider either 'MinimalGeneratingSet(DihedralGroup(2*n))'; or construct initially the group by 'DihedralGroup(IsPermGroup,2*n)', which gives a permutation group with 2 generators. A question for the GAP people: shouldn't there be a method for 'DihedralGroup(IsFpGroup,2*n)'? On Nov 27, 2007 3:15 AM, ¶­¾®³É wrote: > Dear Forum,Dear Everyone: > As we all know, a dihedral group $D_{2n}$ is generated by two elements $a$ and $b$ such that $a^n=1,b^2=1$ and $aba=b$. Hence $D_{2n}$ consists of $2n$ elements. However the following statements puzzle me: > gap>d8:=DihedralGroup(8); > > gap>d10:=DihedralGroup(10); > > The first statement implies that d8 has 3 generators. The second statement implies that d10 has 2 elements. WHY? > Best wishes! > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > > -- Laurent Bartholdi \ laurent.bartholdigmailcom EPFL SB SMA IMB MAD \ T¨¦l¨¦phone: +41 21-6935458 Station 8 \ Secr¨¦taire: +41 21-6935471 CH-1015 Lausanne, Switzerland \ Fax: +41 21-6930339 From resteban at mat.upv.es Tue Nov 27 08:54:32 2007 From: resteban at mat.upv.es (Ramon Esteban) Date: Tue Nov 27 08:55:03 2007 Subject: [GAP Forum] I am puzzled by the function DihedralGroup(n)! In-Reply-To: References: Message-ID: <20071127085432.GA17362@upvnet.upv.es> Dear colleague, dear forum, * ?????? [071127 04:41]: > Dear Forum,Dear Everyone: > As we all know, a dihedral group $D_{2n}$ is generated by two elements $a$ and $b$ such that $a^n=1,b^2=1$ and $aba=b$. Hence $D_{2n}$ consists of $2n$ elements. However the following statements puzzle me: > gap>d8:=DihedralGroup(8); > > gap>d10:=DihedralGroup(10); > > The first statement implies that d8 has 3 generators. The second statement implies that d10 has 2 elements. WHY? This only means that d8 has a generating system with 3 elements, but it does not mean that the smallest generating system must have 3 elements. For instance, the elements d8.1, of order 2, and d8.2, of order 4, generate the dihedral group: gap> d8:=DihedralGroup(8); gap> Group(d8.1,d8.2)=d8; true This generating system corresponds to an internal representation of the polycyclic (soluble) groups d8 and d10 in which GAP considers a composition series and takes a representative in the group of an element from each composition factor. Every composition series of d8 has 3 composition factors, while every composition series of d10 has 2 factors. This explains the number of generators you have found. You can find the details about the representation of polycyclic groups in the chapter "Pc Groups" of the manual: gap> ?Pc Groups Perhaps you are interested in the function MinimalGeneratingSet: gap> MinimalGeneratingSet(d8); [ f1, f2 ] gap> last=[d8.1,d8.2]; true Hope this helps. Best wishes, -- Ramon Clau p?blica PGP/Llave p?blica PGP/Clef publique PGP/PGP public key: http://www.rediris.es/cert/servicios/keyserver/ http://ttt.upv.es/~resteban/resteban.pgp Nou tel?fon/Nuevo tel?fono/Nouveau t?l?phone/New phone: (+34)963877007 x76676 From nagyg at math.u-szeged.hu Tue Nov 27 08:59:26 2007 From: nagyg at math.u-szeged.hu (=?ISO-8859-2?Q?G=E1bor_Nagy?=) Date: Tue Nov 27 08:56:35 2007 Subject: [GAP Forum] Two questions Message-ID: <474BDC6E.1060306@math.u-szeged.hu> Dear Forum, I have the following questions. 1) Is there a way to access the character table of the general symmetric group? It seems to me that the tables are only stored up to n=18. 2) I would like to use linear programming in GAP. Before I start implementing the simplex method in GAP, I would like to ask if anybody has done it before? This could save me some time. :-) Actually, I already made a very simple GAP interface to Maxima to solve linear programs. If somebody is interested, he/she can contact me. Unfortunately, I am not impressed by Maxima's speed. BTW, I am interested in any kind of implementation of fast exact rational simplex method. Thanks, Gabor From Mathieu.Dutour at ens.fr Tue Nov 27 09:55:48 2007 From: Mathieu.Dutour at ens.fr (Mathieu Dutour) Date: Tue Nov 27 09:56:17 2007 Subject: [GAP Forum] Two questions In-Reply-To: <474BDC6E.1060306@math.u-szeged.hu> References: <474BDC6E.1060306@math.u-szeged.hu> Message-ID: <20071127095547.GA11360@orge.ens.fr> >> 2) I would like to use linear programming in GAP. Before I start >> implementing the simplex method in GAP, I would like to ask if anybody >> has done it before? This could save me some time. :-) >> >> Actually, I already made a very simple GAP interface to Maxima to solve >> linear programs. If somebody is interested, he/she can contact me. >> Unfortunately, I am not impressed by Maxima's speed. You might be interested by my GAP package "polyhedral" available from http://www.liga.ens.fr/~dutour/Polyhedral/index.html which would contain all you need. The problem is that there is no manual, there is a lot of external programs to compile. But overall, it might fit your needs and much more. This is basically the way: write files, call external program, use perl script to convert to GAP readable and load the result back. >> BTW, I am interested in any kind of implementation of fast exact >> rational simplex method. cdd and lrs are such. But this all depends on what you really need. From dima at ntu.edu.sg Tue Nov 27 10:06:10 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Tue Nov 27 10:06:45 2007 Subject: [GAP Forum] Two questions In-Reply-To: <474BDC6E.1060306@math.u-szeged.hu> Message-ID: > BTW, I am interested in any kind of implementation of fast exact > rational simplex method. cdd by Komei Fukuda is one such implementation. http://www.ifor.math.ethz.ch/~fukuda/cdd_home/cdd.html > > Thanks, > > Gabor HTH, -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From kksa at math.ku.dk Tue Nov 27 10:59:05 2007 From: kksa at math.ku.dk (Kasper Andersen) Date: Tue Nov 27 10:59:30 2007 Subject: [GAP Forum] Two questions In-Reply-To: <474BDC6E.1060306@math.u-szeged.hu> References: <474BDC6E.1060306@math.u-szeged.hu> Message-ID: Dear Forum and dear Gabor, For linear programming I can strongly recommend Michel Berkelaar's lpsolve program. best, Kasper Andersen On Tue, 27 Nov 2007, G?bor Nagy wrote: > Dear Forum, > > I have the following questions. > > 1) Is there a way to access the character table of the general symmetric > group? It seems to me that the tables are only stored up to n=18. > > 2) I would like to use linear programming in GAP. Before I start implementing > the simplex method in GAP, I would like to ask if anybody has done it before? > This could save me some time. :-) > > Actually, I already made a very simple GAP interface to Maxima to solve > linear programs. If somebody is interested, he/she can contact me. > Unfortunately, I am not impressed by Maxima's speed. > > BTW, I am interested in any kind of implementation of fast exact rational > simplex method. > > Thanks, > > Gabor > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From jalal at streamyx.com Tue Nov 27 12:02:08 2007 From: jalal at streamyx.com (Jalaluddin Morris) Date: Tue Nov 27 12:03:06 2007 Subject: [GAP Forum] Linear Optimization Message-ID: Dear Forum, I notice that G?bor Nagy is interested in linear programming in GAP, and if he wishes to implement the Simplex Method then I think I have summarized it quite succinctly (although I don't cover anti-cycling very well) in a book I have written on linear optimization which is available at http://www.optimization-online.org/DB_HTML/2007/09/1775.html Regards, Jalaluddin From frank.luebeck at math.rwth-aachen.de Tue Nov 27 12:17:59 2007 From: frank.luebeck at math.rwth-aachen.de (Frank =?iso-8859-1?Q?L=FCbeck?=) Date: Tue Nov 27 12:18:22 2007 Subject: [GAP Forum] Two questions In-Reply-To: <474BDC6E.1060306@math.u-szeged.hu> References: <474BDC6E.1060306@math.u-szeged.hu> Message-ID: <20071127121759.GB1996@beteigeuze> On Tue, Nov 27, 2007 at 09:59:26AM +0100, G?bor Nagy wrote: > 1) Is there a way to access the character table of the general symmetric > group? It seems to me that the tables are only stored up to n=18. Dear G?bor, For 1) try: t := CharacterTable( "Symmetric", 24 ); More infos can be found with '?Generic Character Tables' in the GAP help. With 'ClassParameters(t);' and 'CharacterParameters(t);' you can find the partitions parameterising the classes and irreducible characters. It is also possible to compute single entries or parts of such tables. > 2) I would like to use linear programming in GAP. Before I start > implementing the simplex method in GAP, I would like to ask if anybody > has done it before? This could save me some time. :-) It seems that several sophisticated implementations were already mentioned. I would also suggest to check out these programs and maybe to write a short interface to one of these instead of implementing something from scratch in GAP. (Write to support@gap-system.org if you need help.) Best regards, Frank -- /// Dr. Frank L?beck, Lehrstuhl D f?r Mathematik, Templergraben 64, /// \\\ 52062 Aachen, Germany \\\ /// E-mail: Frank.Luebeck@Math.RWTH-Aachen.De /// \\\ WWW: http://www.math.rwth-aachen.de/~Frank.Luebeck/ \\\ From dima at ntu.edu.sg Tue Nov 27 12:56:09 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Tue Nov 27 12:56:41 2007 Subject: [GAP Forum] Two questions In-Reply-To: Message-ID: lpsolve, being a "classical" implementation of the simplex method, does not do exact rational (i.e. arbitrary precision rational) simplex. Thus it does not scale too well, e.g., on inputs arising in coding theory (computing Delsarte bound, for instance). HTH, Dmitrii On 11/27/07 6:59 PM, "Kasper Andersen" wrote: > Dear Forum and dear Gabor, > > For linear programming I can strongly recommend Michel Berkelaar's lpsolve > program. > > best, Kasper Andersen > > > On Tue, 27 Nov 2007, G?bor Nagy wrote: > >> Dear Forum, >> >> I have the following questions. >> >> 1) Is there a way to access the character table of the general symmetric >> group? It seems to me that the tables are only stored up to n=18. >> >> 2) I would like to use linear programming in GAP. Before I start implementing >> the simplex method in GAP, I would like to ask if anybody has done it before? >> This could save me some time. :-) >> >> Actually, I already made a very simple GAP interface to Maxima to solve >> linear programs. If somebody is interested, he/she can contact me. >> Unfortunately, I am not impressed by Maxima's speed. >> >> BTW, I am interested in any kind of implementation of fast exact rational >> simplex method. >> >> Thanks, >> >> Gabor >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum >> > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From Dursun.Bulutoglu at afit.edu Tue Nov 27 15:06:59 2007 From: Dursun.Bulutoglu at afit.edu (Bulutoglu Dursun A Civ AFIT/ENC) Date: Tue Nov 27 15:09:50 2007 Subject: [GAP Forum] Two questions In-Reply-To: References: Message-ID: <039A0DCC3D66EE4AB9AF11E119287F15035E53AC@ms-afit-04.afit.edu> For exact integer and linear programming I recommend using Qsopt_ex on the NEOS server. Here is the link: http://neos.mcs.anl.gov/neos/solvers/milp:qsopt_ex/LP.html Dursun. -----Original Message----- From: forum-bounces@gap-system.org [mailto:forum-bounces@gap-system.org] On Behalf Of Dmitrii Pasechnik Sent: Tuesday, November 27, 2007 7:56 AM To: Kasper Andersen; G?bor Nagy Cc: forum@gap-system.org Subject: Re: [GAP Forum] Two questions lpsolve, being a "classical" implementation of the simplex method, does not do exact rational (i.e. arbitrary precision rational) simplex. Thus it does not scale too well, e.g., on inputs arising in coding theory (computing Delsarte bound, for instance). HTH, Dmitrii On 11/27/07 6:59 PM, "Kasper Andersen" wrote: > Dear Forum and dear Gabor, > > For linear programming I can strongly recommend Michel Berkelaar's lpsolve > program. > > best, Kasper Andersen > > > On Tue, 27 Nov 2007, G?bor Nagy wrote: > >> Dear Forum, >> >> I have the following questions. >> >> 1) Is there a way to access the character table of the general symmetric >> group? It seems to me that the tables are only stored up to n=18. >> >> 2) I would like to use linear programming in GAP. Before I start implementing >> the simplex method in GAP, I would like to ask if anybody has done it before? >> This could save me some time. :-) >> >> Actually, I already made a very simple GAP interface to Maxima to solve >> linear programs. If somebody is interested, he/she can contact me. >> Unfortunately, I am not impressed by Maxima's speed. >> >> BTW, I am interested in any kind of implementation of fast exact rational >> simplex method. >> >> Thanks, >> >> Gabor >> >> _______________________________________________ >> Forum mailing list >> Forum@mail.gap-system.org >> http://mail.gap-system.org/mailman/listinfo/forum >> > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum From binodkumar at gmail.com Wed Nov 28 15:29:41 2007 From: binodkumar at gmail.com (Binod Kumar Sahoo) Date: Wed Nov 28 15:30:05 2007 Subject: [GAP Forum] getting a set of representatives Message-ID: Dear Members, I want to find a set of representatives of conjugacy classes of involutions in a finite group G. I spent a couple of hours for this with the help of the gap manual. But I could not do that (In fact, I am new to gap system and trying to get acquainted with gap). How to perform this? Binod Kumar Sahoo From hulpke at math.colostate.edu Wed Nov 28 16:51:18 2007 From: hulpke at math.colostate.edu (Alexander Hulpke) Date: Wed Nov 28 16:52:49 2007 Subject: [GAP Forum] getting a set of representatives In-Reply-To: References: Message-ID: <5C08CBC1-8D58-4FF9-972A-49C7AAE0A6C8@math.colostate.edu> Dear Gap-Forum, B. Sahoo asked: > I want to find a set of representatives of conjugacy classes of > involutions > in a finite group G. reps:=Filtered(List(ConjugacyClasses(G),Representative),i->Order(i)=2); Is a brute force method. If your group is very large it will be easier to calculate representatives in the 2-Sylow subgroup (or its normalizer) N:=Normalizer(G,SylowSubgroup(G,2)); sreps:=Filtered(List(ConjugacyClasses(N),Representative),i->Order(i)=2); and then eliminate conjugacy duplicates: reps:=[]; cl:=[]; for i in sreps do if not ForAny(cl,x->i in x) then Add(reps,i); Add(cl,ConjugacyClass(G,i)); fi; od; and then look at `reps'. Best, Alexander Hulpke -- Colorado State University, Department of Mathematics, Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA email: hulpke@math.colostate.edu, Phone: ++1-970-4914288 http://www.math.colostate.edu/~hulpke From ivgelder at vub.ac.be Thu Nov 29 12:01:01 2007 From: ivgelder at vub.ac.be (Inneke Van Gelder) Date: Thu Nov 29 12:01:20 2007 Subject: [GAP Forum] cartesian product Message-ID: <000001c8327f$830557e0$0501a8c0@acerfdba0cedfc> Hi, I need to compute the Cartesian product of an arbitrary number of sets and test the members of the Cartesian product to some conditions. But only a few satisfy the conditions. My problem is that I exceed the permitted memory to soon. Is there a way to compute the Cartesian product member by member and test before saving? If the number of sets is known, it isn't difficult, because you can avoid recursion. But what about an arbitrary number of sets? Thanks for helping, Inneke From soicram at icmc.usp.br Thu Nov 29 12:44:52 2007 From: soicram at icmc.usp.br (=?iso-8859-1?Q?M=E1rcio_de_Jesus_Soares?=) Date: Thu Nov 29 12:45:08 2007 Subject: [GAP Forum] Resolution Message-ID: <62117.201.95.149.105.1196340292.squirrel@mail2.icmc.usp.br> Hi list, I want to know if GAP calculates resolutions for finite groups, Indeed, for semi-direct product. Thanks for attention, M?rcio J. Soares ---------------------------- S?o Carlos/ SP Tel.(16) 3371-8045 ---------------------------- From dima at ntu.edu.sg Thu Nov 29 14:01:26 2007 From: dima at ntu.edu.sg (Dmitrii Pasechnik) Date: Thu Nov 29 14:01:58 2007 Subject: [GAP Forum] cartesian product In-Reply-To: <000001c8327f$830557e0$0501a8c0@acerfdba0cedfc> Message-ID: Inneke, this looks like a straightforward programming task: think of elements of your product as indexed by lists, or better, as "numbers in mixed base" (e.g. if all yours sets are of size 10 then these numbers will be usual decimal numbers). All you need to implement is a function that computes the "next number", and this is really less than 10 lines of GAP code. Then you call this function in a repeat/until loop, and store the elements that satisfy your conditions only. HTH, m.v.g., Dmitrii On 11/29/07 8:01 PM, "Inneke Van Gelder" wrote: > Hi, > > > > > > I need to compute the Cartesian product of an arbitrary number of sets and > test the members of the Cartesian product to some conditions. But only a few > satisfy the conditions. My problem is that I exceed the permitted memory to > soon. Is there a way to compute the Cartesian product member by member and > test before saving? If the number of sets is known, it isn't difficult, > because you can avoid recursion. But what about an arbitrary number of sets? > > > > > > Thanks for helping, > > > > Inneke > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum -- Dima Pasechnik http://www.ntu.edu.sg/home/dima/ From wdjoyner at gmail.com Thu Nov 29 14:46:38 2007 From: wdjoyner at gmail.com (David Joyner) Date: Thu Nov 29 14:47:07 2007 Subject: [GAP Forum] Resolution In-Reply-To: <62117.201.95.149.105.1196340292.squirrel@mail2.icmc.usp.br> References: <62117.201.95.149.105.1196340292.squirrel@mail2.icmc.usp.br> Message-ID: <8cf963450711290646g35ffcf5bwc4649b20ae9703e1@mail.gmail.com> You might want to look at HAP and Crime: http://www.gap-system.org/Packages/crime.html http://www.gap-system.org/Packages/hap.html On Nov 29, 2007 7:44 AM, M?rcio de Jesus Soares wrote: > Hi list, > > I want to know if GAP calculates resolutions for finite groups, Indeed, > for semi-direct product. > > Thanks for attention, > > M?rcio J. Soares > > ---------------------------- > S?o Carlos/ SP > Tel.(16) 3371-8045 > ---------------------------- > > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > From alexander.konovalov at gmail.com Thu Nov 29 15:42:14 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Thu Nov 29 15:42:41 2007 Subject: [GAP Forum] cartesian product In-Reply-To: <000001c8327f$830557e0$0501a8c0@acerfdba0cedfc> References: <000001c8327f$830557e0$0501a8c0@acerfdba0cedfc> Message-ID: <3856BA0C-B47B-4983-B40F-A145ACF12A40@gmail.com> Dear Inneke, I can provide temporary workaround for this, which will work with GAP 4.4.10. This is expected to appear in one of the future versions of GAP. 1) Create a file "iterator.gd" with the following content (and observer the description in the comments (it has GAPDoc format, please ask me if you will need further explanations): ############################################################################# ## #F IteratorOfCartesianProduct( list1, list2, ... ) #F IteratorOfCartesianProduct( list ) ## ## <#GAPDoc Label="IteratorOfCartesianProduct"> ## ## ## ## ## ## In the first form IteratorOfCartesianProduct returns ## an iterator (see ) of all elements # of the cartesian product (see ) # of the lists list1, list2, etc. ##

## In the second form list must be a list of lists ## list1, list2, etc., and IteratorOfCartesianProduct ## returns an iterator of the cartesian product of those lists. ##

## Resulting tuples will be returned in the lexicographic order. ## Usage of iterators of cartesian products is recommended in the ## case when the resulting cartesian product is big enough, so its ## generating and storage will require essential amount of runtime ## and memory. For smaller cartesian products it is faster to ## generate the full set of tuples using ## and then loop over its elements (with some minor overhead of needing ## more memory). ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "IteratorOfCartesianProduct" ); 2) Create a file "iterator.gi" with the following content: ############################################################################# ## #F IteratorOfCartesianProduct( list1, list2, ... ) #F IteratorOfCartesianProduct( list ) ## ## All elements of the cartesian product of lists ## , , ... are returned in the lexicographic order. ## BindGlobal( "IsDoneIterator_Cartesian", iter -> ( iter!.next = false ) ); BindGlobal( "NextIterator_Cartesian", function( iter ) local succ, n, sets, res, i, k; succ := iter!.next; n := iter!.n; sets := iter!.sets; res := []; i := n; while i > 0 do res[i] := sets[i][succ[i]]; i := i-1; od; if succ = iter!.sizes then iter!.next := false; else succ[n] := succ[n] + 1; for k in [n,n-1..2] do if succ[k] > iter!.sizes[k] then succ[k] := 1; succ[k-1] := succ[k-1] + 1; else break; fi; od; fi; return res; end); BindGlobal( "ShallowCopy_Cartesian", iter -> rec( sizes := iter!.sizes, n := iter!.n, next := ShallowCopy( iter!.next ) ) ); BindGlobal( "IteratorOfCartesianProduct2", function( listsets ) local s, n, x; if not ForAll( listsets, IsCollection ) and ForAll( listsets, IsFinite ) then Error( "Each arguments must be a finite collection" ); fi; s := List( listsets, Set ); n := Length( s ); # from now s is a list of n finite sets return IteratorByFunctions( rec( IsDoneIterator := IsDoneIterator_Cartesian, NextIterator := NextIterator_Cartesian, ShallowCopy := ShallowCopy_Cartesian, sets := s, # list of sets sizes := List( s, Size ), # sizes of sets n := n, # number of sets nextelts := List( s, x -> x[1] ), # list of 1st elements next := 0 * [ 1 .. n ] + 1 ) ); # list of 1's end); InstallGlobalFunction( "IteratorOfCartesianProduct", function( arg ) # this mimics usage of functions Cartesian and Cartesian2 if Length( arg ) = 1 then return IteratorOfCartesianProduct2( arg[1] ); else return IteratorOfCartesianProduct2( arg ); fi; return; end); 3) Read first gd-file and then gi-file (assuming that they are in the current directory, otherwise state full path to the file): gap> Read("iterator.gd"); gap> Read("iterator.gi"); 4) Now you can do the following: gap> it:=IteratorOfCartesianProduct([1,2],[3,4]); gap> for i in it do Print(i,"\n");od; [ 1, 3 ] [ 1, 4 ] [ 2, 3 ] [ 2, 4 ] or gap> it:=IteratorOfCartesianProduct([[1,2],["a","b"]]); gap> for i in it do Print(i,"\n");od; [ 1, "a" ] [ 1, "b" ] [ 2, "a" ] [ 2, "b" ] i.e. you may have one argument that is a list of lists, or N arguments, each being a list. 5) You may read these two files in the beginning of your GAP session, putting appropriate commands in the gaprc file (type ?.gaprc in the GAP prompt to see the documentation). You shouldn't re-read them each time when you reread your own code. Hope this is just what you need! Best wishes, Alexander On 29 Nov 2007, at 12:01, Inneke Van Gelder wrote: > Hi, > > > > > > I need to compute the Cartesian product of an arbitrary number of > sets and > test the members of the Cartesian product to some conditions. But > only a few > satisfy the conditions. My problem is that I exceed the permitted > memory to > soon. Is there a way to compute the Cartesian product member by > member and > test before saving? If the number of sets is known, it isn't > difficult, > because you can avoid recursion. But what about an arbitrary number > of sets? > > > > > > Thanks for helping, > > > > Inneke From graham.ellis at nuigalway.ie Thu Nov 29 19:04:42 2007 From: graham.ellis at nuigalway.ie (Ellis, Grahamj) Date: Thu Nov 29 19:08:38 2007 Subject: [GAP Forum] Resolution References: <62117.201.95.149.105.1196340292.squirrel@mail2.icmc.usp.br> <8cf963450711290646g35ffcf5bwc4649b20ae9703e1@mail.gmail.com> Message-ID: <7BC4FCB2B695D64CBF525CEC6437532701BA32C1@EVS1.ac.nuigalway.ie> On Nov 29, 2007 7:44 AM, M?rcio de Jesus Soares wrote: > Hi list, > > I want to know if GAP calculates resolutions for finite groups, Indeed, > for semi-direct product. > > Thanks for attention, > > M?rcio J. Soares > > ---------------------------- > S?o Carlos/ SP > Tel.(16) 3371-8045 > ---------------------------- > > > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > gap> #An integral resolution for a smallish finite group can be found as follows: gap> G:=SymmetricGroup(4);; gap> R:=ResolutionFiniteGroup(G,20);; gap> #The ZG-ranks of the first 21 terms of the resolution are: gap> List([0..20],Dimension(R)); [ 1, 3, 6, 10, 15, 21, 28, 36, 41, 45, 50, 53, 55, 58, 63, 70, 77, 83, 90, 95, 97 ] gap> #An integral resolution for a larger finite group G might be found using gap> #a suitable normal subgroup N. (This applies in the case of semi-direct products.) For example: gap> G:=DihedralGroup(512);; gap> N:=NormalSubgroups(G)[11];; gap> R:=ResolutionNormalSeries([G,N,Group(Identity(G))],50);; gap> #The ZG-ranks of the first 51 terms of the resolution are: gap> List([0..50],Dimension(R)); [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 ] While I'm on the Forum I'd like to mention an unrelated topic; I'm trying to develop a "MINIMAL set of CORE functions for ELEMENTARY distributed GAP computations". I'm hoping that these might (at some future stage) be a useful complement to the comprehensive set of ParGap functions. If you are interested, see http://hamilton.nuigalway.ie/Hap/www/SideLinks/About/aboutParallel.html and http://hamilton.nuigalway.ie/Hap/doc/chap18.html#s0ss0 I'm new to distributed computing, so any feedback (positive or negative) would be welcome. All the best, Graham (Ellis) From phjelmstad at msn.com Tue Dec 4 04:36:43 2007 From: phjelmstad at msn.com (PAUL HJELMSTAD) Date: Tue Dec 4 04:37:19 2007 Subject: [GAP Forum] Cartesian Group Direct Product Message-ID: Can someone tell me what the right function is for the "Cartesian" style group direct product? (For example, D4 X S3)? I know they use the double-format for dihedral groups, so this would be Dihedral(8) I guess. The one I have been playing with isn't right for my purposes, taking sums instead of Cartesian products. I need the form that ends up with 12 terms in its cycle-structure G X H Thanks PGH From justin at mac.com Tue Dec 4 06:13:51 2007 From: justin at mac.com (Justin C. Walker) Date: Tue Dec 4 06:16:39 2007 Subject: [GAP Forum] Cartesian Group Direct Product In-Reply-To: References: Message-ID: Dear Paul & Forum, On Dec 3, 2007, at 20:36 , PAUL HJELMSTAD wrote: > Can someone tell me what the right function is for the "Cartesian" > style group direct product? > (For example, D4 X S3)? I know they use the double-format for > dihedral groups, so this would > be Dihedral(8) I guess. > > The one I have been playing with isn't right for my purposes, > taking sums instead of Cartesian products. I need the form that > ends up with 12 terms in its cycle-structure G X H The manual describes something called, suspiciously, DirectProduct :-}. Does that help? Trying your example: gap> D4:=DihedralGroup(4); gap> S3:=SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> G:=DirectProduct(D4,S3); and looking at G, it may not be quite what you want :-} (it's combining a PC group and a permutation group), but you may be able to coax it into something useful for you. FWIW, Gap comes with an index that covers all 5 of the manuals. Justin -- Justin C. Walker, Curmudgeon at Large Director Institute for the Enhancement of the Director's Income ----------- Nobody knows the trouble I've been ----------- From dongjc at njau.edu.cn Tue Dec 4 07:50:32 2007 From: dongjc at njau.edu.cn (=?gb2312?B?tq2+rrPJ?=) Date: Tue Dec 4 07:58:50 2007 Subject: [GAP Forum] algorithm for finding orthogonal central primitive idempotents Message-ID: Dear forum,Dear everyone: I would like to know the algorithm of the function CentralIdempotentsOfAlgebra( A ).Please tell me if you know. Best wishes! Jingcheng Dong From jack at ms.uky.edu Tue Dec 4 14:07:40 2007 From: jack at ms.uky.edu (Jack Schmidt) Date: Tue Dec 4 14:08:12 2007 Subject: [GAP Forum] algorithm for finding orthogonal central primitive idempotents In-Reply-To: References: Message-ID: <47555F2C.7040606@ms.uky.edu> Every algorithm in GAP is given in full for users to read and understand. This one is stored in lib/algebra.gi and an overview is given of how it works in that file (around line 3400). At the end of the overview is the comment: ## For a more elaborate description we refer to "W. Eberly and M. ## Giesbrecht, Efficient Decomposition of Associative Algebras, ## Proceedings of ISSAC 1996." After that comment, the full source code of CentralIdempotentsOfAlgebra is given. ??? wrote: > Dear forum,Dear everyone: > I would like to know the algorithm of the function CentralIdempotentsOfAlgebra( A ).Please tell me if you know. > Best wishes! > Jingcheng Dong From ivgelder at vub.ac.be Sat Dec 8 17:59:01 2007 From: ivgelder at vub.ac.be (Inneke Van Gelder) Date: Sat Dec 8 17:59:46 2007 Subject: [GAP Forum] Knuth Bendix Message-ID: <000001c839c4$03afb840$0501a8c0@acerfdba0cedfc> Dear Gap-Forum, I have a problem with the Knuth Bendix algorithm. When I do the following gap> S:=FreeMonoid(2); gap> S:=FreeMonoid(3); gap> Gen:=GeneratorsOfMonoid(S); [ m1, m2, m3 ] gap> Rel:=[[Gen[1]*Gen[2],Gen[2]*Gen[3]],[Gen[2]*Gen[1],Gen[3]*Gen[2]],[Gen[1]*Ge n[3],Gen[3]*Gen[1]]]; [ [ m1*m2, m2*m3 ], [ m2*m1, m3*m2 ], [ m1*m3, m3*m1 ] ] gap> S:=S/Rel; gap> Gen:=GeneratorsOfMonoid(S); [ m1, m2, m3 ] gap> Gen[1]*Gen[3]=Gen[3]*Gen[1]; user interrupt at k := k + 1; called from KBOverlaps( i[1], i[2], kbrws, p ) called from KB_REW.MakeKnuthBendixRewritingSystemConfluent( rws ); called from MakeKnuthBendixRewritingSystemConfluent( kbrws ); called from MakeConfluent( kbrws ); called from ReducedConfluentRewritingSystem( M, wordord ) called from ... Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue Then I'm dealing with an infinitely loop. But when I take the relations [[Gen[1]*Gen[2],Gen[2]*Gen[1]],[Gen[1]*Gen[3],Gen[2]*Gen[3]],[Gen[2]*Gen[3], Gen[3]*Gen[2]]] I have no problem, although this is isomorphic with the other one. Is there a way to avoid this for some specific monoids? Thanks for helping, Best regards, Inneke From phjelmstad at msn.com Sun Dec 9 02:20:29 2007 From: phjelmstad at msn.com (PAUL HJELMSTAD) Date: Sun Dec 9 02:21:00 2007 Subject: [GAP Forum] Cartesian Group Direct Product In-Reply-To: Message-ID: Thanks, I know about that one. And you need to make them both Permutation Groups, BTW, but what I really need is a Cartesian style (cross) product, as a Group Direct Product, I tried Semidirect Product but that doesn't seem to be it either. Perhaps, it would be a simple program I could write to achieve the same result... >From: "Justin C. Walker" >To: forum@gap-system.org >Subject: Re: [GAP Forum] Cartesian Group Direct Product >Date: Mon, 3 Dec 2007 22:13:51 -0800 > >Dear Paul & Forum, > >On Dec 3, 2007, at 20:36 , PAUL HJELMSTAD wrote: > >>Can someone tell me what the right function is for the "Cartesian" style >>group direct product? >>(For example, D4 X S3)? I know they use the double-format for dihedral >>groups, so this would >>be Dihedral(8) I guess. >> >>The one I have been playing with isn't right for my purposes, taking sums >>instead of Cartesian products. I need the form that ends up with 12 terms >>in its cycle-structure G X H > >The manual describes something called, suspiciously, DirectProduct :-}. >Does that help? > >Trying your example: > >gap> D4:=DihedralGroup(4); > >gap> S3:=SymmetricGroup(3); >Sym( [ 1 .. 3 ] ) >gap> G:=DirectProduct(D4,S3); > > >and looking at G, it may not be quite what you want :-} (it's combining a >PC group and a permutation group), but you may be able to coax it into >something useful for you. > >FWIW, Gap comes with an index that covers all 5 of the manuals. > >Justin > >-- >Justin C. Walker, Curmudgeon at Large >Director >Institute for the Enhancement of the Director's Income >----------- >Nobody knows the trouble I've been >----------- > > > >_______________________________________________ >Forum mailing list >Forum@mail.gap-system.org >http://mail.gap-system.org/mailman/listinfo/forum From hulpke at mac.com Sun Dec 9 04:59:53 2007 From: hulpke at mac.com (Alexander Hulpke) Date: Sun Dec 9 05:01:13 2007 Subject: [GAP Forum] Cartesian Group Direct Product In-Reply-To: References: Message-ID: <1DEFFFEB-8F7A-4080-B0B6-FDD71885EACD@mac.com> Dear GAP-Forum, Dear Paul Hjelmstad, > Thanks, I know about that one. And you need to make them both > Permutation Groups, > BTW, but what I really need is a Cartesian style (cross) product, > as a Group Direct Product, > I tried Semidirect Product but that doesn't seem to be it either. `DirectProduct' will work for any pair of groups. It will choose a representation that is most efficient, i.e. for two permutation groups it will represent the product as permutation group of larger degree. The functions `Embedding' and `Projection' create the natural maps that allom composition or decomposition acording to the form as cartesian product. I.e. e1:=Embedding(product,1); e2:=Embedding(product,2); Then Image(e1,x) gives the first component of x as element of the diurect product, Image(e2,x) the second component. Anything that could be done using a formal product represnetation can be done with these maps. Best, Alexander Hulpke From Ayan.Mahalanobis at stevens.edu Mon Dec 10 19:58:41 2007 From: Ayan.Mahalanobis at stevens.edu (Ayan Mahalanobis) Date: Mon Dec 10 19:58:33 2007 Subject: [GAP Forum] specail linear group recognization In-Reply-To: <1DEFFFEB-8F7A-4080-B0B6-FDD71885EACD@mac.com> References: <1DEFFFEB-8F7A-4080-B0B6-FDD71885EACD@mac.com> Message-ID: <475D9A71.9090005@stevens.edu> Hello Forum, I am trying to find out whether a set generates the special linear group over a given finite field. In my quest I pick a set of matrices and then generate the group by them using the Group function. Then I issue the command group=SL(d,q), where d is the degree of the matrix and the q is the finite field. But this is not successful even for small d and q. So basically my question is: Is there a better way to check that a given group ( given as a matrix group by generators) equals the special linear group? Regards, Ayan From r_n_tsai at yahoo.com Mon Dec 10 20:24:24 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Mon Dec 10 20:25:03 2007 Subject: [GAP Forum] subalgebras of simple lie algebras Message-ID: <646375.33692.qm@web34403.mail.mud.yahoo.com> Dear gap-forum, Is there a way to look for subalgebras of certain type in a simple lie algebra. Interestingly enough the example in the documentation is very close to what I'm looking for : gap> L:= SimpleLieAlgebra( "E", 8, Rationals );; gap> b:= BasisVectors( Basis( L ) );; gap> K:= LieCentralizer( L, Subalgebra( L, [ b[61]+b[79]+b[101]+b[102] ] ) ); gap> lev:= LeviMalcevDecomposition(K);; gap> SemiSimpleType( lev[1] ); "B3 A1" I need to find "F4 G2" and "D4 D4" types in E8. Any suggestions or references where the particular example in the docs came from would be very helpful. Thanks, R.N. --------------------------------- Never miss a thing. Make Yahoo your homepage. From pbrooksb at bucknell.edu Mon Dec 10 20:38:28 2007 From: pbrooksb at bucknell.edu (Peter Brooksbank) Date: Mon Dec 10 20:39:06 2007 Subject: [GAP Forum] specail linear group recognization In-Reply-To: <475D9A71.9090005@stevens.edu> References: <1DEFFFEB-8F7A-4080-B0B6-FDD71885EACD@mac.com> <475D9A71.9090005@stevens.edu> Message-ID: <8EF33AB4-89AE-4DA9-BF9C-8AD0F38374CD@bucknell.edu> Hello Ayan, There is a better way to do this, but it does not seem to be implemented yet in GAP (at least it isn't on the somewhat dated version that I just tried). The function will eventually be IsNaturalSL ( matgrp ) At present this function seems to be computing the order of the matrix group and comparing it to the order of SL. As with the method you tried, this is very slow, even over modest dimensions and field sizes. Does anyone know whether this function is likely to be upgraded in coming releases? Best Regards, Peter On Dec 10, 2007, at 2:58 PM, Ayan Mahalanobis wrote: > Hello Forum, > > I am trying to find out whether a set generates the special linear > group over a given finite field. In my quest I pick a set of > matrices and then generate the group by them using the Group > function. Then I issue the command group=SL(d,q), where d is the > degree of the matrix and the q is the finite field. But this is not > successful even for small d and q. > > So basically my question is: Is there a better way to check that a > given group ( given as a matrix group by generators) equals the > special linear group? > > Regards, > Ayan > > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum From reichard at maths.uwa.edu.au Tue Dec 11 02:50:54 2007 From: reichard at maths.uwa.edu.au (Sven Reichard) Date: Tue Dec 11 02:51:34 2007 Subject: [GAP Forum] Cartesian Group Direct Product In-Reply-To: References: Message-ID: <475DFB0E.9040007@maths.uwa.edu.au> PAUL HJELMSTAD wrote: > Can someone tell me what the right function is for the "Cartesian" style > group direct product? > (For example, D4 X S3)? I know they use the double-format for dihedral > groups, so this would > be Dihedral(8) I guess. > > The one I have been playing with isn't right for my purposes, taking > sums instead of Cartesian products. I need the form that ends up with 12 > terms in its cycle-structure G X H > > Thanks > Paul, the following may be what you were looking for: DirectProductProductAction := function ( G, H ) local sum, domain, product; sum := DirectProduct( G, H ); domain := Cartesian( [ 1 .. LargestMovedPoint( G ) ], [ 1 .. LargestMovedPoint( H ) ] + LargestMovedPoint( G ) ); product := Action( sum, domain, OnTuples ); return product; end gap> D4 := Group((1,2,3,4),(1,3)); Group([ (1,2,3,4), (1,3) ]) gap> S3 := SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> DirectProductProductAction(D4, S3); Group([ (1,4,7,10)(2,5,8,11)(3,6,9,12), (1,7)(2,8)(3,9), (1,2,3)(4,5,6)(7,8,9)(10,11,12), (1,2)(4,5)(7,8)(10,11) ]) Sven. -- Sven Reichard School of Mathematics and Statistics The University of Western Australia 35 Stirling Highway Crawley 6009 Western Australia From murray at maths.usyd.edu.au Tue Dec 11 03:44:59 2007 From: murray at maths.usyd.edu.au (Scott H. Murray) Date: Tue Dec 11 03:45:57 2007 Subject: [GAP Forum] subalgebras of simple lie algebras In-Reply-To: <646375.33692.qm@web34403.mail.mud.yahoo.com> Message-ID: Dear R.N., Here is a subalgebra of type D4D4 in E8: gap> L := SimpleLieAlgebra("E",8,Rationals); gap> chev := ChevalleyBasis(L);; gap> chev := Concatenation( chev[1], chev[2] );; gap> M := Subalgebra(L, List( > [ 2, 3, 4, 5, 7, 8, 97, 61, 122, 123, 124, 125, 127, 128, 217, 181 ], > i -> chev[i] ) ); gap> SemiSimpleType(M); "D4 D4" Dynkin (1952) gives a classification of semisimple subalgebras of simple Lie algebras. He uses extended Dynkin diagrams, and that is how I found D4D4. The Magma code used is attached. I don't know how to do the whole computation in GAP -- I was able to copy the result over to GAP because the two systems use the same bases for Lie algebras. F4G2 cannot be a rational subalgebra of E8(Q). Taking subdiagrams of extended Dynkin diagrams repeatedly never gives an F4 or a G2, unless you start with an F4 or G2 respectively. It might be a subalgebra over an extension of the rationals. For example, F4 is a subalgebra of E6 over Q(sqrt(2)) [see table 24 in Dynkin's paper]. Deriziotis showed that all the rational subalgebras gotten by Dynkin's classification can be found as centralisers of semisimple elements -- I assume this is how the documentation example works. All the best, Scott. ------------------------------------------------------- Scott H. Murray, Dept of Mathematics, Univ of Sydney Email: murray@maths.usyd.edu.au Homepage: http://www.maths.usyd.edu.au:8000/u/murray/ Phone: +61 2 9351-3881 ------------------------------------------------------- On Mon, 10 Dec 2007, R.N. Tsai wrote: > Dear gap-forum, > > Is there a way to look for subalgebras of certain type in a simple lie > algebra. Interestingly enough the example in the documentation is > very close to what I'm looking for : > > gap> L:= SimpleLieAlgebra( "E", 8, Rationals );; > gap> b:= BasisVectors( Basis( L ) );; > gap> K:= LieCentralizer( L, Subalgebra( L, [ b[61]+b[79]+b[101]+b[102] ] ) ); > > gap> lev:= LeviMalcevDecomposition(K);; > gap> SemiSimpleType( lev[1] ); > "B3 A1" > > I need to find "F4 G2" and "D4 D4" types in E8. Any suggestions or references > where the particular example in the docs came from would be very helpful. > > Thanks, > > R.N. > > > --------------------------------- > Never miss a thing. Make Yahoo your homepage. > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > > -------------- next part -------------- highestNegRts := function( R ) sc, h := SimplyConnectedVersion( R ); return { RootPosition(R,h(Root(C,2*NumPosRoots(C)))) : C in DirectSumDecomposition(sc) }; end function; maxlSubs := function( R ) n := Rank( R ); rts := [1..n] cat Setseq(highestNegRts( R )); return [sub< R | Seqset( Remove( rts, i ) ) > : i in [1..n] ]; end function; R := RootDatum("E8"); allsubs := maxlSubs( R ); allsubs; allsubs := allsubs[[1,6,7,8]]; allsubs := &cat[ maxlSubs(S) : S in allsubs ]; for i in [1..#allsubs] do print i, CartanName(allsubs[i]); end for; allsubs := allsubs[[1,5,8,17,31]]; allsubs := &cat[ maxlSubs(S) : S in allsubs ]; for i in [1..#allsubs] do print i, CartanName(allsubs[i]); end for; S := allsubs[5]; L := LieAlgebra(R,Rationals()); A, B := ChevalleyBasis(L); chev := A cat B; pos := [ RootPosition( R, Root(S,i) ) : i in [1..8] ]; pos cat:= [ Negative( R, r ) : r in pos ]; pos; M := sub< L | chev[pos] >; SemisimpleType(M); > highestNegRts := function( R ) function> sc, h := SimplyConnectedVersion( R ); function> return { RootPosition(R,h(Root(C,2*NumPosRoots(C)))) : function|return> C in DirectSumDecomposition(sc) }; function> end function; > > maxlSubs := function( R ) function> n := Rank( R ); function> rts := [1..n] cat Setseq(highestNegRts( R )); function> return [sub< R | Seqset( Remove( rts, i ) ) > : i in [1..n] ]; function> end function; > > R := RootDatum("E8"); > allsubs := maxlSubs( R ); > allsubs; [ Root datum of dimension 8 of type D8 , Root datum of dimension 8 of type A8 , Root datum of dimension 8 of type A1 A7 , Root datum of dimension 8 of type A2 A1 A5 , Root datum of dimension 8 of type A4 A4 , Root datum of dimension 8 of type D5 A3 , R: Root datum of dimension 8 of type E6 A2 , Root datum of dimension 8 of type E7 A1 ] > allsubs := allsubs[[1,6,7,8]]; > allsubs := &cat[ maxlSubs(S) : S in allsubs ]; > for i in [1..#allsubs] do print i, CartanName(allsubs[i]); end for; 1 D8 2 D8 3 A1 A1 D6 4 A3 D5 5 D4 D4 6 D5 A3 7 D6 A1 A1 8 D8 9 D5 A3 10 D5 A3 11 A1 A3 A3 A1 12 A3 A1 A1 A3 13 D5 A3 14 D5 A3 15 D5 A3 16 D5 A3 17 E6 A2 18 A5 A2 A1 19 A1 A5 A2 20 A2 A2 A2 A2 21 A5 A1 A2 22 E6 A2 23 E6 A2 24 E6 A2 25 D6 A1 A1 26 A7 A1 27 A2 A5 A1 28 A3 A1 A3 A1 29 A5 A2 A1 30 D6 A1 A1 31 E7 A1 32 E7 A1 > allsubs := allsubs[[1,5,8,17,31]]; > allsubs := &cat[ maxlSubs(S) : S in allsubs ]; > for i in [1..#allsubs] do print i, CartanName(allsubs[i]); end for; 1 D8 2 D8 3 A1 A1 D6 4 A3 D5 5 D4 D4 6 D5 A3 7 D6 A1 A1 8 D8 9 D4 D4 10 D4 D4 11 A1 A1 A1 D4 A1 12 D4 D4 13 D4 D4 14 D4 A1 A1 A1 A1 15 D4 D4 16 D4 D4 17 D8 18 D8 19 A1 A1 D6 20 A3 D5 21 D4 D4 22 D5 A3 23 D6 A1 A1 24 D8 25 E6 A2 26 A5 A2 A1 27 A1 A5 A2 28 A2 A2 A2 A2 29 A5 A1 A2 30 E6 A2 31 E6 A2 32 E6 A2 33 D6 A1 A1 34 A7 A1 35 A2 A5 A1 36 A3 A1 A3 A1 37 A5 A2 A1 38 D6 A1 A1 39 E7 A1 40 E7 A1 > > S := allsubs[5]; > L := LieAlgebra(R,Rationals()); > A, B := ChevalleyBasis(L); > chev := A cat B; > pos := [ RootPosition( R, Root(S,i) ) : i in [1..8] ]; > pos cat:= [ Negative( R, r ) : r in pos ]; > pos; [ 2, 3, 4, 5, 7, 8, 97, 61, 122, 123, 124, 125, 127, 128, 217, 181 ] > M := sub< L | chev[pos] >; > SemisimpleType(M); D4 D4 > From mim_ at op.pl Tue Dec 11 13:36:18 2007 From: mim_ at op.pl (mim_@op.pl) Date: Tue Dec 11 13:36:47 2007 Subject: [GAP Forum] subalgebras of simple lie algebras Message-ID: Hello R.N., I have not yet obtained nice matrix generators of compact e8. I am working on it. I have them for e7 finally. Unfortunately simple lie algebras in GAP are not compact. My intuitions are following - obtained from Baez work "Octonions" and others. Assume we have decomposition of e8 base: e8=Tri(O)+24*8+Tri(O) Tri(O) is so8 in notation from Barton, Sudbery (see Baez for detail). We know that f4=Tri(O)+3*8 So if we have first decomposition then e8=Tri(O)+3*8 +21*8+Tri(O) We decompose second Tri(O) as Tri(O)=so8=g2+2*7 2*7 is generated by left and right octonion multiplications g2 are derivations of O. Then we obtain decompostion of e8 into F4+G2+ 21*8+2*7. Regards, Marek Mitros From vince at math.uconn.edu Tue Dec 11 20:34:18 2007 From: vince at math.uconn.edu (Vince Giambalvo) Date: Tue Dec 11 20:33:08 2007 Subject: [GAP Forum] Orbits of Modular actions In-Reply-To: References: Message-ID: <5F27DCDF-389B-4984-8BD7-6A9259631F0E@math.uconn.edu> Dear Forum, The action of GL(n, Z/p) on the vector space of dimension n over Z/p extends by multiplication to an action on the polynomial algebra with n variables. I would like to compute the orbits, or equivalently, the stabilizers of the action on the polynomials of some fixed small degree (for example 2). But I cannot (with my limited GAP knowledge) figure out how to set this up. Any hints? Thanks for your help. Vince From thomas.breuer at math.rwth-aachen.de Wed Dec 12 12:16:34 2007 From: thomas.breuer at math.rwth-aachen.de (Thomas Breuer) Date: Wed Dec 12 12:17:06 2007 Subject: [GAP Forum] Quaternion vs real algebras Message-ID: <20071212121634.GA19124@gemma.math.rwth-aachen.de> Dear GAP Forum, about two weeks ago, Marek Mitros asked a question about dealing with matrices over quaternion algebras. > I want to define real lie algebra using quaternion matrices. > How to do this ? > See below code with example. > It seems that there is no way in GAP to convert algebra over quaternions > into algebra over reals (Rationals) !? In private communication with Marek, it turned out that the function `ComplexificationQuat' is sufficient for the conversion in one direction. For example, one can do the following. gap> H:= QuaternionAlgebra( Rationals );; gap> bh:= Basis( H );; gap> e:= bh[1];; gap> i:= bh[2];; gap> j:= bh[3];; gap> k:= bh[4];; gap> z:= Zero( H );; gap> a1:= [ [z,i], [i,z] ]; [ [ 0*e, i ], [ i, 0*e ] ] gap> c1:= ComplexificationQuat( a1 ); [ [ 0, E(4), 0, 0 ], [ E(4), 0, 0, 0 ], [ 0, 0, 0, -E(4) ], [ 0, 0, -E(4), 0 ] ] The conversion in the other direction is currently not supported by the GAP library, but from the documentation of `ComplexificationQuat', a simpleminded version could be written as follows. QuatMatrixFromComplexification:= function( mat, bas ) local d, A11, A12, A21, A22, N1, N2, N3, N4; d:= Length( mat ) / 2; A11:= mat{ [ 1 .. d ] }{ [ 1 .. d ] }; A12:= mat{ [ 1 .. d ] }{ [ d+1 .. 2*d ] }; A21:= mat{ [ d+1 .. 2*d ] }{ [ 1 .. d ] }; A22:= mat{ [ d+1 .. 2*d ] }{ [ d+1 .. 2*d ] }; N1:= ( A11 + A22 ) / 2; N2:= E(4) * ( N1 - A11 ); N3:= ( A12 - A21 ) / 2; N4:= E(4) * ( N3 - A12 ); return bas[1] * N1 + bas[2] * N2 + bas[3] * N3 + bas[4] * N4; end; Then for example the following works. gap> A:= H^[2,2];; gap> a1:= Random( A );; gap> a2:= Random( A );; gap> c1:= ComplexificationQuat( a1 );; gap> c2:= ComplexificationQuat( a2 );; gap> x:= LieBracket( c1, c2 );; gap> xx:= QuatMatrixFromComplexification( x, bh );; gap> ComplexificationQuat( xx ) = x; true All the best, Thomas From r_n_tsai at yahoo.com Sat Dec 15 21:35:58 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Sat Dec 15 21:36:44 2007 Subject: [GAP Forum] semisimple algebra invariant subspace decomposition Message-ID: <590725.48796.qm@web34415.mail.mud.yahoo.com> Dear gap-forum, I am trying to calculate this decomposition of semisimple Lie algebras : d4 occurs as a subalgebra of f4; it action on f4 can be broken into these invariant subspaces : f4 = d4 + V8 + V8' + V8'' (dimensions : 52 = 28 + 8 + 8 + 8) (this should be the same as the branching rule for the adjoint rep of f4 into ireps of d4). I was able to do that for F4 as an algebra; the code below Test1:=function()local F4,D4,bF4,bD4,vD4,T,TT,V,M,t; # define F4 F4:=SimpleLieAlgebra("F",4,DefaultField([ER(2),ER(3)])); Print(SemiSimpleType(F4),"\n"); bF4:=ChevalleyBasis(F4); # D4 subalgebra in F4 generated by long roots T:=[2,4,6,10,13,15,16,18,20,22,23,24]; vD4:=Concatenation(bF4[1]{T},bF4[2]{T},bF4[3]); D4:=Subalgebra(F4,vD4); Print(SemiSimpleType(D4),"\n"); #short roots TT:=Difference([1..24],T); #look for 8 dimensional subspaces spanned by short roots, heuristic for t in Combinations(TT,4) do V:=Concatenation(bF4[1]{t},bF4[2]{t}); M:=List(vD4,x->List(V,y->Coefficients(BasisNC(F4,V),x*y))); #if matrix exists, it's the action on V if(not(fail in Flat(M)))then Print(t," A*V=V ",Length(V),"\n");fi; od; end; produces : gap> Test1(); F4 D4 [ 1, 12, 14, 17 ] A*V=V 8 [ 3, 7, 9, 21 ] A*V=V 8 [ 5, 8, 11, 19 ] A*V=V 8 So far so good. Now F4 occurs as an algebra in E8. Thanks to Scott Murray for sending me an explicit construction of that. Using that I tried to get a similar decomposition with F4 as a subalgebra. First question : If you call ChevalleyBasis on a subalgebra of given semisimple type (F4) here, is there any relation (ordering,...) to the basis called on a full algebra? It doesn't look like it from what I've seen. Is there a way to make the returned basis "standard?" Since I couldn't match the Chevalley basis in both instances of F4 (as a stand alone algebra and as a subalgebra of E8). I tried a brute force search. I was able to find a D4, but when looking for the other components of the decompositions, I ran into the failure below. I don't know why this failure is more severe than just reporting that "Coefficients" failed to find an answer; this happens in the first case (Test1) above. Here's the code : Test2:=function()local E8,bE8,e,f,F4,D4,bF4,bD4,vD4,T,TT,V,M,t; # define E8, DefaultField([ER(2),ER(3)]) necessary to find an F4 E8:=SimpleLieAlgebra("E",8,DefaultField([ER(2),ER(3)])); bE8:=ChevalleyBasis(E8); e:=bE8[1]{[8,7,6,5,4,3,1,2]}; f:=bE8[2]{[8,7,6,5,4,3,1,2]}; # define F4 subalgebra of E8 F4:=Subalgebra(E8,[e[8],e[5],(e[4]+e[6])/ER(2),(e[3]+e[7])/ER(2),f[8],f[5],(f[4]+f[6])/ER(2),(f[3]+f[7])/ER(2)]); Print(SemiSimpleType(F4),"\n"); bF4:=ChevalleyBasis(F4); # D4 subalgebra in F4 generated by long roots T:=[1,2,5,10,12,14,16,18,19,22,23,24]; vD4:=Concatenation(bF4[1]{T},bF4[2]{T},bF4[3]); D4:=Subalgebra(F4,vD4); Print(SemiSimpleType(D4),"\n"); #short roots TT:=Difference([1..24],T); #look for 8 dimensional subspaces spanned by short roots, heuristic for t in Combinations(TT,4) do V:=Concatenation(bF4[1]{t},bF4[2]{t}); M:=List(vD4,x->List(V,y->Coefficients(BasisNC(F4,V),x*y))); if(not(fail in Flat(M)))then Print(t," A*V=V ",Length(V),"\n");fi; od; end; and the failure it produces gap> Test2(); F4 D4 Matrix INV: must be square (not 8 by 52) at return INV_MATRIX_SAME_MUTABILITY( mat ); called from List( vectors, function ( x ) return Coefficients( B, x ); end ) called from RelativeBasisNC( Basis( V ), gens ) called from BasisNC( NiceFreeLeftModule( A ), List( BasisVectors( B ), function ( v ) return NiceVector( A, v ); end ) ) called from NiceBasisNC( B ) called from Coefficients( BasisNC( F4, V ), x * y ) called from ... Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can replace via 'return ;' to continue Thanks for any suggestions of what I did wrong or if there's an alternate way to get these invariant subspaces. Regards, R.N. --------------------------------- Never miss a thing. Make Yahoo your homepage. From mim_ at op.pl Mon Dec 17 09:21:38 2007 From: mim_ at op.pl (mim_@op.pl) Date: Mon Dec 17 09:22:23 2007 Subject: [GAP Forum] semisimple algebra invariant subspace decomposition Message-ID: Hi R.N., I do not know why your code returns error. I have rewritten it in following way and it returned: [ 3, 13, 15, 17 ] A*V=V 8 [ 4, 6, 8, 21 ] A*V=V 8 [ 7, 9, 11, 20 ] A*V=V 8 I have marked my changes with #MM Regards, Marek ------------------ Test2:=function()local E8,bE8,e,f,F4,D4,bF4,bD4,vD4,T,TT,V,M,t; # define E8, DefaultField([ER(2),ER(3)]) necessary to find an F4 E8:=SimpleLieAlgebra("E",8,DefaultField([ER(2),ER(3)])); F:=DefaultField([ER(2),ER(3)]); # MM bE8:=ChevalleyBasis(E8); e:=bE8[1]{[8,7,6,5,4,3,1,2]}; f:=bE8[2]{[8,7,6,5,4,3,1,2]}; # define F4 subalgebra of E8 F4:=Subalgebra(E8,[e[8],e[5],(e[4]+e[6])/ER(2),(e[3]+e[7])/ER(2),f[8],f[5],(f[4]+f[6])/ER(2),(f[3]+f[7])/ER(2)]); Print(SemiSimpleType(F4),"\n"); bF4:=ChevalleyBasis(F4); # D4 subalgebra in F4 generated by long roots T:=[1,2,5,10,12,14,16,18,19,22,23,24]; vD4:=Concatenation(bF4[1]{T},bF4[2]{T},bF4[3]); D4:=Subalgebra(F4,vD4); Print(SemiSimpleType(D4),"\n"); #short roots TT:=Difference([1..24],T); #look for 8 dimensional subspaces spanned by short roots, heuristic for t in Combinations(TT,4) do V:=Concatenation(bF4[1]{t},bF4[2]{t}); bb:=MutableBasis(F, V); # MM M:=List(vD4,x->List(V,y->IsContainedInSpan(bb,x*y))); #MM if(not(false in Flat(M)))then Print(t," A*V=V ",Length(V),"\n");fi; #MM od; end; From r_n_tsai at yahoo.com Mon Dec 17 20:11:41 2007 From: r_n_tsai at yahoo.com (R.N. Tsai) Date: Mon Dec 17 20:12:14 2007 Subject: [GAP Forum] semisimple algebra invariant subspace decomposition In-Reply-To: Message-ID: <951281.5148.qm@web34413.mail.mud.yahoo.com> Thanks Marek, Things work now. It looks like your method of checking whether a vector is in a subspace is better than what I was using. > bb:=MutableBasis(F, V); # MM > M:=List(vD4,x->List(V,y->IsContainedInSpan(bb,x*y))); #MM It would be good to have what I was using also works (in principle there's no reason for it to fail) since that gives a matrix for the action; maybe it's a simple fix in GAP. Regards, R.N. --------------------------------- Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. From sohaildayo at yahoo.com Wed Dec 19 08:50:03 2007 From: sohaildayo at yahoo.com (Sohail Ahmed) Date: Wed Dec 19 10:00:48 2007 Subject: [GAP Forum] Please help me out and tell me the solution of my problems Message-ID: <644387.86997.qm@web44813.mail.sp1.yahoo.com> Hello friends Dear i have one problem . I have two problems to solve using GAP. (1) = LIST ALL IRREDUCIBLE POLYNOMIALS OF DEGREE 2,3,4 USING GAP. (2) = FORM THE TABLE OF Zp x Zq ,WHERE P=2,3,5,7. & q=2,3,4,6 pLEASE HELP ME OUT FROM MY THIS PROBLEM. Thanks Send instant messages to your online friends http://uk.messenger.yahoo.com From dongjc at njau.edu.cn Sun Dec 23 06:29:55 2007 From: dongjc at njau.edu.cn (=?gb2312?B?tq2+rrPJ?=) Date: Sun Dec 23 06:39:42 2007 Subject: [GAP Forum] how to build complex field using GAP? Message-ID: Dear forum: how to build complex field using GAP? From alexander.konovalov at gmail.com Sun Dec 23 13:37:47 2007 From: alexander.konovalov at gmail.com (Alexander Konovalov) Date: Sun Dec 23 13:38:19 2007 Subject: [GAP Forum] how to build complex field using GAP? In-Reply-To: References: Message-ID: Dear GAP Forum, On 23 Dec 2007, at 06:29, ??? wrote: > Dear forum: > how to build complex field using GAP? GAP supports cyclotomic fields, which are extensions of Rationals with complex roots of unity. Type ?Cyclotomics or ?CyclotomicField in the GAP prompt for their description. In particular, GaussianRationals (see ?GaussianRationals ) constructs the field Q(i), where i^4=1. In GAP the element i will be represented as E(4). For example, gap> R:=GaussianRationals; GaussianRationals gap> E(4) in R; true gap> E(4)^2; -1 gap> a:=2+3*E(4); 2+3*E(4) gap> a in R; true gap> a^-1; 2/13-3/13*E(4) gap> b:=-1+5*E(4); -1+5*E(4) gap> a*b; -17+7*E(4) Hope this helps, Alexander Konovalov