* [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0.
@ 2024-05-12 16:02 tornaria
2024-05-13 1:10 ` tornaria
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: tornaria @ 2024-05-12 16:02 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1626 bytes --]
There is a new pull request by tornaria against master on the void-packages repository
https://github.com/tornaria/void-packages ecl-gap
https://github.com/void-linux/void-packages/pull/50295
ecl: update to 24.5.10, gap: update to 4.13.0.
- **ecl: update to 24.5.10.**
- **maxima: rebuild for ecl**
- **gap: update to 4.13.0.**
- **python3-conway-polynomials: update to 0.10.**
- **eclib: update to 20240408.**
- **sagemath: rebuild for ecl and gap**
Both updates need rebuilding sagemath, so I placed them together. I also did two minor updates (eclib and conway-polynomials) which needed sagemath patches (merged upstream).
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **YES**
<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/50295.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ecl-gap-50295.patch --]
[-- Type: text/x-diff, Size: 80458 bytes --]
From 3c73709f630c6063e90b64eb081c7aa1ec6ab4f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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?= <tornaria@cmat.edu.uy>
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 <tornaria@cmat.edu.uy>"
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?= <tornaria@cmat.edu.uy>
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<long>((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2));
++ x = 1 + static_cast<long>((0.25 * (l - 3)) * (64 * LOG2));
+ n = 1 + static_cast<long>(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?= <tornaria@cmat.edu.uy>
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.<x,y> = 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"
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ecl: update to 24.5.10, gap: update to 4.13.0.
2024-05-12 16:02 [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0 tornaria
@ 2024-05-13 1:10 ` tornaria
2024-05-14 19:02 ` dkwo
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: tornaria @ 2024-05-13 1:10 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 305 bytes --]
New comment by tornaria on void-packages repository
https://github.com/void-linux/void-packages/pull/50295#issuecomment-2106456707
Comment:
@knusbaum: this PR includes update of ecl (with rebuild of maxima + sagemath)
@dkwo: you might want to try building maxima on aarch64, either here or in #49571
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ecl: update to 24.5.10, gap: update to 4.13.0.
2024-05-12 16:02 [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0 tornaria
2024-05-13 1:10 ` tornaria
@ 2024-05-14 19:02 ` dkwo
2024-06-14 15:56 ` [PR PATCH] [Updated] " tornaria
2024-06-14 15:57 ` ecl: update to 24.5.10, gap: update to 4.13.1 tornaria
3 siblings, 0 replies; 5+ messages in thread
From: dkwo @ 2024-05-14 19:02 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 211 bytes --]
New comment by dkwo on void-packages repository
https://github.com/void-linux/void-packages/pull/50295#issuecomment-2110946681
Comment:
The maxima and ecl from this PR build and check fine on aarch64, thanks!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PR PATCH] [Updated] ecl: update to 24.5.10, gap: update to 4.13.0.
2024-05-12 16:02 [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0 tornaria
2024-05-13 1:10 ` tornaria
2024-05-14 19:02 ` dkwo
@ 2024-06-14 15:56 ` tornaria
2024-06-14 15:57 ` ecl: update to 24.5.10, gap: update to 4.13.1 tornaria
3 siblings, 0 replies; 5+ messages in thread
From: tornaria @ 2024-06-14 15:56 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1631 bytes --]
There is an updated pull request by tornaria against master on the void-packages repository
https://github.com/tornaria/void-packages ecl-gap
https://github.com/void-linux/void-packages/pull/50295
ecl: update to 24.5.10, gap: update to 4.13.0.
- **ecl: update to 24.5.10.**
- **maxima: rebuild for ecl**
- **gap: update to 4.13.0.**
- **python3-conway-polynomials: update to 0.10.**
- **eclib: update to 20240408.**
- **sagemath: rebuild for ecl and gap**
Both updates need rebuilding sagemath, so I placed them together. I also did two minor updates (eclib and conway-polynomials) which needed sagemath patches (merged upstream).
<!-- Uncomment relevant sections and delete options which are not applicable -->
#### Testing the changes
- I tested the changes in this PR: **YES**
<!--
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
-->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!--
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- aarch64-musl
- armv7l
- armv6l-musl
-->
A patch file from https://github.com/void-linux/void-packages/pull/50295.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ecl-gap-50295.patch --]
[-- Type: text/x-diff, Size: 82070 bytes --]
From e57aaa09ce9d174a4379bad3b5ebf2e501e130cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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 80eca3e0a08dca..e4a8b1d19fd578 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4227,7 +4227,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 8c506357a4cb89e4be977c8c48154f4bd1ac8223 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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 a4189b4ae1707e4bfce4b6425359184e5edd87a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Fri, 15 Mar 2024 12:59:54 -0300
Subject: [PATCH 3/6] gap: update to 4.13.1.
---
common/shlibs | 2 +-
srcpkgs/gap/template | 12 ++++++++----
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/common/shlibs b/common/shlibs
index e4a8b1d19fd578..b9069b8418a758 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4178,7 +4178,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..14a8c6687ba202 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.1
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=9794dbdba6fb998e0a2d0aa8ce21fc8848ad3d3f9cc9993b0b8e20be7e1dbeba
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 975c97ee4c5e718170eca6c10da4e3e15c1edcc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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 <tornaria@cmat.edu.uy>"
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 1b4eed387475cd9766c59228c2cc44a90749a92a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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<long>((0.25 * (l - 3)) * (NTL_BITS_PER_LONG * LOG2));
++ x = 1 + static_cast<long>((0.25 * (l - 3)) * (64 * LOG2));
+ n = 1 + static_cast<long>(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 6fb9d61ba5d0e2937fbcec832894c69eee1928dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
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/patches/zz-gap_4.13.1.patch | 26 +
srcpkgs/sagemath/template | 2 +-
10 files changed, 1221 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
create mode 100644 srcpkgs/sagemath/patches/zz-gap_4.13.1.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.<x,y> = 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/patches/zz-gap_4.13.1.patch b/srcpkgs/sagemath/patches/zz-gap_4.13.1.patch
new file mode 100644
index 00000000000000..e9c3223376903e
--- /dev/null
+++ b/srcpkgs/sagemath/patches/zz-gap_4.13.1.patch
@@ -0,0 +1,26 @@
+diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py
+index 936edcc6ea4..c06a53d9afd 100644
+--- a/src/sage/combinat/matrices/latin.py
++++ b/src/sage/combinat/matrices/latin.py
+@@ -2453,7 +2453,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/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py
+index 6f357c91b58..5dd3fe1da4d 100644
+--- a/src/sage/groups/cubic_braid.py
++++ b/src/sage/groups/cubic_braid.py
+@@ -282,7 +282,7 @@ class CubicBraidElement(FinitelyPresentedGroupElement):
+ 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/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"
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ecl: update to 24.5.10, gap: update to 4.13.1.
2024-05-12 16:02 [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0 tornaria
` (2 preceding siblings ...)
2024-06-14 15:56 ` [PR PATCH] [Updated] " tornaria
@ 2024-06-14 15:57 ` tornaria
3 siblings, 0 replies; 5+ messages in thread
From: tornaria @ 2024-06-14 15:57 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 205 bytes --]
New comment by tornaria on void-packages repository
https://github.com/void-linux/void-packages/pull/50295#issuecomment-2168320602
Comment:
Updated gap from 4.13.0 to 4.13.1, no other change in this PR.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-06-14 15:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-12 16:02 [PR PATCH] ecl: update to 24.5.10, gap: update to 4.13.0 tornaria
2024-05-13 1:10 ` tornaria
2024-05-14 19:02 ` dkwo
2024-06-14 15:56 ` [PR PATCH] [Updated] " tornaria
2024-06-14 15:57 ` ecl: update to 24.5.10, gap: update to 4.13.1 tornaria
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).