passagemath-gap 10.5.43__tar.gz → 10.6.1rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {passagemath_gap-10.5.43/passagemath_gap.egg-info → passagemath_gap-10.6.1rc2}/PKG-INFO +6 -7
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/README.rst +1 -1
- passagemath_gap-10.6.1rc2/VERSION.txt +1 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2/passagemath_gap.egg-info}/PKG-INFO +6 -7
- passagemath_gap-10.6.1rc2/passagemath_gap.egg-info/requires.txt +8 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/pyproject.toml +8 -9
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/autgroup_can_label.pyx +34 -25
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/codecan.pxd +2 -2
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/codecan.pyx +25 -18
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/enumeration_mod_permgroup.pyx +3 -3
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/reflection_group_complex.py +11 -12
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/weyl_group.py +2 -2
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/class_function.py +0 -1
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/libgap_wrapper.pyx +1 -1
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/binary_dihedral.py +1 -1
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permgroup.py +17 -48
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permgroup_element.pyx +25 -9
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/interfaces/gap.py +12 -3
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/gap_includes.pxd +1 -1
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/rings/species.py +116 -60
- passagemath_gap-10.5.43/VERSION.txt +0 -1
- passagemath_gap-10.5.43/passagemath_gap.egg-info/requires.txt +0 -8
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/MANIFEST.in +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/passagemath_gap.egg-info/SOURCES.txt +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/passagemath_gap.egg-info/dependency_links.txt +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/passagemath_gap.egg-info/top_level.txt +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/repair_wheel.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/all.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/meson.build +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/enumeration_mod_permgroup.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/reflection_group_c.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/reflection_group_element.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/reflection_group_element.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/reflection_group_real.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/ext_data/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/ext_data/gap/console.g +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/ext_data/gap/joyner/hurwitz_crv_rr_sp.gap +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/ext_data/gap/joyner/modular_crv_rr_sp.gap +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/ext_data/gap/sage.g +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/geometry/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/geometry/ribbon_graph.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/graphs/spanning_tree.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/abelian_gps/abelian_aut.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/abelian_gps/abelian_group_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/abelian_gps/abelian_group_morphism.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/abelian_gps/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/conjugacy_classes.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/galois_group_perm.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/libgap_group.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/libgap_mixin.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/libgap_morphism.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/libgap_wrapper.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/finitely_generated_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/group_element_gap.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/group_element_gap.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/heisenberg.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/isometries.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/linear_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/matrix_group_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/named_group_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/orthogonal_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/symplectic_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/unitary_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/all.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/constructor.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/cubegroup.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/meson.build +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref2/all.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref2/meson.build +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref2/refinement_generic.h +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref2/refinement_generic.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permgroup_element.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permgroup_morphism.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permgroup_named.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/permutation_groups_catalog.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/perm_gps/symgp_conjugacy_class.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/semimonomial_transformations/all.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/semimonomial_transformations/semimonomial_transformation.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/interfaces/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/interfaces/gap3.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/interfaces/gap_workspace.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/all.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/all_documented_functions.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/assigned_names.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/context_managers.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/element.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/element.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/gap_functions.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/gap_globals.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/libgap.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/meson.build +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/operations.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/sage.gaprc +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/saved_workspace.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/test.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/test_long.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/util.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/libs/gap/util.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/matrix/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/matrix/matrix_gap.pxd +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/matrix/matrix_gap.pyx +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/rings/all__sagemath_gap.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/rings/universal_cyclotomic_field.py +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/setup.cfg +0 -0
- {passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: passagemath-gap
|
3
|
-
Version: 10.
|
3
|
+
Version: 10.6.1rc2
|
4
4
|
Summary: passagemath: Computational Group Theory with GAP
|
5
5
|
Author-email: The Sage Developers <sage-support@googlegroups.com>
|
6
6
|
Maintainer: Matthias Köppe, passagemath contributors
|
@@ -19,20 +19,19 @@ Classifier: Intended Audience :: Science/Research
|
|
19
19
|
Classifier: Operating System :: POSIX
|
20
20
|
Classifier: Operating System :: MacOS :: MacOS X
|
21
21
|
Classifier: Programming Language :: Python :: 3 :: Only
|
22
|
-
Classifier: Programming Language :: Python :: 3.9
|
23
22
|
Classifier: Programming Language :: Python :: 3.10
|
24
23
|
Classifier: Programming Language :: Python :: 3.11
|
25
24
|
Classifier: Programming Language :: Python :: 3.12
|
26
25
|
Classifier: Programming Language :: Python :: 3.13
|
27
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
28
27
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
29
|
-
Requires-Python: <3.14,>=3.
|
28
|
+
Requires-Python: <3.14,>=3.10
|
30
29
|
Description-Content-Type: text/x-rst
|
31
30
|
Requires-Dist: cysignals!=1.12.0,>=1.11.2
|
32
31
|
Requires-Dist: memory_allocator
|
33
|
-
Requires-Dist: passagemath-conf
|
34
|
-
Requires-Dist: passagemath-environment
|
35
|
-
Requires-Dist: passagemath-categories
|
32
|
+
Requires-Dist: passagemath-conf==10.6.1rc2
|
33
|
+
Requires-Dist: passagemath-environment==10.6.1rc2
|
34
|
+
Requires-Dist: passagemath-categories==10.6.1rc2
|
36
35
|
Provides-Extra: test
|
37
36
|
Requires-Dist: passagemath-repl; extra == "test"
|
38
37
|
|
@@ -77,7 +76,7 @@ passagemath attempts to support all major Linux distributions and recent version
|
|
77
76
|
macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
|
78
77
|
virtualization.
|
79
78
|
|
80
|
-
Complete sets of binary wheels are provided on PyPI for Python versions 3.
|
79
|
+
Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
|
81
80
|
Python 3.13.x is also supported, but some third-party packages are still missing wheels,
|
82
81
|
so compilation from source is triggered for those.
|
83
82
|
|
@@ -39,7 +39,7 @@ passagemath attempts to support all major Linux distributions and recent version
|
|
39
39
|
macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
|
40
40
|
virtualization.
|
41
41
|
|
42
|
-
Complete sets of binary wheels are provided on PyPI for Python versions 3.
|
42
|
+
Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
|
43
43
|
Python 3.13.x is also supported, but some third-party packages are still missing wheels,
|
44
44
|
so compilation from source is triggered for those.
|
45
45
|
|
@@ -0,0 +1 @@
|
|
1
|
+
10.6.1.rc2
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: passagemath-gap
|
3
|
-
Version: 10.
|
3
|
+
Version: 10.6.1rc2
|
4
4
|
Summary: passagemath: Computational Group Theory with GAP
|
5
5
|
Author-email: The Sage Developers <sage-support@googlegroups.com>
|
6
6
|
Maintainer: Matthias Köppe, passagemath contributors
|
@@ -19,20 +19,19 @@ Classifier: Intended Audience :: Science/Research
|
|
19
19
|
Classifier: Operating System :: POSIX
|
20
20
|
Classifier: Operating System :: MacOS :: MacOS X
|
21
21
|
Classifier: Programming Language :: Python :: 3 :: Only
|
22
|
-
Classifier: Programming Language :: Python :: 3.9
|
23
22
|
Classifier: Programming Language :: Python :: 3.10
|
24
23
|
Classifier: Programming Language :: Python :: 3.11
|
25
24
|
Classifier: Programming Language :: Python :: 3.12
|
26
25
|
Classifier: Programming Language :: Python :: 3.13
|
27
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
28
27
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
29
|
-
Requires-Python: <3.14,>=3.
|
28
|
+
Requires-Python: <3.14,>=3.10
|
30
29
|
Description-Content-Type: text/x-rst
|
31
30
|
Requires-Dist: cysignals!=1.12.0,>=1.11.2
|
32
31
|
Requires-Dist: memory_allocator
|
33
|
-
Requires-Dist: passagemath-conf
|
34
|
-
Requires-Dist: passagemath-environment
|
35
|
-
Requires-Dist: passagemath-categories
|
32
|
+
Requires-Dist: passagemath-conf==10.6.1rc2
|
33
|
+
Requires-Dist: passagemath-environment==10.6.1rc2
|
34
|
+
Requires-Dist: passagemath-categories==10.6.1rc2
|
36
35
|
Provides-Extra: test
|
37
36
|
Requires-Dist: passagemath-repl; extra == "test"
|
38
37
|
|
@@ -77,7 +76,7 @@ passagemath attempts to support all major Linux distributions and recent version
|
|
77
76
|
macOS. Use on Windows currently requires the use of Windows Subsystem for Linux or
|
78
77
|
virtualization.
|
79
78
|
|
80
|
-
Complete sets of binary wheels are provided on PyPI for Python versions 3.
|
79
|
+
Complete sets of binary wheels are provided on PyPI for Python versions 3.10.x-3.13.x.
|
81
80
|
Python 3.13.x is also supported, but some third-party packages are still missing wheels,
|
82
81
|
so compilation from source is triggered for those.
|
83
82
|
|
@@ -3,10 +3,10 @@
|
|
3
3
|
# Minimum requirements for the build system to execute.
|
4
4
|
requires = [
|
5
5
|
'setuptools >= 77.0.0',
|
6
|
-
'passagemath-setup
|
7
|
-
'passagemath-environment
|
8
|
-
'passagemath-categories
|
9
|
-
'passagemath-modules
|
6
|
+
'passagemath-setup == 10.6.1rc2',
|
7
|
+
'passagemath-environment == 10.6.1rc2',
|
8
|
+
'passagemath-categories == 10.6.1rc2',
|
9
|
+
'passagemath-modules == 10.6.1rc2',
|
10
10
|
'cython >=3.0, != 3.0.3, <4.0', 'cython >=3.0.8,<3.1.0',
|
11
11
|
'gmpy2 ~=2.1.b999',
|
12
12
|
'cysignals >=1.11.2, != 1.12.0',
|
@@ -21,9 +21,9 @@ description = "passagemath: Computational Group Theory with GAP"
|
|
21
21
|
dependencies = [
|
22
22
|
'cysignals >=1.11.2, != 1.12.0',
|
23
23
|
'memory_allocator',
|
24
|
-
'passagemath-conf
|
25
|
-
'passagemath-environment
|
26
|
-
'passagemath-categories
|
24
|
+
'passagemath-conf == 10.6.1rc2',
|
25
|
+
'passagemath-environment == 10.6.1rc2',
|
26
|
+
'passagemath-categories == 10.6.1rc2',
|
27
27
|
]
|
28
28
|
dynamic = ["version"]
|
29
29
|
license = "GPL-2.0-or-later"
|
@@ -39,7 +39,6 @@ classifiers = [
|
|
39
39
|
"Operating System :: POSIX",
|
40
40
|
"Operating System :: MacOS :: MacOS X",
|
41
41
|
"Programming Language :: Python :: 3 :: Only",
|
42
|
-
"Programming Language :: Python :: 3.9",
|
43
42
|
"Programming Language :: Python :: 3.10",
|
44
43
|
"Programming Language :: Python :: 3.11",
|
45
44
|
"Programming Language :: Python :: 3.12",
|
@@ -47,7 +46,7 @@ classifiers = [
|
|
47
46
|
"Programming Language :: Python :: Implementation :: CPython",
|
48
47
|
"Topic :: Scientific/Engineering :: Mathematics",
|
49
48
|
]
|
50
|
-
requires-python = ">=3.
|
49
|
+
requires-python = ">=3.10, <3.14"
|
51
50
|
|
52
51
|
[project.urls]
|
53
52
|
"release notes" = "https://github.com/passagemath/passagemath/releases"
|
{passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/coding/codecan/autgroup_can_label.pyx
RENAMED
@@ -246,7 +246,7 @@ class LinearCodeAutGroupCanLabel:
|
|
246
246
|
z.sort()
|
247
247
|
z = [i for (p, i) in z]
|
248
248
|
|
249
|
-
normalization_factors = [
|
249
|
+
normalization_factors = [F.one()] * mat.ncols()
|
250
250
|
if algorithm_type == "permutational":
|
251
251
|
for c in col_list:
|
252
252
|
c.set_immutable()
|
@@ -258,20 +258,20 @@ class LinearCodeAutGroupCanLabel:
|
|
258
258
|
|
259
259
|
normalization = S(v=normalization_factors)
|
260
260
|
normalization_inverse = normalization ** (-1)
|
261
|
-
col_set = list({col_list[y] for y in nz
|
261
|
+
col_set = list({col_list[y] for y in nz})
|
262
262
|
col2pos = []
|
263
263
|
col2P = []
|
264
264
|
for c in col_set:
|
265
|
-
X = [(pos2P[y], y) for y in range(mat.ncols()) if col_list[y] == c
|
265
|
+
X = [(pos2P[y], y) for y in range(mat.ncols()) if col_list[y] == c]
|
266
266
|
X.sort()
|
267
|
-
col2pos.append([b for
|
268
|
-
col2P.append([a for
|
267
|
+
col2pos.append([b for _, b in X])
|
268
|
+
col2P.append([a for a, _ in X])
|
269
269
|
|
270
270
|
zipped = sorted(zip(col2P, col_set, col2pos))
|
271
271
|
|
272
|
-
col2P = [qty for
|
273
|
-
col_set = [c for
|
274
|
-
col2pos = [pos for
|
272
|
+
col2P = [qty for qty, c, pos in zipped]
|
273
|
+
col_set = [c for qty, c, pos in zipped]
|
274
|
+
col2pos = [pos for qty, c, pos in zipped]
|
275
275
|
P_refined = []
|
276
276
|
p = [0]
|
277
277
|
act_qty = col2P[0]
|
@@ -291,7 +291,9 @@ class LinearCodeAutGroupCanLabel:
|
|
291
291
|
# the dimension of the dual code
|
292
292
|
# in this case we work with the code itself.
|
293
293
|
pr = PartitionRefinementLinearCode(len(col_set),
|
294
|
-
|
294
|
+
matrix(col_set).transpose(),
|
295
|
+
P=P_refined,
|
296
|
+
algorithm_type=algorithm_type)
|
295
297
|
|
296
298
|
# this command allows you some advanced debugging
|
297
299
|
# it prints the backtrack tree -> must be activated when installing
|
@@ -299,8 +301,11 @@ class LinearCodeAutGroupCanLabel:
|
|
299
301
|
|
300
302
|
can_transp = pr.get_transporter()
|
301
303
|
can_col_set = pr.get_canonical_form().columns()
|
302
|
-
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
303
|
-
|
304
|
+
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
305
|
+
pr.get_autom_gens(),
|
306
|
+
normalization,
|
307
|
+
normalization_inverse, col2pos
|
308
|
+
)
|
304
309
|
self._PGammaL_autom_size = pr.get_autom_order_permutation()
|
305
310
|
self._PGammaL_autom_size *= pr.get_autom_order_inner_stabilizer()
|
306
311
|
self._full_autom_order = self._PGammaL_autom_size
|
@@ -333,28 +338,27 @@ class LinearCodeAutGroupCanLabel:
|
|
333
338
|
A.append(S_short(perm=_cyclic_shift(n, p)))
|
334
339
|
self._full_autom_order *= factorial(len(p))
|
335
340
|
self._PGammaL_autom_size = self._full_autom_order / (len(F) - 1)
|
336
|
-
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
337
|
-
normalization, normalization_inverse, col2pos)
|
341
|
+
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
342
|
+
A, normalization, normalization_inverse, col2pos)
|
338
343
|
else:
|
339
344
|
# use the dual code for the computations
|
340
345
|
# this might have zero columns or multiple columns, hence
|
341
346
|
# we call this algorithm again.
|
342
347
|
short_dual_code = LinearCode(matrix(col_set).transpose()).dual_code()
|
343
348
|
agcl = LinearCodeAutGroupCanLabel(short_dual_code,
|
344
|
-
|
349
|
+
P=P_refined,
|
350
|
+
algorithm_type=algorithm_type)
|
345
351
|
can_transp = agcl.get_transporter()
|
346
352
|
can_transp.invert_v()
|
347
353
|
can_col_set = agcl.get_canonical_form().parity_check_matrix().columns()
|
348
354
|
A = agcl.get_autom_gens()
|
349
355
|
for a in A:
|
350
356
|
a.invert_v()
|
351
|
-
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
352
|
-
normalization, normalization_inverse, col2pos)
|
357
|
+
self._PGammaL_autom_gens = self._compute_PGammaL_automs(
|
358
|
+
A, normalization, normalization_inverse, col2pos)
|
353
359
|
self._PGammaL_autom_size = agcl.get_PGammaL_order()
|
354
360
|
self._full_autom_order = agcl.get_autom_order()
|
355
361
|
|
356
|
-
count = 0
|
357
|
-
block_ptr = []
|
358
362
|
canonical_form = matrix(F, mat.ncols(), mat.nrows())
|
359
363
|
|
360
364
|
perm = [-1] * mat.ncols()
|
@@ -363,8 +367,8 @@ class LinearCodeAutGroupCanLabel:
|
|
363
367
|
for i in range(len(can_col_set)):
|
364
368
|
img = can_transp.get_perm()(i + 1)
|
365
369
|
for j in col2pos[img - 1]:
|
366
|
-
pos = P[
|
367
|
-
canonical_form[
|
370
|
+
pos = P[pos2P[j]].pop()
|
371
|
+
canonical_form[pos] = can_col_set[i]
|
368
372
|
mult[pos] = can_transp.get_v()[i]
|
369
373
|
perm[pos] = j + 1
|
370
374
|
|
@@ -376,14 +380,17 @@ class LinearCodeAutGroupCanLabel:
|
|
376
380
|
|
377
381
|
self._canonical_form = LinearCode(canonical_form.transpose())
|
378
382
|
self._transporter = S(perm=Permutation(perm), v=mult, autom=can_transp.get_autom()) * normalization
|
379
|
-
self._trivial_autom_gens, a = self._compute_trivial_automs(
|
380
|
-
|
383
|
+
self._trivial_autom_gens, a = self._compute_trivial_automs(
|
384
|
+
normalization,
|
385
|
+
normalization_inverse, z, [pos2P[x] for x in z],
|
386
|
+
zero_column_case=True)
|
381
387
|
self._full_autom_order *= a
|
382
388
|
|
383
389
|
for i in range(len(col2P)):
|
384
390
|
if len(col2P[i]) > 1:
|
385
391
|
A, a = self._compute_trivial_automs(normalization,
|
386
|
-
|
392
|
+
normalization_inverse,
|
393
|
+
col2pos[i], col2P[i])
|
387
394
|
self._full_autom_order *= a
|
388
395
|
self._trivial_autom_gens += A
|
389
396
|
|
@@ -461,11 +468,13 @@ class LinearCodeAutGroupCanLabel:
|
|
461
468
|
aut_order *= factorial(j - beg)
|
462
469
|
# we append a transposition of the first two elements
|
463
470
|
A.append(normalization_inverse *
|
464
|
-
|
471
|
+
S(perm=_cyclic_shift(n, col2pos[beg:beg + 2])) *
|
472
|
+
normalization)
|
465
473
|
if j - beg > 2:
|
466
474
|
# we append a cycle on all elements
|
467
475
|
A.append(normalization_inverse *
|
468
|
-
|
476
|
+
S(perm=_cyclic_shift(n, col2pos[beg:j])) *
|
477
|
+
normalization)
|
469
478
|
beg = j
|
470
479
|
return A, aut_order
|
471
480
|
|
@@ -37,8 +37,8 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
37
37
|
cdef int _k, _q
|
38
38
|
cdef long *_hyp_refine_vals_scratch
|
39
39
|
cdef object _inner_group_stabilizer_order
|
40
|
-
cdef bitset_t *_hyp2points
|
41
|
-
cdef bitset_t *_points2hyp
|
40
|
+
cdef bitset_t *_hyp2points # hyperplanes to points
|
41
|
+
cdef bitset_t *_points2hyp # points to hyperplanes, transpose of _hyp2points
|
42
42
|
cdef PartitionStack *_hyp_part
|
43
43
|
cdef object _matrix, _root_matrix
|
44
44
|
cdef InnerGroup _inner_group
|
@@ -85,14 +85,14 @@ is returned by generators::
|
|
85
85
|
True
|
86
86
|
"""
|
87
87
|
|
88
|
-
|
88
|
+
# *****************************************************************************
|
89
89
|
# Copyright (C) 2012 Thomas Feulner <thomas.feulner@uni-bayreuth.de>
|
90
90
|
#
|
91
91
|
# Distributed under the terms of the GNU General Public License (GPL)
|
92
92
|
# as published by the Free Software Foundation; either version 2 of
|
93
93
|
# the License, or (at your option) any later version.
|
94
94
|
# https://www.gnu.org/licenses/
|
95
|
-
|
95
|
+
# *****************************************************************************
|
96
96
|
from itertools import repeat
|
97
97
|
from copy import copy
|
98
98
|
from cysignals.memory cimport check_allocarray, sig_free
|
@@ -378,8 +378,9 @@ cdef class InnerGroup:
|
|
378
378
|
6 -> 6 7 -> 7 8 -> 8 9 -> 9
|
379
379
|
"""
|
380
380
|
return r"Subgroup of (GL(k,q) times \GF{q}^n ) rtimes Aut(\GF{q}) " + \
|
381
|
-
"with rank = %s, frobenius power = %s and partition =%s" % (
|
382
|
-
|
381
|
+
"with rank = %s, frobenius power = %s and partition =%s" % (
|
382
|
+
self.rank,
|
383
|
+
self.frob_pow, OP_string(self.row_partition))
|
383
384
|
|
384
385
|
cdef void minimize_by_frobenius(self, object v, int *applied_frob, int *stab_pow) noexcept:
|
385
386
|
r"""
|
@@ -637,7 +638,8 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
637
638
|
else:
|
638
639
|
P = remaining_inner_group.column_blocks(self._best_candidate)
|
639
640
|
for p in P:
|
640
|
-
x = S(v=[
|
641
|
+
x = S(v=[F.primitive_element() if i in p else F.one()
|
642
|
+
for i in range(self._n)])
|
641
643
|
self._autom_group_generators.append(transp_inv * x * self._transporter)
|
642
644
|
self._inner_group_stabilizer_order = (len(F) - 1) ** len(P)
|
643
645
|
|
@@ -756,10 +758,9 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
756
758
|
This graph will be later used in the refinement procedures.
|
757
759
|
"""
|
758
760
|
cdef FFSS_projPoint iter = FFSS_projPoint(self._matrix)
|
759
|
-
cdef mp_bitcnt_t i,j
|
761
|
+
cdef mp_bitcnt_t i, j
|
760
762
|
|
761
763
|
ambient_space = (self._matrix.base_ring()) ** (self._n)
|
762
|
-
weights2size = [0] * (self.len() + 1)
|
763
764
|
W = [[] for _ in repeat(None, self.len() + 1)]
|
764
765
|
span = [ambient_space.zero_subspace()] * (self.len() + 1)
|
765
766
|
min_weight = self.len()
|
@@ -814,8 +815,9 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
814
815
|
cdef bint _minimization_allowed_on_col(self, int pos) noexcept:
|
815
816
|
r"""
|
816
817
|
Decide if we are allowed to perform the inner minimization on position
|
817
|
-
``pos`` which is supposed to be a singleton.
|
818
|
-
|
818
|
+
``pos`` which is supposed to be a singleton.
|
819
|
+
|
820
|
+
For linear codes over finite fields, we can always return ``True``.
|
819
821
|
"""
|
820
822
|
return True
|
821
823
|
|
@@ -834,8 +836,9 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
834
836
|
- ``True`` if and only if the actual node compares less or equal
|
835
837
|
to the candidate for the canonical form.
|
836
838
|
"""
|
837
|
-
self._matrix = self._inner_group.minimize_matrix_col(
|
838
|
-
|
839
|
+
self._matrix = self._inner_group.minimize_matrix_col(
|
840
|
+
self._matrix, pos,
|
841
|
+
self._fixed_minimized, inner_group_changed)
|
839
842
|
|
840
843
|
# finally compare the new column with the best candidate
|
841
844
|
if self._is_candidate_initialized:
|
@@ -912,7 +915,7 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
912
915
|
- ``False`` only if the image under this homomorphism of group actions
|
913
916
|
compares larger than the image of the candidate for the canonical form.
|
914
917
|
"""
|
915
|
-
cdef int i,
|
918
|
+
cdef int i, res, stab_pow, apply_pow
|
916
919
|
|
917
920
|
if self._inner_group.rank < 2:
|
918
921
|
return True
|
@@ -990,7 +993,9 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
990
993
|
cdef long * best_vals = self._point_refine_vals.get_row(self._nr_of_point_refine_calls)
|
991
994
|
self._nr_of_point_refine_calls += 1
|
992
995
|
cdef bint ret_val = self._one_refinement(best_vals, 0, self._n,
|
993
|
-
|
996
|
+
inner_stab_changed,
|
997
|
+
changed_partition,
|
998
|
+
"point_refine")
|
994
999
|
|
995
1000
|
if not changed_partition[0]:
|
996
1001
|
self._part.depth -= 1
|
@@ -1033,8 +1038,10 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
1033
1038
|
self._nr_of_hyp_refine_calls += 1
|
1034
1039
|
|
1035
1040
|
cdef tuple ret_val = PS_refinement(self._hyp_part,
|
1036
|
-
|
1037
|
-
|
1041
|
+
self._hyp_refine_vals_scratch,
|
1042
|
+
best_vals, 0, self._hyp_part.degree,
|
1043
|
+
&self._is_candidate_initialized,
|
1044
|
+
changed_partition)
|
1038
1045
|
|
1039
1046
|
if not changed_partition[0]:
|
1040
1047
|
self._hyp_part.depth -= 1
|
@@ -1095,11 +1102,11 @@ cdef class PartitionRefinementLinearCode(PartitionRefinement_generic):
|
|
1095
1102
|
else:
|
1096
1103
|
self._latex_debug_string += " & "
|
1097
1104
|
|
1098
|
-
permuted_matrix = self._matrix.matrix_from_columns([self._part.entries[i] for i in range(self._n)
|
1105
|
+
permuted_matrix = self._matrix.matrix_from_columns([self._part.entries[i] for i in range(self._n)])
|
1099
1106
|
|
1100
1107
|
# Now we will finally print the matrix.
|
1101
|
-
for i
|
1102
|
-
for j
|
1108
|
+
for i in range(self._k):
|
1109
|
+
for j in range(self._n - 1):
|
1103
1110
|
self._latex_debug_string += "$" + permuted_matrix[i, j]._latex_() + "$ & "
|
1104
1111
|
self._latex_debug_string += "$" + permuted_matrix[i, self._n - 1]._latex_() + "$ \\\\\n"
|
1105
1112
|
|
{passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/enumeration_mod_permgroup.pyx
RENAMED
@@ -3,14 +3,14 @@
|
|
3
3
|
r"""
|
4
4
|
Tools for enumeration modulo the action of a permutation group
|
5
5
|
"""
|
6
|
-
|
6
|
+
# ***************************************************************************
|
7
7
|
# Copyright (C) 2010-12 Nicolas Borie <nicolas.borie at math dot u-psud.fr>
|
8
8
|
#
|
9
9
|
# Distributed under the terms of the GNU General Public License (GPL)
|
10
10
|
#
|
11
11
|
# The full text of the GPL is available at:
|
12
|
-
#
|
13
|
-
|
12
|
+
# https://www.gnu.org/licenses/
|
13
|
+
# ***************************************************************************
|
14
14
|
|
15
15
|
from sage.groups.perm_gps.permgroup_element cimport PermutationGroupElement
|
16
16
|
|
@@ -197,26 +197,25 @@ AUTHORS:
|
|
197
197
|
# https://www.gnu.org/licenses/
|
198
198
|
# ****************************************************************************
|
199
199
|
|
200
|
-
from sage.misc.cachefunc import cached_method, cached_function
|
201
|
-
from sage.misc.misc_c import prod
|
202
200
|
from sage.categories.category import Category
|
203
|
-
from sage.categories.permutation_groups import PermutationGroups
|
204
201
|
from sage.categories.complex_reflection_groups import ComplexReflectionGroups
|
205
202
|
from sage.categories.coxeter_groups import CoxeterGroups
|
203
|
+
from sage.categories.permutation_groups import PermutationGroups
|
204
|
+
from sage.combinat.root_system.cartan_matrix import CartanMatrix
|
206
205
|
from sage.combinat.root_system.reflection_group_element import ComplexReflectionGroupElement, _gap_return
|
207
|
-
from sage.sets.family import Family
|
208
|
-
from sage.structure.unique_representation import UniqueRepresentation
|
209
206
|
from sage.groups.perm_gps.permgroup import PermutationGroup_generic
|
210
|
-
from sage.
|
211
|
-
from sage.rings.integer_ring import ZZ
|
212
|
-
from sage.rings.rational_field import QQ
|
207
|
+
from sage.interfaces.gap3 import gap3
|
213
208
|
from sage.matrix.constructor import matrix
|
214
209
|
from sage.matrix.special import identity_matrix
|
215
|
-
from sage.
|
216
|
-
from sage.
|
217
|
-
from sage.modules.free_module_element import vector
|
218
|
-
from sage.combinat.root_system.cartan_matrix import CartanMatrix
|
210
|
+
from sage.misc.cachefunc import cached_method, cached_function
|
211
|
+
from sage.misc.misc_c import prod
|
219
212
|
from sage.misc.sage_eval import sage_eval
|
213
|
+
from sage.modules.free_module_element import vector
|
214
|
+
from sage.rings.integer_ring import ZZ
|
215
|
+
from sage.rings.rational_field import QQ
|
216
|
+
from sage.sets.family import Family
|
217
|
+
from sage.structure.element import Matrix
|
218
|
+
from sage.structure.unique_representation import UniqueRepresentation
|
220
219
|
|
221
220
|
|
222
221
|
class ComplexReflectionGroup(UniqueRepresentation, PermutationGroup_generic):
|
{passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/combinat/root_system/weyl_group.py
RENAMED
@@ -927,7 +927,7 @@ class WeylGroupElement(MatrixGroupElement_gap):
|
|
927
927
|
|
928
928
|
return s is positive
|
929
929
|
|
930
|
-
def has_left_descent(self, i):
|
930
|
+
def has_left_descent(self, i) -> bool:
|
931
931
|
"""
|
932
932
|
Test if ``self`` has a left descent at position ``i``.
|
933
933
|
|
@@ -948,7 +948,7 @@ class WeylGroupElement(MatrixGroupElement_gap):
|
|
948
948
|
"""
|
949
949
|
return self.has_descent(i, side='left')
|
950
950
|
|
951
|
-
def has_right_descent(self, i):
|
951
|
+
def has_right_descent(self, i) -> bool:
|
952
952
|
"""
|
953
953
|
Test if ``self`` has a right descent at position ``i``.
|
954
954
|
|
@@ -68,7 +68,6 @@ def ClassFunction(group, values):
|
|
68
68
|
sage: chi = ClassFunction(G, values); chi
|
69
69
|
Character of Cyclic group of order 4 as a permutation group
|
70
70
|
"""
|
71
|
-
from sage.misc.superseded import deprecation
|
72
71
|
try:
|
73
72
|
return group.class_function(values)
|
74
73
|
except AttributeError:
|
{passagemath_gap-10.5.43 → passagemath_gap-10.6.1rc2}/sage/groups/matrix_gps/binary_dihedral.py
RENAMED
@@ -83,7 +83,7 @@ class BinaryDihedralGroup(UniqueRepresentation, FinitelyGeneratedMatrixGroup_gap
|
|
83
83
|
|
84
84
|
MS = MatrixSpace(R, 2)
|
85
85
|
zero = R.zero()
|
86
|
-
gens = [
|
86
|
+
gens = [MS([zeta, zero, zero, ~zeta]), MS([zero, i, i, zero])]
|
87
87
|
|
88
88
|
from sage.libs.gap.libgap import libgap
|
89
89
|
gap_gens = [libgap(matrix_gen) for matrix_gen in gens]
|
@@ -383,13 +383,12 @@ def PermutationGroup(gens=None, *args, **kwds):
|
|
383
383
|
...
|
384
384
|
TypeError: gens must be a tuple, list, or GapElement
|
385
385
|
|
386
|
-
This
|
386
|
+
This now raises an error (:issue:`31510`)::
|
387
387
|
|
388
388
|
sage: G = PermutationGroup([(1,2,3,4)], [(1,7,3,5)])
|
389
|
-
|
389
|
+
Traceback (most recent call last):
|
390
390
|
...
|
391
|
-
|
392
|
-
See https://github.com/sagemath/sage/issues/31510 for details.
|
391
|
+
ValueError: please use keywords gap_group=, domain=, canonicalize=, category= in the input
|
393
392
|
"""
|
394
393
|
if not isinstance(gens, ExpectElement) and hasattr(gens, '_permgroup_'):
|
395
394
|
return gens._permgroup_()
|
@@ -405,18 +404,7 @@ def PermutationGroup(gens=None, *args, **kwds):
|
|
405
404
|
raise ValueError("you must specify the domain for an action")
|
406
405
|
return PermutationGroup_action(gens, action, domain, gap_group=gap_group)
|
407
406
|
if args:
|
408
|
-
|
409
|
-
deprecation(31510, "gap_group, domain, canonicalize, category will become keyword only")
|
410
|
-
if len(args) > 4:
|
411
|
-
raise ValueError("invalid input")
|
412
|
-
args = list(args)
|
413
|
-
gap_group = args.pop(0)
|
414
|
-
if args:
|
415
|
-
domain = args.pop(0)
|
416
|
-
if args:
|
417
|
-
canonicalize = args.pop(0)
|
418
|
-
if args:
|
419
|
-
category = args.pop(0)
|
407
|
+
raise ValueError("please use keywords gap_group=, domain=, canonicalize=, category= in the input")
|
420
408
|
return PermutationGroup_generic(gens=gens, gap_group=gap_group, domain=domain,
|
421
409
|
canonicalize=canonicalize, category=category)
|
422
410
|
|
@@ -1073,7 +1061,7 @@ class PermutationGroup_generic(FiniteGroup):
|
|
1073
1061
|
"""
|
1074
1062
|
return list(self)
|
1075
1063
|
|
1076
|
-
def __contains__(self, item):
|
1064
|
+
def __contains__(self, item) -> bool:
|
1077
1065
|
"""
|
1078
1066
|
Return whether ``item`` is an element of this group.
|
1079
1067
|
|
@@ -1110,33 +1098,6 @@ class PermutationGroup_generic(FiniteGroup):
|
|
1110
1098
|
return False
|
1111
1099
|
return True
|
1112
1100
|
|
1113
|
-
def has_element(self, item):
|
1114
|
-
"""
|
1115
|
-
Return whether ``item`` is an element of this group -
|
1116
|
-
however *ignores* parentage.
|
1117
|
-
|
1118
|
-
EXAMPLES::
|
1119
|
-
|
1120
|
-
sage: G = CyclicPermutationGroup(4)
|
1121
|
-
sage: gens = G.gens()
|
1122
|
-
sage: H = DihedralGroup(4)
|
1123
|
-
sage: g = G([(1,2,3,4)]); g
|
1124
|
-
(1,2,3,4)
|
1125
|
-
sage: G.has_element(g)
|
1126
|
-
doctest:warning
|
1127
|
-
...
|
1128
|
-
DeprecationWarning: G.has_element(g) is deprecated; use :meth:`__contains__`, i.e., `g in G` instead
|
1129
|
-
See https://github.com/sagemath/sage/issues/33831 for details.
|
1130
|
-
True
|
1131
|
-
sage: h = H([(1,2),(3,4)]); h
|
1132
|
-
(1,2)(3,4)
|
1133
|
-
sage: G.has_element(h)
|
1134
|
-
False
|
1135
|
-
"""
|
1136
|
-
from sage.misc.superseded import deprecation
|
1137
|
-
deprecation(33831, "G.has_element(g) is deprecated; use :meth:`__contains__`, i.e., `g in G` instead")
|
1138
|
-
return item in self
|
1139
|
-
|
1140
1101
|
def __iter__(self):
|
1141
1102
|
r"""
|
1142
1103
|
Return an iterator going through all elements in ``self``.
|
@@ -1166,9 +1127,9 @@ class PermutationGroup_generic(FiniteGroup):
|
|
1166
1127
|
"""
|
1167
1128
|
if len(self._gens) == 1:
|
1168
1129
|
return self._iteration_monogen()
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1130
|
+
|
1131
|
+
# TODO: this is too slow for moderately small permutation groups
|
1132
|
+
return self.iteration(algorithm='SGS')
|
1172
1133
|
|
1173
1134
|
def _iteration_monogen(self):
|
1174
1135
|
r"""
|
@@ -3357,9 +3318,17 @@ class PermutationGroup_generic(FiniteGroup):
|
|
3357
3318
|
Traceback (most recent call last):
|
3358
3319
|
...
|
3359
3320
|
TypeError: junk is not a permutation group
|
3321
|
+
|
3322
|
+
TESTS:
|
3323
|
+
|
3324
|
+
Verify that :issue`39416` is fixed::
|
3325
|
+
|
3326
|
+
sage: G = PermutationGroup(gens=[(1,2), (2,4)], domain={1, 2, 4})
|
3327
|
+
sage: G.commutator()
|
3328
|
+
Permutation Group with generators [(1,2,4)]
|
3360
3329
|
"""
|
3361
3330
|
if other is None:
|
3362
|
-
return PermutationGroup(gap_group=libgap.DerivedSubgroup(self))
|
3331
|
+
return PermutationGroup(gap_group=libgap.DerivedSubgroup(self), domain=self.domain())
|
3363
3332
|
else:
|
3364
3333
|
from sage.categories.finite_permutation_groups import FinitePermutationGroups
|
3365
3334
|
if other not in FinitePermutationGroups():
|