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- Singularall 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 largerp-groups. In particular it was possible for me to construct thegroups 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 wentfairly quickly; the constructions of groups of the same orders of evenlarger 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. SometimesR/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 thesummands & determine their multiplication, particularly in the finitecase.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: "Everythingyou always wanted to know about rings in GAP. (but were afraid toask)", 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 thecode might be included in SONATA, but that did not seem to be thecase.Ok, so that's everything I was able to determine & the question is:
> Is there a ring package already available (or at least somecollection of programs) or do I need to develop my own?Thanks for any suggestions.Keith_______________________________________________
> Forum mailing listForum@mail.gap-system.orghttp://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- Singularall 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 largerp-groups. In particular it was
> possible for me to construct thegroups 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 wentfairly quickly; the constructions of groups of the same
> orders of evenlarger 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. SometimesR/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
> thesummands & determine their multiplication, particularly in the
> finitecase.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: "Everythingyou always wanted to know about rings
> in GAP. (but were afraid toask)", 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 thecode might be included in SONATA, but that did not seem to be
> thecase.Ok, so that's everything I was able to determine
> & the question is:
> > Is there a ring package already available (or at least
> somecollection 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- Singularall 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 largerp-groups. In particular it was
> > possible for me to construct thegroups 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 wentfairly quickly; the constructions of groups of the same
> > orders of evenlarger 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. SometimesR/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
> > thesummands & determine their multiplication, particularly in the
> > finitecase.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: "Everythingyou always wanted to know about rings
> > in GAP. (but were afraid toask)", 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 thecode might be included in SONATA, but that did not seem to be
> > thecase.Ok, so that's everything I was able to determine
> > & the question is:
> > > Is there a ring package already available (or at least
> > somecollection 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
}