diff --git a/.ci/write-dockerfile.sh b/.ci/write-dockerfile.sh index 75737acf106..cfd4fb20810 100755 --- a/.ci/write-dockerfile.sh +++ b/.ci/write-dockerfile.sh @@ -326,7 +326,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" #:toolchain: $RUN$CHECK_STATUS_THEN make \${USE_MAKEFLAGS} base-toolchain$ENDRUN$THEN_SAVE_STATUS @@ -335,7 +335,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" #:make: ARG TARGETS_PRE="all-sage-local" $RUN$CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_PRE}$ENDRUN$THEN_SAVE_STATUS @@ -345,7 +345,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" $ADD .gitignore /new/.gitignore $ADD src /new/src RUN cd /new && rm -rf .git && \\ @@ -366,7 +366,7 @@ ARG NUMPROC=8 ENV MAKE="make -j\${NUMPROC}" ARG USE_MAKEFLAGS="-k V=0" ENV SAGE_CHECK=warn -ENV SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" +ENV SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" ARG TARGETS_OPTIONAL="ptest" $RUN$CHECK_STATUS_THEN make SAGE_SPKG="sage-spkg -y -o" \${USE_MAKEFLAGS} \${TARGETS_OPTIONAL} || echo "(error ignored)"$ENDRUN$THEN_SAVE_STATUS diff --git a/build/pkgs/gap/SPKG.rst b/build/pkgs/gap/SPKG.rst index 2f59f140a01..a5a1dbc1782 100644 --- a/build/pkgs/gap/SPKG.rst +++ b/build/pkgs/gap/SPKG.rst @@ -25,26 +25,3 @@ Upstream Contact https://www.gap-system.org Mailing list at https://mail.gap-system.org/mailman/listinfo/gap - -Special Update/Build Instructions ---------------------------------- - -This is a stripped-down version of GAP. The downloading of the sources -and removal of unneeded parts is done by the script spkg-src. When you -update GAP, please also update and use the spkg-src script. - -- Do we really want to copy everything from the build directory??? - - You need the full GAP tree to compile/install many GAP packages. - -- There's apparently a command missing (in ``spkg-install``) building - the - (HTML?) documentation. Earlier changelog entries as well as the - description - above state the documentation was removed from the upstream - sources... - Since the (pre-)built HTML documentation is currently included, I've - commented out some lines in that part of ``spkg-install``. -leif - -Patches -~~~~~~~ diff --git a/build/pkgs/gap/checksums.ini b/build/pkgs/gap/checksums.ini index 2b1170e52d9..3704072d609 100644 --- a/build/pkgs/gap/checksums.ini +++ b/build/pkgs/gap/checksums.ini @@ -1,4 +1,4 @@ tarball=gap-VERSION.tar.gz -sha1=a6e36f3f874a2c46f51561402634497eab705cca -sha256=672308745eb78a222494ee8dd6786edd5bc331456fcc6456ac064bdb28d587a8 +sha1=cf91834954849dbaeae17079a4c4565bc28d03a8 +sha256=9794dbdba6fb998e0a2d0aa8ce21fc8848ad3d3f9cc9993b0b8e20be7e1dbeba upstream_url=https://github.com/gap-system/gap/releases/download/vVERSION/gap-VERSION.tar.gz diff --git a/build/pkgs/gap/distros/conda.txt b/build/pkgs/gap/distros/conda.txt index 7f5f5034610..401c67cba31 100644 --- a/build/pkgs/gap/distros/conda.txt +++ b/build/pkgs/gap/distros/conda.txt @@ -1 +1 @@ -gap-defaults>=4.12.2,<4.13.0 +gap-defaults diff --git a/build/pkgs/gap/distros/gentoo.txt b/build/pkgs/gap/distros/gentoo.txt new file mode 100644 index 00000000000..ea64ec957e5 --- /dev/null +++ b/build/pkgs/gap/distros/gentoo.txt @@ -0,0 +1 @@ +sci-mathematics/gap diff --git a/build/pkgs/gap/package-version.txt b/build/pkgs/gap/package-version.txt index f1cd7de1de5..56d2fb548a2 100644 --- a/build/pkgs/gap/package-version.txt +++ b/build/pkgs/gap/package-version.txt @@ -1 +1 @@ -4.12.2 +4.13.1 diff --git a/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch b/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch new file mode 100644 index 00000000000..46f5e36f109 --- /dev/null +++ b/build/pkgs/gap/patches/0001-Makefile.rules-Darwin-Remove-use-of-single_module-ob.patch @@ -0,0 +1,29 @@ +From 89b95994807970d90671e1e02cc03ddca4cf0a10 Mon Sep 17 00:00:00 2001 +From: Matthias Koeppe +Date: Sat, 8 Jun 2024 14:01:16 -0700 +Subject: [PATCH] Makefile.rules [Darwin]: Remove use of '-single_module' + (obsolete), activate '-install_name' + +--- + Makefile.rules | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/Makefile.rules b/Makefile.rules +index 8bfd3dba0..adfed731f 100644 +--- a/Makefile.rules ++++ b/Makefile.rules +@@ -446,10 +446,7 @@ else ifneq (,$(findstring darwin,$(host_os))) + LINK_SHLIB_FLAGS = -dynamiclib + LINK_SHLIB_FLAGS += -compatibility_version $(LIBGAP_COMPAT_VER) + LINK_SHLIB_FLAGS += -current_version $(LIBGAP_CURRENT_VER) +- LINK_SHLIB_FLAGS += -Wl,-single_module +- +- # TODO: set install_name, at least for installed version of the lib? +- #LINK_SHLIB_FLAGS += -install_name $(libdir)/$(LIBGAP_FULL) ++ LINK_SHLIB_FLAGS += -install_name $(libdir)/$(LIBGAP_FULL) + + GAP_CPPFLAGS += -DPIC + GAP_CFLAGS += -fno-common +-- +2.42.0 + diff --git a/build/pkgs/gap/patches/gap-4.13.1-hash-fixes.patch b/build/pkgs/gap/patches/gap-4.13.1-hash-fixes.patch new file mode 100644 index 00000000000..c99b39ab91c --- /dev/null +++ b/build/pkgs/gap/patches/gap-4.13.1-hash-fixes.patch @@ -0,0 +1,178 @@ +diff --git a/lib/dicthf.gi b/lib/dicthf.gi +index 5ee7341..e4349ac 100644 +--- a/lib/dicthf.gi ++++ b/lib/dicthf.gi +@@ -152,16 +152,37 @@ end); + ## + InstallMethod(SparseIntKey,"for bounded tuples",true, + [ IsList,IsList and IsCyclotomicCollection ], 0, +-function(m,v) +-local c; +- if Length(m)<>3 or m[1]<>"BoundedTuples" then ++function(m, v) ++ if Length(m)<> 3 or m[1]<>"BoundedTuples" then + TryNextMethod(); + fi; +- c:=[1,Maximum(m[2])+1]; +- return function(a) +- return a*c; ++ # Due to the way BoundedTuples are presently implemented we expect the input ++ # to the hash function to always be a list of positive immediate integers. This means ++ # that using HashKeyWholeBag should be safe. ++ return function(x) ++ Assert(1, IsPositionsList(x)); ++ if not IsPlistRep(x) then ++ x := AsPlist(x); ++ fi; ++ return HashKeyWholeBag(x, 1); + end; + ++ # alternative code w/o HashKeyBag ++ ## build a weight vector to distinguish lists. Make entries large while staying clearly within ++ ## immediate int (2^55 replacing 2^60, since we take subsequent primes). ++ #step:=NextPrimeInt(QuoInt(2^55,Maximum(m[2])*m[3])); ++ #weights:=[1]; ++ #len:=Length(v); ++ ## up to 56 full, then increasingly reduce ++ #len:=Minimum(len,8*RootInt(len)); ++ #while Length(weights)0 and ForAll(pnt,IsPosInt) and ++ ForAll(acts,IsPerm) and + (act=OnSets or act=OnPoints or act=OnRight or act=\^)) then + TryNextMethod(); + fi; +diff --git a/lib/vecmat.gi b/lib/vecmat.gi +index 017c3c6..93ba828 100644 +--- a/lib/vecmat.gi ++++ b/lib/vecmat.gi +@@ -2142,7 +2142,8 @@ InstallMethod(DomainForAction,"matrix/matrix",IsElmsCollsX, + function(pnt,acts,act) + local l,f; + if (not ForAll(acts,IsMatrix)) or +- (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight) then ++ (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight and act<>OnSets and ++ act<>OnTuples) then + TryNextMethod(); # strange operation, might extend the domain + fi; + l:=NaturalActedSpace(acts,pnt); +diff --git a/tst/testbugfix/2024-09-14-actdomain.tst b/tst/testbugfix/2024-09-14-actdomain.tst +new file mode 100644 +index 0000000..84f8b50 +--- /dev/null ++++ b/tst/testbugfix/2024-09-14-actdomain.tst +@@ -0,0 +1,85 @@ ++# Fix #5786 and error reported by Len Soicher in support list ++gap> gg:=SpecialUnitaryGroup(4,2);; ++gap> hl:=Z(2)*[ ++> [0,0,1,0], ++> [1,1,0,0], ++> [0,1,0,1], ++> [0,1,1,0], ++> [1,1,0,1]];; ++gap> o:=Orbit(gg,Set(hl),OnSets);; ++gap> Length(o); ++216 ++gap> set:=[ 1,10,15,24,29,33,38,40,44,59, 60, 63, 69, 74, 77,79,85, 86, 90, ++> 95, 99, 103, 105, 110, 122, 125, 143, 148, 149, 153, 162, 165, 174, 182, ++> 185, 191, 197, 198, 202, 218, 223, 227, 228, 235, 236, 240, 243, 248, ++> 254, ++> 256, 259, 270, 275, 288, 291, 295, 298, 302, 305, 310, 312, 315, 325, ++> 329, ++> 333, 340, 341, 350, 356, 366, 369, 381, 385, 390, 397, 402, 412, 414, ++> 419, ++> 421, 425, 428, 433, 436, 445, 447, 451, 452, 453, 454, 461, 466, 474, ++> 479, ++> 481, 489, 490, 493, 497, 507, 509, 512, 513, 519, 521 ];; ++gap> gp:=Group( ++> ( 1,340,124,306,216,492,100, 25,108,270,220,332)( 2,138, 54,161,132,159,198, ++> 336,439,269, 89,419)( 3,467,177,404,505,437,379,312,481,271,223,135) ++> ( 4,510, 79,504,259,234,378,251,272,268,360,303)( 5,278,176,191,231,275,263, ++> 190,230,146,265,192)( 6,486,126,523,490,448,375,237,288,400,243,329) ++> ( 7,131,123,516, 48,392,350,333,418, 16,139,175)( 8,289,125,386,241, 29,376, ++> 334,242,417,442,331)( 9,430, 32, 59,446,367,377,335,411,416,515,330) ++> ( 10,391, 56,407,475,414,200,328,165,473, 86,119)( 11,368, 35,390,522,408,199, ++> 415,440,326, 87,503)( 12,412, 55,457,399,245,201, 33,438,431, 88,317) ++> ( 13,471, 40,348,452,292, 43,346,373, 77, 41,347)( 14,137,174,162, 60, 69,321, ++> 487, 61,158,322,370)( 15,101,114,109,130,160,488,489,352,351,420, 17) ++> ( 18,339,167,290,202,385, 99, 22, 90,323,217,129)( 19, 26, 93,304, 96,342) ++> ( 20,338,166,305,215,141, 97, 24, 51,150,219,507)( 21,337, 63,186,214,424, 98, ++> 23,107,382,218,349)( 27, 91,445,451,525, 67,519,239,144,203,155,353) ++> ( 28,324,444,128, 70,428,496,238,286,300,283, 64)( 30,236,287,441,387,354) ++> ( 31,345,366,517, 45,344,413,521, 46,248,244,121)( 34,314,394,402,222,447, 81, ++> 282,262,173,246,435)( 36,482,178,364,148,495,179,363,140,102,113,111) ++> ( 37,253,273,168,294,302,226,183, 72,480,154,233)( 38,483,520,393,403,465,362, ++> 298,143,356,153,369)( 39,157,320,472)( 42,228,277,264)( 44,343,147,501) ++> ( 47, 73,308,380,184,389,310,327,163,295,151,425)( 49,221,456, 80,474,260,405, ++> 325,164,524,152,449)( 50,479,365,477,461,459,497,169,296,247,134,117) ++> ( 52,361,299,285,355,188,423,464,434,453,133,118)( 53,257,509, 68,511,458,293, ++> 204,384,374, 75, 82)( 57,116,112,149,514,396,470,485,493,249,421,120) ++> ( 58,500,266,250,429,122)( 62,156,319,311)( 65,187,225,357,127, 71,388,235, ++> 460,252,274,371)( 66,106,462,291,205,383,372, 76, 92,410,280,498) ++> ( 74,401,381,476,409,281,171,104,297,307,426,182)( 78, 84,261,256,180,436,512, ++> 313,181,491,224,499)( 83,466,255,508,506,395,469,422,142,103,115,110) ++> ( 85,468,258,502,267,136)( 94,341)( 95,211)(105,478,195,432,518,316,197,484, ++> 494,455,196,170)(145,513,359,232,227,254)(172,209,398,207,279,206) ++> (185,194,309,443)(189,406,463,318,450,427,433,454,315,301,284,358) ++> (193,229,276,240)(208,397)(210,213,212) ++> ,( 1,379,148, 48,128,430,416)( 2, 34,338, 35,235,131,521)( 3,512,352, 47, ++> 318,289,237)( 4,272,506, 49,434,486,282)( 5,524,485, 10,483,340, 55) ++> ( 6,458, 36,487, 60,121, 16)( 7,313,140,336,127,435,270)( 8, 85,147,489, ++> 98,201,417)( 9,469, 94,488,129,329,400)( 11,291, 26, 54,234,473,169) ++> ( 12,207,339, 56,233,503,515)( 13,426,337, 40,232,295,500)( 14, 32,414, 27, ++> 167,130,472)( 15, 33,188, 38,382,109,501)( 17, 31,459, 37,496,132,517) ++> ( 18,263,294,446,451,134,497)( 19,198,525,241,441,244,470)( 20,100,199,490, ++> 242,429,413)( 21,378,403,216,523,421, 58)( 22,124,159, 77, 63,123,292) ++> ( 23,176,275,431,168, 86,293)( 24,177,492,326,104,151,290)( 25, 79,437,269, ++> 163,152,144)( 28,462,150,162, 62,120,415)( 29,239, 83,311, 61,117,260) ++> ( 30,452,149,370, 39,122,389)( 41,468, 73,254,277,432,371)( 42,210,319,502, ++> 373,205,283)( 43,387,194,212,320,508, 99)( 44,396,349,331,399,250,420) ++> ( 45,411,461,375,475,377,418)( 46,344,409,519,522,477,419)( 50,253,278,433, ++> 231, 88,422)( 51,482,138,358,229,463,381)( 52, 91,467,221,230,518,484) ++> ( 53,390,510,494,228,454, 92)( 57,310,460,118,259,367,363)( 59,281,227,274, ++> 505,402,215)( 64,125,245, 76, 93,160,471)( 65,126,408, 75,166, 69,264) ++> ( 66,302,186,116,257,424,327)( 67,187,297,479,217,425,171)( 68,303,296,345, ++> 280,226,273)( 70,240,359,366,364, 97,200)( 71,265,360,394,393,133,423) ++> ( 72,251,146,164,268, 87,312)( 74,252,276,406,513, 89,181)( 78,395,158,185, ++> 315,287,333)( 80,136,351,156,316,286,334)( 81,511,350,184,317,288,335) ++> ( 82,261,392,183,105,309,238)( 84,224,439,182,284,193,236)( 90,466,391,357, ++> 443,170,465)( 95,321,509,353,203,243,197)( 96,516,498,354,300,246,401) ++> (101,405,453,464,154,112,341)(102,139,450,208,388,365,111)(103,440,520,285, ++> 192,266,343)(106,308,218,119,262,448,298)(107,219,368,356,442,301,209) ++> (108,514,412,355,376,474,222)(110,495,137,478,361,444,380)(113,255,342,175, ++> 173,247,305)(114,256,141,328,153,307,304)(115,258,385,325,172,214,306) ++> (135,493,157,455,362,445,407)(142,346,189,398,323,161,499)(143,190,145,436, ++> 271,165,314)(155,195,211,174,404,374,204)(178,507,332,330,248,249,179) ++> (180,372,202,386,196,213,322)(191,267,491,384,438,279,225)(206,428,299,369, ++> 480,220,449)(223,481,383,427,397,324,504)(347,457,447,410,348,456,476));; ++gap> Length(Orbit(gp,set,OnSets)); ++241920 +diff --git a/tst/teststandard/hash2.tst b/tst/teststandard/hash2.tst +index 6bfa4d3..d47452e 100644 +--- a/tst/teststandard/hash2.tst ++++ b/tst/teststandard/hash2.tst +@@ -32,4 +32,8 @@ gap> Length(Orbit(h,h.1[1],OnRight)); + 2079 + gap> Length(Orbit(h,h.2^5,OnPoints)); + 693 ++gap> Length(Orbit(SymmetricGroup(14), [1 .. 7], OnSets)); ++3432 ++gap> Length(Orbit(SymmetricGroup(16), [1 .. 8], OnSets)); ++12870 + gap> STOP_TEST( "hash2.tst", 1); diff --git a/build/pkgs/gap/spkg-check.in b/build/pkgs/gap/spkg-check.in index d2fccda6e04..6dc12ca9266 100644 --- a/build/pkgs/gap/spkg-check.in +++ b/build/pkgs/gap/spkg-check.in @@ -10,7 +10,8 @@ cd pkg/io make cd ../.. -make testinstall +# This is the same as 'dev/ci.sh testinstall' (but dev/ci.sh is not part of the GAP tarball) +./gap tst/testinstall.g if [[ $? -ne 0 ]]; then exit 1 fi diff --git a/build/pkgs/gap/spkg-configure.m4 b/build/pkgs/gap/spkg-configure.m4 index d4c3680b430..d52d2c20b8c 100644 --- a/build/pkgs/gap/spkg-configure.m4 +++ b/build/pkgs/gap/spkg-configure.m4 @@ -2,8 +2,8 @@ SAGE_SPKG_CONFIGURE([gap], [ # Default to installing the SPKG, if the check is run at all. sage_spkg_install_gap=yes - m4_pushdef([GAP_MINVER],["4.12.2"]) - m4_pushdef([GAP_LTVER],["4.13.0"]) + m4_pushdef([GAP_MINVER],["4.13.0"]) + m4_pushdef([GAP_LTVER],["5.0.0"]) SAGE_SPKG_DEPCHECK([ncurses readline zlib], [ AC_PATH_PROG(GAP, gap) diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py index 71277561331..3b681d75d3b 100644 --- a/src/sage/algebras/fusion_rings/fusion_double.py +++ b/src/sage/algebras/fusion_rings/fusion_double.py @@ -133,7 +133,7 @@ class FusionDouble(CombinatorialFreeModule): sage: G = SmallPermutationGroup(16,9) sage: F = FusionDouble(G, prefix='b', inject_variables=True) sage: b13^2 # long time (4s) - b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27 + b0 + b3 + b4 """ @staticmethod def __classcall_private__(cls, G, prefix='s', inject_variables=False): diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py index aabd3cdbb4f..0a63a16bb5d 100644 --- a/src/sage/categories/simplicial_sets.py +++ b/src/sage/categories/simplicial_sets.py @@ -407,13 +407,13 @@ def universal_cover_map(self): EXAMPLES:: sage: RP2 = simplicial_sets.RealProjectiveSpace(2) # needs sage.graphs sage.groups - sage: phi = RP2.universal_cover_map(); phi # needs sage.graphs sage.groups + sage: phi = RP2.universal_cover_map(); phi # needs sage.graphs sage.groups gap_package_polenta Simplicial set morphism: From: Simplicial set with 6 non-degenerate simplices To: RP^2 Defn: [(1, 1), (1, e), (f, 1), (f, e), (f * f, 1), (f * f, e)] --> [1, 1, f, f, f * f, f * f] - sage: phi.domain().face_data() # needs sage.graphs sage.groups + sage: phi.domain().face_data() # needs sage.graphs sage.groups gap_package_polenta {(1, 1): None, (1, e): None, (f, 1): ((1, e), (1, 1)), @@ -564,7 +564,7 @@ def universal_cover(self): sage: RP3 = simplicial_sets.RealProjectiveSpace(3) sage: C = RP3.universal_cover(); C Simplicial set with 8 non-degenerate simplices - sage: C.face_data() + sage: C.face_data() # needs gap_package_polenta {(1, 1): None, (1, e): None, (f, 1): ((1, e), (1, 1)), @@ -591,9 +591,9 @@ def _canonical_twisting_operator(self): sage: X = simplicial_sets.Torus() sage: d = X._canonical_twisting_operator() sage: d - {(s_0 v_0, sigma_1): f3, (sigma_1, s_0 v_0): f2*f3^-1, (sigma_1, sigma_1): f2} + {(s_0 v_0, sigma_1): f2, (sigma_1, s_0 v_0): f1*f2^-1, (sigma_1, sigma_1): f1} sage: list(d.values())[0].parent() - Multivariate Laurent Polynomial Ring in f2, f3 over Integer Ring + Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring sage: Y = simplicial_sets.RealProjectiveSpace(2) sage: d2 = Y._canonical_twisting_operator() sage: d2 @@ -674,10 +674,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment sage: X = simplicial_sets.Torus() sage: C = X.twisted_chain_complex() sage: C.differential(1) - [ f3 - 1 f2*f3^-1 - 1 f2 - 1] + [ f2 - 1 f1*f2^-1 - 1 f1 - 1] sage: C.differential(2) - [ 1 f2*f3^-1] - [ f3 1] + [ 1 f1*f2^-1] + [ f2 1] [ -1 -1] sage: C.differential(3) [] @@ -844,29 +844,29 @@ def twisted_homology(self, n, reduced=False): sage: # needs sage.graphs sage: Y = simplicial_sets.Torus() sage: Y.twisted_homology(1) - Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [ 1 0 0 0 0] [ 0 1 0 0 0] [ 0 0 1 0 0] [ 0 0 0 1 0] [ 0 0 0 0 1] + [f1*f1inv - 1 0 0 0 0] + [ 0 f1*f1inv - 1 0 0 0] + [ 0 0 f1*f1inv - 1 0 0] + [ 0 0 0 f1*f1inv - 1 0] + [ 0 0 0 0 f1*f1inv - 1] [f2*f2inv - 1 0 0 0 0] [ 0 f2*f2inv - 1 0 0 0] [ 0 0 f2*f2inv - 1 0 0] [ 0 0 0 f2*f2inv - 1 0] [ 0 0 0 0 f2*f2inv - 1] - [f3*f3inv - 1 0 0 0 0] - [ 0 f3*f3inv - 1 0 0 0] - [ 0 0 f3*f3inv - 1 0 0] - [ 0 0 0 f3*f3inv - 1 0] - [ 0 0 0 0 f3*f3inv - 1] sage: Y.twisted_homology(2) - Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 0 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [] sage: Y.twisted_homology(1, reduced=True) - Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f2, f2inv, f3, f3inv over Integer Ring + Quotient module by Submodule of Ambient free module of rank 5 over the integral domain Multivariate Polynomial Ring in f1, f1inv, f2, f2inv over Integer Ring Generated by the rows of the matrix: [1 0 0 0 0] [0 1 0 0 0] diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py index 66952952854..29fbe2f960e 100644 --- a/src/sage/combinat/matrices/latin.py +++ b/src/sage/combinat/matrices/latin.py @@ -2443,7 +2443,7 @@ def p3_group_bitrade_generators(p): EXAMPLES:: sage: from sage.combinat.matrices.latin import * - sage: p3_group_bitrade_generators(3) + sage: p3_group_bitrade_generators(3) # random output ((2,6,7)(3,8,9), (1,2,3)(4,7,8)(5,6,9), (1,9,2)(3,7,4)(5,8,6), diff --git a/src/sage/features/gap.py b/src/sage/features/gap.py index 22197942b00..609cb37c263 100644 --- a/src/sage/features/gap.py +++ b/src/sage/features/gap.py @@ -81,6 +81,7 @@ def all_features(): GapPackage("grape", spkg='gap_packages'), GapPackage("guava", spkg='gap_packages'), GapPackage("hap", spkg='gap_packages'), + GapPackage("polenta", spkg='gap_packages'), GapPackage("polycyclic", spkg='gap_packages'), GapPackage("qpa", spkg='gap_packages'), GapPackage("quagroup", spkg='gap_packages')] diff --git a/src/sage/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py index d607435337a..e407b9d1326 100644 --- a/src/sage/groups/cubic_braid.py +++ b/src/sage/groups/cubic_braid.py @@ -284,7 +284,7 @@ def _richcmp_(self, other, op): EXAMPLES:: sage: CBG3 = CubicBraidGroup(3) - sage: sorted(CBG3) # indirect doctest + sage: sorted(CBG3) # indirect doctest, random output [(c0*c1^-1)^2, c0*c1^-1*c0, c0^-1*c1*c0^-1, c0^-1*c1^-1*c0, c1*c0^-1*c1, c0^-1*c1^-1*c0^-1, c0^-1*c1^-1, c1^-1*c0*c1^-1, c0*c1^-1*c0^-1, c0^-1*c1, c0^-1*c1*c0, c0*c1^-1, c1*c0^-1, diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py index 18221ead12b..9b5f7e422d6 100644 --- a/src/sage/groups/finitely_presented.py +++ b/src/sage/groups/finitely_presented.py @@ -1358,8 +1358,8 @@ def abelianization_map(self): sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) sage: H.abelianization_map() Group morphism: - From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > - To: Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, f3^-1*f4^-1*f3*f4, f2^4, f3^4 > + From: Finitely presented group < g0, g1, g2, g3 | g1^2, g2*g1*g2^-1*g1^-1, g1*g3^-2, g0^4 > + To: Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 > sage: g = FreeGroup(0) / [] sage: g.abelianization_map() Group endomorphism of Finitely presented group < | > @@ -1408,10 +1408,10 @@ def abelianization_to_algebra(self, ring=QQ): Defining g0, g1, g2, g3 sage: H = G.quotient([g1^2, g2*g1*g2^(-1)*g1^(-1), g1*g3^(-2), g0^4]) sage: H.abelianization_to_algebra() - (Finitely presented group < f2, f3, f4 | f2^-1*f3^-1*f2*f3, f2^-1*f4^-1*f2*f4, - f3^-1*f4^-1*f3*f4, f2^4, f3^4 >, - Multivariate Laurent Polynomial Ring in f2, f3, f4 over Rational Field, - [f2^4 - 1, f3^4 - 1], [f2^-1*f3^-2, f3^-2, f4, f3]) + (Finitely presented group < f1, f2, f3 | f1^4, f2^-1*f1^-1*f2*f1, f2^4, f3^-1*f1^-1*f3*f1, f3^-1*f2^-1*f3*f2 >, + Multivariate Laurent Polynomial Ring in f1, f2, f3 over Rational Field, + [f1^4 - 1, f2^4 - 1], + [f1^3*f2^2, f2^2, f3, f2]) sage: g=FreeGroup(0) / [] sage: g.abelianization_to_algebra() (Finitely presented group < | >, Rational Field, [], []) @@ -1685,7 +1685,7 @@ def abelian_alexander_matrix(self, ring=QQ, simplified=True): [] sage: G = FreeGroup(3)/[(2, 1, 1), (1, 2, 2, 3, 3)] sage: A, ideal = G.abelian_alexander_matrix(simplified=True); A - [-f3^2 - f3^4 - f3^6 f3^3 + f3^6] + [-f1^2 - f1^4 - f1^6 f1^3 + f1^6] sage: g = FreeGroup(1) / [] sage: g.abelian_alexander_matrix() ([], []) @@ -1785,11 +1785,11 @@ def characteristic_varieties(self, ring=QQ, matrix_ideal=None, groebner=False): 3: Ideal (1) of Multivariate Laurent Polynomial Ring in f1, f2 over Integer Ring} sage: G = FreeGroup(2)/[(1,2,1,-2,-1,-2)] sage: G.characteristic_varieties() - {0: Ideal (0) of Univariate Laurent Polynomial Ring in f2 over Rational Field, - 1: Ideal (-1 + 2*f2 - 2*f2^2 + f2^3) of Univariate Laurent Polynomial Ring in f2 over Rational Field, - 2: Ideal (1) of Univariate Laurent Polynomial Ring in f2 over Rational Field} + {0: Ideal (0) of Univariate Laurent Polynomial Ring in f1 over Rational Field, + 1: Ideal (-1 + 2*f1 - 2*f1^2 + f1^3) of Univariate Laurent Polynomial Ring in f1 over Rational Field, + 2: Ideal (1) of Univariate Laurent Polynomial Ring in f1 over Rational Field} sage: G.characteristic_varieties(groebner=True) - {0: [0], 1: [-1 + f2, 1 - f2 + f2^2], 2: []} + {0: [0], 1: [-1 + f1, 1 - f1 + f1^2], 2: []} sage: G = FreeGroup(2)/[3 * (1, ), 2 * (2, )] sage: G.characteristic_varieties(groebner=True) {0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2], 2: []} diff --git a/src/sage/groups/perm_gps/permgroup_element.pyx b/src/sage/groups/perm_gps/permgroup_element.pyx index 86b3ced83ea..b0150295f1f 100644 --- a/src/sage/groups/perm_gps/permgroup_element.pyx +++ b/src/sage/groups/perm_gps/permgroup_element.pyx @@ -96,6 +96,8 @@ Check that :issue:`13569` is fixed:: (1,2), (1,3), (1,3), (2,3), (1,2), (1,2), (1,3), (2,3)] """ +# hi + # **************************************************************************** # Copyright (C) 2006 William Stein # Copyright (C) 2006 David Joyner diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py index 943c3113579..d7dd1bdb2c4 100644 --- a/src/sage/groups/perm_gps/permgroup_named.py +++ b/src/sage/groups/perm_gps/permgroup_named.py @@ -3504,16 +3504,14 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: G = SmallPermutationGroup(12,4); G Group of order 12 and GAP Id 4 as a permutation group sage: G.gens() - ((1,2)(3,5)(4,10)(6,8)(7,12)(9,11), - (1,3)(2,5)(4,7)(6,9)(8,11)(10,12), - (1,4,8)(2,6,10)(3,7,11)(5,9,12)) + ((4,5), (1,2), (3,4,5)) sage: G.character_table() # needs sage.rings.number_field [ 1 1 1 1 1 1] - [ 1 -1 -1 1 1 -1] + [ 1 -1 1 -1 1 -1] [ 1 -1 1 1 -1 1] - [ 1 1 -1 1 -1 -1] - [ 2 0 -2 -1 0 1] - [ 2 0 2 -1 0 -1] + [ 1 1 1 -1 -1 -1] + [ 2 0 -1 -2 0 1] + [ 2 0 -1 2 0 -1] sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n)) sage: all(SmallPermutationGroup(n,k).id() == [n,k] ....: for n in [1..64] for k in [1..numgps(n)]) @@ -3522,11 +3520,11 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: H.is_abelian() False sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()] - [Subgroup generated by [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)] of + [Subgroup generated by [(1,3), (2,3)] of (Group of order 6 and GAP Id 1 as a permutation group), - Subgroup generated by [(1,2)(3,6)(4,5)] of + Subgroup generated by [(2,3)] of (Group of order 6 and GAP Id 1 as a permutation group), - Subgroup generated by [(1,3,5)(2,4,6), (1,5,3)(2,6,4)] of + Subgroup generated by [(1,2,3)] of (Group of order 6 and GAP Id 1 as a permutation group)] """ diff --git a/src/sage/libs/gap/element.pyx b/src/sage/libs/gap/element.pyx index c24408f401a..6345c898c66 100644 --- a/src/sage/libs/gap/element.pyx +++ b/src/sage/libs/gap/element.pyx @@ -5,6 +5,9 @@ This document describes the individual wrappers for various GAP elements. For general information about GAP, you should read the :mod:`~sage.libs.gap.libgap` module documentation. """ + +# hi + # **************************************************************************** # Copyright (C) 2012 Volker Braun # diff --git a/src/sage/libs/gap/libgap.pyx b/src/sage/libs/gap/libgap.pyx index f5b58a929f3..8218d51a5cd 100644 --- a/src/sage/libs/gap/libgap.pyx +++ b/src/sage/libs/gap/libgap.pyx @@ -176,6 +176,8 @@ AUTHORS: libgap API """ +# hi + ############################################################################### # Copyright (C) 2009, William Stein # Copyright (C) 2012, Volker Braun diff --git a/src/sage/libs/gap/util.pyx b/src/sage/libs/gap/util.pyx index 29fa347ff30..8509ae35e55 100644 --- a/src/sage/libs/gap/util.pyx +++ b/src/sage/libs/gap/util.pyx @@ -2,6 +2,8 @@ Utility functions for GAP """ +# hi + #***************************************************************************** # Copyright (C) 2012 Volker Braun # diff --git a/tox.ini b/tox.ini index 654e221aa07..bb3840cb3ed 100644 --- a/tox.ini +++ b/tox.ini @@ -824,8 +824,8 @@ commands = local: config*) ;; \ local: *) make -k V=0 base-toolchain ;; \ local: esac && \ - local: make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_PRE:} {posargs:build} && \ - local: ( [ -z "{env:TARGETS_OPTIONAL:}" ] || make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!r,!python3,!gap,!cysignals,!linbox,!git,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) ' + local: make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_PRE:} {posargs:build} && \ + local: ( [ -z "{env:TARGETS_OPTIONAL:}" ] || make -k V=0 SAGE_CHECK=warn SAGE_CHECK_PACKAGES="!cython,!python3,!cysignals,!linbox,!ppl,!cmake,!rpy2,!sage_sws2rst" {env:TARGETS_OPTIONAL:} || echo "(error ignored)" ) ' [testenv:check_configure] ## Test that configure behaves properly