# Web interface for GAP (or other computer algebra system dealing with finite groups)?

GAP is computer algebra system which allows to make calculations with finite groups. (See wikipedia link for an example).

Is there web interface for it ? (I cannot google it.) Or may be some other computer algebra systems which allows to calculate with finite groups (i.e. obtain information on subgroups, conjugacy classes, irreducible representations etc...)

• cocalc.com – Dan Piponi Jun 6 '17 at 18:32
• @DanPiponi Could you turn that into an answer? – Federico Poloni Jun 6 '17 at 18:42
• Is there a particular reason you want a web interface, instead of installing it on your computer (its free). – Max Horn Jun 8 '17 at 17:27
• @MaxHorn 1) I tried to install but failed (some errors via installing) 2) on certain places where I work it is forbidden to isntall anything 3) Most time I use smartphone or tablet – Alexander Chervov Jun 9 '17 at 7:01
• We need to distinguish web-interface and browser-based interface (to local GAP installation). It seems that you need the former one, while some answers suggest the latter. For installation, please contact GAP Support and tell which errors did you get. Finally, if you're not allowed to run exe-installer, get win-zip archive from gap-system.org/Releases - it does not require admin rights. You will have to manually edit bat-files to point to the installation directory. – Alexander Konovalov Jun 9 '17 at 12:18

There is the Magma calculator which can be used to do calculations in finite groups.

One problem is that you have to type in all of your input before executing it, but with practice you can do quite complicated calculations.

For example, you can carry out the calculation from my answer to this question (which was actually about infinite groups). Typing in the following code

G<x,y,z>:=Group<x,y,z|x*y^-1*x^-1=z^2*y, x*z^-2=z^2*x, x*y*x^-1*y=z^2,
y^2*x*z=z*x >;
K<a,b,c,d> := sub<G | x^2, z^2, x*z*y^-1, y^2>;
Index(G,K);
Rewrite(G,~K);
K;
Transversal(G,K);
PK, phi := ElementaryAbelianQuotient(K,2);
Order(PK);
K2 := Kernel(phi);
Index(K,K2);
T2 := Transversal(K,K2);
exists{k : k in T2 | (x*k)^2 in K2 };
exists{k : k in T2 | (y*k)^2 in K2 };
exists{k : k in T2 | (z*k)^2 in K2 };


results in the output:

4
Finitely presented group K on 4 generators
Index in group G is 4 = 2^2
Generators as words in group G
a = x^2
b = z^2
c = x * z * y^-1
d = y^2
Relations
(c^-1, a) = Id(K)
(a^-1, b) = Id(K)
(a^-1, d^-1) = Id(K)
(d^-1, b^-1) = Id(K)
(b, c) = Id(K)
d * c * b^-1 * d^-1 * c^-1 * b^-1 = Id(K)
b^-1 * a * c^-1 * a^-1 * b * c = Id(K)
{@ Id(G), x, y, z @}
Mapping from: GrpFP: G to {@ Id(G), x, y, z @}
16
16
false
false
false


You can get at GAP through http://sagemath.org, which has a perfectly fine web notebook interface.

• Can you run GAP directly through the notebook, or do you have to wrap everything in SAGE commands? I'd assumed the latter, so I've tended to use a GAP console via the cloud -- cocalc.com -- but I'd be interested to know if SAGE provided direct GAP access some other way... – Nick Gill Jun 7 '17 at 8:42
• @NickGill You can do both: either conjure a Gap console, or send text commands to Gap, or wrap them in Sage objects. Input to Gap through Sage works very well; output, on the other hand (i.e., use of the objects returned by Gap) is less felicitous in my experience, but YMMV. I haven't tried this in the Sage notebook (i.e., web) interface, so I can't really speak about this aspect. – Gro-Tsen Jun 7 '17 at 12:43
• @NickGill - isn't cocalc a SageMath cloud server? – Gordon Royle Jun 7 '17 at 14:05
• @Gro-Tsen It works fine. One problem with "atlasrep" package. When I tried AtlasGroup function I obtain error: gap> g:=AtlasGroup("J1"); /projects/sage/sage-7.5/local/gap/latest/pkg/atlasrep/datagens/J1G1-p266B0.m1: Permission denied fail Do you have advice ? – user21230 Jun 9 '17 at 8:43

There exists a Jupyter kernel for GAP, see https://github.com/gap-packages/jupyter-kernel-gap

A simple way to get this actually running is through SageMath: if you have a recent beta(!) version of SageMath installed (or wait until 8.0 gets released), you can run sage -i gap_jupyter to install that kernel. At that point, you start Jupyter with sage -n jupyter and then create a New GAP notebook using the Jupyter menu.