From 3c73709f630c6063e90b64eb081c7aa1ec6ab4f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 12:29:21 -0300 Subject: [PATCH 1/6] ecl: update to 24.5.10. --- common/shlibs | 2 +- srcpkgs/ecl/template | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/shlibs b/common/shlibs index aed2d02e32d6ba..80038425c8a020 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4153,7 +4153,7 @@ libcxsparse.so.4 SuiteSparse-6.0.1_1 libspqr.so.4 SuiteSparse-7.2.0_1 libsuitesparseconfig.so.7 SuiteSparse-7.0.1_1 libumfpack.so.6 SuiteSparse-6.0.1_1 -libecl.so.23.9 ecl-23.9.9_1 +libecl.so.24.5 ecl-24.5.10_1 libecm.so.1 ecm-7.0.4_3 libcliquer.so.1 cliquer-1.22_1 libomalloc-0.9.6.so singular-4.2.1_1 diff --git a/srcpkgs/ecl/template b/srcpkgs/ecl/template index c657934737ea46..444d75ec3038f2 100644 --- a/srcpkgs/ecl/template +++ b/srcpkgs/ecl/template @@ -1,6 +1,6 @@ # Template file for 'ecl' pkgname=ecl -version=23.9.9 +version=24.5.10 revision=1 build_style=gnu-configure configure_args="--enable-gmp=system --enable-boehm=system @@ -14,7 +14,7 @@ license="LGPL-2.1-or-later" homepage="https://ecl.common-lisp.dev/" changelog="https://gitlab.com/embeddable-common-lisp/ecl/-/raw/develop/CHANGELOG" distfiles="https://ecl.common-lisp.dev/static/files/release/ecl-${version}.tgz" -checksum=c51bdab4ca6c1173dd3fe9cfe9727bcefb97bb0a3d6434b627ca6bdaeb33f880 +checksum=e4ea65bb1861e0e495386bfa8bc673bd014e96d3cf9d91e9038f91435cbe622b if [ "$CROSS_BUILD" ]; then # Depend on system ecl From 7478dd0022edebb21eea154385cb071d5e8e3ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 16:11:00 -0300 Subject: [PATCH 2/6] maxima: rebuild for ecl --- srcpkgs/maxima/template | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/srcpkgs/maxima/template b/srcpkgs/maxima/template index eae9cad3a85e99..9259b48f50822b 100644 --- a/srcpkgs/maxima/template +++ b/srcpkgs/maxima/template @@ -1,7 +1,7 @@ # Template file for 'maxima' pkgname=maxima version=5.47.0 -revision=3 +revision=4 build_style=gnu-configure configure_args="$(vopt_enable clisp) $(vopt_enable sbcl) $(vopt_enable ecl) makeinfo_found=true" @@ -24,6 +24,8 @@ nopie_files=/usr/lib/maxima/$version/binary-sbcl/maxima if [ "$build_option_sbcl" ]; then # binary-sbcl/maxima uses libgmp but this won't show up in objdump shlib_requires=libgmp.so.10 + # build standalone executable + configure_args+=" --enable-sbcl-exec" fi build_options="clisp sbcl ecl" From 668656be54912c42b0a50ad76d5556836ee7eec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 15 Mar 2024 12:59:54 -0300 Subject: [PATCH 3/6] gap: update to 4.13.0. --- common/shlibs | 2 +- srcpkgs/gap/template | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/common/shlibs b/common/shlibs index 80038425c8a020..53213300347d73 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4104,7 +4104,7 @@ liblinbox.so.0 linbox-1.6.3_1 libpari-gmp-tls.so.8 pari-2.15.0_1 libtree-sitter.so.0 tree-sitter-0.19.0_1 libplanarity.so.0 planarity-3.0.1.1_1 -libgap.so.8 gap-4.12.0_1 +libgap.so.9 gap-4.13.0_1 libgtkdatabox.so.1 gtkdatabox3-1.0.0_1 libxcvt.so.0 libxcvt-0.1.1_1 libgf2x.so.3 gf2x-1.3.0_1 diff --git a/srcpkgs/gap/template b/srcpkgs/gap/template index 63d1194d45ddc9..d6c106c4ce0a77 100644 --- a/srcpkgs/gap/template +++ b/srcpkgs/gap/template @@ -1,6 +1,6 @@ # Template file for 'gap' pkgname=gap -version=4.12.2 +version=4.13.0 revision=1 build_style=gnu-configure makedepends="gmp-devel zlib-devel readline-devel" @@ -11,11 +11,15 @@ license="GPL-2.0-or-later" homepage="https://www.gap-system.org/" changelog="https://raw.githubusercontent.com/gap-system/gap/master/CHANGES.md" distfiles="https://github.com/gap-system/gap/releases/download/v${version}/gap-${version}.tar.gz" -checksum=672308745eb78a222494ee8dd6786edd5bc331456fcc6456ac064bdb28d587a8 +checksum=cc76ecbe33d6719450a593e613fb87e9e4247faa876f632dd0f97c398f92265d if [ "$XBPS_CHECK_PKGS" = full ]; then - # not sure about this -- takes about 25 minutes - make_check_target=teststandard + do_check() { + # disable failing test + rm -f tst/teststandard/testLuxPahlings/example_4.4.18.tst + # about 5 minutes single core + ./gap tst/teststandard.g + } fi _GAPROOT=/usr/share/gap/ From ddd8d37f2824d687c9858d1b731617f925918a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 8 May 2024 09:20:46 -0300 Subject: [PATCH 4/6] python3-conway-polynomials: update to 0.10. --- srcpkgs/python3-conway-polynomials/template | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-conway-polynomials/template b/srcpkgs/python3-conway-polynomials/template index 11766521e26db7..2724d49767eb8c 100644 --- a/srcpkgs/python3-conway-polynomials/template +++ b/srcpkgs/python3-conway-polynomials/template @@ -1,6 +1,6 @@ # Template file for 'python3-conway-polynomials' pkgname=python3-conway-polynomials -version=0.9 +version=0.10 revision=1 build_style=python3-pep517 make_check_args="--doctest-modules --doctest-glob=README.rst" @@ -12,5 +12,5 @@ maintainer="Gonzalo TornarĂ­a " license="Public Domain, GPL-3.0-or-later" homepage="https://github.com/sagemath/conway-polynomials" changelog="https://github.com/sagemath/conway-polynomials/raw/master/NEWS" -distfiles="${PYPI_SITE}/c/conway-polynomials/conway-polynomials-${version}.tar.gz" -checksum=6ed2300609bce79f0175d5b8546858eec02854f8be3237db8d1449ccccc1c581 +distfiles="${PYPI_SITE}/c/conway-polynomials/conway_polynomials-${version}.tar.gz" +checksum=4f619f64f81a3eb16c4e26c5a284feeec27a6f4aad647643e79af289801ae0f3 From 4380f05ad1994228faa176b85bc92220ef767159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 9 Apr 2024 19:51:09 -0300 Subject: [PATCH 5/6] eclib: update to 20240408. --- srcpkgs/eclib/patches/fix-32bit-Euler.patch | 11 +++++++++++ srcpkgs/eclib/template | 6 +++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/eclib/patches/fix-32bit-Euler.patch diff --git a/srcpkgs/eclib/patches/fix-32bit-Euler.patch b/srcpkgs/eclib/patches/fix-32bit-Euler.patch new file mode 100644 index 00000000000000..44de9c31a06aaa --- /dev/null +++ b/srcpkgs/eclib/patches/fix-32bit-Euler.patch @@ -0,0 +1,11 @@ +--- a/libsrc/interface.cc ++++ b/libsrc/interface.cc +@@ -103,7 +103,7 @@ void Compute_Euler(RR& y) + + l = RR::precision(); + +- x = 1 + static_cast((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2)); ++ x = 1 + static_cast((0.25 * (l - 3)) * (64 * LOG2)); + n = 1 + static_cast(3.591 * x); + + a=x; diff --git a/srcpkgs/eclib/template b/srcpkgs/eclib/template index 9043aa465a9ff5..dd22d4e6de6f31 100644 --- a/srcpkgs/eclib/template +++ b/srcpkgs/eclib/template @@ -1,7 +1,7 @@ # Template file for 'eclib' pkgname=eclib -version=20231212 -revision=2 +version=20240408 +revision=1 build_style=gnu-configure configure_args="--with-flint --with-boost" makedepends="pari-devel ntl-devel flintlib-devel boost-devel" @@ -11,7 +11,7 @@ license="GPL-2.0-or-later" homepage="https://github.com/JohnCremona/eclib" changelog="https://github.com/JohnCremona/eclib/releases" distfiles="https://github.com/JohnCremona/eclib/releases/download/v${version}/eclib-${version}.tar.bz2" -checksum=32d116a3e359b0de4f6486c2bb6188bb8b553c8b833f618cc2596484e8b6145a +checksum=3ba908e2019de53fcba141449caa6fa82f03605bf83bf9da8092df538adabe7c eclib-devel_package() { depends="${sourcepkg}>=${version}_${revision} ntl-devel" From 8e40a321fbfee28ee1872eca85986e050d8d9c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Fri, 10 May 2024 16:13:08 -0300 Subject: [PATCH 6/6] sagemath: rebuild for ecl and gap Also patch for eclib and conway-polynomials updates. --- .../patches/37590-gap_4.13_part_1.patch | 724 ++++++++++++++++++ .../patches/37624-gap_4.13_part_2.patch | 14 + .../patches/37882-eclib_20040408.patch | 116 +++ .../patches/37883-gap_4.13_part_3.patch | 48 ++ .../patches/37884-gap_4.13_part_4.patch | 177 +++++ ...37949-conway-polynomials_0.10_part_1.patch | 24 + ...37967-conway-polynomials_0.10_part_2.patch | 74 ++ srcpkgs/sagemath/patches/get_patches | 19 +- srcpkgs/sagemath/template | 2 +- 9 files changed, 1195 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch create mode 100644 srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch create mode 100644 srcpkgs/sagemath/patches/37882-eclib_20040408.patch create mode 100644 srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch create mode 100644 srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch create mode 100644 srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch create mode 100644 srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch diff --git a/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch new file mode 100644 index 00000000000000..8e86d2a94a40ba --- /dev/null +++ b/srcpkgs/sagemath/patches/37590-gap_4.13_part_1.patch @@ -0,0 +1,724 @@ +diff --git a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst +index 101cbcdb4e7..fe465251bfc 100644 +--- a/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst ++++ b/src/doc/en/prep/Quickstarts/Abstract-Algebra.rst +@@ -65,13 +65,13 @@ We can access a lot of information about groups, such as: + Subgroup generated by [(1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) + Subgroup generated by [(2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) + Subgroup generated by [(1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(1,2)(3,8)(4,7)(5,6), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) +- Subgroup generated by [(2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8), (1,3,5,7)(2,4,6,8), (1,5)(2,6)(3,7)(4,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (1,2)(3,8)(4,7)(5,6)] of (Dihedral group of order 16 as a permutation group) ++ Subgroup generated by [(1,5)(2,6)(3,7)(4,8), (1,3,5,7)(2,4,6,8), (2,8)(3,7)(4,6), (1,2,3,4,5,6,7,8)] of (Dihedral group of order 16 as a permutation group) + + In the previous cell we once again did a for loop over a set of objects + rather than just a list of numbers. This can be very powerful. +diff --git a/src/doc/en/thematic_tutorials/group_theory.rst b/src/doc/en/thematic_tutorials/group_theory.rst +index e9e6b23953f..dd0afcbef0c 100644 +--- a/src/doc/en/thematic_tutorials/group_theory.rst ++++ b/src/doc/en/thematic_tutorials/group_theory.rst +@@ -591,8 +591,8 @@ subgroups. :: + Subgroup generated by [(1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), + Subgroup generated by [(1,6,11,16)(2,7,12,17)(3,8,13,18)(4,9,14,19)(5,10,15,20), (1,11)(2,12)(3,13)(4,14)(5,15)(6,16)(7,17)(8,18)(9,19)(10,20)] of (Cyclic group of order 20 as a permutation group), + Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), +- Subgroup generated by [(1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20)] of (Cyclic group of order 20 as a permutation group)] ++ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20)] of (Cyclic group of order 20 as a permutation group), ++ Subgroup generated by [(1,5,9,13,17)(2,6,10,14,18)(3,7,11,15,19)(4,8,12,16,20), (1,3,5,7,9,11,13,15,17,19)(2,4,6,8,10,12,14,16,18,20), (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)] of (Cyclic group of order 20 as a permutation group)] + + Be careful, this command uses some more advanced ideas and will not + usually list *all* of the subgroups of a group. Here we are relying on +@@ -651,16 +651,16 @@ suitable `g`. As an illustration, the code below: + Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), + Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12), (1,10,7,4)(2,11,8,5)(3,12,9,6)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(1,2)(3,12)(4,11)(5,10)(6,9)(7,8), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group), +- Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,5,9)(2,6,10)(3,7,11)(4,8,12)] of (Dihedral group of order 24 as a permutation group)] ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(2,12)(3,11)(4,10)(5,9)(6,8), (1,10,7,4)(2,11,8,5)(3,12,9,6), (1,7)(2,8)(3,9)(4,10)(5,11)(6,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (1,2)(3,12)(4,11)(5,10)(6,9)(7,8)] of (Dihedral group of order 24 as a permutation group), ++ Subgroup generated by [(1,5,9)(2,6,10)(3,7,11)(4,8,12), (1,3,5,7,9,11)(2,4,6,8,10,12), (2,12)(3,11)(4,10)(5,9)(6,8), (1,2,3,4,5,6,7,8,9,10,11,12)] of (Dihedral group of order 24 as a permutation group)] + + sage: print("An order two subgroup:\n{}".format(sg[1].list())) + An order two subgroup: +diff --git a/src/sage/categories/finite_groups.py b/src/sage/categories/finite_groups.py +index f6866485e93..70cc029e389 100644 +--- a/src/sage/categories/finite_groups.py ++++ b/src/sage/categories/finite_groups.py +@@ -48,7 +48,7 @@ class ParentMethods: + + def semigroup_generators(self): + """ +- Returns semigroup generators for self. ++ Return semigroup generators for ``self``. + + For finite groups, the group generators are also semigroup + generators. Hence, this default implementation calls +@@ -58,7 +58,7 @@ def semigroup_generators(self): + + sage: A = AlternatingGroup(4) + sage: A.semigroup_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +@@ -74,7 +74,7 @@ def monoid_generators(self): + + sage: A = AlternatingGroup(4) + sage: A.monoid_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +@@ -113,7 +113,7 @@ def some_elements(self): + + sage: A = AlternatingGroup(4) + sage: A.some_elements() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + return self.group_generators() + +diff --git a/src/sage/categories/groups.py b/src/sage/categories/groups.py +index 445ba111c09..22f02ae4b30 100644 +--- a/src/sage/categories/groups.py ++++ b/src/sage/categories/groups.py +@@ -102,7 +102,7 @@ def group_generators(self): + + sage: A = AlternatingGroup(4) # needs sage.groups + sage: A.group_generators() # needs sage.groups +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + """ + from sage.sets.family import Family + try: +@@ -124,7 +124,7 @@ def monoid_generators(self): + sage: # needs sage.groups + sage: A = AlternatingGroup(4) + sage: A.monoid_generators() +- Family ((2,3,4), (1,2,3)) ++ Family ((1,2,3), (2,3,4)) + sage: F. = FreeGroup() + sage: F.monoid_generators() + Family (x, y, x^-1, y^-1) +diff --git a/src/sage/categories/monoids.py b/src/sage/categories/monoids.py +index 28474bd17b6..a4340621bbe 100644 +--- a/src/sage/categories/monoids.py ++++ b/src/sage/categories/monoids.py +@@ -565,7 +565,7 @@ def algebra_generators(self): + + sage: A10 = AlternatingGroup(10) # needs sage.groups + sage: GroupAlgebras(QQ).example(A10).algebra_generators() # needs sage.groups sage.modules +- Family ((8,9,10), (1,2,3,4,5,6,7,8,9)) ++ Family ((1,2,3,4,5,6,7,8,9), (8,9,10)) + + sage: A = DihedralGroup(3).algebra(QQ); A # needs sage.groups sage.modules + Algebra of Dihedral group of order 6 as a permutation group +diff --git a/src/sage/groups/abelian_gps/abelian_group.py b/src/sage/groups/abelian_gps/abelian_group.py +index bbe793b3625..f98bfe0cde5 100644 +--- a/src/sage/groups/abelian_gps/abelian_group.py ++++ b/src/sage/groups/abelian_gps/abelian_group.py +@@ -1132,7 +1132,7 @@ def permutation_group(self): + sage: G = AbelianGroup(2,[2,3]); G + Multiplicative Abelian group isomorphic to C2 x C3 + sage: G.permutation_group() # needs sage.groups +- Permutation Group with generators [(3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5)] + + TESTS: + +diff --git a/src/sage/groups/abelian_gps/abelian_group_element.py b/src/sage/groups/abelian_gps/abelian_group_element.py +index 6ae81844f98..b081f1e1c4e 100644 +--- a/src/sage/groups/abelian_gps/abelian_group_element.py ++++ b/src/sage/groups/abelian_gps/abelian_group_element.py +@@ -101,7 +101,7 @@ def as_permutation(self): + Multiplicative Abelian group isomorphic to C2 x C3 x C4 + sage: a,b,c = G.gens() + sage: Gp = G.permutation_group(); Gp # needs sage.groups +- Permutation Group with generators [(6,7,8,9), (3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5), (6,7,8,9)] + sage: a.as_permutation() # needs sage.libs.gap + (1,2) + sage: ap = a.as_permutation(); ap # needs sage.libs.gap +diff --git a/src/sage/groups/additive_abelian/additive_abelian_group.py b/src/sage/groups/additive_abelian/additive_abelian_group.py +index c0a90f0c110..5f389fcfb81 100644 +--- a/src/sage/groups/additive_abelian/additive_abelian_group.py ++++ b/src/sage/groups/additive_abelian/additive_abelian_group.py +@@ -451,7 +451,7 @@ def permutation_group(self): + + sage: G = AdditiveAbelianGroup([2, 3]) + sage: G.permutation_group() # needs sage.groups +- Permutation Group with generators [(3,4,5), (1,2)] ++ Permutation Group with generators [(1,2), (3,4,5)] + + TESTS: + +diff --git a/src/sage/groups/class_function.py b/src/sage/groups/class_function.py +index e390cbbf288..901b0083b49 100644 +--- a/src/sage/groups/class_function.py ++++ b/src/sage/groups/class_function.py +@@ -717,7 +717,7 @@ def restrict(self, H): + Character of Symmetric group of order 5! as a permutation group + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: chi.restrict(H) +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: chi.restrict(H).values() + [3, -3, -3, -1, 0, 0] +@@ -744,7 +744,7 @@ def induct(self, G): + sage: G = SymmetricGroup(5) + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: xi = H.trivial_character(); xi +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: xi.induct(G) + Character of Symmetric group of order 5! as a permutation group +@@ -1425,7 +1425,7 @@ def restrict(self, H): + Character of Symmetric group of order 5! as a permutation group + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: chi.restrict(H) +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: chi.restrict(H).values() + [3, -3, -3, -1, 0, 0] +@@ -1457,7 +1457,7 @@ def induct(self, G): + sage: G = SymmetricGroup(5) + sage: H = G.subgroup([(1,2,3), (1,2), (4,5)]) + sage: xi = H.trivial_character(); xi +- Character of Subgroup generated by [(4,5), (1,2), (1,2,3)] of ++ Character of Subgroup generated by [(1,2,3), (1,2), (4,5)] of + (Symmetric group of order 5! as a permutation group) + sage: xi.induct(G) + Character of Symmetric group of order 5! as a permutation group +diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py +index 208758282b2..4ee53ba4f06 100644 +--- a/src/sage/groups/perm_gps/permgroup.py ++++ b/src/sage/groups/perm_gps/permgroup.py +@@ -478,6 +478,26 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, + sage: TestSuite(PermutationGroup([[]])).run() + sage: TestSuite(PermutationGroup([])).run() + sage: TestSuite(PermutationGroup([(0,1)])).run() ++ ++ Check that :issue:`37590` is fixed:: ++ ++ sage: lgg = libgap.eval("Group((1,2,3,4,5),(4,5,6))") ++ sage: P = PermutationGroup(gap_group=lgg) ++ sage: h = P.hom(codomain=P, im_gens=P.gens()) ++ sage: h ++ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] ++ sage: P.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: P.gap().GeneratorsOfGroup() ++ [ (1,2,3,4,5), (4,5,6) ] ++ ++ sage: gg = gap.eval("Group((1,2,3,4,5),(4,5,6))") ++ sage: P = PermutationGroup(gap_group=gg) ++ sage: P.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: h = P.hom(codomain=P, im_gens=P.gens()) ++ sage: h ++ Group endomorphism of Permutation Group with generators [(1,2,3,4,5), (4,5,6)] + """ + if (gens is None and gap_group is None): + raise ValueError("you must specify gens or gap_group") +@@ -496,6 +516,7 @@ def __init__(self, gens=None, gap_group=None, canonicalize=True, + + if isinstance(gap_group, LibGapElement): + self._libgap = gap_group ++ canonicalize = False + + # Handle the case where only the GAP group is specified. + if gens is None: +@@ -1828,7 +1849,7 @@ def stabilizer(self, point, action="OnPoints"): + + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4,10)]]) + sage: G.stabilizer(10) +- Subgroup generated by [(2,3,4), (1,2)(3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) ++ Subgroup generated by [(1,2)(3,4), (2,3,4)] of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4,10)]) + sage: G.stabilizer(1) == G.subgroup(['(2,3)(4,10)', '(2,10,3)']) + True + sage: G = PermutationGroup([[(2,3,4)],[(6,7)]]) +@@ -2430,7 +2451,6 @@ def fitting_subgroup(self): + sage: G.fitting_subgroup() + Subgroup generated by [(1,2)(3,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2), (1,2,3,4)]) +- + """ + return self.subgroup(gap_group=self._libgap_().FittingSubgroup()) + +@@ -2445,7 +2465,7 @@ def solvable_radical(self): + + sage: G = SymmetricGroup(4) + sage: G.solvable_radical() +- Subgroup generated by [(1,2), (1,2,3,4)] of ++ Subgroup generated by [(1,2,3,4), (1,2)] of + (Symmetric group of order 4! as a permutation group) + sage: G = SymmetricGroup(5) + sage: G.solvable_radical() +@@ -2581,7 +2601,7 @@ def conjugate(self, g): + sage: G = DihedralGroup(6) + sage: a = PermutationGroupElement("(1,2,3,4)") + sage: G.conjugate(a) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + + The element performing the conjugation can be specified in + several ways. :: +@@ -2589,15 +2609,15 @@ def conjugate(self, g): + sage: G = DihedralGroup(6) + sage: strng = "(1,2,3,4)" + sage: G.conjugate(strng) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + sage: G = DihedralGroup(6) + sage: lst = [2,3,4,1] + sage: G.conjugate(lst) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + sage: G = DihedralGroup(6) + sage: cycles = [(1,2,3,4)] + sage: G.conjugate(cycles) +- Permutation Group with generators [(1,4)(2,6)(3,5), (1,5,6,2,3,4)] ++ Permutation Group with generators [(1,5,6,2,3,4), (1,4)(2,6)(3,5)] + + Conjugation is a group automorphism, so conjugate groups + will be isomorphic. :: +@@ -2671,24 +2691,24 @@ def direct_product(self, other, maps=True): + + sage: G = CyclicPermutationGroup(4) + sage: D = G.direct_product(G, False); D +- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + sage: D,iota1,iota2,pr1,pr2 = G.direct_product(G) + sage: D; iota1; iota2; pr1; pr2 +- Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Permutation group morphism: + From: Cyclic group of order 4 as a permutation group +- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) + Permutation group morphism: + From: Cyclic group of order 4 as a permutation group +- To: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ To: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + Defn: Embedding( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) + Permutation group morphism: +- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + To: Cyclic group of order 4 as a permutation group + Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 1 ) + Permutation group morphism: +- From: Permutation Group with generators [(5,6,7,8), (1,2,3,4)] ++ From: Permutation Group with generators [(1,2,3,4), (5,6,7,8)] + To: Cyclic group of order 4 as a permutation group + Defn: Projection( Group( [ (1,2,3,4), (5,6,7,8) ] ), 2 ) + sage: g = D([(1,3),(2,4)]); g +@@ -2934,7 +2954,7 @@ def holomorph(self): + sage: D4 = DihedralGroup(4) + sage: H = D4.holomorph() + sage: H.gens() +- ((3,8)(4,7), (2,3,5,8), (2,5)(3,8), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) ++ ((2,3,5,8), (2,5)(3,8), (3,8)(4,7), (1,4,6,7)(2,3,5,8), (1,8)(2,7)(3,6)(4,5)) + sage: G = H.subgroup([H.gens()[0],H.gens()[1],H.gens()[2]]) + sage: N = H.subgroup([H.gens()[3],H.gens()[4]]) + sage: N.is_normal(H) +@@ -2954,7 +2974,6 @@ def holomorph(self): + + - Kevin Halasz (2012-08-14) + """ +- + libgap.eval('G := Group({})'.format(list(self.gens()))) + libgap.eval('aut := AutomorphismGroup(G)') + libgap.eval('alpha := InverseGeneralMapping(NiceMonomorphism(aut))') +@@ -3137,7 +3156,7 @@ def quotient(self, N, **kwds): + sage: G.quotient(N) + Permutation Group with generators [(1,2)] + sage: G.quotient(G) +- Permutation Group with generators [()] ++ Permutation Group with generators [(), ()] + """ + Q = self._libgap_() / N._libgap_() + # Return Q as a permutation group +@@ -3599,13 +3618,13 @@ def conjugacy_classes_subgroups(self): + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), +- Subgroup generated by [(1,2)(3,4), (1,4)(2,3)] of ++ Subgroup generated by [(1,4)(2,3), (1,2)(3,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(2,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), + Subgroup generated by [(1,2,3,4), (1,3)(2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]), +- Subgroup generated by [(2,4), (1,2)(3,4), (1,4)(2,3)] of ++ Subgroup generated by [(1,4)(2,3), (1,2)(3,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)])] + + :: +@@ -3618,7 +3637,7 @@ def conjugacy_classes_subgroups(self): + (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of + (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of ++ Subgroup generated by [(1,2,3), (2,3)] of + (Symmetric group of order 3! as a permutation group)] + + AUTHORS: +@@ -3640,7 +3659,7 @@ def subgroups(self): + with one element on through up to the whole group. + Conjugacy classes of subgroups are contiguous in the list. + +- .. warning:: ++ .. WARNING:: + + For even relatively small groups this method can + take a very long time to execute, or create vast +@@ -3671,7 +3690,7 @@ def subgroups(self): + (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of + (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of ++ Subgroup generated by [(1,2,3), (2,3)] of + (Symmetric group of order 3! as a permutation group)] + + sage: G = CyclicPermutationGroup(14) +@@ -3682,8 +3701,8 @@ def subgroups(self): + (Cyclic group of order 14 as a permutation group), + Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of + (Cyclic group of order 14 as a permutation group), +- Subgroup generated by [(1,2,3,4,5,6,7,8,9,10,11,12,13,14), +- (1,3,5,7,9,11,13)(2,4,6,8,10,12,14)] of ++ Subgroup generated by [(1,3,5,7,9,11,13)(2,4,6,8,10,12,14), ++ (1,2,3,4,5,6,7,8,9,10,11,12,13,14)] of + (Cyclic group of order 14 as a permutation group)] + + AUTHOR: +@@ -4049,15 +4068,15 @@ def normalizer(self, g): + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) + sage: g = G([(1,3)]) + sage: G.normalizer(g) +- Subgroup generated by [(2,4), (1,3)] of ++ Subgroup generated by [(1,3), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: g = G([(1,2,3,4)]) + sage: G.normalizer(g) +- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of ++ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: H = G.subgroup([G([(1,2,3,4)])]) + sage: G.normalizer(H) +- Subgroup generated by [(2,4), (1,2,3,4), (1,3)(2,4)] of ++ Subgroup generated by [(1,2,3,4), (1,3)(2,4), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + """ + return self.subgroup(gap_group=self._libgap_().Normalizer(g)) +@@ -4071,7 +4090,7 @@ def centralizer(self, g): + sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]]) + sage: g = G([(1,3)]) + sage: G.centralizer(g) +- Subgroup generated by [(2,4), (1,3)] of ++ Subgroup generated by [(1,3), (2,4)] of + (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) + sage: g = G([(1,2,3,4)]) + sage: G.centralizer(g) +@@ -4715,7 +4734,7 @@ def composition_series(self): + sage: G.composition_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), + Subgroup generated by [()] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] +@@ -4746,7 +4765,7 @@ def derived_series(self): + sage: G.derived_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] + """ + libgap.set_seed() +@@ -4770,7 +4789,7 @@ def lower_central_series(self): + sage: G.lower_central_series() + [Subgroup generated by [(3,4), (1,2,3)(4,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)]), +- Subgroup generated by [(1,3,5), (1,5)(3,4), (1,5)(2,4)] of ++ Subgroup generated by [(1,5)(3,4), (1,5)(2,4), (1,3,5)] of + (Permutation Group with generators [(3,4), (1,2,3)(4,5)])] + """ + libgap.set_seed() +@@ -5123,7 +5142,8 @@ def __richcmp__(self, other, op): + sage: G + Symmetric group of order 6! as a permutation group + sage: G3 +- Subgroup generated by [(1,2), (1,2,3,4,5,6)] of (Symmetric group of order 6! as a permutation group) ++ Subgroup generated by [(1,2,3,4,5,6), (1,2)] of ++ (Symmetric group of order 6! as a permutation group) + sage: G is G3 + False + sage: G == G3 # as permutation groups +diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py +index 222ee36f6da..6b42e654234 100644 +--- a/src/sage/groups/perm_gps/permgroup_named.py ++++ b/src/sage/groups/perm_gps/permgroup_named.py +@@ -449,7 +449,7 @@ def young_subgroup(self, comp): + sage: S = SymmetricGroup(8) + sage: c = Composition([2,2,2,2]) + sage: S.young_subgroup(c) +- Subgroup generated by [(7,8), (5,6), (3,4), (1,2)] of ++ Subgroup generated by [(1,2), (3,4), (5,6), (7,8)] of + (Symmetric group of order 8! as a permutation group) + + sage: S = SymmetricGroup(['a','b','c']) +@@ -706,6 +706,16 @@ def __init__(self, domain=None): + + sage: groups.permutation.Alternating(6) + Alternating group of order 6!/2 as a permutation group ++ ++ Check that alternating groups have their generators in the correct ++ order (:issue:`37590`):: ++ ++ sage: A = AlternatingGroup(6) ++ sage: A.gens() ++ ((1,2,3,4,5), (4,5,6)) ++ sage: A.gap().GeneratorsOfGroup() ++ [ (1,2,3,4,5), (4,5,6) ] ++ sage: h = A.hom(codomain=A, im_gens=A.gens()) + """ + PermutationGroup_symalt.__init__(self, gap_group='AlternatingGroup(%s)' % len(domain), domain=domain) + +@@ -3084,8 +3094,8 @@ def __init__(self, q, name='a'): + EXAMPLES:: + + sage: SuzukiGroup(8) # needs sage.rings.finite_rings +- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), +- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] ++ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), ++ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] + sage: print(SuzukiGroup(8)) # needs sage.rings.finite_rings + The Suzuki group over Finite Field in a of size 2^3 + +@@ -3101,8 +3111,8 @@ def __init__(self, q, name='a'): + TESTS:: + + sage: groups.permutation.Suzuki(8) # needs sage.rings.finite_rings +- Permutation Group with generators [(1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64), +- (1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56)] ++ Permutation Group with generators [(1,28,10,44)(3,50,11,42)(4,43,53,64)(5,9,39,52)(6,36,63,13)(7,51,60,57)(8,33,37,16)(12,24,55,29)(14,30,48,47)(15,19,61,54)(17,59,22,62)(18,23,34,31)(20,38,49,25)(21,26,45,58)(27,32,41,65)(35,46,40,56), ++ (1,2)(3,10)(4,42)(5,18)(6,50)(7,26)(8,58)(9,34)(12,28)(13,45)(14,44)(15,23)(16,31)(17,21)(19,39)(20,38)(22,25)(24,61)(27,60)(29,65)(30,55)(32,33)(35,52)(36,49)(37,59)(40,54)(41,62)(43,53)(46,48)(47,56)(51,63)(57,64)] + + REFERENCES: + +diff --git a/src/sage/rings/polynomial/polynomial_rational_flint.pyx b/src/sage/rings/polynomial/polynomial_rational_flint.pyx +index 1ef3cbaf681..805bb9fe8ae 100644 +--- a/src/sage/rings/polynomial/polynomial_rational_flint.pyx ++++ b/src/sage/rings/polynomial/polynomial_rational_flint.pyx +@@ -2116,7 +2116,7 @@ cdef class Polynomial_rational_flint(Polynomial): + sage: G = f.galois_group(); G + Transitive group number 5 of degree 4 + sage: G.gens() +- ((1,2), (1,2,3,4)) ++ ((1,2,3,4), (1,2)) + sage: G.order() + 24 + +diff --git a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py +index 25efca28dce..028dd8cb33c 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/cosets-sage.py +@@ -95,7 +95,7 @@ + Subgroup generated by [(1,2)] of (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,3)] of (Symmetric group of order 3! as a permutation group), + Subgroup generated by [(1,2,3)] of (Symmetric group of order 3! as a permutation group), +- Subgroup generated by [(2,3), (1,2,3)] of (Symmetric group of order 3! as a permutation group)] ++ Subgroup generated by [(1,2,3), (2,3)] of (Symmetric group of order 3! as a permutation group)] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +diff --git a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py +index 036b0a390c0..b1ecf0d8d48 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/galois-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/galois-sage.py +@@ -271,10 +271,10 @@ + ((1,4),), + ((1,2)(3,4),), + ((1,3)(2,4),), +- ((2,3), (1,4)(2,3)), +- ((1,2,4,3), (1,4)(2,3)), +- ((1,2)(3,4), (1,4)(2,3)), +- ((2,3), (1,2,4,3), (1,4)(2,3))] ++ ((1,4)(2,3), (2,3)), ++ ((1,4)(2,3), (1,2,4,3)), ++ ((1,4)(2,3), (1,2)(3,4)), ++ ((1,4)(2,3), (2,3), (1,2,4,3))] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +diff --git a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py +index abff8d3189c..dbc7bca8d96 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/homomorph-sage.py +@@ -164,15 +164,14 @@ + sage: H = DihedralGroup(4) + sage: results = G.direct_product(H) + sage: results[0] +- Permutation Group with generators [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: results[1] + Permutation group morphism: + From: Cyclic group of order 3 as a permutation group +- To: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -180,16 +179,14 @@ + sage: results[2] + Permutation group morphism: + From: Dihedral group of order 8 as a permutation group +- To: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ To: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + Defn: Embedding( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: results[3] + Permutation group morphism: +- From: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + To: Cyclic group of order 3 as a permutation group + Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 1 ) + +@@ -197,8 +194,7 @@ + + sage: results[4] + Permutation group morphism: +- From: Permutation Group with generators +- [(4,5,6,7), (4,7)(5,6), (1,2,3)] ++ From: Permutation Group with generators [(1,2,3), (4,5,6,7), (4,7)(5,6)] + To: Dihedral group of order 8 as a permutation group + Defn: Projection( Group( [ (1,2,3), (4,5,6,7), (4,7)(5,6) ] ), 2 ) + +diff --git a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py +index 0051f206528..cd78b147ca3 100644 +--- a/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py ++++ b/src/sage/tests/books/judson-abstract-algebra/sylow-sage.py +@@ -65,12 +65,12 @@ + sage: uniqS2 + [Permutation Group with generators [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,7)(2,6)(3,5)(8,18)(9,17)(10,16)(11,15)(12,14), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18)], ++ Permutation Group with generators [(1,13)(2,12)(3,11)(4,10)(5,9)(6,8)(14,18)(15,17), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], ++ Permutation Group with generators [(1,15)(2,14)(3,13)(4,12)(5,11)(6,10)(7,9)(16,18), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,3)(4,18)(5,17)(6,16)(7,15)(8,14)(9,13)(10,12), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,9)(2,8)(3,7)(4,6)(10,18)(11,17)(12,16)(13,15), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16)], +- Permutation Group with generators [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), (1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10)], ++ Permutation Group with generators [(1,11)(2,10)(3,9)(4,8)(5,7)(12,18)(13,17)(14,16), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], ++ Permutation Group with generators [(1,17)(2,16)(3,15)(4,14)(5,13)(6,12)(7,11)(8,10), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)], + Permutation Group with generators [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)]] + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -83,8 +83,8 @@ + sage: G = DihedralGroup(18) + sage: S3 = G.sylow_subgroup(3); S3 + Subgroup generated by +- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] + of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -92,8 +92,8 @@ + sage: uniqS3 = all_sylow(G, 3) + sage: uniqS3 + [Permutation Group with generators +- [(1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)]] ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)]] + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +@@ -117,8 +117,8 @@ + sage: S3 = G.sylow_subgroup(3) + sage: N2 = G.normalizer(S2); N2 + Subgroup generated by +- [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), +- (1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18)] ++ [(1,10)(2,11)(3,12)(4,13)(5,14)(6,15)(7,16)(8,17)(9,18), ++ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11)] + of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: +@@ -129,11 +129,12 @@ + ~~~~~~~~~~~~~~~~~~~~~~ :: + + sage: N3 = G.normalizer(S3); N3 +- Subgroup generated by [(2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), +- (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18), +- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), +- (1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6)] of (Dihedral group of +- order 36 as a permutation group) ++ Subgroup generated by ++ [(1,15,11,7,3,17,13,9,5)(2,16,12,8,4,18,14,10,6), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), ++ (2,18)(3,17)(4,16)(5,15)(6,14)(7,13)(8,12)(9,11), ++ (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)] ++ of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + +@@ -154,10 +155,10 @@ + sage: N = G.normalizer(H) + sage: N + Subgroup generated by +- [(1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11), +- (1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), +- (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18)] of (Dihedral group of +- order 36 as a permutation group) ++ [(1,5)(2,4)(6,18)(7,17)(8,16)(9,15)(10,14)(11,13), ++ (1,7,13)(2,8,14)(3,9,15)(4,10,16)(5,11,17)(6,12,18), ++ (1,2)(3,18)(4,17)(5,16)(6,15)(7,14)(8,13)(9,12)(10,11)] ++ of (Dihedral group of order 36 as a permutation group) + + ~~~~~~~~~~~~~~~~~~~~~~ :: + diff --git a/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch new file mode 100644 index 00000000000000..46541442bc9a7d --- /dev/null +++ b/srcpkgs/sagemath/patches/37624-gap_4.13_part_2.patch @@ -0,0 +1,14 @@ +diff --git a/src/sage/interfaces/gap3.py b/src/sage/interfaces/gap3.py +index e73308e014e..de2a7fe4289 100644 +--- a/src/sage/interfaces/gap3.py ++++ b/src/sage/interfaces/gap3.py +@@ -752,7 +752,8 @@ def _latex_(self): + r""" + EXAMPLES:: + +- sage: s = gap("[[1,2], [3/4, 5/6]]") ++ sage: # optional - gap3 ++ sage: s = gap3("[[1,2], [3/4, 5/6]]") + sage: s._latex_() + '\\left(\\begin{array}{rr} 1&2\\\\ 3/4&\\frac{5}{6}\\\\ \\end{array}\\right)' + sage: latex(s) diff --git a/srcpkgs/sagemath/patches/37882-eclib_20040408.patch b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch new file mode 100644 index 00000000000000..819ee8e63ac476 --- /dev/null +++ b/srcpkgs/sagemath/patches/37882-eclib_20040408.patch @@ -0,0 +1,116 @@ +diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py +index 7b2b07b1f3f..6c15997c09f 100644 +--- a/src/sage/libs/eclib/interface.py ++++ b/src/sage/libs/eclib/interface.py +@@ -728,7 +728,7 @@ class mwrank_MordellWeil(SageObject): + P1 = [-3:0:1] is generator number 1 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 7) +@@ -738,7 +738,7 @@ class mwrank_MordellWeil(SageObject): + P2 = [-2:3:1] is generator number 2 + saturating up to 20...Saturation index bound (for points of good reduction) = 4 + Reducing saturation bound from given value 20 to computed index bound 4 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + possible kernel vector = [1,1] +@@ -753,7 +753,7 @@ class mwrank_MordellWeil(SageObject): + P3 = [-14:25:8] is generator number 3 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -908,7 +908,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 93 + Only p-saturating for p up to given value 2. + The resulting points may not be p-saturated for p between this and the computed index bound 93 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 ] + Checking 2-saturation + possible kernel vector = [1,0,0] +@@ -930,7 +930,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 46 + Only p-saturating for p up to given value 3. + The resulting points may not be p-saturated for p between this and the computed index bound 46 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -954,7 +954,7 @@ def process(self, v, saturation_bound=0): + saturating basis...Saturation index bound (for points of good reduction) = 15 + Only p-saturating for p up to given value 5. + The resulting points may not be p-saturated for p between this and the computed index bound 15 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 5 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -978,7 +978,7 @@ def process(self, v, saturation_bound=0): + 0.417143558758384 + sage: EQ.saturate() # points are now saturated + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -1189,7 +1189,7 @@ def saturate(self, max_prime=-1, min_prime=2): + + sage: EQ.saturate() # points are now saturated + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +@@ -1217,7 +1217,7 @@ def saturate(self, max_prime=-1, min_prime=2): + + sage: EQ.saturate() + saturating basis...Saturation index bound (for points of good reduction) = 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) +diff --git a/src/sage/libs/eclib/mwrank.pyx b/src/sage/libs/eclib/mwrank.pyx +index bc475f907b6..c685c329926 100644 +--- a/src/sage/libs/eclib/mwrank.pyx ++++ b/src/sage/libs/eclib/mwrank.pyx +@@ -590,7 +590,7 @@ cdef class _mw: + P1 = [-3:0:1] is generator number 1 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 7) +@@ -600,7 +600,7 @@ cdef class _mw: + P2 = [-2:3:1] is generator number 2 + saturating up to 20...Saturation index bound (for points of good reduction) = 4 + Reducing saturation bound from given value 20 to computed index bound 4 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + possible kernel vector = [1,1] +@@ -615,7 +615,7 @@ cdef class _mw: + P3 = [-14:25:8] is generator number 3 + saturating up to 20...Saturation index bound (for points of good reduction) = 3 + Reducing saturation bound from given value 20 to computed index bound 3 +- Tamagawa index primes are [ 2 ] ++ Tamagawa index primes are [ 2 ]... + Checking saturation at [ 2 3 ] + Checking 2-saturation + Points were proved 2-saturated (max q used = 11) diff --git a/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch new file mode 100644 index 00000000000000..d22922704ecffa --- /dev/null +++ b/srcpkgs/sagemath/patches/37883-gap_4.13_part_3.patch @@ -0,0 +1,48 @@ +diff --git a/src/sage/groups/libgap_wrapper.pyx b/src/sage/groups/libgap_wrapper.pyx +index 0cf0e8bfb31..ddba766e94d 100644 +--- a/src/sage/groups/libgap_wrapper.pyx ++++ b/src/sage/groups/libgap_wrapper.pyx +@@ -602,14 +602,11 @@ cdef class ElementLibGAP(MultiplicativeGroupElement): + sage: from sage.groups.libgap_group import GroupLibGAP + sage: G = GroupLibGAP(libgap.FreeGroup('a', 'b')) + sage: g = G.gen(0) * G.gen(1) +- sage: g._latex_() +- "ab%\n" +- """ +- try: +- return self.gap().LaTeX() +- except ValueError: +- from sage.misc.latex import latex +- return latex(self._repr_()) ++ sage: latex(g) ++ \text{\texttt{a*b}} ++ """ ++ from sage.misc.latex import latex ++ return latex(self._repr_()) + + cpdef _mul_(left, right): + """ +diff --git a/src/sage/interfaces/gap.py b/src/sage/interfaces/gap.py +index ee5861ac785..2e49e4c106f 100644 +--- a/src/sage/interfaces/gap.py ++++ b/src/sage/interfaces/gap.py +@@ -1562,16 +1562,10 @@ def _latex_(self): + + sage: s = gap("[[1,2], [3/4, 5/6]]") + sage: latex(s) +- \left(\begin{array}{rr} 1&2\\ 3/4&\frac{5}{6}\\ \end{array}\right) ++ \left[\left[1, 2\right], \left[\frac{3}{4}, \frac{5}{6}\right]\right] + """ +- P = self._check_valid() +- try: +- s = P.eval('LaTeXObj(%s)' % self.name()) +- s = s.replace('\\\\', '\\').replace('"', '') +- s = s.replace('%\\n', ' ') +- return s +- except RuntimeError: +- return str(self) ++ from sage.misc.latex import latex ++ return latex(self._sage_()) + + @cached_method + def _tab_completion(self): diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch new file mode 100644 index 00000000000000..dfa924c8d3b6a1 --- /dev/null +++ b/srcpkgs/sagemath/patches/37884-gap_4.13_part_4.patch @@ -0,0 +1,177 @@ +diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py +index d87a7a782a7..7df091d3ca9 100644 +--- a/src/sage/algebras/fusion_rings/fusion_double.py ++++ b/src/sage/algebras/fusion_rings/fusion_double.py +@@ -132,7 +132,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 +diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py +index 7b7bbf827af..0864dc30af2 100644 +--- a/src/sage/categories/simplicial_sets.py ++++ b/src/sage/categories/simplicial_sets.py +@@ -593,9 +593,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 +@@ -675,10 +675,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) + [] +@@ -843,29 +843,29 @@ def twisted_homology(self, n, reduced=False): + + 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/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py +index a6ef6bb7395..b5a4b3a1edc 100644 +--- a/src/sage/groups/finitely_presented.py ++++ b/src/sage/groups/finitely_presented.py +@@ -1344,8 +1344,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 < | > +@@ -1394,10 +1394,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, [], []) +@@ -1673,7 +1673,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() + ([], []) +@@ -1773,11 +1773,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_named.py b/src/sage/groups/perm_gps/permgroup_named.py +index c000d2cf105..765626e1752 100644 +--- a/src/sage/groups/perm_gps/permgroup_named.py ++++ b/src/sage/groups/perm_gps/permgroup_named.py +@@ -3451,16 +3451,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)]) +@@ -3469,11 +3467,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/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch new file mode 100644 index 00000000000000..5bf9212b0fd865 --- /dev/null +++ b/srcpkgs/sagemath/patches/37949-conway-polynomials_0.10_part_1.patch @@ -0,0 +1,24 @@ +diff --git a/src/sage/databases/conway.py b/src/sage/databases/conway.py +index b1f76292ce8..54912a2471c 100644 +--- a/src/sage/databases/conway.py ++++ b/src/sage/databases/conway.py +@@ -138,11 +138,16 @@ def __len__(self): + """ + Return the number of polynomials in this database. + +- TESTS:: ++ TESTS: ++ ++ The database currently contains `35357` polynomials, but due to ++ :issue:`35357` it will be extended by Conway polynomials of ++ degrees `1`, `2` and `3` for primes between `65537` and `110000`, ++ thus leading to a new total of `47090` entries:: + + sage: c = ConwayPolynomials() +- sage: len(c) +- 35357 ++ sage: len(c) in [35357, 47090] ++ True + """ + try: + return self._len diff --git a/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch new file mode 100644 index 00000000000000..5220db9f572a38 --- /dev/null +++ b/srcpkgs/sagemath/patches/37967-conway-polynomials_0.10_part_2.patch @@ -0,0 +1,74 @@ +diff --git a/src/sage/schemes/elliptic_curves/ell_point.py b/src/sage/schemes/elliptic_curves/ell_point.py +index 9889808b35d..99e3e8c81fa 100644 +--- a/src/sage/schemes/elliptic_curves/ell_point.py ++++ b/src/sage/schemes/elliptic_curves/ell_point.py +@@ -1818,6 +1818,17 @@ def weil_pairing(self, Q, n, algorithm=None): + sage: z.multiplicative_order() + 360 + ++ Another larger example:: ++ ++ sage: F = GF(65537^2, modulus=[3,-1,1], name='a') ++ sage: F.inject_variables() ++ Defining a ++ sage: E = EllipticCurve(F, [0,1]) ++ sage: P = E(22, 28891) ++ sage: Q = E(-93, 2728*a + 64173) ++ sage: P.weil_pairing(Q, 7282, algorithm='sage') ++ 53278*a + 36700 ++ + An example over a number field:: + + sage: # needs sage.rings.number_field +@@ -1833,16 +1844,20 @@ def weil_pairing(self, Q, n, algorithm=None): + + TESTS: + +- Check that the original Sage implementation still works:: ++ Check that the original Sage implementation still works and ++ that the result coincides with the PARI implementation:: + + sage: # needs sage.rings.finite_rings + sage: GF(65537^2).inject_variables() + Defining z2 + sage: E = EllipticCurve(GF(65537^2), [0,1]) +- sage: P = E(22, 28891) +- sage: Q = E(-93, 40438*z2 + 31573) +- sage: P.weil_pairing(Q, 7282, algorithm='sage') +- 19937*z2 + 65384 ++ sage: R, S = E.torsion_basis(7282) ++ sage: a, b = ZZ.random_element(), ZZ.random_element() ++ sage: P = a*R + b*S ++ sage: c, d = ZZ.random_element(), ZZ.random_element() ++ sage: Q = c*R + d*S ++ sage: P.weil_pairing(Q, 7282, algorithm='sage') == P.weil_pairing(Q, 7282, algorithm='pari') ++ True + + Passing an unknown ``algorithm=`` argument should fail:: + +@@ -2047,19 +2062,19 @@ def tate_pairing(self, Q, n, k, q=None): + sage: Px.weil_pairing(Qx, 41)^e == num/den + True + +- TESTS: +- +- Check that the PARI output matches the original Sage implementation:: ++ An example over a large base field:: + +- sage: # needs sage.rings.finite_rings +- sage: GF(65537^2).inject_variables() ++ sage: F = GF(65537^2, modulus=[3,46810,1], name='z2') ++ sage: F.inject_variables() + Defining z2 +- sage: E = EllipticCurve(GF(65537^2), [0,1]) ++ sage: E = EllipticCurve(F, [0,1]) + sage: P = E(22, 28891) + sage: Q = E(-93, 40438*z2 + 31573) + sage: P.tate_pairing(Q, 7282, 2) + 34585*z2 + 4063 + ++ TESTS: ++ + The point ``P (self)`` must have ``n`` torsion:: + + sage: P.tate_pairing(Q, 163, 2) diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 56057bbd4a397b..291824adc2549e 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -20,6 +20,21 @@ get_pr() { # run from patches dir cd $(dirname "$0") -# needs review -get_pr 37492 "singular 4.3.2p16" +# merged in 10.4.beta1 +get_pr 37590 "gap 4.13 part 1" +get_pr 37624 "gap 4.13 part 2" + +# merged in 10.4.beta2 get_pr 37763 "scipy 1.13" +get_pr 37882 "eclib 20040408" +get_pr 37883 "gap 4.13 part 3" + +# merged in 10.4.beta5 +get_pr 37492 "singular 4.3.2p16" + +# positive review +get_pr 37949 "conway-polynomials 0.10 part 1" +get_pr 37967 "conway-polynomials 0.10 part 2" + +# needs review +get_pr 37884 "gap 4.13 part 4" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index 8b4bf7dfa441bb..faefc4b91a84e1 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,7 +1,7 @@ # Template file for 'sagemath' pkgname=sagemath version=10.3 -revision=2 +revision=3 build_wrksrc=pkgs/sagemath-standard build_style=python3-pep517 make_build_args="--skip-dependency-check"