passagemath-categories 10.6.32__cp314-cp314t-musllinux_1_2_aarch64.whl
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_categories-10.6.32.dist-info/METADATA +156 -0
- passagemath_categories-10.6.32.dist-info/RECORD +719 -0
- passagemath_categories-10.6.32.dist-info/WHEEL +5 -0
- passagemath_categories-10.6.32.dist-info/top_level.txt +2 -0
- passagemath_categories.libs/libgcc_s-2d945d6c.so.1 +0 -0
- passagemath_categories.libs/libgmp-28992bcb.so.10.5.0 +0 -0
- passagemath_categories.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
- sage/all__sagemath_categories.py +28 -0
- sage/arith/all.py +38 -0
- sage/arith/constants.pxd +27 -0
- sage/arith/functions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/functions.pxd +4 -0
- sage/arith/functions.pyx +221 -0
- sage/arith/misc.py +6552 -0
- sage/arith/multi_modular.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/multi_modular.pxd +39 -0
- sage/arith/multi_modular.pyx +994 -0
- sage/arith/rational_reconstruction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/rational_reconstruction.pxd +4 -0
- sage/arith/rational_reconstruction.pyx +115 -0
- sage/arith/srange.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/arith/srange.pyx +571 -0
- sage/calculus/all__sagemath_categories.py +2 -0
- sage/calculus/functional.py +481 -0
- sage/calculus/functions.py +151 -0
- sage/categories/additive_groups.py +73 -0
- sage/categories/additive_magmas.py +1044 -0
- sage/categories/additive_monoids.py +114 -0
- sage/categories/additive_semigroups.py +184 -0
- sage/categories/affine_weyl_groups.py +238 -0
- sage/categories/algebra_ideals.py +95 -0
- sage/categories/algebra_modules.py +96 -0
- sage/categories/algebras.py +349 -0
- sage/categories/algebras_with_basis.py +377 -0
- sage/categories/all.py +160 -0
- sage/categories/aperiodic_semigroups.py +29 -0
- sage/categories/associative_algebras.py +47 -0
- sage/categories/bialgebras.py +101 -0
- sage/categories/bialgebras_with_basis.py +414 -0
- sage/categories/bimodules.py +206 -0
- sage/categories/chain_complexes.py +268 -0
- sage/categories/classical_crystals.py +480 -0
- sage/categories/coalgebras.py +405 -0
- sage/categories/coalgebras_with_basis.py +232 -0
- sage/categories/coercion_methods.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/coercion_methods.pyx +52 -0
- sage/categories/commutative_additive_groups.py +104 -0
- sage/categories/commutative_additive_monoids.py +45 -0
- sage/categories/commutative_additive_semigroups.py +48 -0
- sage/categories/commutative_algebra_ideals.py +87 -0
- sage/categories/commutative_algebras.py +94 -0
- sage/categories/commutative_ring_ideals.py +58 -0
- sage/categories/commutative_rings.py +736 -0
- sage/categories/complete_discrete_valuation.py +293 -0
- sage/categories/complex_reflection_groups.py +145 -0
- sage/categories/complex_reflection_or_generalized_coxeter_groups.py +1249 -0
- sage/categories/coxeter_group_algebras.py +186 -0
- sage/categories/coxeter_groups.py +3402 -0
- sage/categories/crystals.py +2628 -0
- sage/categories/cw_complexes.py +216 -0
- sage/categories/dedekind_domains.py +137 -0
- sage/categories/discrete_valuation.py +325 -0
- sage/categories/distributive_magmas_and_additive_magmas.py +100 -0
- sage/categories/division_rings.py +114 -0
- sage/categories/domains.py +95 -0
- sage/categories/drinfeld_modules.py +789 -0
- sage/categories/dual.py +42 -0
- sage/categories/enumerated_sets.py +1146 -0
- sage/categories/euclidean_domains.py +271 -0
- sage/categories/examples/algebras_with_basis.py +102 -0
- sage/categories/examples/all.py +1 -0
- sage/categories/examples/commutative_additive_monoids.py +130 -0
- sage/categories/examples/commutative_additive_semigroups.py +199 -0
- sage/categories/examples/coxeter_groups.py +8 -0
- sage/categories/examples/crystals.py +236 -0
- sage/categories/examples/cw_complexes.py +163 -0
- sage/categories/examples/facade_sets.py +187 -0
- sage/categories/examples/filtered_algebras_with_basis.py +204 -0
- sage/categories/examples/filtered_modules_with_basis.py +154 -0
- sage/categories/examples/finite_coxeter_groups.py +252 -0
- sage/categories/examples/finite_dimensional_algebras_with_basis.py +148 -0
- sage/categories/examples/finite_dimensional_lie_algebras_with_basis.py +495 -0
- sage/categories/examples/finite_enumerated_sets.py +208 -0
- sage/categories/examples/finite_monoids.py +150 -0
- sage/categories/examples/finite_semigroups.py +190 -0
- sage/categories/examples/finite_weyl_groups.py +191 -0
- sage/categories/examples/graded_connected_hopf_algebras_with_basis.py +152 -0
- sage/categories/examples/graded_modules_with_basis.py +168 -0
- sage/categories/examples/graphs.py +122 -0
- sage/categories/examples/hopf_algebras_with_basis.py +145 -0
- sage/categories/examples/infinite_enumerated_sets.py +190 -0
- sage/categories/examples/lie_algebras.py +352 -0
- sage/categories/examples/lie_algebras_with_basis.py +196 -0
- sage/categories/examples/magmas.py +162 -0
- sage/categories/examples/manifolds.py +94 -0
- sage/categories/examples/monoids.py +144 -0
- sage/categories/examples/posets.py +178 -0
- sage/categories/examples/semigroups.py +580 -0
- sage/categories/examples/semigroups_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/categories/examples/semigroups_cython.pyx +221 -0
- sage/categories/examples/semirings.py +249 -0
- sage/categories/examples/sets_cat.py +706 -0
- sage/categories/examples/sets_with_grading.py +101 -0
- sage/categories/examples/with_realizations.py +542 -0
- sage/categories/fields.py +991 -0
- sage/categories/filtered_algebras.py +63 -0
- sage/categories/filtered_algebras_with_basis.py +548 -0
- sage/categories/filtered_hopf_algebras_with_basis.py +138 -0
- sage/categories/filtered_modules.py +210 -0
- sage/categories/filtered_modules_with_basis.py +1209 -0
- sage/categories/finite_complex_reflection_groups.py +1506 -0
- sage/categories/finite_coxeter_groups.py +1138 -0
- sage/categories/finite_crystals.py +103 -0
- sage/categories/finite_dimensional_algebras_with_basis.py +1860 -0
- sage/categories/finite_dimensional_bialgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_coalgebras_with_basis.py +33 -0
- sage/categories/finite_dimensional_graded_lie_algebras_with_basis.py +231 -0
- sage/categories/finite_dimensional_hopf_algebras_with_basis.py +38 -0
- sage/categories/finite_dimensional_lie_algebras_with_basis.py +2774 -0
- sage/categories/finite_dimensional_modules_with_basis.py +1407 -0
- sage/categories/finite_dimensional_nilpotent_lie_algebras_with_basis.py +167 -0
- sage/categories/finite_dimensional_semisimple_algebras_with_basis.py +270 -0
- sage/categories/finite_enumerated_sets.py +769 -0
- sage/categories/finite_fields.py +252 -0
- sage/categories/finite_groups.py +256 -0
- sage/categories/finite_lattice_posets.py +242 -0
- sage/categories/finite_monoids.py +316 -0
- sage/categories/finite_permutation_groups.py +339 -0
- sage/categories/finite_posets.py +1994 -0
- sage/categories/finite_semigroups.py +136 -0
- sage/categories/finite_sets.py +93 -0
- sage/categories/finite_weyl_groups.py +39 -0
- sage/categories/finitely_generated_lambda_bracket_algebras.py +112 -0
- sage/categories/finitely_generated_lie_conformal_algebras.py +114 -0
- sage/categories/finitely_generated_magmas.py +57 -0
- sage/categories/finitely_generated_semigroups.py +214 -0
- sage/categories/function_fields.py +76 -0
- sage/categories/g_sets.py +77 -0
- sage/categories/gcd_domains.py +65 -0
- sage/categories/generalized_coxeter_groups.py +94 -0
- sage/categories/graded_algebras.py +85 -0
- sage/categories/graded_algebras_with_basis.py +258 -0
- sage/categories/graded_bialgebras.py +32 -0
- sage/categories/graded_bialgebras_with_basis.py +32 -0
- sage/categories/graded_coalgebras.py +65 -0
- sage/categories/graded_coalgebras_with_basis.py +51 -0
- sage/categories/graded_hopf_algebras.py +41 -0
- sage/categories/graded_hopf_algebras_with_basis.py +169 -0
- sage/categories/graded_lie_algebras.py +91 -0
- sage/categories/graded_lie_algebras_with_basis.py +44 -0
- sage/categories/graded_lie_conformal_algebras.py +74 -0
- sage/categories/graded_modules.py +133 -0
- sage/categories/graded_modules_with_basis.py +329 -0
- sage/categories/graphs.py +138 -0
- sage/categories/group_algebras.py +430 -0
- sage/categories/groupoid.py +94 -0
- sage/categories/groups.py +667 -0
- sage/categories/h_trivial_semigroups.py +64 -0
- sage/categories/hecke_modules.py +185 -0
- sage/categories/highest_weight_crystals.py +980 -0
- sage/categories/hopf_algebras.py +219 -0
- sage/categories/hopf_algebras_with_basis.py +309 -0
- sage/categories/infinite_enumerated_sets.py +115 -0
- sage/categories/integral_domains.py +203 -0
- sage/categories/j_trivial_semigroups.py +29 -0
- sage/categories/kac_moody_algebras.py +82 -0
- sage/categories/kahler_algebras.py +203 -0
- sage/categories/l_trivial_semigroups.py +63 -0
- sage/categories/lambda_bracket_algebras.py +280 -0
- sage/categories/lambda_bracket_algebras_with_basis.py +107 -0
- sage/categories/lattice_posets.py +89 -0
- sage/categories/left_modules.py +49 -0
- sage/categories/lie_algebras.py +1070 -0
- sage/categories/lie_algebras_with_basis.py +261 -0
- sage/categories/lie_conformal_algebras.py +350 -0
- sage/categories/lie_conformal_algebras_with_basis.py +147 -0
- sage/categories/lie_groups.py +73 -0
- sage/categories/loop_crystals.py +1290 -0
- sage/categories/magmas.py +1189 -0
- sage/categories/magmas_and_additive_magmas.py +149 -0
- sage/categories/magmatic_algebras.py +365 -0
- sage/categories/manifolds.py +352 -0
- sage/categories/matrix_algebras.py +40 -0
- sage/categories/metric_spaces.py +387 -0
- sage/categories/modular_abelian_varieties.py +78 -0
- sage/categories/modules.py +989 -0
- sage/categories/modules_with_basis.py +2794 -0
- sage/categories/monoid_algebras.py +38 -0
- sage/categories/monoids.py +739 -0
- sage/categories/noetherian_rings.py +87 -0
- sage/categories/number_fields.py +242 -0
- sage/categories/ore_modules.py +189 -0
- sage/categories/partially_ordered_monoids.py +49 -0
- sage/categories/permutation_groups.py +63 -0
- sage/categories/pointed_sets.py +42 -0
- sage/categories/polyhedra.py +74 -0
- sage/categories/poor_man_map.py +270 -0
- sage/categories/posets.py +722 -0
- sage/categories/principal_ideal_domains.py +270 -0
- sage/categories/quantum_group_representations.py +543 -0
- sage/categories/quotient_fields.py +728 -0
- sage/categories/r_trivial_semigroups.py +45 -0
- sage/categories/regular_crystals.py +898 -0
- sage/categories/regular_supercrystals.py +170 -0
- sage/categories/right_modules.py +49 -0
- sage/categories/ring_ideals.py +74 -0
- sage/categories/rings.py +1904 -0
- sage/categories/rngs.py +175 -0
- sage/categories/schemes.py +393 -0
- sage/categories/semigroups.py +1060 -0
- sage/categories/semirings.py +71 -0
- sage/categories/semisimple_algebras.py +114 -0
- sage/categories/sets_with_grading.py +235 -0
- sage/categories/shephard_groups.py +43 -0
- sage/categories/signed_tensor.py +120 -0
- sage/categories/simplicial_complexes.py +134 -0
- sage/categories/simplicial_sets.py +1206 -0
- sage/categories/super_algebras.py +149 -0
- sage/categories/super_algebras_with_basis.py +144 -0
- sage/categories/super_hopf_algebras_with_basis.py +126 -0
- sage/categories/super_lie_conformal_algebras.py +193 -0
- sage/categories/super_modules.py +229 -0
- sage/categories/super_modules_with_basis.py +193 -0
- sage/categories/supercommutative_algebras.py +99 -0
- sage/categories/supercrystals.py +406 -0
- sage/categories/tensor.py +110 -0
- sage/categories/topological_spaces.py +170 -0
- sage/categories/triangular_kac_moody_algebras.py +439 -0
- sage/categories/tutorial.py +58 -0
- sage/categories/unique_factorization_domains.py +318 -0
- sage/categories/unital_algebras.py +426 -0
- sage/categories/vector_bundles.py +159 -0
- sage/categories/vector_spaces.py +357 -0
- sage/categories/weyl_groups.py +853 -0
- sage/combinat/all__sagemath_categories.py +34 -0
- sage/combinat/backtrack.py +180 -0
- sage/combinat/combinat.py +2269 -0
- sage/combinat/combinat_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/combinat_cython.pxd +6 -0
- sage/combinat/combinat_cython.pyx +390 -0
- sage/combinat/combination.py +796 -0
- sage/combinat/combinatorial_map.py +416 -0
- sage/combinat/composition.py +2192 -0
- sage/combinat/dlx.py +510 -0
- sage/combinat/integer_lists/__init__.py +7 -0
- sage/combinat/integer_lists/base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/base.pxd +16 -0
- sage/combinat/integer_lists/base.pyx +713 -0
- sage/combinat/integer_lists/invlex.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/integer_lists/invlex.pxd +4 -0
- sage/combinat/integer_lists/invlex.pyx +1650 -0
- sage/combinat/integer_lists/lists.py +328 -0
- sage/combinat/integer_lists/nn.py +48 -0
- sage/combinat/integer_vector.py +1818 -0
- sage/combinat/integer_vector_weighted.py +413 -0
- sage/combinat/matrices/all__sagemath_categories.py +5 -0
- sage/combinat/matrices/dancing_links.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/matrices/dancing_links.pyx +1159 -0
- sage/combinat/matrices/dancing_links_c.h +380 -0
- sage/combinat/matrices/dlxcpp.py +136 -0
- sage/combinat/partition.py +10070 -0
- sage/combinat/partitions.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/partitions.pyx +743 -0
- sage/combinat/permutation.py +10168 -0
- sage/combinat/permutation_cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/combinat/permutation_cython.pxd +11 -0
- sage/combinat/permutation_cython.pyx +407 -0
- sage/combinat/q_analogues.py +1090 -0
- sage/combinat/ranker.py +268 -0
- sage/combinat/subset.py +1561 -0
- sage/combinat/subsets_hereditary.py +202 -0
- sage/combinat/subsets_pairwise.py +184 -0
- sage/combinat/tools.py +63 -0
- sage/combinat/tuple.py +348 -0
- sage/data_structures/all.py +2 -0
- sage/data_structures/all__sagemath_categories.py +2 -0
- sage/data_structures/binary_matrix.pxd +138 -0
- sage/data_structures/binary_search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/binary_search.pxd +3 -0
- sage/data_structures/binary_search.pyx +66 -0
- sage/data_structures/bitset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset.pxd +40 -0
- sage/data_structures/bitset.pyx +2385 -0
- sage/data_structures/bitset_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/bitset_base.pxd +926 -0
- sage/data_structures/bitset_base.pyx +117 -0
- sage/data_structures/bitset_intrinsics.h +487 -0
- sage/data_structures/blas_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/blas_dict.pxd +12 -0
- sage/data_structures/blas_dict.pyx +469 -0
- sage/data_structures/list_of_pairs.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/list_of_pairs.pxd +16 -0
- sage/data_structures/list_of_pairs.pyx +122 -0
- sage/data_structures/mutable_poset.py +3312 -0
- sage/data_structures/pairing_heap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/data_structures/pairing_heap.h +346 -0
- sage/data_structures/pairing_heap.pxd +88 -0
- sage/data_structures/pairing_heap.pyx +1464 -0
- sage/data_structures/sparse_bitset.pxd +62 -0
- sage/data_structures/stream.py +5070 -0
- sage/databases/all__sagemath_categories.py +7 -0
- sage/databases/sql_db.py +2236 -0
- sage/ext/all__sagemath_categories.py +3 -0
- sage/ext/fast_callable.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_callable.pxd +4 -0
- sage/ext/fast_callable.pyx +2746 -0
- sage/ext/fast_eval.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/fast_eval.pxd +1 -0
- sage/ext/fast_eval.pyx +102 -0
- sage/ext/interpreters/__init__.py +1 -0
- sage/ext/interpreters/all__sagemath_categories.py +2 -0
- sage/ext/interpreters/wrapper_el.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_el.pxd +18 -0
- sage/ext/interpreters/wrapper_el.pyx +148 -0
- sage/ext/interpreters/wrapper_py.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/ext/interpreters/wrapper_py.pxd +17 -0
- sage/ext/interpreters/wrapper_py.pyx +133 -0
- sage/functions/airy.py +937 -0
- sage/functions/all.py +97 -0
- sage/functions/bessel.py +2102 -0
- sage/functions/error.py +784 -0
- sage/functions/exp_integral.py +1529 -0
- sage/functions/gamma.py +1087 -0
- sage/functions/generalized.py +672 -0
- sage/functions/hyperbolic.py +747 -0
- sage/functions/hypergeometric.py +1156 -0
- sage/functions/jacobi.py +1705 -0
- sage/functions/log.py +1402 -0
- sage/functions/min_max.py +338 -0
- sage/functions/orthogonal_polys.py +3106 -0
- sage/functions/other.py +2303 -0
- sage/functions/piecewise.py +1505 -0
- sage/functions/prime_pi.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/functions/prime_pi.pyx +262 -0
- sage/functions/special.py +1212 -0
- sage/functions/spike_function.py +278 -0
- sage/functions/transcendental.py +690 -0
- sage/functions/trig.py +1062 -0
- sage/functions/wigner.py +726 -0
- sage/geometry/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/geometry/abc.pyx +82 -0
- sage/geometry/all__sagemath_categories.py +1 -0
- sage/groups/all__sagemath_categories.py +11 -0
- sage/groups/generic.py +1733 -0
- sage/groups/groups_catalog.py +113 -0
- sage/groups/perm_gps/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/all.py +1 -0
- sage/groups/perm_gps/partn_ref/all__sagemath_categories.py +1 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pxd +52 -0
- sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx +906 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pxd +85 -0
- sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx +534 -0
- sage/groups/perm_gps/partn_ref/data_structures.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/data_structures.pxd +576 -0
- sage/groups/perm_gps/partn_ref/data_structures.pyx +1792 -0
- sage/groups/perm_gps/partn_ref/double_coset.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/double_coset.pxd +45 -0
- sage/groups/perm_gps/partn_ref/double_coset.pyx +739 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pxd +18 -0
- sage/groups/perm_gps/partn_ref/refinement_lists.pyx +82 -0
- sage/groups/perm_gps/partn_ref/refinement_python.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pxd +16 -0
- sage/groups/perm_gps/partn_ref/refinement_python.pyx +564 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pxd +60 -0
- sage/groups/perm_gps/partn_ref/refinement_sets.pyx +858 -0
- sage/interfaces/abc.py +140 -0
- sage/interfaces/all.py +58 -0
- sage/interfaces/all__sagemath_categories.py +1 -0
- sage/interfaces/expect.py +1643 -0
- sage/interfaces/interface.py +1682 -0
- sage/interfaces/process.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/process.pxd +5 -0
- sage/interfaces/process.pyx +288 -0
- sage/interfaces/quit.py +167 -0
- sage/interfaces/sage0.py +604 -0
- sage/interfaces/sagespawn.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/interfaces/sagespawn.pyx +308 -0
- sage/interfaces/tab_completion.py +101 -0
- sage/misc/all__sagemath_categories.py +78 -0
- sage/misc/allocator.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/allocator.pxd +6 -0
- sage/misc/allocator.pyx +47 -0
- sage/misc/binary_tree.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/binary_tree.pxd +29 -0
- sage/misc/binary_tree.pyx +537 -0
- sage/misc/callable_dict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/callable_dict.pyx +89 -0
- sage/misc/citation.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/citation.pyx +159 -0
- sage/misc/converting_dict.py +293 -0
- sage/misc/defaults.py +129 -0
- sage/misc/derivative.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/derivative.pyx +223 -0
- sage/misc/functional.py +2005 -0
- sage/misc/html.py +589 -0
- sage/misc/latex.py +2673 -0
- sage/misc/latex_macros.py +236 -0
- sage/misc/latex_standalone.py +1833 -0
- sage/misc/map_threaded.py +38 -0
- sage/misc/mathml.py +76 -0
- sage/misc/method_decorator.py +88 -0
- sage/misc/mrange.py +755 -0
- sage/misc/multireplace.py +41 -0
- sage/misc/object_multiplexer.py +92 -0
- sage/misc/parser.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/parser.pyx +1107 -0
- sage/misc/random_testing.py +264 -0
- sage/misc/rest_index_of_methods.py +377 -0
- sage/misc/search.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/search.pxd +2 -0
- sage/misc/search.pyx +68 -0
- sage/misc/stopgap.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/misc/stopgap.pyx +95 -0
- sage/misc/table.py +853 -0
- sage/monoids/all__sagemath_categories.py +1 -0
- sage/monoids/indexed_free_monoid.py +1071 -0
- sage/monoids/monoid.py +82 -0
- sage/numerical/all__sagemath_categories.py +1 -0
- sage/numerical/backends/all__sagemath_categories.py +1 -0
- sage/numerical/backends/generic_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_backend.pxd +61 -0
- sage/numerical/backends/generic_backend.pyx +1893 -0
- sage/numerical/backends/generic_sdp_backend.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/numerical/backends/generic_sdp_backend.pxd +38 -0
- sage/numerical/backends/generic_sdp_backend.pyx +755 -0
- sage/parallel/all.py +6 -0
- sage/parallel/decorate.py +575 -0
- sage/parallel/map_reduce.py +1997 -0
- sage/parallel/multiprocessing_sage.py +76 -0
- sage/parallel/ncpus.py +35 -0
- sage/parallel/parallelism.py +364 -0
- sage/parallel/reference.py +47 -0
- sage/parallel/use_fork.py +333 -0
- sage/rings/abc.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/abc.pxd +31 -0
- sage/rings/abc.pyx +526 -0
- sage/rings/algebraic_closure_finite_field.py +1154 -0
- sage/rings/all__sagemath_categories.py +91 -0
- sage/rings/big_oh.py +227 -0
- sage/rings/continued_fraction.py +2754 -0
- sage/rings/continued_fraction_gosper.py +220 -0
- sage/rings/factorint.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/factorint.pyx +295 -0
- sage/rings/fast_arith.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fast_arith.pxd +21 -0
- sage/rings/fast_arith.pyx +535 -0
- sage/rings/finite_rings/all__sagemath_categories.py +9 -0
- sage/rings/finite_rings/conway_polynomials.py +542 -0
- sage/rings/finite_rings/element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_base.pxd +12 -0
- sage/rings/finite_rings/element_base.pyx +1176 -0
- sage/rings/finite_rings/finite_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/finite_field_base.pxd +7 -0
- sage/rings/finite_rings/finite_field_base.pyx +2171 -0
- sage/rings/finite_rings/finite_field_constructor.py +827 -0
- sage/rings/finite_rings/finite_field_prime_modn.py +372 -0
- sage/rings/finite_rings/galois_group.py +154 -0
- sage/rings/finite_rings/hom_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_finite_field.pxd +23 -0
- sage/rings/finite_rings/hom_finite_field.pyx +856 -0
- sage/rings/finite_rings/hom_prime_finite_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_prime_finite_field.pxd +15 -0
- sage/rings/finite_rings/hom_prime_finite_field.pyx +164 -0
- sage/rings/finite_rings/homset.py +357 -0
- sage/rings/finite_rings/integer_mod.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/integer_mod.pxd +56 -0
- sage/rings/finite_rings/integer_mod.pyx +4586 -0
- sage/rings/finite_rings/integer_mod_limits.h +11 -0
- sage/rings/finite_rings/integer_mod_ring.py +2044 -0
- sage/rings/finite_rings/residue_field.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/finite_rings/residue_field.pxd +30 -0
- sage/rings/finite_rings/residue_field.pyx +1811 -0
- sage/rings/finite_rings/stdint.pxd +19 -0
- sage/rings/fraction_field.py +1452 -0
- sage/rings/fraction_field_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/fraction_field_element.pyx +1357 -0
- sage/rings/function_field/all.py +7 -0
- sage/rings/function_field/all__sagemath_categories.py +2 -0
- sage/rings/function_field/constructor.py +218 -0
- sage/rings/function_field/element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element.pxd +11 -0
- sage/rings/function_field/element.pyx +1008 -0
- sage/rings/function_field/element_rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/function_field/element_rational.pyx +513 -0
- sage/rings/function_field/extensions.py +230 -0
- sage/rings/function_field/function_field.py +1468 -0
- sage/rings/function_field/function_field_rational.py +1005 -0
- sage/rings/function_field/ideal.py +1155 -0
- sage/rings/function_field/ideal_rational.py +629 -0
- sage/rings/function_field/jacobian_base.py +826 -0
- sage/rings/function_field/jacobian_hess.py +1053 -0
- sage/rings/function_field/jacobian_khuri_makdisi.py +1027 -0
- sage/rings/function_field/maps.py +1039 -0
- sage/rings/function_field/order.py +281 -0
- sage/rings/function_field/order_basis.py +586 -0
- sage/rings/function_field/order_rational.py +576 -0
- sage/rings/function_field/place.py +426 -0
- sage/rings/function_field/place_rational.py +181 -0
- sage/rings/generic.py +320 -0
- sage/rings/homset.py +332 -0
- sage/rings/ideal.py +1885 -0
- sage/rings/ideal_monoid.py +215 -0
- sage/rings/infinity.py +1890 -0
- sage/rings/integer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer.pxd +45 -0
- sage/rings/integer.pyx +7874 -0
- sage/rings/integer_ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/integer_ring.pxd +8 -0
- sage/rings/integer_ring.pyx +1693 -0
- sage/rings/laurent_series_ring.py +931 -0
- sage/rings/laurent_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/laurent_series_ring_element.pxd +11 -0
- sage/rings/laurent_series_ring_element.pyx +1927 -0
- sage/rings/lazy_series.py +7815 -0
- sage/rings/lazy_series_ring.py +4356 -0
- sage/rings/localization.py +1043 -0
- sage/rings/morphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/morphism.pxd +39 -0
- sage/rings/morphism.pyx +3299 -0
- sage/rings/multi_power_series_ring.py +1145 -0
- sage/rings/multi_power_series_ring_element.py +2184 -0
- sage/rings/noncommutative_ideals.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/noncommutative_ideals.pyx +423 -0
- sage/rings/number_field/all__sagemath_categories.py +1 -0
- sage/rings/number_field/number_field_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_base.pxd +8 -0
- sage/rings/number_field/number_field_base.pyx +507 -0
- sage/rings/number_field/number_field_element_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/number_field/number_field_element_base.pxd +6 -0
- sage/rings/number_field/number_field_element_base.pyx +36 -0
- sage/rings/number_field/number_field_ideal.py +3550 -0
- sage/rings/padics/all__sagemath_categories.py +4 -0
- sage/rings/padics/local_generic.py +1670 -0
- sage/rings/padics/local_generic_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/local_generic_element.pxd +5 -0
- sage/rings/padics/local_generic_element.pyx +1017 -0
- sage/rings/padics/misc.py +256 -0
- sage/rings/padics/padic_generic.py +1911 -0
- sage/rings/padics/pow_computer.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/padics/pow_computer.pxd +38 -0
- sage/rings/padics/pow_computer.pyx +671 -0
- sage/rings/padics/precision_error.py +24 -0
- sage/rings/polynomial/all__sagemath_categories.py +25 -0
- sage/rings/polynomial/commutative_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/commutative_polynomial.pxd +6 -0
- sage/rings/polynomial/commutative_polynomial.pyx +24 -0
- sage/rings/polynomial/cyclotomic.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/cyclotomic.pyx +404 -0
- sage/rings/polynomial/flatten.py +711 -0
- sage/rings/polynomial/ideal.py +102 -0
- sage/rings/polynomial/infinite_polynomial_element.py +1768 -0
- sage/rings/polynomial/infinite_polynomial_ring.py +1653 -0
- sage/rings/polynomial/laurent_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/laurent_polynomial.pxd +18 -0
- sage/rings/polynomial/laurent_polynomial.pyx +2190 -0
- sage/rings/polynomial/laurent_polynomial_ideal.py +590 -0
- sage/rings/polynomial/laurent_polynomial_ring.py +832 -0
- sage/rings/polynomial/laurent_polynomial_ring_base.py +708 -0
- sage/rings/polynomial/multi_polynomial.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial.pxd +12 -0
- sage/rings/polynomial/multi_polynomial.pyx +3082 -0
- sage/rings/polynomial/multi_polynomial_element.py +2570 -0
- sage/rings/polynomial/multi_polynomial_ideal.py +5771 -0
- sage/rings/polynomial/multi_polynomial_ring.py +947 -0
- sage/rings/polynomial/multi_polynomial_ring_base.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pxd +15 -0
- sage/rings/polynomial/multi_polynomial_ring_base.pyx +1855 -0
- sage/rings/polynomial/multi_polynomial_sequence.py +2204 -0
- sage/rings/polynomial/polydict.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polydict.pxd +45 -0
- sage/rings/polynomial/polydict.pyx +2701 -0
- sage/rings/polynomial/polynomial_compiled.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_compiled.pxd +59 -0
- sage/rings/polynomial/polynomial_compiled.pyx +509 -0
- sage/rings/polynomial/polynomial_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_element.pxd +64 -0
- sage/rings/polynomial/polynomial_element.pyx +13255 -0
- sage/rings/polynomial/polynomial_element_generic.py +1637 -0
- sage/rings/polynomial/polynomial_fateman.py +97 -0
- sage/rings/polynomial/polynomial_quotient_ring.py +2465 -0
- sage/rings/polynomial/polynomial_quotient_ring_element.py +779 -0
- sage/rings/polynomial/polynomial_ring.py +3784 -0
- sage/rings/polynomial/polynomial_ring_constructor.py +1051 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pxd +5 -0
- sage/rings/polynomial/polynomial_ring_homomorphism.pyx +121 -0
- sage/rings/polynomial/polynomial_singular_interface.py +549 -0
- sage/rings/polynomial/symmetric_ideal.py +989 -0
- sage/rings/polynomial/symmetric_reduction.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/polynomial/symmetric_reduction.pxd +8 -0
- sage/rings/polynomial/symmetric_reduction.pyx +669 -0
- sage/rings/polynomial/term_order.py +2279 -0
- sage/rings/polynomial/toy_buchberger.py +449 -0
- sage/rings/polynomial/toy_d_basis.py +387 -0
- sage/rings/polynomial/toy_variety.py +362 -0
- sage/rings/power_series_mpoly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_mpoly.pxd +9 -0
- sage/rings/power_series_mpoly.pyx +161 -0
- sage/rings/power_series_poly.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_poly.pxd +10 -0
- sage/rings/power_series_poly.pyx +1317 -0
- sage/rings/power_series_ring.py +1441 -0
- sage/rings/power_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/power_series_ring_element.pxd +12 -0
- sage/rings/power_series_ring_element.pyx +3028 -0
- sage/rings/puiseux_series_ring.py +487 -0
- sage/rings/puiseux_series_ring_element.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/puiseux_series_ring_element.pxd +7 -0
- sage/rings/puiseux_series_ring_element.pyx +1055 -0
- sage/rings/qqbar_decorators.py +167 -0
- sage/rings/quotient_ring.py +1598 -0
- sage/rings/quotient_ring_element.py +979 -0
- sage/rings/rational.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/rational.pxd +20 -0
- sage/rings/rational.pyx +4284 -0
- sage/rings/rational_field.py +1730 -0
- sage/rings/real_double.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_double.pxd +16 -0
- sage/rings/real_double.pyx +2218 -0
- sage/rings/real_lazy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/real_lazy.pxd +30 -0
- sage/rings/real_lazy.pyx +1773 -0
- sage/rings/ring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/ring.pxd +30 -0
- sage/rings/ring.pyx +850 -0
- sage/rings/semirings/all.py +3 -0
- sage/rings/semirings/non_negative_integer_semiring.py +107 -0
- sage/rings/semirings/tropical_mpolynomial.py +972 -0
- sage/rings/semirings/tropical_polynomial.py +997 -0
- sage/rings/semirings/tropical_semiring.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/semirings/tropical_semiring.pyx +676 -0
- sage/rings/semirings/tropical_variety.py +1701 -0
- sage/rings/sum_of_squares.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/rings/sum_of_squares.pxd +3 -0
- sage/rings/sum_of_squares.pyx +336 -0
- sage/rings/tests.py +504 -0
- sage/schemes/affine/affine_homset.py +508 -0
- sage/schemes/affine/affine_morphism.py +1574 -0
- sage/schemes/affine/affine_point.py +460 -0
- sage/schemes/affine/affine_rational_point.py +308 -0
- sage/schemes/affine/affine_space.py +1264 -0
- sage/schemes/affine/affine_subscheme.py +592 -0
- sage/schemes/affine/all.py +25 -0
- sage/schemes/all__sagemath_categories.py +5 -0
- sage/schemes/generic/algebraic_scheme.py +2092 -0
- sage/schemes/generic/all.py +5 -0
- sage/schemes/generic/ambient_space.py +400 -0
- sage/schemes/generic/divisor.py +465 -0
- sage/schemes/generic/divisor_group.py +313 -0
- sage/schemes/generic/glue.py +84 -0
- sage/schemes/generic/homset.py +820 -0
- sage/schemes/generic/hypersurface.py +234 -0
- sage/schemes/generic/morphism.py +2107 -0
- sage/schemes/generic/point.py +237 -0
- sage/schemes/generic/scheme.py +1190 -0
- sage/schemes/generic/spec.py +199 -0
- sage/schemes/product_projective/all.py +6 -0
- sage/schemes/product_projective/homset.py +236 -0
- sage/schemes/product_projective/morphism.py +517 -0
- sage/schemes/product_projective/point.py +568 -0
- sage/schemes/product_projective/rational_point.py +550 -0
- sage/schemes/product_projective/space.py +1301 -0
- sage/schemes/product_projective/subscheme.py +466 -0
- sage/schemes/projective/all.py +24 -0
- sage/schemes/projective/proj_bdd_height.py +453 -0
- sage/schemes/projective/projective_homset.py +718 -0
- sage/schemes/projective/projective_morphism.py +2792 -0
- sage/schemes/projective/projective_point.py +1484 -0
- sage/schemes/projective/projective_rational_point.py +569 -0
- sage/schemes/projective/projective_space.py +2571 -0
- sage/schemes/projective/projective_subscheme.py +1574 -0
- sage/sets/all.py +17 -0
- sage/sets/cartesian_product.py +376 -0
- sage/sets/condition_set.py +525 -0
- sage/sets/disjoint_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/disjoint_set.pxd +36 -0
- sage/sets/disjoint_set.pyx +998 -0
- sage/sets/disjoint_union_enumerated_sets.py +625 -0
- sage/sets/family.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/family.pxd +12 -0
- sage/sets/family.pyx +1556 -0
- sage/sets/finite_enumerated_set.py +406 -0
- sage/sets/finite_set_map_cy.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/finite_set_map_cy.pxd +34 -0
- sage/sets/finite_set_map_cy.pyx +708 -0
- sage/sets/finite_set_maps.py +591 -0
- sage/sets/image_set.py +448 -0
- sage/sets/integer_range.py +829 -0
- sage/sets/non_negative_integers.py +241 -0
- sage/sets/positive_integers.py +93 -0
- sage/sets/primes.py +188 -0
- sage/sets/real_set.py +2760 -0
- sage/sets/recursively_enumerated_set.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/sets/recursively_enumerated_set.pxd +31 -0
- sage/sets/recursively_enumerated_set.pyx +2082 -0
- sage/sets/set.py +2083 -0
- sage/sets/set_from_iterator.py +1021 -0
- sage/sets/totally_ordered_finite_set.py +329 -0
- sage/symbolic/all__sagemath_categories.py +1 -0
- sage/symbolic/function.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/symbolic/function.pxd +29 -0
- sage/symbolic/function.pyx +1488 -0
- sage/symbolic/symbols.py +56 -0
- sage/tests/all__sagemath_categories.py +1 -0
- sage/tests/cython.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/cython.pyx +37 -0
- sage/tests/stl_vector.cpython-314t-aarch64-linux-musl.so +0 -0
- sage/tests/stl_vector.pyx +171 -0
- sage/typeset/all.py +6 -0
- sage/typeset/ascii_art.py +295 -0
- sage/typeset/character_art.py +789 -0
- sage/typeset/character_art_factory.py +572 -0
- sage/typeset/symbols.py +334 -0
- sage/typeset/unicode_art.py +183 -0
- sage/typeset/unicode_characters.py +101 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Hopf algebras
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# https://www.gnu.org/licenses/
|
|
11
|
+
# *****************************************************************************
|
|
12
|
+
from sage.categories.bialgebras import Bialgebras
|
|
13
|
+
from sage.categories.category import Category
|
|
14
|
+
from sage.categories.category_types import Category_over_base_ring
|
|
15
|
+
from sage.categories.realizations import RealizationsCategory
|
|
16
|
+
from sage.categories.super_modules import SuperModulesCategory
|
|
17
|
+
from sage.categories.tensor import TensorProductsCategory # tensor
|
|
18
|
+
from sage.misc.cachefunc import cached_method
|
|
19
|
+
from sage.misc.lazy_import import LazyImport
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class HopfAlgebras(Category_over_base_ring):
|
|
23
|
+
"""
|
|
24
|
+
The category of Hopf algebras.
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: HopfAlgebras(QQ)
|
|
29
|
+
Category of Hopf algebras over Rational Field
|
|
30
|
+
sage: HopfAlgebras(QQ).super_categories()
|
|
31
|
+
[Category of bialgebras over Rational Field]
|
|
32
|
+
|
|
33
|
+
TESTS::
|
|
34
|
+
|
|
35
|
+
sage: TestSuite(HopfAlgebras(ZZ)).run()
|
|
36
|
+
"""
|
|
37
|
+
def super_categories(self):
|
|
38
|
+
"""
|
|
39
|
+
EXAMPLES::
|
|
40
|
+
|
|
41
|
+
sage: HopfAlgebras(QQ).super_categories()
|
|
42
|
+
[Category of bialgebras over Rational Field]
|
|
43
|
+
"""
|
|
44
|
+
R = self.base_ring()
|
|
45
|
+
return [Bialgebras(R)]
|
|
46
|
+
|
|
47
|
+
def dual(self):
|
|
48
|
+
"""
|
|
49
|
+
Return the dual category.
|
|
50
|
+
|
|
51
|
+
EXAMPLES:
|
|
52
|
+
|
|
53
|
+
The category of Hopf algebras over any field is self dual::
|
|
54
|
+
|
|
55
|
+
sage: C = HopfAlgebras(QQ)
|
|
56
|
+
sage: C.dual()
|
|
57
|
+
Category of Hopf algebras over Rational Field
|
|
58
|
+
"""
|
|
59
|
+
return self
|
|
60
|
+
|
|
61
|
+
WithBasis = LazyImport('sage.categories.hopf_algebras_with_basis', 'HopfAlgebrasWithBasis')
|
|
62
|
+
|
|
63
|
+
class ElementMethods:
|
|
64
|
+
|
|
65
|
+
def antipode(self):
|
|
66
|
+
"""
|
|
67
|
+
Return the antipode of ``self``.
|
|
68
|
+
|
|
69
|
+
EXAMPLES::
|
|
70
|
+
|
|
71
|
+
sage: # needs sage.groups sage.modules
|
|
72
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example(); A
|
|
73
|
+
An example of Hopf algebra with basis: the group algebra of the
|
|
74
|
+
Dihedral group of order 6 as a permutation group over Rational Field
|
|
75
|
+
sage: [a,b] = A.algebra_generators()
|
|
76
|
+
sage: a, a.antipode()
|
|
77
|
+
(B[(1,2,3)], B[(1,3,2)])
|
|
78
|
+
sage: b, b.antipode()
|
|
79
|
+
(B[(1,3)], B[(1,3)])
|
|
80
|
+
|
|
81
|
+
TESTS::
|
|
82
|
+
|
|
83
|
+
sage: all(x.antipode() * x == A.one() for x in A.basis()) # needs sage.groups sage.modules
|
|
84
|
+
True
|
|
85
|
+
"""
|
|
86
|
+
return self.parent().antipode(self)
|
|
87
|
+
# Variant: delegates to the overloading mechanism
|
|
88
|
+
# result not guaranteed to be in self
|
|
89
|
+
# This choice should be done consistently with coproduct, ...
|
|
90
|
+
# return operator.antipode(self)
|
|
91
|
+
|
|
92
|
+
class ParentMethods:
|
|
93
|
+
# def __setup__(self): # Check the conventions for _setup_ or __setup__
|
|
94
|
+
# if self.implements("antipode"):
|
|
95
|
+
# coercion.declare(operator.antipode, [self], self.antipode)
|
|
96
|
+
#
|
|
97
|
+
# @lazy_attribute
|
|
98
|
+
# def antipode(self):
|
|
99
|
+
# # delegates to the overloading mechanism but
|
|
100
|
+
# # guarantees that the result is in self
|
|
101
|
+
# compose(self, operator.antipode, domain=self)
|
|
102
|
+
pass
|
|
103
|
+
|
|
104
|
+
class Morphism(Category):
|
|
105
|
+
"""
|
|
106
|
+
The category of Hopf algebra morphisms.
|
|
107
|
+
"""
|
|
108
|
+
pass
|
|
109
|
+
|
|
110
|
+
class Super(SuperModulesCategory):
|
|
111
|
+
r"""
|
|
112
|
+
The category of super Hopf algebras.
|
|
113
|
+
|
|
114
|
+
.. NOTE::
|
|
115
|
+
|
|
116
|
+
A super Hopf algebra is *not* simply a Hopf
|
|
117
|
+
algebra with a `\ZZ/2\ZZ` grading due to the
|
|
118
|
+
signed bialgebra compatibility conditions.
|
|
119
|
+
"""
|
|
120
|
+
def dual(self):
|
|
121
|
+
"""
|
|
122
|
+
Return the dual category.
|
|
123
|
+
|
|
124
|
+
EXAMPLES:
|
|
125
|
+
|
|
126
|
+
The category of super Hopf algebras over any field is self dual::
|
|
127
|
+
|
|
128
|
+
sage: C = HopfAlgebras(QQ).Super()
|
|
129
|
+
sage: C.dual()
|
|
130
|
+
Category of super Hopf algebras over Rational Field
|
|
131
|
+
"""
|
|
132
|
+
return self
|
|
133
|
+
|
|
134
|
+
class ElementMethods:
|
|
135
|
+
def antipode(self):
|
|
136
|
+
"""
|
|
137
|
+
Return the antipode of ``self``.
|
|
138
|
+
|
|
139
|
+
EXAMPLES::
|
|
140
|
+
|
|
141
|
+
sage: A = SteenrodAlgebra(3) # needs sage.combinat sage.modules
|
|
142
|
+
sage: a = A.an_element() # needs sage.combinat sage.modules
|
|
143
|
+
sage: a, a.antipode() # needs sage.combinat sage.modules
|
|
144
|
+
(2 Q_1 Q_3 P(2,1), Q_1 Q_3 P(2,1))
|
|
145
|
+
"""
|
|
146
|
+
return self.parent().antipode(self)
|
|
147
|
+
|
|
148
|
+
class TensorProducts(TensorProductsCategory):
|
|
149
|
+
"""
|
|
150
|
+
The category of Hopf algebras constructed by tensor product of Hopf algebras
|
|
151
|
+
"""
|
|
152
|
+
@cached_method
|
|
153
|
+
def extra_super_categories(self):
|
|
154
|
+
"""
|
|
155
|
+
EXAMPLES::
|
|
156
|
+
|
|
157
|
+
sage: C = HopfAlgebras(QQ).TensorProducts()
|
|
158
|
+
sage: C.extra_super_categories()
|
|
159
|
+
[Category of Hopf algebras over Rational Field]
|
|
160
|
+
sage: sorted(C.super_categories(), key=str)
|
|
161
|
+
[Category of Hopf algebras over Rational Field,
|
|
162
|
+
Category of tensor products of algebras over Rational Field,
|
|
163
|
+
Category of tensor products of coalgebras over Rational Field]
|
|
164
|
+
"""
|
|
165
|
+
return [self.base_category()]
|
|
166
|
+
|
|
167
|
+
class ParentMethods:
|
|
168
|
+
# TODO: enable when tensor product of morphisms will be implemented
|
|
169
|
+
# @lazy_attribute
|
|
170
|
+
# def antipode(self):
|
|
171
|
+
# return tensor([module.antipode for module in self.modules])
|
|
172
|
+
pass
|
|
173
|
+
|
|
174
|
+
class ElementMethods:
|
|
175
|
+
pass
|
|
176
|
+
|
|
177
|
+
class DualCategory(Category_over_base_ring):
|
|
178
|
+
"""
|
|
179
|
+
The category of Hopf algebras constructed as dual of a Hopf algebra
|
|
180
|
+
"""
|
|
181
|
+
|
|
182
|
+
class ParentMethods:
|
|
183
|
+
# @lazy_attribute
|
|
184
|
+
# def antipode(self):
|
|
185
|
+
# self.dual().antipode.dual() # Check that this is the correct formula
|
|
186
|
+
pass
|
|
187
|
+
|
|
188
|
+
class Realizations(RealizationsCategory):
|
|
189
|
+
|
|
190
|
+
class ParentMethods:
|
|
191
|
+
|
|
192
|
+
# TODO:
|
|
193
|
+
# - Use @conditionally_defined once it's in Sage, for a nicer idiom
|
|
194
|
+
# - Do the right thing (TM): once we will have proper
|
|
195
|
+
# overloaded operators (as in MuPAD-Combinat; see #8900),
|
|
196
|
+
# we won't need to specify explicitly to which parent one
|
|
197
|
+
# should coerce the input to calculate the antipode; so it
|
|
198
|
+
# will be sufficient to put this default implementation in
|
|
199
|
+
# HopfAlgebras.ParentMethods.
|
|
200
|
+
def antipode_by_coercion(self, x):
|
|
201
|
+
"""
|
|
202
|
+
Return the image of ``x`` by the antipode.
|
|
203
|
+
|
|
204
|
+
This default implementation coerces to the default
|
|
205
|
+
realization, computes the antipode there, and coerces the
|
|
206
|
+
result back.
|
|
207
|
+
|
|
208
|
+
EXAMPLES::
|
|
209
|
+
|
|
210
|
+
sage: # needs sage.combinat sage.modules
|
|
211
|
+
sage: N = NonCommutativeSymmetricFunctions(QQ)
|
|
212
|
+
sage: R = N.ribbon()
|
|
213
|
+
sage: R.antipode_by_coercion.__module__
|
|
214
|
+
'sage.categories.hopf_algebras'
|
|
215
|
+
sage: R.antipode_by_coercion(R[1,3,1])
|
|
216
|
+
-R[2, 1, 2]
|
|
217
|
+
"""
|
|
218
|
+
R = self.realization_of().a_realization()
|
|
219
|
+
return self(R(x).antipode())
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Hopf algebras with basis
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# Copyright (C) 2008-2011 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# https://www.gnu.org/licenses/
|
|
11
|
+
# *****************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
|
|
14
|
+
from sage.categories.tensor import TensorProductsCategory
|
|
15
|
+
from sage.misc.abstract_method import abstract_method
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
18
|
+
from sage.misc.lazy_import import LazyImport
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class HopfAlgebrasWithBasis(CategoryWithAxiom_over_base_ring):
|
|
22
|
+
"""
|
|
23
|
+
The category of Hopf algebras with a distinguished basis.
|
|
24
|
+
|
|
25
|
+
EXAMPLES::
|
|
26
|
+
|
|
27
|
+
sage: C = HopfAlgebrasWithBasis(QQ)
|
|
28
|
+
sage: C
|
|
29
|
+
Category of Hopf algebras with basis over Rational Field
|
|
30
|
+
sage: C.super_categories()
|
|
31
|
+
[Category of Hopf algebras over Rational Field,
|
|
32
|
+
Category of bialgebras with basis over Rational Field]
|
|
33
|
+
|
|
34
|
+
We now show how to use a simple Hopf algebra, namely the group algebra of the dihedral group
|
|
35
|
+
(see also AlgebrasWithBasis)::
|
|
36
|
+
|
|
37
|
+
sage: # needs sage.groups sage.modules
|
|
38
|
+
sage: A = C.example(); A
|
|
39
|
+
An example of Hopf algebra with basis: the group algebra of the
|
|
40
|
+
Dihedral group of order 6 as a permutation group over Rational Field
|
|
41
|
+
sage: A.rename('A')
|
|
42
|
+
sage: A.category()
|
|
43
|
+
Category of finite dimensional Hopf algebras with basis over Rational Field
|
|
44
|
+
sage: A.one_basis()
|
|
45
|
+
()
|
|
46
|
+
sage: A.one()
|
|
47
|
+
B[()]
|
|
48
|
+
sage: A.base_ring()
|
|
49
|
+
Rational Field
|
|
50
|
+
sage: A.basis().keys()
|
|
51
|
+
Dihedral group of order 6 as a permutation group
|
|
52
|
+
|
|
53
|
+
sage: # needs sage.groups sage.modules
|
|
54
|
+
sage: [a,b] = A.algebra_generators()
|
|
55
|
+
sage: a, b
|
|
56
|
+
(B[(1,2,3)], B[(1,3)])
|
|
57
|
+
sage: a^3, b^2
|
|
58
|
+
(B[()], B[()])
|
|
59
|
+
sage: a*b
|
|
60
|
+
B[(1,2)]
|
|
61
|
+
|
|
62
|
+
sage: A.product # todo: not quite ... # needs sage.groups sage.modules
|
|
63
|
+
<bound method MagmaticAlgebras.WithBasis.ParentMethods._product_from_product_on_basis_multiply of A>
|
|
64
|
+
sage: A.product(b, b) # needs sage.groups sage.modules
|
|
65
|
+
B[()]
|
|
66
|
+
|
|
67
|
+
sage: A.zero().coproduct() # needs sage.groups sage.modules
|
|
68
|
+
0
|
|
69
|
+
sage: A.zero().coproduct().parent() # needs sage.groups sage.modules
|
|
70
|
+
A # A
|
|
71
|
+
sage: a.coproduct() # needs sage.groups sage.modules
|
|
72
|
+
B[(1,2,3)] # B[(1,2,3)]
|
|
73
|
+
|
|
74
|
+
sage: TestSuite(A).run(verbose=True) # needs sage.groups sage.modules
|
|
75
|
+
running ._test_additive_associativity() . . . pass
|
|
76
|
+
running ._test_an_element() . . . pass
|
|
77
|
+
running ._test_antipode() . . . pass
|
|
78
|
+
running ._test_associativity() . . . pass
|
|
79
|
+
running ._test_cardinality() . . . pass
|
|
80
|
+
running ._test_category() . . . pass
|
|
81
|
+
running ._test_characteristic() . . . pass
|
|
82
|
+
running ._test_construction() . . . pass
|
|
83
|
+
running ._test_distributivity() . . . pass
|
|
84
|
+
running ._test_elements() . . .
|
|
85
|
+
Running the test suite of self.an_element()
|
|
86
|
+
running ._test_category() . . . pass
|
|
87
|
+
running ._test_eq() . . . pass
|
|
88
|
+
running ._test_monomial_coefficients() . . . pass
|
|
89
|
+
running ._test_new() . . . pass
|
|
90
|
+
running ._test_nonzero_equal() . . . pass
|
|
91
|
+
running ._test_not_implemented_methods() . . . pass
|
|
92
|
+
running ._test_pickling() . . . pass
|
|
93
|
+
pass
|
|
94
|
+
running ._test_elements_eq_reflexive() . . . pass
|
|
95
|
+
running ._test_elements_eq_symmetric() . . . pass
|
|
96
|
+
running ._test_elements_eq_transitive() . . . pass
|
|
97
|
+
running ._test_elements_neq() . . . pass
|
|
98
|
+
running ._test_eq() . . . pass
|
|
99
|
+
running ._test_new() . . . pass
|
|
100
|
+
running ._test_not_implemented_methods() . . . pass
|
|
101
|
+
running ._test_one() . . . pass
|
|
102
|
+
running ._test_pickling() . . . pass
|
|
103
|
+
running ._test_prod() . . . pass
|
|
104
|
+
running ._test_some_elements() . . . pass
|
|
105
|
+
running ._test_zero() . . . pass
|
|
106
|
+
sage: A.__class__ # needs sage.groups sage.modules
|
|
107
|
+
<class 'sage.categories.examples.hopf_algebras_with_basis.MyGroupAlgebra_with_category'>
|
|
108
|
+
sage: A.element_class # needs sage.groups sage.modules
|
|
109
|
+
<class 'sage.categories.examples.hopf_algebras_with_basis.MyGroupAlgebra_with_category.element_class'>
|
|
110
|
+
|
|
111
|
+
Let us look at the code for implementing A::
|
|
112
|
+
|
|
113
|
+
sage: A?? # not implemented # needs sage.groups sage.modules
|
|
114
|
+
|
|
115
|
+
TESTS::
|
|
116
|
+
|
|
117
|
+
sage: TestSuite(A).run() # needs sage.groups sage.modules
|
|
118
|
+
sage: TestSuite(C).run()
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
def example(self, G=None):
|
|
122
|
+
"""
|
|
123
|
+
Return an example of algebra with basis::
|
|
124
|
+
|
|
125
|
+
sage: HopfAlgebrasWithBasis(QQ['x']).example() # needs sage.groups sage.modules
|
|
126
|
+
An example of Hopf algebra with basis: the group algebra of the
|
|
127
|
+
Dihedral group of order 6 as a permutation group
|
|
128
|
+
over Univariate Polynomial Ring in x over Rational Field
|
|
129
|
+
|
|
130
|
+
An other group can be specified as optional argument::
|
|
131
|
+
|
|
132
|
+
sage: HopfAlgebrasWithBasis(QQ).example(SymmetricGroup(4)) # needs sage.groups sage.modules
|
|
133
|
+
An example of Hopf algebra with basis: the group algebra of the
|
|
134
|
+
Symmetric group of order 4! as a permutation group over Rational Field
|
|
135
|
+
"""
|
|
136
|
+
from sage.categories.examples.hopf_algebras_with_basis import MyGroupAlgebra
|
|
137
|
+
from sage.groups.perm_gps.permgroup_named import DihedralGroup
|
|
138
|
+
if G is None:
|
|
139
|
+
G = DihedralGroup(3)
|
|
140
|
+
return MyGroupAlgebra(self.base_ring(), G)
|
|
141
|
+
|
|
142
|
+
# This is only correct in the finite dimensional / graded case
|
|
143
|
+
# def dual(self):
|
|
144
|
+
# """
|
|
145
|
+
# Returns the dual category
|
|
146
|
+
|
|
147
|
+
# EXAMPLES:
|
|
148
|
+
|
|
149
|
+
# The category of Hopf algebras over any field is self dual::
|
|
150
|
+
|
|
151
|
+
# sage: C = HopfAlgebrasWithBasis(QQ)
|
|
152
|
+
# sage: C.dual()
|
|
153
|
+
# Category of Hopf algebras with basis over Rational Field
|
|
154
|
+
# """
|
|
155
|
+
# return self
|
|
156
|
+
|
|
157
|
+
FiniteDimensional = LazyImport('sage.categories.finite_dimensional_hopf_algebras_with_basis',
|
|
158
|
+
'FiniteDimensionalHopfAlgebrasWithBasis')
|
|
159
|
+
Filtered = LazyImport('sage.categories.filtered_hopf_algebras_with_basis',
|
|
160
|
+
'FilteredHopfAlgebrasWithBasis')
|
|
161
|
+
Graded = LazyImport('sage.categories.graded_hopf_algebras_with_basis',
|
|
162
|
+
'GradedHopfAlgebrasWithBasis')
|
|
163
|
+
Super = LazyImport('sage.categories.super_hopf_algebras_with_basis',
|
|
164
|
+
'SuperHopfAlgebrasWithBasis')
|
|
165
|
+
|
|
166
|
+
class ParentMethods:
|
|
167
|
+
|
|
168
|
+
@abstract_method(optional=True)
|
|
169
|
+
def antipode_on_basis(self, x):
|
|
170
|
+
"""
|
|
171
|
+
The antipode of the Hopf algebra on the basis (optional).
|
|
172
|
+
|
|
173
|
+
INPUT:
|
|
174
|
+
|
|
175
|
+
- ``x`` -- an index of an element of the basis of ``self``
|
|
176
|
+
|
|
177
|
+
Returns the antipode of the basis element indexed by ``x``.
|
|
178
|
+
|
|
179
|
+
If this method is implemented, then :meth:`antipode` is defined
|
|
180
|
+
from this by linearity.
|
|
181
|
+
|
|
182
|
+
EXAMPLES::
|
|
183
|
+
|
|
184
|
+
sage: # needs sage.groups sage.modules
|
|
185
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
186
|
+
sage: W = A.basis().keys(); W
|
|
187
|
+
Dihedral group of order 6 as a permutation group
|
|
188
|
+
sage: w = W.gen(0); w
|
|
189
|
+
(1,2,3)
|
|
190
|
+
sage: A.antipode_on_basis(w)
|
|
191
|
+
B[(1,3,2)]
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
@lazy_attribute
|
|
195
|
+
def antipode(self):
|
|
196
|
+
"""
|
|
197
|
+
The antipode of this Hopf algebra.
|
|
198
|
+
|
|
199
|
+
If :meth:`.antipode_basis` is available, this constructs the
|
|
200
|
+
antipode morphism from ``self`` to ``self`` by extending it by
|
|
201
|
+
linearity. Otherwise, :meth:`self.antipode_by_coercion` is used, if
|
|
202
|
+
available.
|
|
203
|
+
|
|
204
|
+
EXAMPLES::
|
|
205
|
+
|
|
206
|
+
sage: # needs sage.groups sage.modules
|
|
207
|
+
sage: A = HopfAlgebrasWithBasis(ZZ).example(); A
|
|
208
|
+
An example of Hopf algebra with basis: the group algebra of the
|
|
209
|
+
Dihedral group of order 6 as a permutation group over Integer Ring
|
|
210
|
+
sage: A = HopfAlgebrasWithBasis(QQ).example()
|
|
211
|
+
sage: [a,b] = A.algebra_generators()
|
|
212
|
+
sage: a, A.antipode(a)
|
|
213
|
+
(B[(1,2,3)], B[(1,3,2)])
|
|
214
|
+
sage: b, A.antipode(b)
|
|
215
|
+
(B[(1,3)], B[(1,3)])
|
|
216
|
+
|
|
217
|
+
TESTS::
|
|
218
|
+
|
|
219
|
+
sage: all(A.antipode(x) * x == A.one() for x in A.basis()) # needs sage.groups sage.modules
|
|
220
|
+
True
|
|
221
|
+
"""
|
|
222
|
+
if self.antipode_on_basis is not NotImplemented:
|
|
223
|
+
# Should give the information that this is an anti-morphism of algebra
|
|
224
|
+
return self._module_morphism(self.antipode_on_basis,
|
|
225
|
+
codomain=self)
|
|
226
|
+
elif hasattr(self, "antipode_by_coercion"):
|
|
227
|
+
return self.antipode_by_coercion
|
|
228
|
+
|
|
229
|
+
def _test_antipode(self, **options):
|
|
230
|
+
r"""
|
|
231
|
+
Test the antipode.
|
|
232
|
+
|
|
233
|
+
An *antipode* `S` of a Hopf algebra is a linear endomorphism of the
|
|
234
|
+
Hopf algebra that satisfies the following conditions (see
|
|
235
|
+
:wikipedia:`HopfAlgebra`).
|
|
236
|
+
|
|
237
|
+
- If `\mu` and `\Delta` denote the product and coproduct of the
|
|
238
|
+
Hopf algebra, respectively, then `S` satisfies
|
|
239
|
+
|
|
240
|
+
.. MATH::
|
|
241
|
+
|
|
242
|
+
\mu \circ (S \tensor 1) \circ \Delta = unit \circ counit
|
|
243
|
+
\mu \circ (1 \tensor S) \circ \Delta = unit \circ counit
|
|
244
|
+
|
|
245
|
+
- `S` is an *anti*-homomorphism
|
|
246
|
+
|
|
247
|
+
These properties are tested on :meth:`some_elements`.
|
|
248
|
+
|
|
249
|
+
TESTS::
|
|
250
|
+
|
|
251
|
+
sage: R = NonCommutativeSymmetricFunctions(QQ).ribbon() # needs sage.combinat sage.modules
|
|
252
|
+
sage: R._test_antipode() # needs sage.combinat sage.modules
|
|
253
|
+
|
|
254
|
+
::
|
|
255
|
+
|
|
256
|
+
sage: s = SymmetricFunctions(QQ).schur() # needs sage.combinat sage.modules
|
|
257
|
+
sage: s._test_antipode() # needs lrcalc_python sage.combinat sage.modules
|
|
258
|
+
"""
|
|
259
|
+
tester = self._tester(**options)
|
|
260
|
+
|
|
261
|
+
S = self.antipode
|
|
262
|
+
|
|
263
|
+
IS = lambda x: self.sum(c * self.monomial(t1) * S(self.monomial(t2))
|
|
264
|
+
for ((t1, t2), c) in x.coproduct())
|
|
265
|
+
|
|
266
|
+
SI = lambda x: self.sum(c * S(self.monomial(t1)) * self.monomial(t2)
|
|
267
|
+
for ((t1, t2), c) in x.coproduct())
|
|
268
|
+
|
|
269
|
+
for x in tester.some_elements():
|
|
270
|
+
|
|
271
|
+
# antipode is an anti-homomorphism
|
|
272
|
+
for y in tester.some_elements():
|
|
273
|
+
tester.assertEqual(S(x) * S(y), S(y * x))
|
|
274
|
+
|
|
275
|
+
# mu * (S # I) * delta == counit * unit
|
|
276
|
+
tester.assertEqual(SI(x), self.counit(x) * self.one())
|
|
277
|
+
|
|
278
|
+
# mu * (I # S) * delta == counit * unit
|
|
279
|
+
tester.assertEqual(IS(x), self.counit(x) * self.one())
|
|
280
|
+
|
|
281
|
+
class ElementMethods:
|
|
282
|
+
pass
|
|
283
|
+
|
|
284
|
+
class TensorProducts(TensorProductsCategory):
|
|
285
|
+
"""
|
|
286
|
+
The category of Hopf algebras with basis constructed by tensor product of Hopf algebras with basis
|
|
287
|
+
"""
|
|
288
|
+
|
|
289
|
+
@cached_method
|
|
290
|
+
def extra_super_categories(self):
|
|
291
|
+
"""
|
|
292
|
+
EXAMPLES::
|
|
293
|
+
|
|
294
|
+
sage: C = HopfAlgebrasWithBasis(QQ).TensorProducts()
|
|
295
|
+
sage: C.extra_super_categories()
|
|
296
|
+
[Category of Hopf algebras with basis over Rational Field]
|
|
297
|
+
sage: sorted(C.super_categories(), key=str)
|
|
298
|
+
[Category of Hopf algebras with basis over Rational Field,
|
|
299
|
+
Category of tensor products of Hopf algebras over Rational Field,
|
|
300
|
+
Category of tensor products of algebras with basis over Rational Field]
|
|
301
|
+
"""
|
|
302
|
+
return [self.base_category()]
|
|
303
|
+
|
|
304
|
+
class ParentMethods:
|
|
305
|
+
# todo: antipode
|
|
306
|
+
pass
|
|
307
|
+
|
|
308
|
+
class ElementMethods:
|
|
309
|
+
pass
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Infinite Enumerated Sets
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Florent Hivert (2009-11): initial revision.
|
|
8
|
+
"""
|
|
9
|
+
# ****************************************************************************
|
|
10
|
+
# Copyright (C) 2009 Florent Hivert <Florent.Hivert@univ-rouen.fr>
|
|
11
|
+
#
|
|
12
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
13
|
+
# https://www.gnu.org/licenses/
|
|
14
|
+
# *****************************************************************************
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class InfiniteEnumeratedSets(CategoryWithAxiom):
|
|
21
|
+
"""
|
|
22
|
+
The category of infinite enumerated sets.
|
|
23
|
+
|
|
24
|
+
An infinite enumerated sets is a countable set together with a
|
|
25
|
+
canonical enumeration of its elements.
|
|
26
|
+
|
|
27
|
+
EXAMPLES::
|
|
28
|
+
|
|
29
|
+
sage: InfiniteEnumeratedSets()
|
|
30
|
+
Category of infinite enumerated sets
|
|
31
|
+
sage: InfiniteEnumeratedSets().super_categories()
|
|
32
|
+
[Category of enumerated sets, Category of infinite sets]
|
|
33
|
+
sage: InfiniteEnumeratedSets().all_super_categories()
|
|
34
|
+
[Category of infinite enumerated sets,
|
|
35
|
+
Category of enumerated sets,
|
|
36
|
+
Category of infinite sets,
|
|
37
|
+
Category of sets,
|
|
38
|
+
Category of sets with partial maps,
|
|
39
|
+
Category of objects]
|
|
40
|
+
|
|
41
|
+
TESTS::
|
|
42
|
+
|
|
43
|
+
sage: C = InfiniteEnumeratedSets()
|
|
44
|
+
sage: TestSuite(C).run()
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
class ParentMethods:
|
|
48
|
+
|
|
49
|
+
def random_element(self):
|
|
50
|
+
"""
|
|
51
|
+
Raise an error because ``self`` is an infinite enumerated set.
|
|
52
|
+
|
|
53
|
+
EXAMPLES::
|
|
54
|
+
|
|
55
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
56
|
+
sage: NN.random_element()
|
|
57
|
+
Traceback (most recent call last):
|
|
58
|
+
...
|
|
59
|
+
NotImplementedError: infinite set
|
|
60
|
+
|
|
61
|
+
TODO: should this be an optional abstract_method instead?
|
|
62
|
+
"""
|
|
63
|
+
raise NotImplementedError("infinite set")
|
|
64
|
+
|
|
65
|
+
def tuple(self):
|
|
66
|
+
"""
|
|
67
|
+
Raise an error because ``self`` is an infinite enumerated set.
|
|
68
|
+
|
|
69
|
+
EXAMPLES::
|
|
70
|
+
|
|
71
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
72
|
+
sage: NN.tuple()
|
|
73
|
+
Traceback (most recent call last):
|
|
74
|
+
...
|
|
75
|
+
NotImplementedError: cannot list an infinite set
|
|
76
|
+
"""
|
|
77
|
+
raise NotImplementedError("cannot list an infinite set")
|
|
78
|
+
|
|
79
|
+
def list(self):
|
|
80
|
+
"""
|
|
81
|
+
Raise an error because ``self`` is an infinite enumerated set.
|
|
82
|
+
|
|
83
|
+
EXAMPLES::
|
|
84
|
+
|
|
85
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
86
|
+
sage: NN.list()
|
|
87
|
+
Traceback (most recent call last):
|
|
88
|
+
...
|
|
89
|
+
NotImplementedError: cannot list an infinite set
|
|
90
|
+
"""
|
|
91
|
+
raise NotImplementedError("cannot list an infinite set")
|
|
92
|
+
_list_default = list # needed by the check system.
|
|
93
|
+
|
|
94
|
+
def _test_enumerated_set_iter_cardinality(self, **options):
|
|
95
|
+
"""
|
|
96
|
+
Check that the methods :meth:`.cardinality` and
|
|
97
|
+
:meth:`.__iter__` are consistent.
|
|
98
|
+
|
|
99
|
+
See also :class:`TestSuite`.
|
|
100
|
+
|
|
101
|
+
For infinite enumerated sets:
|
|
102
|
+
|
|
103
|
+
* :meth:`.cardinality` is supposed to return ``infinity``
|
|
104
|
+
|
|
105
|
+
* :meth:`.list` is supposed to raise a :exc:`NotImplementedError`.
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: NN = InfiniteEnumeratedSets().example()
|
|
110
|
+
sage: NN._test_enumerated_set_iter_cardinality()
|
|
111
|
+
"""
|
|
112
|
+
tester = self._tester(**options)
|
|
113
|
+
from sage.rings.infinity import infinity
|
|
114
|
+
tester.assertEqual(self.cardinality(), infinity)
|
|
115
|
+
tester.assertRaises(NotImplementedError, self.list)
|