gap-system / gap-docker Goto Github PK
View Code? Open in Web Editor NEWFull docker container for GAP and packages
Home Page: https://hub.docker.com/r/gapsystem/gap-docker/
License: GNU General Public License v2.0
Full docker container for GAP and packages
Home Page: https://hub.docker.com/r/gapsystem/gap-docker/
License: GNU General Public License v2.0
In order to build Float, one should meet the prerequisites first:
Configure: error: You need to first install the external libraries mpfr mpfi mpc cxsc fplll, and then rerun './configure'
My UnitLib package uses SingleHTTPRequest
from IO to save data for groups of order 243 from the server into unitlib/data
. It also has functionality for saving computed groups into unitlib/userdata
. This assumes that the user has write access to those directories.
gap> PcNormalizedUnitGroupSmallGroup(243,1);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `Length' on 1 arguments called from
Length( code[1] ) called from
<function "PcNormalizedUnitGroupSmallGroup">( <arguments> )
called from read-eval loop at line 2 of *stdin*
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk> code;
[ fail, [ [ [ 1, 1 ], [ 2, 1 ], [ 3, 1 ], [ 4, 1 ], [ 5, 1 ] ], [ 1, 3, 9, 27, 81 ] ] ]
brk>
@sebasguts I've updated https://hub.docker.com/r/gapsystem/gap-container/ this morning already. The next step is https://hub.docker.com/r/gapsystem/gap-docker-base/ - would you be able to update now that, please (and ideally, gap-docker afterwards).
Time to do this. Note for myself that this should switch from using external InstPackages.sh
script to using bin/BuildPackages.sh
which is now included in GAP installation.
To investigate: can we provide a way to run HPC-GAP via Docker container (this or a separate one)?
Before we publicise this wider, it would be useful to document better various use cases in the README.md:
etc.
I've traced the problem in #5
########> Diff in [ "./helpintf.xml", 163, 167 ]
# Input is:
stream := InputTextFile( file );;
# Expected output:
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMeth\
odFound
Error, no 1st choice method found for `InputTextFile' on 1 arguments
########
This code
dirs := DirectoriesLibrary( "doc/ref" );;
file := Filename( dirs, "manual.six" );;
stream := InputTextFile( file );;
does not work because file
is fail, and this happens because no documentation is provided. Indeed, GAP container uses gap4r7p9_nopackages.zip archive of the core GAP system without packages, and that archive does not include prebuilt manuals.
What to do? Adding latex packages to gap-docker-base does not look very interesting: you need
and this will increase it further, but we need them only to build manuals. Getting precompiled GAP manuals from elsewhere may be more preferable.
The test of manual examples with default packages shows three diffs:
########> Diff in [ "./files.xml", 310, 313 ]
# Input is:
IsWritableFile( "/bin/date" ); # file `/bin/date' is not writable
# Expected output:
false
# But found:
true
########
########> Diff in [ "./string.xml", 94, 111 ]
# Input is:
s := "German uses strange characters: äöüß\n";
# Expected output:
"German uses strange characters: äöüß\n"
# But found:
"German uses strange characters: äöþß\n"
########
########> Diff in [ "./helpintf.xml", 163, 167 ]
# Input is:
stream := InputTextFile( file );;
# Expected output:
# But found:
Error, no method found! For debugging hints type ?Recovery from NoMeth\
odFound
Error, no 1st choice method found for `InputTextFile' on 1 arguments
########
which are not observed in other environments. The 2nd will likely be fixed by setting LANG
to en_GB.UTF-8
, the two others seem to be related with user permissions.
I am not using sudo, but rather invoke docker directly, and it works fine. Any particular reasons you reocmmend using it? It feels a bit icky to run something with rights it doesn't seem to need...
It would be nice to fix this, if not at the GAP level (see gap-system/gap#737) then in the Docker container.
Franz Gähler explained today in GAP Support mailing list:
It brings its own GMP
library, which unfortunately is built with both a static and a
dynamic version. Until some time ago, the static version was
preferred when linking the Carat programs, but apparently this
is no longer so. When loading a dynamically linked Carat program,
however, its GMP library is not found.
The solution is to force Carat executables to be linked with the
static GMP library, and to do so, the simplest is to avoid building
the dynamic version of the GMP library. This can be achieved as
follows:
1. In the main Carat makefile, add a -static flag to the build
rule of the Gmp target, like here:
Gmp:
cd functions ; tar xvzf gmp-4.2.1.tar.gz
cd functions/Gmp ; ./configure --prefix="$(TOPDIR)" ;\
make CFLAGS="$(CFLAGS) -static" CC="$(CC)" install
2. After that, build Carat again, with "make clean; make"
Alternatively, you can also delete all dynamic libraries in
carat-2.1b1/lib/, delete the Carat executables in
carat-2.1b1/bin/x86*/ (or where they ended up), and just rebuild
the executables, with "make Executables".
polymakeinterface package is not loadable now:
gap> Filtered(RecNames(GAPInfo.PackagesInfo),n->LoadPackage(n)=fail);
[ "polymakeinterface", "itc", "linboxing", "xgap" ]
gap>
Except the problem with loading Float (gap-system/gap-docker-base#10) the other of the packages that are not loadable via LoadPackage are: "polymakeinterface", "zeromqinterface", "itc", "linboxing", "xgap". It's fine to ignore "itc", "linboxing", "xgap" for now, but we should try to get "polymakeinterface" and "zeromqinterface" to the working order. In particular, "zeromqinterface" is crucial for Jupyter.
make teststandard
reports
########> Diff in /home/gap/inst/gap4r7/tst/bugfix.tst, line 2045:
# Input is:
IsDocumentedWord( "last2" );
# Expected output:
true
# But found:
false
########
which is not observed otherwise. Maybe a bad test design - should be checked.
The build at https://travis-ci.org/gap-system/gap-docker-pkg-tests-stable-4.9/builds/387912434 is made with the new GAP 4.9.1 container which has gcc-7 as a default compiler.
The following packages which used to pass tests now fail. The tick box means that the problem has been fixed).
In more details below.
cvec - see gap-packages/cvec#6
fining - the problem disappears if cvec is fixed as suggested in gap-packages/cvec#6
cryst - only when all packages are loaded:
testing: /home/gap/inst/gap-4.9.1/pkg/cryst/tst/cryst.tst
########> Diff in /home/gap/inst/gap-4.9.1/pkg/cryst/tst/cryst.tst:175
# Input is:
g := PreImage(iso, h);
# Expected output:
[ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -7/4, 5/4, 3/4, 1 ] ]
# But found:
[ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ -1/4, 3/4, 3/4, 1 ] ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/cryst/tst/cryst.tst:314
# Input is:
NaturalHomomorphismByNormalSubgroup( G, K );
# Expected output:
CompositionMapping( [ g1, g2, g3, g4, g5, g6, g7 ] ->
[ g1, g2, g3, g4, id, id, id ],
[ [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ -7/4, 5/4, 3/4, 1 ] ]
, [ [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1, 0, 0, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ -1/2, -1/2, 1, 1 ] ]
,
[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 0, -1/2, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1/2, 1/2, 1/2, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ] ] ->
[ g1, g2, g3, g4, g5, g6, g7 ] )
# But found:
CompositionMapping( [ g1, g2, g3, g4, g8, g5, g6, g7, g8^2, g9, g10 ] ->
[ g1, g2, g3, g4, g5, id, id, id, id, id, id ],
[ [ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ -1/4, 3/4, 3/4, 1 ] ]
, [ [ 0, 0, 1, 0 ], [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 3, -2, 1, 1 ] ],
[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, 1, 0 ], [ -7/2, 0, -3/2, 1 ] ],
[ [ -1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, -3/2, -7/2, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 1, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ -3/2, -3/2, -3/2, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, -3, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ -3, 0, 0, 1 ] ] ] ->
[ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 ] )
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/cryst/tst/cryst.tst:330
# Input is:
NaturalHomomorphismByNormalSubgroup( G, K );
# Expected output:
CompositionMapping( [ g1, g2, g3, g4, g5, g6, g7, g8 ] ->
[ g1, g2, g3, g4, g5, id, id, id ],
[ [ [ -1, 0, 0, 0 ], [ 0, 1, 0, 1/2 ], [ 0, 0, 1, 1/2 ], [ 0, 0, 0, 1 ] ],
[ [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ -1, 0, 0, 1/2 ], [ 0, 0, 0, 1 ] ],
[ [ 0, 0, 1, 0 ], [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ] ],
[ [ -1, 0, 0, 1/2 ], [ 0, 1, 0, 0 ], [ 0, 0, -1, 1/2 ], [ 0, 0, 0, 1 ] ],
[ [ -1, 0, 0, 1/2 ], [ 0, -1, 0, 1/2 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 1 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 1 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 1 ], [ 0, 0, 0, 1 ] ] ] ->
[ g1, g2, g3, g4, g5, g6, g7, g8 ] )
# But found:
CompositionMapping( [ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11 ] ->
[ g1, g2, g3, g4, g5, id, id, id, id, id, id ],
[ [ [ 0, -1, 0, 1/2 ], [ -1, 0, 0, 1/2 ], [ 0, 0, -1, 1/2 ], [ 0, 0, 0, 1 ] ],
[ [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 1, 0, 0, 0 ], [ 0, 0, 0, 1 ] ],
[ [ -1, 0, 0, 1/2 ], [ 0, -1, 0, 1/2 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, -1, 0, 1/2 ], [ 0, 0, -1, 1/2 ], [ 0, 0, 0, 1 ] ],
[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 1 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 1 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 1 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 3 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 3 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ],
[ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 3 ], [ 0, 0, 0, 1 ] ] ] ->
[ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10, g11 ] )
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/fr-2.4.5/tst/cp.tst:67
# Input is:
IsConjugate(GrigorchukGroup,pairs[1][1][1],pairs[1][1][2]);
# Expected output:
#I Init FRBranchGroupConjugacyData
#I Finished Init FRBranchGroupConjugacyData
true
# But found:
#I Init FRBranchGroupConjugacyData
Error, List Element: <list>[1] must have an assigned value
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/fr-2.4.5/tst/cp.tst:73
# Input is:
SetFRBranchGroupConjugacyData(GuptaSidkiGroup,
rec(initial_conj_dic:=NewDictionary([One(GuptaSidkiGroup),One(GuptaSidkiGroup\
)],true),
Branchstructure:=BranchStructure(GuptaSidkiGroup),
RepSystem:=List(~.Branchstructure.group,x->PreImagesRepresentative(~.Branc\
hstructure.quo,x)))
);
# Expected output:
# But found:
Error, List Element: <list>[1] must have an assigned value
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/fr-2.4.5/tst/cp.tst:78
# Input is:
CallFuncList(function(a,t)
local G,D,g,h;
G:= GuptaSidkiGroup;
D:= FRBranchGroupConjugacyData(G).initial_conj_dic;
for g in [a,a^2,t,t^2] do
for h in [a,a^2,t,t^2] do
if g<>h then
AddDictionary(D,[g,h],[]);
fi;
od;
od;
AddDictionary(D,[a,a],[One(G),a,a^2]);
AddDictionary(D,[a^2,a^2],[One(G),a,a^2]);
AddDictionary(D,[t,t],[One(G),,,t,,,t^2]);
AddDictionary(D,[t^2,t^2],[One(G),,,t,,,t^2]);
end,GeneratorsOfGroup(GuptaSidkiGroup)
);
# Expected output:
# But found:
#I Init FRBranchGroupConjugacyData
Error, List Element: <list>[1] must have an assigned value
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/fr-2.4.5/tst/cp.tst:96
# Input is:
IsConjugate(GuptaSidkiGroup,GuptaSidkiGroup.1^GuptaSidkiGroup.2,GuptaSidkiGrou\
p.1);
# Expected output:
true
# But found:
#I Init FRBranchGroupConjugacyData
Error, List Element: <list>[1] must have an assigned value
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/nq-2.5.3/tst/nq.tst:41
# Input is:
H := NilpotentQuotient( G, 11 );
# Expected output:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 5, 2,
2, 2, 3, 0, 5, 5, 2, 2, 2, 2, 3, 0, 5, 5, 2, 2, 2, 2, 2, 2, 3, 0, 0, 5, 5,
5 ]
# But found:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, 6, 5, 4, 0, 5,
2, 5, 6, 5, 4, 0, 2, 5, 4, 0, 2, 5, 6, 5, 2, 0 ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/nq-2.5.3/tst/nq.tst:125
# Input is:
H := NilpotentQuotient( G, 8 );
# Expected output:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 2,
2, 3, 3, 0, 6, 2, 2, 2, 3, 3, 6, 2, 3, 6, 2, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3,
6, 2 ]
# But found:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 3, 0,
2, 0, 2, 3, 2, 3, 2, 2, 3, 0, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 2, 2, 2,
2, 3, 3, 2, 3, 2, 2, 3, 2, 3 ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/nq-2.5.3/tst/nq.tst:150
# Input is:
H := NilpotentQuotient( G, 10 );
# Expected output:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 3, 3, 2, 2,
0, 0, 3, 3, 3, 2, 2, 2, 2, 0, 0, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 0, 3, 3, 3,
3, 3, 3, 3, 2, 2, 2, 5, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 5, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3 ]
# But found:
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 6, 0, 3, 0,
6, 0, 3, 3, 2, 3, 36, 0, 2, 3, 3, 3, 2, 2, 3, 90, 3, 6, 0, 3, 2, 3, 3, 3,
3, 90, 2, 3, 18, 3, 3, 3, 3, 3, 3, 3, 3, 3 ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/SgpViz-0.999.1/tst/testall.tst:
68
# Input is:
f1 := SemigroupFactorization(poi3,el1);
# Expected output:
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] ) ] ]
# But found:
WARNING: you are possibly using twice the same generator and this may cause pr\
\
oblems...
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 4, 1, 2, 4 ] ) ] ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/SgpViz-0.999.1/tst/testall.tst:
70
# Input is:
f1[1][1] * f1[1][2] = el1;
# Expected output:
true
# But found:
false
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/SgpViz-0.999.1/tst/testall.tst:
72
# Input is:
SemigroupFactorization(poi3,[el1,el2]);
# Expected output:
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] ) ],
[ Transformation( [ 2, 4, 3, 4 ] ) ] ]
# But found:
WARNING: you are possibly using twice the same generator and this may cause pr\
\
oblems...
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 4, 1, 2, 4 ] ) ],
[ Transformation( [ 2, 4, 3, 4 ] ), Transformation( [ 1, 3, 4, 4 ] ) ] ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/SgpViz-0.999.1/tst/testall.tst:
86
# Input is:
DisplayEggBoxOfDClass(D);
# Expected output:
[ [ 1, 1, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 0, 1, 1 ],
[ 0, 0, 1, 1 ] ]
# But found:
[ [ 1, 0, 1, 0 ],
[ 0, 1, 0, 1 ],
[ 0, 1, 0, 1 ],
[ 1, 0, 1, 0 ] ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/SgpViz-0.999.1/tst/testall.tst:
107
# Input is:
rcg := RightCayleyGraphAsAutomaton(b21);
# Expected output:
< deterministic automaton on 2 letters with 6 states >
# But found:
WARNING: you are possibly using twice the same generator and this may cause pr\
\
oblems...
< deterministic automaton on 2 letters with 6 states >
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/XModAlg-1.16/tst/xmod.tst:117
# Input is:
X1 := XModAlgebra( A, B );
# Expected output:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0\
)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
# But found:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1,
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/XModAlg-1.16/tst/xmod.tst:124
# Input is:
X2 := XModAlgebra( C, D );
# Expected output:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0\
)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
# But found:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1,
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2 ] )]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/XModAlg-1.16/tst/xmod.tst:133
# Input is:
Display( mor );
# Expected output:
Morphism of crossed modules :-
: Source = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)\
*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^\
0)*f2 ] )] with generating sets:
[ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*\
f2+(Z(2)^0)*f1*f2 ]
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Range = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)\
*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^\
0)*f2 ] )] with generating sets:
[ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*\
f2+(Z(2)^0)*f1*f2 ]
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Source Homomorphism maps source generators to:
[ <zero> of ..., <zero> of ..., <zero> of ... ]
: Range Homomorphism maps range generators to:
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*<identity> of ..., (Z(2)^0)*<identity\
> of ... ]
# But found:
Morphism of crossed modules :-
: Source = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1,
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2
] )] with generating sets:
[ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1, (Z(2)^0)*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Range = [Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1,
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->AlgebraWithOne( GF(2), [ (Z(2)^0)*f1, (Z(2)^0)*f2
] )] with generating sets:
[ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1, (Z(2)^0)*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ]
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*f1, (Z(2)^0)*f2 ]
: Source Homomorphism maps source generators to:
[ <zero> of ..., <zero> of ..., <zero> of ... ]
: Range Homomorphism maps range generators to:
[ (Z(2)^0)*<identity> of ..., (Z(2)^0)*<identity> of ...,
(Z(2)^0)*<identity> of ... ]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/XModAlg-1.16/tst/xmod.tst:155
# Input is:
X3 := Kernel( mor );
# Expected output:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0\
)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2
] )->Algebra( GF(2), [ (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f1*f2, (\
Z(2)^0)*<identity> of ...+(Z(2)^0)*f1
] )]
# But found:
[Algebra( GF(2), [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1,
(Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] )->Algebra( GF(2),
[ (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f1*f2,
(Z(2)^0)*<identity> of ...+(Z(2)^0)*f1 ] )]
########
########> Diff in /home/gap/inst/gap-4.9.1/pkg/XModAlg-1.16/tst/xmod.tst:169
# Input is:
Print( MappingGeneratorsImages( theta ), "\n" );
# Expected output:
[ [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ],
[ <zero> of ..., <zero> of ..., <zero> of ... ] ]
# But found:
[ [ (Z(2)^0)*<identity> of ...+(Z(2)^0)*f1, (Z(2)^0)*f1+(Z(2)^0)*f2,
(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ],
[ <zero> of ..., <zero> of ..., <zero> of ... ] ]
########
Francy needs some extra steps - see https://github.com/numerical-semigroups/Nuggets/blob/master/Dockerfile by @pedritomelenas
We missed the fact that abandoning https://github.com/gap-system/gap-container/blob/master/Dockerfile we did not now have prebuilt manuals in gap-docker.
We need to add these lines here:
&& cd gap-${GAP_VERSION} \
&& wget https://www.gap-system.org/Manuals/gap-${GAP_VERSION}-manuals.tar.gz \
&& tar xvzf gap-${GAP_VERSION}-manuals.tar.gz \
&& rm gap-${GAP_VERSION}-manuals.tar.gz \
AtlasRep package provides a link between GAP and the "ATLAS of Group Representations", a database that comprises generating permutations and matrices for many almost simple groups, and information about their maximal subgroups. This database is available independently of GAP athttp://brauer.maths.qmul.ac.uk/Atlas
To work, first of all this package need network access. Then installation instructions at http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/doc/chap4.html tells:
After unpacking the package archive, it should be checked whether the subdirectories datagens
and dataword
of the package directory have write permissions for those users who will download files from the servers. The recommended permissions under UNIX are set as follows.
you@unix> chmod 1777 atlasrep/data*
you@unix> ls -ld atlasrep/data*
drwxrwxrwt 3 you you 1024 Oct 31 12:34 datagens
drwxrwxrwt 3 you you 1024 Oct 31 12:34 dataword
We should follow instructions and run chmod
in InstPackages.sh
script.
Currently the only tags for this image available on Docker Hub are "latest", and some really old, presumably obsolete one.
It would be wonderful if there were tags for specific GAP versions (4.10.2, 4.11.0, etc.). The Dockerfile seems almost but not quite set up for that, since "gap-4.11" is still hard-coded in part of the URL.
GAP 4.7.9 is released, so we need to update gap-docker as well.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.