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,91 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Graded Lie Algebras
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Eero Hakavuori (2018-08-16): initial version
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# ****************************************************************************
|
|
11
|
+
# Copyright (C) 2018 Eero Hakavuori <eero.hakavuori@gmail.com>
|
|
12
|
+
#
|
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
|
14
|
+
# it under the terms of the GNU General Public License as published by
|
|
15
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
16
|
+
# (at your option) any later version.
|
|
17
|
+
# https://www.gnu.org/licenses/
|
|
18
|
+
# ****************************************************************************
|
|
19
|
+
|
|
20
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
|
|
21
|
+
from sage.categories.graded_modules import GradedModulesCategory
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class GradedLieAlgebras(GradedModulesCategory):
|
|
25
|
+
r"""
|
|
26
|
+
Category of graded Lie algebras.
|
|
27
|
+
|
|
28
|
+
TESTS::
|
|
29
|
+
|
|
30
|
+
sage: C = LieAlgebras(QQ).Graded()
|
|
31
|
+
sage: TestSuite(C).run()
|
|
32
|
+
"""
|
|
33
|
+
class SubcategoryMethods:
|
|
34
|
+
def Stratified(self):
|
|
35
|
+
r"""
|
|
36
|
+
Return the full subcategory of stratified objects of ``self``.
|
|
37
|
+
|
|
38
|
+
A Lie algebra is stratified if it is graded and generated as a
|
|
39
|
+
Lie algebra by its component of degree one.
|
|
40
|
+
|
|
41
|
+
EXAMPLES::
|
|
42
|
+
|
|
43
|
+
sage: LieAlgebras(QQ).Graded().Stratified()
|
|
44
|
+
Category of stratified Lie algebras over Rational Field
|
|
45
|
+
"""
|
|
46
|
+
return self._with_axiom("Stratified")
|
|
47
|
+
|
|
48
|
+
class Stratified(CategoryWithAxiom_over_base_ring):
|
|
49
|
+
r"""
|
|
50
|
+
Category of stratified Lie algebras.
|
|
51
|
+
|
|
52
|
+
A graded Lie algebra `L = \bigoplus_{k=1}^M L_k` (where
|
|
53
|
+
possibly `M = \infty`) is called *stratified* if it is generated
|
|
54
|
+
by `L_1`; in other words, we have `L_{k+1} = [L_1, L_k]`.
|
|
55
|
+
|
|
56
|
+
TESTS::
|
|
57
|
+
|
|
58
|
+
sage: C = LieAlgebras(QQ).Graded().Stratified()
|
|
59
|
+
sage: TestSuite(C).run()
|
|
60
|
+
"""
|
|
61
|
+
class FiniteDimensional(CategoryWithAxiom_over_base_ring):
|
|
62
|
+
r"""
|
|
63
|
+
Category of finite dimensional stratified Lie algebras.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
|
|
68
|
+
Category of finite dimensional stratified Lie algebras over Rational Field
|
|
69
|
+
|
|
70
|
+
TESTS::
|
|
71
|
+
|
|
72
|
+
sage: C = LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
|
|
73
|
+
sage: TestSuite(C).run()
|
|
74
|
+
"""
|
|
75
|
+
def extra_super_categories(self):
|
|
76
|
+
"""
|
|
77
|
+
Implement the fact that a finite dimensional stratified Lie
|
|
78
|
+
algebra is nilpotent.
|
|
79
|
+
|
|
80
|
+
EXAMPLES::
|
|
81
|
+
|
|
82
|
+
sage: C = LieAlgebras(QQ).Graded().Stratified().FiniteDimensional()
|
|
83
|
+
sage: C.extra_super_categories()
|
|
84
|
+
[Category of nilpotent Lie algebras over Rational Field]
|
|
85
|
+
sage: C is C.Nilpotent()
|
|
86
|
+
True
|
|
87
|
+
sage: C.is_subcategory(LieAlgebras(QQ).Nilpotent())
|
|
88
|
+
True
|
|
89
|
+
"""
|
|
90
|
+
from sage.categories.lie_algebras import LieAlgebras
|
|
91
|
+
return [LieAlgebras(self.base_ring()).Nilpotent()]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Graded Lie Algebras With Basis
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ****************************************************************************
|
|
7
|
+
# Copyright (C) 2018 Travis Scrimshaw <tcscrims at gmail.com>
|
|
8
|
+
#
|
|
9
|
+
# This program is free software: you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
12
|
+
# (at your option) any later version.
|
|
13
|
+
# https://www.gnu.org/licenses/
|
|
14
|
+
# ****************************************************************************
|
|
15
|
+
|
|
16
|
+
from sage.categories.graded_modules import GradedModulesCategory
|
|
17
|
+
from sage.misc.lazy_import import LazyImport
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class GradedLieAlgebrasWithBasis(GradedModulesCategory):
|
|
21
|
+
"""
|
|
22
|
+
The category of graded Lie algebras with a distinguished basis.
|
|
23
|
+
|
|
24
|
+
EXAMPLES::
|
|
25
|
+
|
|
26
|
+
sage: C = LieAlgebras(ZZ).WithBasis().Graded(); C
|
|
27
|
+
Category of graded Lie algebras with basis over Integer Ring
|
|
28
|
+
sage: C.super_categories()
|
|
29
|
+
[Category of graded modules with basis over Integer Ring,
|
|
30
|
+
Category of Lie algebras with basis over Integer Ring,
|
|
31
|
+
Category of graded Lie algebras over Integer Ring]
|
|
32
|
+
|
|
33
|
+
sage: C is LieAlgebras(ZZ).WithBasis().Graded()
|
|
34
|
+
True
|
|
35
|
+
sage: C is LieAlgebras(ZZ).Graded().WithBasis()
|
|
36
|
+
False
|
|
37
|
+
|
|
38
|
+
TESTS::
|
|
39
|
+
|
|
40
|
+
sage: TestSuite(C).run()
|
|
41
|
+
"""
|
|
42
|
+
FiniteDimensional = LazyImport('sage.categories.finite_dimensional_graded_lie_algebras_with_basis',
|
|
43
|
+
'FiniteDimensionalGradedLieAlgebrasWithBasis',
|
|
44
|
+
as_name='FiniteDimensional')
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Graded Lie Conformal Algebras
|
|
4
|
+
|
|
5
|
+
AUTHORS:
|
|
6
|
+
|
|
7
|
+
- Reimundo Heluani (2019-10-05): Initial implementation.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
# Copyright (C) 2019 Reimundo Heluani <heluani@potuz.net>
|
|
12
|
+
#
|
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
|
14
|
+
# it under the terms of the GNU General Public License as published by
|
|
15
|
+
# the Free Software Foundation, either version 2 of the License, or
|
|
16
|
+
# (at your option) any later version.
|
|
17
|
+
# http://www.gnu.org/licenses/
|
|
18
|
+
#*****************************************************************************
|
|
19
|
+
|
|
20
|
+
from sage.categories.graded_modules import GradedModulesCategory
|
|
21
|
+
from sage.misc.cachefunc import cached_method
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class GradedLieConformalAlgebrasCategory(GradedModulesCategory):
|
|
25
|
+
@cached_method
|
|
26
|
+
def Super(self, base_ring=None):
|
|
27
|
+
r"""
|
|
28
|
+
Return the super-analogue category of ``self``.
|
|
29
|
+
|
|
30
|
+
INPUT:
|
|
31
|
+
|
|
32
|
+
- ``base_ring`` -- this is ignored
|
|
33
|
+
|
|
34
|
+
EXAMPLES::
|
|
35
|
+
|
|
36
|
+
sage: # needs sage.rings.number_field
|
|
37
|
+
sage: C = LieConformalAlgebras(QQbar)
|
|
38
|
+
sage: C.Graded().Super() is C.Super().Graded()
|
|
39
|
+
True
|
|
40
|
+
sage: Cp = C.WithBasis()
|
|
41
|
+
sage: Cp.Graded().Super() is Cp.Super().Graded()
|
|
42
|
+
True
|
|
43
|
+
"""
|
|
44
|
+
return self.base_category().Super(base_ring).Graded()
|
|
45
|
+
|
|
46
|
+
def _repr_object_names(self):
|
|
47
|
+
"""
|
|
48
|
+
The names of the objects of ``self``.
|
|
49
|
+
|
|
50
|
+
EXAMPLES::
|
|
51
|
+
|
|
52
|
+
sage: LieConformalAlgebras(QQbar).Graded() # needs sage.rings.number_field
|
|
53
|
+
Category of H-graded Lie conformal algebras over Algebraic Field
|
|
54
|
+
|
|
55
|
+
sage: LieConformalAlgebras(QQbar).WithBasis().FinitelyGenerated().Graded() # needs sage.rings.number_field
|
|
56
|
+
Category of H-graded finitely generated Lie conformal algebras with basis over Algebraic Field
|
|
57
|
+
"""
|
|
58
|
+
return "H-graded {}".format(self.base_category()._repr_object_names())
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class GradedLieConformalAlgebras(GradedLieConformalAlgebrasCategory):
|
|
62
|
+
"""
|
|
63
|
+
The category of graded Lie conformal algebras.
|
|
64
|
+
|
|
65
|
+
EXAMPLES::
|
|
66
|
+
|
|
67
|
+
sage: C = LieConformalAlgebras(QQbar).Graded(); C # needs sage.rings.number_field
|
|
68
|
+
Category of H-graded Lie conformal algebras over Algebraic Field
|
|
69
|
+
|
|
70
|
+
sage: CS = LieConformalAlgebras(QQ).Graded().Super(); CS
|
|
71
|
+
Category of H-graded super Lie conformal algebras over Rational Field
|
|
72
|
+
sage: CS is LieConformalAlgebras(QQ).Super().Graded()
|
|
73
|
+
True
|
|
74
|
+
"""
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Graded modules
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# 2008-2013 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 import Category
|
|
14
|
+
from sage.categories.category_types import Category_over_base_ring
|
|
15
|
+
from sage.categories.covariant_functorial_construction import RegressiveCovariantConstructionCategory
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class GradedModulesCategory(RegressiveCovariantConstructionCategory, Category_over_base_ring):
|
|
19
|
+
def __init__(self, base_category):
|
|
20
|
+
"""
|
|
21
|
+
EXAMPLES::
|
|
22
|
+
|
|
23
|
+
sage: C = GradedAlgebras(QQ)
|
|
24
|
+
sage: C
|
|
25
|
+
Category of graded algebras over Rational Field
|
|
26
|
+
sage: C.base_category()
|
|
27
|
+
Category of algebras over Rational Field
|
|
28
|
+
sage: sorted(C.super_categories(), key=str)
|
|
29
|
+
[Category of filtered algebras over Rational Field,
|
|
30
|
+
Category of graded vector spaces over Rational Field]
|
|
31
|
+
|
|
32
|
+
sage: AlgebrasWithBasis(QQ).Graded().base_ring()
|
|
33
|
+
Rational Field
|
|
34
|
+
sage: GradedHopfAlgebrasWithBasis(QQ).base_ring()
|
|
35
|
+
Rational Field
|
|
36
|
+
|
|
37
|
+
TESTS::
|
|
38
|
+
|
|
39
|
+
sage: GradedModules(ZZ)
|
|
40
|
+
Category of graded modules over Integer Ring
|
|
41
|
+
sage: Modules(ZZ).Graded()
|
|
42
|
+
Category of graded modules over Integer Ring
|
|
43
|
+
sage: GradedModules(ZZ) is Modules(ZZ).Graded()
|
|
44
|
+
True
|
|
45
|
+
"""
|
|
46
|
+
super().__init__(base_category, base_category.base_ring())
|
|
47
|
+
|
|
48
|
+
_functor_category = "Graded"
|
|
49
|
+
|
|
50
|
+
def _repr_object_names(self):
|
|
51
|
+
"""
|
|
52
|
+
EXAMPLES::
|
|
53
|
+
|
|
54
|
+
sage: AlgebrasWithBasis(QQ).Graded() # indirect doctest
|
|
55
|
+
Category of graded algebras with basis over Rational Field
|
|
56
|
+
"""
|
|
57
|
+
return "graded {}".format(self.base_category()._repr_object_names())
|
|
58
|
+
|
|
59
|
+
@classmethod
|
|
60
|
+
def default_super_categories(cls, category, *args):
|
|
61
|
+
r"""
|
|
62
|
+
Return the default super categories of ``category.Graded()``.
|
|
63
|
+
|
|
64
|
+
Mathematical meaning: every graded object (module, algebra,
|
|
65
|
+
etc.) is a filtered object with the (implicit) filtration
|
|
66
|
+
defined by `F_i = \bigoplus_{j \leq i} G_j`.
|
|
67
|
+
|
|
68
|
+
INPUT:
|
|
69
|
+
|
|
70
|
+
- ``cls`` -- the class ``GradedModulesCategory``
|
|
71
|
+
- ``category`` -- a category
|
|
72
|
+
|
|
73
|
+
OUTPUT: a (join) category
|
|
74
|
+
|
|
75
|
+
In practice, this returns ``category.Filtered()``, joined
|
|
76
|
+
together with the result of the method
|
|
77
|
+
:meth:`RegressiveCovariantConstructionCategory.default_super_categories() <sage.categories.covariant_functorial_construction.RegressiveCovariantConstructionCategory.default_super_categories>`
|
|
78
|
+
(that is the join of ``category.Filtered()`` and ``cat`` for
|
|
79
|
+
each ``cat`` in the super categories of ``category``).
|
|
80
|
+
|
|
81
|
+
EXAMPLES:
|
|
82
|
+
|
|
83
|
+
Consider ``category=Algebras()``, which has ``cat=Modules()``
|
|
84
|
+
as super category. Then, a grading of an algebra `G`
|
|
85
|
+
is also a filtration of `G`::
|
|
86
|
+
|
|
87
|
+
sage: Algebras(QQ).Graded().super_categories()
|
|
88
|
+
[Category of filtered algebras over Rational Field,
|
|
89
|
+
Category of graded vector spaces over Rational Field]
|
|
90
|
+
|
|
91
|
+
This resulted from the following call::
|
|
92
|
+
|
|
93
|
+
sage: sage.categories.graded_modules.GradedModulesCategory.default_super_categories(Algebras(QQ))
|
|
94
|
+
Join of Category of filtered algebras over Rational Field
|
|
95
|
+
and Category of graded vector spaces over Rational Field
|
|
96
|
+
"""
|
|
97
|
+
cat = super().default_super_categories(category, *args)
|
|
98
|
+
return Category.join([category.Filtered(), cat])
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class GradedModules(GradedModulesCategory):
|
|
102
|
+
r"""
|
|
103
|
+
The category of graded modules.
|
|
104
|
+
|
|
105
|
+
We consider every graded module `M = \bigoplus_i M_i` as a
|
|
106
|
+
filtered module under the (natural) filtration given by
|
|
107
|
+
|
|
108
|
+
.. MATH::
|
|
109
|
+
|
|
110
|
+
F_i = \bigoplus_{j < i} M_j.
|
|
111
|
+
|
|
112
|
+
EXAMPLES::
|
|
113
|
+
|
|
114
|
+
sage: GradedModules(ZZ)
|
|
115
|
+
Category of graded modules over Integer Ring
|
|
116
|
+
sage: GradedModules(ZZ).super_categories()
|
|
117
|
+
[Category of filtered modules over Integer Ring]
|
|
118
|
+
|
|
119
|
+
The category of graded modules defines the graded structure which
|
|
120
|
+
shall be preserved by morphisms::
|
|
121
|
+
|
|
122
|
+
sage: Modules(ZZ).Graded().additional_structure()
|
|
123
|
+
Category of graded modules over Integer Ring
|
|
124
|
+
|
|
125
|
+
TESTS::
|
|
126
|
+
|
|
127
|
+
sage: TestSuite(GradedModules(ZZ)).run()
|
|
128
|
+
"""
|
|
129
|
+
class ParentMethods:
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
class ElementMethods:
|
|
133
|
+
pass
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Graded modules with basis
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2008 Teresa Gomez-Diaz (CNRS) <Teresa.Gomez-Diaz@univ-mlv.fr>
|
|
7
|
+
# 2008-2011 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# http://www.gnu.org/licenses/
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.categories.graded_modules import GradedModulesCategory
|
|
14
|
+
from sage.categories.quotients import QuotientsCategory
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class GradedModulesWithBasis(GradedModulesCategory):
|
|
18
|
+
"""
|
|
19
|
+
The category of graded modules with a distinguished basis.
|
|
20
|
+
|
|
21
|
+
EXAMPLES::
|
|
22
|
+
|
|
23
|
+
sage: C = GradedModulesWithBasis(ZZ); C
|
|
24
|
+
Category of graded modules with basis over Integer Ring
|
|
25
|
+
sage: sorted(C.super_categories(), key=str)
|
|
26
|
+
[Category of filtered modules with basis over Integer Ring,
|
|
27
|
+
Category of graded modules over Integer Ring]
|
|
28
|
+
sage: C is ModulesWithBasis(ZZ).Graded()
|
|
29
|
+
True
|
|
30
|
+
|
|
31
|
+
TESTS::
|
|
32
|
+
|
|
33
|
+
sage: TestSuite(C).run()
|
|
34
|
+
"""
|
|
35
|
+
class ParentMethods:
|
|
36
|
+
def degree_negation(self, element):
|
|
37
|
+
r"""
|
|
38
|
+
Return the image of ``element`` under the degree negation
|
|
39
|
+
automorphism of the graded module ``self``.
|
|
40
|
+
|
|
41
|
+
The degree negation is the module automorphism which scales
|
|
42
|
+
every homogeneous element of degree `k` by `(-1)^k` (for all
|
|
43
|
+
`k`). This assumes that the module ``self`` is `\ZZ`-graded.
|
|
44
|
+
|
|
45
|
+
INPUT:
|
|
46
|
+
|
|
47
|
+
- ``element`` -- element of the module ``self``
|
|
48
|
+
|
|
49
|
+
EXAMPLES::
|
|
50
|
+
|
|
51
|
+
sage: E.<a,b> = ExteriorAlgebra(QQ) # needs sage.modules
|
|
52
|
+
sage: E.degree_negation((1 + a) * (1 + b)) # needs sage.modules
|
|
53
|
+
a*b - a - b + 1
|
|
54
|
+
sage: E.degree_negation(E.zero()) # needs sage.modules
|
|
55
|
+
0
|
|
56
|
+
|
|
57
|
+
sage: P = GradedModulesWithBasis(ZZ).example(); P # needs sage.modules
|
|
58
|
+
An example of a graded module with basis:
|
|
59
|
+
the free module on partitions over Integer Ring
|
|
60
|
+
sage: pbp = lambda x: P.basis()[Partition(list(x))]
|
|
61
|
+
sage: p = pbp([3,1]) - 2 * pbp([2]) + 4 * pbp([1]) # needs sage.modules
|
|
62
|
+
sage: P.degree_negation(p) # needs sage.modules
|
|
63
|
+
-4*P[1] - 2*P[2] + P[3, 1]
|
|
64
|
+
"""
|
|
65
|
+
base_one = self.base_ring().one()
|
|
66
|
+
base_minusone = - base_one
|
|
67
|
+
diag = lambda x: (base_one if self.degree_on_basis(x) % 2 == 0
|
|
68
|
+
else base_minusone)
|
|
69
|
+
return self.sum_of_terms([(key, diag(key) * value)
|
|
70
|
+
for key, value in
|
|
71
|
+
element.monomial_coefficients(copy=False).items()])
|
|
72
|
+
|
|
73
|
+
def submodule(self, gens, check=True, already_echelonized=False,
|
|
74
|
+
unitriangular=False, support_order=None, category=None,
|
|
75
|
+
*args, **opts):
|
|
76
|
+
r"""
|
|
77
|
+
Return the submodule spanned by a finite set of elements.
|
|
78
|
+
|
|
79
|
+
INPUT:
|
|
80
|
+
|
|
81
|
+
- ``gens`` -- list or family of elements of ``self``
|
|
82
|
+
- ``check`` -- boolean (default: ``True``); whether to verify that
|
|
83
|
+
the elements of ``gens`` are in ``self``
|
|
84
|
+
- ``already_echelonized`` -- boolean (default: ``False``); whether
|
|
85
|
+
the elements of ``gens`` are already in (not necessarily
|
|
86
|
+
reduced) echelon form
|
|
87
|
+
- ``unitriangular`` -- boolean (default: ``False``); whether
|
|
88
|
+
the lift morphism is unitriangular
|
|
89
|
+
- ``support_order`` -- (optional) either something that can
|
|
90
|
+
be converted into a tuple or a key function
|
|
91
|
+
- ``category`` -- (optional) the category of the submodule
|
|
92
|
+
|
|
93
|
+
If ``already_echelonized`` is ``False``, then the
|
|
94
|
+
generators are put in reduced echelon form using
|
|
95
|
+
:meth:`echelonize`, and reindexed by `0,1,...`.
|
|
96
|
+
|
|
97
|
+
.. WARNING::
|
|
98
|
+
|
|
99
|
+
At this point, this method only works for finite
|
|
100
|
+
dimensional submodules and if matrices can be
|
|
101
|
+
echelonized over the base ring.
|
|
102
|
+
|
|
103
|
+
If in addition ``unitriangular`` is ``True``, then
|
|
104
|
+
the generators are made such that the coefficients of
|
|
105
|
+
the pivots are 1, so that lifting map is unitriangular.
|
|
106
|
+
|
|
107
|
+
The basis of the submodule uses the same index set as the
|
|
108
|
+
generators, and the lifting map sends `y_i` to `gens[i]`.
|
|
109
|
+
|
|
110
|
+
.. SEEALSO::
|
|
111
|
+
|
|
112
|
+
- :meth:`ModulesWithBasis.FiniteDimensional.ParentMethods.quotient_module`
|
|
113
|
+
- :class:`sage.modules.with_basis.subquotient.SubmoduleWithBasis`
|
|
114
|
+
|
|
115
|
+
EXAMPLES:
|
|
116
|
+
|
|
117
|
+
A graded submodule of a graded module generated by homogeneous
|
|
118
|
+
elements is naturally graded::
|
|
119
|
+
|
|
120
|
+
sage: # needs sage.combinat sage.modules
|
|
121
|
+
sage: E.<x,y,z> = ExteriorAlgebra(QQ)
|
|
122
|
+
sage: S = E.submodule([x + y, x*y - y*z])
|
|
123
|
+
sage: S.category()
|
|
124
|
+
Join of
|
|
125
|
+
Category of graded vector spaces with basis over Rational Field and
|
|
126
|
+
Category of subobjects of filtered modules with basis over Rational Field and
|
|
127
|
+
Category of finite dimensional filtered modules with basis over Rational Field
|
|
128
|
+
sage: S.basis()[0].degree()
|
|
129
|
+
1
|
|
130
|
+
sage: S.basis()[1].degree()
|
|
131
|
+
2
|
|
132
|
+
|
|
133
|
+
We check on the echelonized basis::
|
|
134
|
+
|
|
135
|
+
sage: Sp = E.submodule([1, x + y + 5, x*y - y*z + x + y - 2]) # needs sage.combinat sage.modules
|
|
136
|
+
sage: Sp.category() # needs sage.combinat sage.modules
|
|
137
|
+
Join of
|
|
138
|
+
Category of graded vector spaces with basis over Rational Field and
|
|
139
|
+
Category of subobjects of filtered modules with basis over Rational Field and
|
|
140
|
+
Category of finite dimensional filtered modules with basis over Rational Field
|
|
141
|
+
|
|
142
|
+
If it is generated by inhomogeneous elements, then it is
|
|
143
|
+
filtered by default::
|
|
144
|
+
|
|
145
|
+
sage: F = E.submodule([x + y*z, x*z + y*x]) # needs sage.combinat sage.modules
|
|
146
|
+
sage: F.category() # needs sage.combinat sage.modules
|
|
147
|
+
Join of
|
|
148
|
+
Category of subobjects of filtered modules with basis over Rational Field and
|
|
149
|
+
Category of finite dimensional filtered modules with basis over Rational Field and
|
|
150
|
+
Category of filtered vector spaces with basis over Rational Field
|
|
151
|
+
|
|
152
|
+
If ``category`` is specified, then it does not give any extra
|
|
153
|
+
structure to the submodule (we can think of this as applying
|
|
154
|
+
the forgetful functor)::
|
|
155
|
+
|
|
156
|
+
sage: # needs sage.combinat sage.modules
|
|
157
|
+
sage: SM = E.submodule([x + y, x*y - y*z],
|
|
158
|
+
....: category=ModulesWithBasis(QQ))
|
|
159
|
+
sage: SM.category()
|
|
160
|
+
Join of
|
|
161
|
+
Category of finite dimensional vector spaces with basis over Rational Field and
|
|
162
|
+
Category of subobjects of sets
|
|
163
|
+
sage: FM = E.submodule([x + 1, x*y - x*y*z],
|
|
164
|
+
....: category=ModulesWithBasis(QQ))
|
|
165
|
+
sage: FM.category()
|
|
166
|
+
Join of
|
|
167
|
+
Category of finite dimensional vector spaces with basis over Rational Field and
|
|
168
|
+
Category of subobjects of sets
|
|
169
|
+
|
|
170
|
+
If we have specified that this is a graded submodule of a graded
|
|
171
|
+
module, then the echelonized elements must be homogeneous::
|
|
172
|
+
|
|
173
|
+
sage: Cat = ModulesWithBasis(QQ).Graded().Subobjects()
|
|
174
|
+
sage: E.submodule([x + y, x*y - 1], category=Cat) # needs sage.combinat sage.modules
|
|
175
|
+
Traceback (most recent call last):
|
|
176
|
+
...
|
|
177
|
+
ValueError: all of the generators must be homogeneous
|
|
178
|
+
sage: E.submodule([x + y, x*y - x - y], category=Cat) # needs sage.combinat sage.modules
|
|
179
|
+
Free module generated by {0, 1} over Rational Field
|
|
180
|
+
"""
|
|
181
|
+
# Make sure gens consists of elements of ``self``
|
|
182
|
+
from sage.sets.family import Family, AbstractFamily
|
|
183
|
+
if isinstance(gens, AbstractFamily):
|
|
184
|
+
gens = gens.map(self)
|
|
185
|
+
elif isinstance(gens, dict):
|
|
186
|
+
gens = Family(gens.keys(), gens.__getitem__)
|
|
187
|
+
else:
|
|
188
|
+
gens = [self(y) for y in gens]
|
|
189
|
+
support_order = self._compute_support_order(gens, support_order)
|
|
190
|
+
if not already_echelonized:
|
|
191
|
+
gens = self.echelon_form(gens, unitriangular, order=support_order)
|
|
192
|
+
|
|
193
|
+
GMod = GradedModulesWithBasis(self.category().base_ring())
|
|
194
|
+
if category is None:
|
|
195
|
+
if all(g.is_homogeneous() for g in gens):
|
|
196
|
+
category = GMod.Subobjects()
|
|
197
|
+
elif (category.is_subcategory(GMod.Subobjects())
|
|
198
|
+
and not all(g.is_homogeneous() for g in gens)):
|
|
199
|
+
raise ValueError("all of the generators must be homogeneous")
|
|
200
|
+
|
|
201
|
+
from sage.modules.with_basis.subquotient import SubmoduleWithBasis
|
|
202
|
+
return SubmoduleWithBasis(gens, ambient=self,
|
|
203
|
+
support_order=support_order,
|
|
204
|
+
unitriangular=unitriangular,
|
|
205
|
+
category=category, *args, **opts)
|
|
206
|
+
|
|
207
|
+
def quotient_module(self, submodule, check=True, already_echelonized=False, category=None):
|
|
208
|
+
r"""
|
|
209
|
+
Construct the quotient module ``self`` / ``submodule``.
|
|
210
|
+
|
|
211
|
+
INPUT:
|
|
212
|
+
|
|
213
|
+
- ``submodule`` -- a submodule with basis of ``self``, or
|
|
214
|
+
something that can be turned into one via
|
|
215
|
+
``self.submodule(submodule)``
|
|
216
|
+
- ``check``, ``already_echelonized`` -- passed down to
|
|
217
|
+
:meth:`ModulesWithBasis.ParentMethods.submodule`
|
|
218
|
+
- ``category`` -- (optional) the category of the quotient module
|
|
219
|
+
|
|
220
|
+
.. WARNING::
|
|
221
|
+
|
|
222
|
+
At this point, this only supports quotients by free
|
|
223
|
+
submodules admitting a basis in unitriangular echelon
|
|
224
|
+
form. In this case, the quotient is also a free
|
|
225
|
+
module, with a basis consisting of the retract of a
|
|
226
|
+
subset of the basis of ``self``.
|
|
227
|
+
|
|
228
|
+
EXAMPLES::
|
|
229
|
+
|
|
230
|
+
sage: # needs sage.combinat sage.modules
|
|
231
|
+
sage: E.<x,y,z> = ExteriorAlgebra(QQ)
|
|
232
|
+
sage: S = E.submodule([x + y, x*y - y*z, y])
|
|
233
|
+
sage: Q = E.quotient_module(S)
|
|
234
|
+
sage: Q.category()
|
|
235
|
+
Join of
|
|
236
|
+
Category of quotients of graded modules with basis over Rational Field and
|
|
237
|
+
Category of graded vector spaces with basis over Rational Field and
|
|
238
|
+
Category of finite dimensional filtered modules with basis over Rational Field
|
|
239
|
+
|
|
240
|
+
.. SEEALSO::
|
|
241
|
+
|
|
242
|
+
- :meth:`Modules.WithBasis.ParentMethods.submodule`
|
|
243
|
+
- :meth:`Rings.ParentMethods.quotient`
|
|
244
|
+
- :class:`sage.modules.with_basis.subquotient.QuotientModuleWithBasis`
|
|
245
|
+
"""
|
|
246
|
+
from sage.modules.with_basis.subquotient import SubmoduleWithBasis, QuotientModuleWithBasis
|
|
247
|
+
if not isinstance(submodule, SubmoduleWithBasis):
|
|
248
|
+
submodule = self.submodule(submodule, check=check,
|
|
249
|
+
unitriangular=True,
|
|
250
|
+
already_echelonized=already_echelonized)
|
|
251
|
+
|
|
252
|
+
GMod = GradedModulesWithBasis(self.category().base_ring())
|
|
253
|
+
if category is None:
|
|
254
|
+
if all(g.is_homogeneous() for g in submodule.basis()):
|
|
255
|
+
category = GMod.Quotients()
|
|
256
|
+
elif (category.is_subcategory(GMod.Quotients())
|
|
257
|
+
and not all(g.is_homogeneous() for g in submodule.basis())):
|
|
258
|
+
raise ValueError("all of the basis elements must be homogeneous")
|
|
259
|
+
|
|
260
|
+
return QuotientModuleWithBasis(submodule, category=category)
|
|
261
|
+
|
|
262
|
+
class ElementMethods:
|
|
263
|
+
def degree_negation(self):
|
|
264
|
+
r"""
|
|
265
|
+
Return the image of ``self`` under the degree negation
|
|
266
|
+
automorphism of the graded module to which ``self`` belongs.
|
|
267
|
+
|
|
268
|
+
The degree negation is the module automorphism which scales
|
|
269
|
+
every homogeneous element of degree `k` by `(-1)^k` (for all
|
|
270
|
+
`k`). This assumes that the module to which ``self`` belongs
|
|
271
|
+
(that is, the module ``self.parent()``) is `\ZZ`-graded.
|
|
272
|
+
|
|
273
|
+
EXAMPLES::
|
|
274
|
+
|
|
275
|
+
sage: E.<a,b> = ExteriorAlgebra(QQ) # needs sage.modules
|
|
276
|
+
sage: ((1 + a) * (1 + b)).degree_negation() # needs sage.modules
|
|
277
|
+
a*b - a - b + 1
|
|
278
|
+
sage: E.zero().degree_negation() # needs sage.modules
|
|
279
|
+
0
|
|
280
|
+
|
|
281
|
+
sage: P = GradedModulesWithBasis(ZZ).example(); P # needs sage.modules
|
|
282
|
+
An example of a graded module with basis:
|
|
283
|
+
the free module on partitions over Integer Ring
|
|
284
|
+
sage: pbp = lambda x: P.basis()[Partition(list(x))]
|
|
285
|
+
sage: p = pbp([3,1]) - 2 * pbp([2]) + 4 * pbp([1]) # needs sage.modules
|
|
286
|
+
sage: p.degree_negation() # needs sage.modules
|
|
287
|
+
-4*P[1] - 2*P[2] + P[3, 1]
|
|
288
|
+
"""
|
|
289
|
+
return self.parent().degree_negation(self)
|
|
290
|
+
|
|
291
|
+
class Quotients(QuotientsCategory):
|
|
292
|
+
class ParentMethods:
|
|
293
|
+
def degree_on_basis(self, m):
|
|
294
|
+
r"""
|
|
295
|
+
Return the degree of the basis element indexed by ``m``
|
|
296
|
+
in ``self``.
|
|
297
|
+
|
|
298
|
+
EXAMPLES::
|
|
299
|
+
|
|
300
|
+
sage: # needs sage.combinat sage.modules
|
|
301
|
+
sage: E.<x,y,z> = ExteriorAlgebra(QQ)
|
|
302
|
+
sage: S = E.submodule([x + y, x*y - y*z, y])
|
|
303
|
+
sage: Q = E.quotient_module(S)
|
|
304
|
+
sage: B = Q.basis()
|
|
305
|
+
sage: [B[i].lift() for i in Q.indices()]
|
|
306
|
+
[1, z, x*z, y*z, x*y*z]
|
|
307
|
+
sage: [Q.degree_on_basis(i) for i in Q.indices()]
|
|
308
|
+
[0, 1, 2, 2, 3]
|
|
309
|
+
"""
|
|
310
|
+
return self.basis()[m].lift().degree()
|
|
311
|
+
|
|
312
|
+
class ElementMethods:
|
|
313
|
+
def degree(self):
|
|
314
|
+
r"""
|
|
315
|
+
Return the degree of ``self``.
|
|
316
|
+
|
|
317
|
+
EXAMPLES::
|
|
318
|
+
|
|
319
|
+
sage: # needs sage.combinat sage.modules
|
|
320
|
+
sage: E.<x,y,z> = ExteriorAlgebra(QQ)
|
|
321
|
+
sage: S = E.submodule([x + y, x*y - y*z, y])
|
|
322
|
+
sage: Q = E.quotient_module(S)
|
|
323
|
+
sage: B = Q.basis()
|
|
324
|
+
sage: [B[i].lift() for i in Q.indices()]
|
|
325
|
+
[1, z, x*z, y*z, x*y*z]
|
|
326
|
+
sage: [B[i].degree() for i in Q.indices()]
|
|
327
|
+
[0, 1, 2, 2, 3]
|
|
328
|
+
"""
|
|
329
|
+
return self.lift().degree()
|