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,63 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Filtered Algebras
|
|
4
|
+
"""
|
|
5
|
+
#*****************************************************************************
|
|
6
|
+
# Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# http://www.gnu.org/licenses/
|
|
10
|
+
#******************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.misc.abstract_method import abstract_method
|
|
13
|
+
from sage.categories.filtered_modules import FilteredModulesCategory
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class FilteredAlgebras(FilteredModulesCategory):
|
|
17
|
+
r"""
|
|
18
|
+
The category of filtered algebras.
|
|
19
|
+
|
|
20
|
+
An algebra `A` over a commutative ring `R` is *filtered* if
|
|
21
|
+
`A` is endowed with a structure of a filtered `R`-module
|
|
22
|
+
(whose underlying `R`-module structure is identical with
|
|
23
|
+
that of the `R`-algebra `A`) such that the indexing set `I`
|
|
24
|
+
(typically `I = \NN`) is also an additive abelian monoid,
|
|
25
|
+
the unity `1` of `A` belongs to `F_0`, and we have
|
|
26
|
+
`F_i \cdot F_j \subseteq F_{i+j}` for all `i, j \in I`.
|
|
27
|
+
|
|
28
|
+
EXAMPLES::
|
|
29
|
+
|
|
30
|
+
sage: Algebras(ZZ).Filtered()
|
|
31
|
+
Category of filtered algebras over Integer Ring
|
|
32
|
+
sage: Algebras(ZZ).Filtered().super_categories()
|
|
33
|
+
[Category of algebras over Integer Ring,
|
|
34
|
+
Category of filtered modules over Integer Ring]
|
|
35
|
+
|
|
36
|
+
TESTS::
|
|
37
|
+
|
|
38
|
+
sage: TestSuite(Algebras(ZZ).Filtered()).run()
|
|
39
|
+
|
|
40
|
+
REFERENCES:
|
|
41
|
+
|
|
42
|
+
- :wikipedia:`Filtered_algebra`
|
|
43
|
+
"""
|
|
44
|
+
class ParentMethods:
|
|
45
|
+
@abstract_method(optional=True)
|
|
46
|
+
def graded_algebra(self):
|
|
47
|
+
"""
|
|
48
|
+
Return the associated graded algebra to ``self``.
|
|
49
|
+
|
|
50
|
+
.. TODO::
|
|
51
|
+
|
|
52
|
+
Implement a version of the associated graded algebra
|
|
53
|
+
which does not require ``self`` to have a
|
|
54
|
+
distinguished basis.
|
|
55
|
+
|
|
56
|
+
EXAMPLES::
|
|
57
|
+
|
|
58
|
+
sage: A = AlgebrasWithBasis(ZZ).Filtered().example()
|
|
59
|
+
sage: A.graded_algebra() # needs sage.combinat
|
|
60
|
+
Graded Algebra of An example of a filtered algebra with basis:
|
|
61
|
+
the universal enveloping algebra of
|
|
62
|
+
Lie algebra of RR^3 with cross product over Integer Ring
|
|
63
|
+
"""
|
|
@@ -0,0 +1,548 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Filtered Algebras With Basis
|
|
4
|
+
|
|
5
|
+
A filtered algebra with basis over a commutative ring `R`
|
|
6
|
+
is a filtered algebra over `R` endowed with the structure
|
|
7
|
+
of a filtered module with basis (with the same underlying
|
|
8
|
+
filtered-module structure). See
|
|
9
|
+
:class:`~sage.categories.filtered_algebras.FilteredAlgebras` and
|
|
10
|
+
:class:`~sage.categories.filtered_modules_with_basis.FilteredModulesWithBasis`
|
|
11
|
+
for these two notions.
|
|
12
|
+
"""
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
# Copyright (C) 2014 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# http://www.gnu.org/licenses/
|
|
18
|
+
#******************************************************************************
|
|
19
|
+
|
|
20
|
+
from sage.categories.filtered_modules import FilteredModulesCategory
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FilteredAlgebrasWithBasis(FilteredModulesCategory):
|
|
24
|
+
"""
|
|
25
|
+
The category of filtered algebras with a distinguished
|
|
26
|
+
homogeneous basis.
|
|
27
|
+
|
|
28
|
+
A filtered algebra with basis over a commutative ring `R`
|
|
29
|
+
is a filtered algebra over `R` endowed with the structure
|
|
30
|
+
of a filtered module with basis (with the same underlying
|
|
31
|
+
filtered-module structure). See
|
|
32
|
+
:class:`~sage.categories.filtered_algebras.FilteredAlgebras` and
|
|
33
|
+
:class:`~sage.categories.filtered_modules_with_basis.FilteredModulesWithBasis`
|
|
34
|
+
for these two notions.
|
|
35
|
+
|
|
36
|
+
EXAMPLES::
|
|
37
|
+
|
|
38
|
+
sage: C = AlgebrasWithBasis(ZZ).Filtered(); C
|
|
39
|
+
Category of filtered algebras with basis over Integer Ring
|
|
40
|
+
sage: sorted(C.super_categories(), key=str)
|
|
41
|
+
[Category of algebras with basis over Integer Ring,
|
|
42
|
+
Category of filtered algebras over Integer Ring,
|
|
43
|
+
Category of filtered modules with basis over Integer Ring]
|
|
44
|
+
|
|
45
|
+
TESTS::
|
|
46
|
+
|
|
47
|
+
sage: TestSuite(C).run()
|
|
48
|
+
"""
|
|
49
|
+
class ParentMethods:
|
|
50
|
+
def graded_algebra(self):
|
|
51
|
+
r"""
|
|
52
|
+
Return the associated graded algebra to ``self``.
|
|
53
|
+
|
|
54
|
+
See :class:`~sage.algebras.associated_graded.AssociatedGradedAlgebra`
|
|
55
|
+
for the definition and the properties of this.
|
|
56
|
+
|
|
57
|
+
If the filtered algebra ``self`` with basis is called `A`,
|
|
58
|
+
then this method returns `\operatorname{gr} A`. The method
|
|
59
|
+
:meth:`to_graded_conversion` returns the canonical
|
|
60
|
+
`R`-module isomorphism `A \to \operatorname{gr} A` induced
|
|
61
|
+
by the basis of `A`, and the method
|
|
62
|
+
:meth:`from_graded_conversion` returns the inverse of this
|
|
63
|
+
isomorphism. The method :meth:`projection` projects
|
|
64
|
+
elements of `A` onto `\operatorname{gr} A` according to
|
|
65
|
+
their place in the filtration on `A`.
|
|
66
|
+
|
|
67
|
+
.. WARNING::
|
|
68
|
+
|
|
69
|
+
When not overridden, this method returns the default
|
|
70
|
+
implementation of an associated graded algebra --
|
|
71
|
+
namely, ``AssociatedGradedAlgebra(self)``, where
|
|
72
|
+
``AssociatedGradedAlgebra`` is
|
|
73
|
+
:class:`~sage.algebras.associated_graded.AssociatedGradedAlgebra`.
|
|
74
|
+
But many instances of :class:`FilteredAlgebrasWithBasis`
|
|
75
|
+
override this method, as the associated graded algebra
|
|
76
|
+
often is (isomorphic) to a simpler object (for instance,
|
|
77
|
+
the associated graded algebra of a graded algebra can be
|
|
78
|
+
identified with the graded algebra itself). Generic code
|
|
79
|
+
that uses associated graded algebras (such as the code
|
|
80
|
+
of the :meth:`induced_graded_map` method below) should
|
|
81
|
+
make sure to only communicate with them via the
|
|
82
|
+
:meth:`to_graded_conversion`,
|
|
83
|
+
:meth:`from_graded_conversion`, and
|
|
84
|
+
:meth:`projection` methods (in particular,
|
|
85
|
+
do not expect there to be a conversion from ``self``
|
|
86
|
+
to ``self.graded_algebra()``; this currently does not
|
|
87
|
+
work for Clifford algebras). Similarly, when
|
|
88
|
+
overriding :meth:`graded_algebra`, make sure to
|
|
89
|
+
accordingly redefine these three methods, unless their
|
|
90
|
+
definitions below still apply to your case (this will
|
|
91
|
+
happen whenever the basis of your :meth:`graded_algebra`
|
|
92
|
+
has the same indexing set as ``self``, and the partition
|
|
93
|
+
of this indexing set according to degree is the same as
|
|
94
|
+
for ``self``).
|
|
95
|
+
|
|
96
|
+
.. TODO::
|
|
97
|
+
|
|
98
|
+
Maybe the thing about the conversion from ``self``
|
|
99
|
+
to ``self.graded_algebra()`` on the Clifford at least
|
|
100
|
+
could be made to work? (I would still warn the user
|
|
101
|
+
against ASSUMING that it must work -- as there is
|
|
102
|
+
probably no way to guarantee it in all cases, and
|
|
103
|
+
we shouldn't require users to mess with
|
|
104
|
+
element constructors.)
|
|
105
|
+
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: A = AlgebrasWithBasis(ZZ).Filtered().example()
|
|
109
|
+
sage: A.graded_algebra() # needs sage.combinat
|
|
110
|
+
Graded Algebra of An example of a filtered algebra with basis:
|
|
111
|
+
the universal enveloping algebra of
|
|
112
|
+
Lie algebra of RR^3 with cross product over Integer Ring
|
|
113
|
+
"""
|
|
114
|
+
from sage.algebras.associated_graded import AssociatedGradedAlgebra
|
|
115
|
+
return AssociatedGradedAlgebra(self)
|
|
116
|
+
|
|
117
|
+
# Maps
|
|
118
|
+
|
|
119
|
+
def to_graded_conversion(self):
|
|
120
|
+
r"""
|
|
121
|
+
Return the canonical `R`-module isomorphism
|
|
122
|
+
`A \to \operatorname{gr} A` induced by the basis of `A`
|
|
123
|
+
(where `A = ` ``self``).
|
|
124
|
+
|
|
125
|
+
This is an isomorphism of `R`-modules, not of algebras. See
|
|
126
|
+
the class documentation :class:`AssociatedGradedAlgebra`.
|
|
127
|
+
|
|
128
|
+
.. SEEALSO::
|
|
129
|
+
|
|
130
|
+
:meth:`from_graded_conversion`
|
|
131
|
+
|
|
132
|
+
EXAMPLES::
|
|
133
|
+
|
|
134
|
+
sage: A = Algebras(QQ).WithBasis().Filtered().example()
|
|
135
|
+
sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
|
|
136
|
+
U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
|
|
137
|
+
sage: q = A.to_graded_conversion()(p); q # needs sage.combinat
|
|
138
|
+
bar(U['x']^2*U['y']^2*U['z']^3) + 3*bar(U['x'])
|
|
139
|
+
+ 3*bar(U['y']) + 3*bar(1)
|
|
140
|
+
sage: q.parent() is A.graded_algebra() # needs sage.combinat
|
|
141
|
+
True
|
|
142
|
+
"""
|
|
143
|
+
base_one = self.base_ring().one()
|
|
144
|
+
return self.module_morphism(diagonal=lambda x: base_one,
|
|
145
|
+
codomain=self.graded_algebra())
|
|
146
|
+
|
|
147
|
+
def from_graded_conversion(self):
|
|
148
|
+
r"""
|
|
149
|
+
Return the inverse of the canonical `R`-module isomorphism
|
|
150
|
+
`A \to \operatorname{gr} A` induced by the basis of `A`
|
|
151
|
+
(where `A = ` ``self``). This inverse is an isomorphism
|
|
152
|
+
`\operatorname{gr} A \to A`.
|
|
153
|
+
|
|
154
|
+
This is an isomorphism of `R`-modules, not of algebras. See
|
|
155
|
+
the class documentation :class:`AssociatedGradedAlgebra`.
|
|
156
|
+
|
|
157
|
+
.. SEEALSO::
|
|
158
|
+
|
|
159
|
+
:meth:`to_graded_conversion`
|
|
160
|
+
|
|
161
|
+
EXAMPLES::
|
|
162
|
+
|
|
163
|
+
sage: A = Algebras(QQ).WithBasis().Filtered().example()
|
|
164
|
+
sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
|
|
165
|
+
U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
|
|
166
|
+
sage: q = A.to_graded_conversion()(p) # needs sage.combinat
|
|
167
|
+
sage: A.from_graded_conversion()(q) == p # needs sage.combinat
|
|
168
|
+
True
|
|
169
|
+
sage: q.parent() is A.graded_algebra() # needs sage.combinat
|
|
170
|
+
True
|
|
171
|
+
"""
|
|
172
|
+
base_one = self.base_ring().one()
|
|
173
|
+
return self.graded_algebra().module_morphism(diagonal=lambda x: base_one,
|
|
174
|
+
codomain=self)
|
|
175
|
+
|
|
176
|
+
def projection(self, i):
|
|
177
|
+
r"""
|
|
178
|
+
Return the `i`-th projection `p_i : F_i \to G_i` (in the
|
|
179
|
+
notations of the class documentation
|
|
180
|
+
:class:`AssociatedGradedAlgebra`, where `A = ` ``self``).
|
|
181
|
+
|
|
182
|
+
This method actually does not return the map `p_i` itself,
|
|
183
|
+
but an extension of `p_i` to the whole `R`-module `A`.
|
|
184
|
+
This extension is the composition of the `R`-module
|
|
185
|
+
isomorphism `A \to \operatorname{gr} A` with the canonical
|
|
186
|
+
projection of the graded `R`-module `\operatorname{gr} A`
|
|
187
|
+
onto its `i`-th graded component `G_i`. The codomain of
|
|
188
|
+
this map is `\operatorname{gr} A`, although its actual
|
|
189
|
+
image is `G_i`. The map `p_i` is obtained from this map
|
|
190
|
+
by restricting its domain to `F_i` and its image to `G_i`.
|
|
191
|
+
|
|
192
|
+
EXAMPLES::
|
|
193
|
+
|
|
194
|
+
sage: A = Algebras(QQ).WithBasis().Filtered().example()
|
|
195
|
+
sage: p = A.an_element() + A.algebra_generators()['x'] + 2; p
|
|
196
|
+
U['x']^2*U['y']^2*U['z']^3 + 3*U['x'] + 3*U['y'] + 3
|
|
197
|
+
sage: q = A.projection(7)(p); q # needs sage.combinat
|
|
198
|
+
bar(U['x']^2*U['y']^2*U['z']^3)
|
|
199
|
+
sage: q.parent() is A.graded_algebra() # needs sage.combinat
|
|
200
|
+
True
|
|
201
|
+
sage: A.projection(8)(p) # needs sage.combinat
|
|
202
|
+
0
|
|
203
|
+
"""
|
|
204
|
+
base_zero = self.base_ring().zero()
|
|
205
|
+
base_one = self.base_ring().one()
|
|
206
|
+
grA = self.graded_algebra()
|
|
207
|
+
proj = lambda x: (base_one if self.degree_on_basis(x) == i
|
|
208
|
+
else base_zero)
|
|
209
|
+
return self.module_morphism(diagonal=proj, codomain=grA)
|
|
210
|
+
|
|
211
|
+
def induced_graded_map(self, other, f):
|
|
212
|
+
r"""
|
|
213
|
+
Return the graded linear map between the associated graded
|
|
214
|
+
algebras of ``self`` and ``other`` canonically induced by
|
|
215
|
+
the filtration-preserving map ``f : self -> other``.
|
|
216
|
+
|
|
217
|
+
Let `A` and `B` be two filtered algebras with basis, and let
|
|
218
|
+
`(F_i)_{i \in I}` and `(G_i)_{i \in I}` be their
|
|
219
|
+
filtrations. Let `f : A \to B` be a linear map which
|
|
220
|
+
preserves the filtration (i.e., satisfies `f(F_i) \subseteq
|
|
221
|
+
G_i` for all `i \in I`). Then, there is a canonically
|
|
222
|
+
defined graded linear map
|
|
223
|
+
`\operatorname{gr} f : \operatorname{gr} A \to
|
|
224
|
+
\operatorname{gr} B` which satisfies
|
|
225
|
+
|
|
226
|
+
.. MATH::
|
|
227
|
+
|
|
228
|
+
(\operatorname{gr} f) (p_i(a)) = p_i(f(a))
|
|
229
|
+
\qquad \text{for all } i \in I \text{ and } a \in F_i ,
|
|
230
|
+
|
|
231
|
+
where the `p_i` on the left hand side is the canonical
|
|
232
|
+
projection from `F_i` onto the `i`-th graded component
|
|
233
|
+
of `\operatorname{gr} A`, while the `p_i` on the right
|
|
234
|
+
hand side is the canonical projection from `G_i` onto
|
|
235
|
+
the `i`-th graded component of `\operatorname{gr} B`.
|
|
236
|
+
|
|
237
|
+
INPUT:
|
|
238
|
+
|
|
239
|
+
- ``other`` -- a filtered algebra with basis
|
|
240
|
+
|
|
241
|
+
- ``f`` -- a filtration-preserving linear map from ``self``
|
|
242
|
+
to ``other`` (can be given as a morphism or as a function)
|
|
243
|
+
|
|
244
|
+
OUTPUT: the graded linear map `\operatorname{gr} f`
|
|
245
|
+
|
|
246
|
+
EXAMPLES:
|
|
247
|
+
|
|
248
|
+
**Example 1.**
|
|
249
|
+
|
|
250
|
+
We start with the universal enveloping algebra of the
|
|
251
|
+
Lie algebra `\RR^3` (with the cross product serving as
|
|
252
|
+
Lie bracket)::
|
|
253
|
+
|
|
254
|
+
sage: A = AlgebrasWithBasis(QQ).Filtered().example(); A
|
|
255
|
+
An example of a filtered algebra with basis: the
|
|
256
|
+
universal enveloping algebra of Lie algebra of RR^3
|
|
257
|
+
with cross product over Rational Field
|
|
258
|
+
sage: M = A.indices(); M
|
|
259
|
+
Free abelian monoid indexed by {'x', 'y', 'z'}
|
|
260
|
+
sage: x,y,z = [A.basis()[M.gens()[i]] for i in "xyz"]
|
|
261
|
+
|
|
262
|
+
Let us define a stupid filtered map from ``A`` to
|
|
263
|
+
itself::
|
|
264
|
+
|
|
265
|
+
sage: def map_on_basis(m):
|
|
266
|
+
....: d = m.dict()
|
|
267
|
+
....: i = d.get('x', 0); j = d.get('y', 0); k = d.get('z', 0)
|
|
268
|
+
....: g = (y ** (i+j)) * (z ** k)
|
|
269
|
+
....: if i > 0:
|
|
270
|
+
....: g += i * (x ** (i-1)) * (y ** j) * (z ** k)
|
|
271
|
+
....: return g
|
|
272
|
+
sage: f = A.module_morphism(on_basis=map_on_basis,
|
|
273
|
+
....: codomain=A)
|
|
274
|
+
sage: f(x)
|
|
275
|
+
U['y'] + 1
|
|
276
|
+
sage: f(x*y*z)
|
|
277
|
+
U['y']^2*U['z'] + U['y']*U['z']
|
|
278
|
+
sage: f(x*x*y*z)
|
|
279
|
+
U['y']^3*U['z'] + 2*U['x']*U['y']*U['z']
|
|
280
|
+
sage: f(A.one())
|
|
281
|
+
1
|
|
282
|
+
sage: f(y*z)
|
|
283
|
+
U['y']*U['z']
|
|
284
|
+
|
|
285
|
+
(There is nothing here that is peculiar to this
|
|
286
|
+
universal enveloping algebra; we are only using its
|
|
287
|
+
module structure, and we could just as well be using
|
|
288
|
+
a polynomial algebra in its stead.)
|
|
289
|
+
|
|
290
|
+
We now compute `\operatorname{gr} f` ::
|
|
291
|
+
|
|
292
|
+
sage: # needs sage.combinat
|
|
293
|
+
sage: grA = A.graded_algebra(); grA
|
|
294
|
+
Graded Algebra of An example of a filtered algebra with
|
|
295
|
+
basis: the universal enveloping algebra of Lie algebra
|
|
296
|
+
of RR^3 with cross product over Rational Field
|
|
297
|
+
sage: xx, yy, zz = [A.to_graded_conversion()(i) for i in [x, y, z]]
|
|
298
|
+
sage: xx+yy*zz
|
|
299
|
+
bar(U['y']*U['z']) + bar(U['x'])
|
|
300
|
+
sage: grf = A.induced_graded_map(A, f); grf
|
|
301
|
+
Generic endomorphism of Graded Algebra of An example
|
|
302
|
+
of a filtered algebra with basis: the universal
|
|
303
|
+
enveloping algebra of Lie algebra of RR^3 with cross
|
|
304
|
+
product over Rational Field
|
|
305
|
+
sage: grf(xx)
|
|
306
|
+
bar(U['y'])
|
|
307
|
+
sage: grf(xx*yy*zz)
|
|
308
|
+
bar(U['y']^2*U['z'])
|
|
309
|
+
sage: grf(xx*xx*yy*zz)
|
|
310
|
+
bar(U['y']^3*U['z'])
|
|
311
|
+
sage: grf(grA.one())
|
|
312
|
+
bar(1)
|
|
313
|
+
sage: grf(yy*zz)
|
|
314
|
+
bar(U['y']*U['z'])
|
|
315
|
+
sage: grf(yy*zz-2*yy)
|
|
316
|
+
bar(U['y']*U['z']) - 2*bar(U['y'])
|
|
317
|
+
|
|
318
|
+
**Example 2.**
|
|
319
|
+
|
|
320
|
+
We shall now construct `\operatorname{gr} f` for a
|
|
321
|
+
different map `f` out of the same ``A``; the new map
|
|
322
|
+
`f` will lead into a graded algebra already, namely into
|
|
323
|
+
the algebra of symmetric functions::
|
|
324
|
+
|
|
325
|
+
sage: # needs sage.combinat sage.modules
|
|
326
|
+
sage: h = SymmetricFunctions(QQ).h()
|
|
327
|
+
sage: def map_on_basis(m): # redefining map_on_basis
|
|
328
|
+
....: d = m.dict()
|
|
329
|
+
....: i = d.get('x', 0); j = d.get('y', 0); k = d.get('z', 0)
|
|
330
|
+
....: g = (h[1] ** i) * (h[2] ** (j // 2) * (h[3] ** (k // 3)))
|
|
331
|
+
....: g += i * (h[1] ** (i+j+k))
|
|
332
|
+
....: return g
|
|
333
|
+
sage: f = A.module_morphism(on_basis=map_on_basis,
|
|
334
|
+
....: codomain=h) # redefining f
|
|
335
|
+
sage: f(x)
|
|
336
|
+
2*h[1]
|
|
337
|
+
sage: f(y)
|
|
338
|
+
h[]
|
|
339
|
+
sage: f(z)
|
|
340
|
+
h[]
|
|
341
|
+
sage: f(y**2)
|
|
342
|
+
h[2]
|
|
343
|
+
sage: f(x**2)
|
|
344
|
+
3*h[1, 1]
|
|
345
|
+
sage: f(x*y*z)
|
|
346
|
+
h[1] + h[1, 1, 1]
|
|
347
|
+
sage: f(x*x*y*y*z)
|
|
348
|
+
2*h[1, 1, 1, 1, 1] + h[2, 1, 1]
|
|
349
|
+
sage: f(A.one())
|
|
350
|
+
h[]
|
|
351
|
+
|
|
352
|
+
The algebra ``h`` of symmetric functions in the `h`-basis
|
|
353
|
+
is already graded, so its associated graded algebra is
|
|
354
|
+
implemented as itself::
|
|
355
|
+
|
|
356
|
+
sage: # needs sage.combinat sage.modules
|
|
357
|
+
sage: grh = h.graded_algebra(); grh is h
|
|
358
|
+
True
|
|
359
|
+
sage: grf = A.induced_graded_map(h, f); grf
|
|
360
|
+
Generic morphism:
|
|
361
|
+
From: Graded Algebra of An example of a filtered
|
|
362
|
+
algebra with basis: the universal enveloping
|
|
363
|
+
algebra of Lie algebra of RR^3 with cross
|
|
364
|
+
product over Rational Field
|
|
365
|
+
To: Symmetric Functions over Rational Field
|
|
366
|
+
in the homogeneous basis
|
|
367
|
+
sage: grf(xx)
|
|
368
|
+
2*h[1]
|
|
369
|
+
sage: grf(yy)
|
|
370
|
+
0
|
|
371
|
+
sage: grf(zz)
|
|
372
|
+
0
|
|
373
|
+
sage: grf(yy**2)
|
|
374
|
+
h[2]
|
|
375
|
+
sage: grf(xx**2)
|
|
376
|
+
3*h[1, 1]
|
|
377
|
+
sage: grf(xx*yy*zz)
|
|
378
|
+
h[1, 1, 1]
|
|
379
|
+
sage: grf(xx*xx*yy*yy*zz)
|
|
380
|
+
2*h[1, 1, 1, 1, 1]
|
|
381
|
+
sage: grf(grA.one())
|
|
382
|
+
h[]
|
|
383
|
+
|
|
384
|
+
**Example 3.**
|
|
385
|
+
|
|
386
|
+
After having had a graded algebra as the codomain, let us try to
|
|
387
|
+
have one as the domain instead. Our new ``f`` will go from ``h``
|
|
388
|
+
to ``A``::
|
|
389
|
+
|
|
390
|
+
sage: # needs sage.combinat sage.modules
|
|
391
|
+
sage: def map_on_basis(lam): # redefining map_on_basis
|
|
392
|
+
....: return x ** (sum(lam)) + y ** (len(lam))
|
|
393
|
+
sage: f = h.module_morphism(on_basis=map_on_basis,
|
|
394
|
+
....: codomain=A) # redefining f
|
|
395
|
+
sage: f(h[1])
|
|
396
|
+
U['x'] + U['y']
|
|
397
|
+
sage: f(h[2])
|
|
398
|
+
U['x']^2 + U['y']
|
|
399
|
+
sage: f(h[1, 1])
|
|
400
|
+
U['x']^2 + U['y']^2
|
|
401
|
+
sage: f(h[2, 2])
|
|
402
|
+
U['x']^4 + U['y']^2
|
|
403
|
+
sage: f(h[3, 2, 1])
|
|
404
|
+
U['x']^6 + U['y']^3
|
|
405
|
+
sage: f(h.one())
|
|
406
|
+
2
|
|
407
|
+
sage: grf = h.induced_graded_map(A, f); grf
|
|
408
|
+
Generic morphism:
|
|
409
|
+
From: Symmetric Functions over Rational Field
|
|
410
|
+
in the homogeneous basis
|
|
411
|
+
To: Graded Algebra of An example of a filtered
|
|
412
|
+
algebra with basis: the universal enveloping
|
|
413
|
+
algebra of Lie algebra of RR^3 with cross
|
|
414
|
+
product over Rational Field
|
|
415
|
+
sage: grf(h[1])
|
|
416
|
+
bar(U['x']) + bar(U['y'])
|
|
417
|
+
sage: grf(h[2])
|
|
418
|
+
bar(U['x']^2)
|
|
419
|
+
sage: grf(h[1, 1])
|
|
420
|
+
bar(U['x']^2) + bar(U['y']^2)
|
|
421
|
+
sage: grf(h[2, 2])
|
|
422
|
+
bar(U['x']^4)
|
|
423
|
+
sage: grf(h[3, 2, 1])
|
|
424
|
+
bar(U['x']^6)
|
|
425
|
+
sage: grf(h.one())
|
|
426
|
+
2*bar(1)
|
|
427
|
+
|
|
428
|
+
**Example 4.**
|
|
429
|
+
|
|
430
|
+
The construct `\operatorname{gr} f` also makes sense when `f`
|
|
431
|
+
is a filtration-preserving map between graded algebras. ::
|
|
432
|
+
|
|
433
|
+
sage: # needs sage.combinat sage.modules
|
|
434
|
+
sage: def map_on_basis(lam): # redefining map_on_basis
|
|
435
|
+
....: return h[lam] + h[len(lam)]
|
|
436
|
+
sage: f = h.module_morphism(on_basis=map_on_basis,
|
|
437
|
+
....: codomain=h) # redefining f
|
|
438
|
+
sage: f(h[1])
|
|
439
|
+
2*h[1]
|
|
440
|
+
sage: f(h[2])
|
|
441
|
+
h[1] + h[2]
|
|
442
|
+
sage: f(h[1, 1])
|
|
443
|
+
h[1, 1] + h[2]
|
|
444
|
+
sage: f(h[2, 1])
|
|
445
|
+
h[2] + h[2, 1]
|
|
446
|
+
sage: f(h.one())
|
|
447
|
+
2*h[]
|
|
448
|
+
sage: grf = h.induced_graded_map(h, f); grf
|
|
449
|
+
Generic endomorphism of Symmetric Functions over Rational
|
|
450
|
+
Field in the homogeneous basis
|
|
451
|
+
sage: grf(h[1])
|
|
452
|
+
2*h[1]
|
|
453
|
+
sage: grf(h[2])
|
|
454
|
+
h[2]
|
|
455
|
+
sage: grf(h[1, 1])
|
|
456
|
+
h[1, 1] + h[2]
|
|
457
|
+
sage: grf(h[2, 1])
|
|
458
|
+
h[2, 1]
|
|
459
|
+
sage: grf(h.one())
|
|
460
|
+
2*h[]
|
|
461
|
+
|
|
462
|
+
**Example 5.**
|
|
463
|
+
|
|
464
|
+
For another example, let us compute `\operatorname{gr} f` for a
|
|
465
|
+
map `f` between two Clifford algebras::
|
|
466
|
+
|
|
467
|
+
sage: # needs sage.modules
|
|
468
|
+
sage: Q = QuadraticForm(ZZ, 2, [1,2,3])
|
|
469
|
+
sage: B = CliffordAlgebra(Q, names=['u','v']); B
|
|
470
|
+
The Clifford algebra of the Quadratic form in 2
|
|
471
|
+
variables over Integer Ring with coefficients:
|
|
472
|
+
[ 1 2 ]
|
|
473
|
+
[ * 3 ]
|
|
474
|
+
sage: m = Matrix(ZZ, [[1, 2], [1, -1]])
|
|
475
|
+
sage: f = B.lift_module_morphism(m, names=['x','y'])
|
|
476
|
+
sage: A = f.domain(); A
|
|
477
|
+
The Clifford algebra of the Quadratic form in 2
|
|
478
|
+
variables over Integer Ring with coefficients:
|
|
479
|
+
[ 6 0 ]
|
|
480
|
+
[ * 3 ]
|
|
481
|
+
sage: x, y = A.gens()
|
|
482
|
+
sage: f(x)
|
|
483
|
+
u + v
|
|
484
|
+
sage: f(y)
|
|
485
|
+
2*u - v
|
|
486
|
+
sage: f(x**2)
|
|
487
|
+
6
|
|
488
|
+
sage: f(x*y)
|
|
489
|
+
-3*u*v + 3
|
|
490
|
+
sage: grA = A.graded_algebra(); grA
|
|
491
|
+
The exterior algebra of rank 2 over Integer Ring
|
|
492
|
+
sage: A.to_graded_conversion()(x)
|
|
493
|
+
x
|
|
494
|
+
sage: A.to_graded_conversion()(y)
|
|
495
|
+
y
|
|
496
|
+
sage: A.to_graded_conversion()(x*y)
|
|
497
|
+
x*y
|
|
498
|
+
sage: u = A.to_graded_conversion()(x*y+1); u
|
|
499
|
+
x*y + 1
|
|
500
|
+
sage: A.from_graded_conversion()(u)
|
|
501
|
+
x*y + 1
|
|
502
|
+
sage: A.projection(2)(x*y+1)
|
|
503
|
+
x*y
|
|
504
|
+
sage: A.projection(1)(x+2*y-2)
|
|
505
|
+
x + 2*y
|
|
506
|
+
sage: grf = A.induced_graded_map(B, f); grf
|
|
507
|
+
Generic morphism:
|
|
508
|
+
From: The exterior algebra of rank 2 over Integer Ring
|
|
509
|
+
To: The exterior algebra of rank 2 over Integer Ring
|
|
510
|
+
sage: grf(A.to_graded_conversion()(x))
|
|
511
|
+
u + v
|
|
512
|
+
sage: grf(A.to_graded_conversion()(y))
|
|
513
|
+
2*u - v
|
|
514
|
+
sage: grf(A.to_graded_conversion()(x**2))
|
|
515
|
+
6
|
|
516
|
+
sage: grf(A.to_graded_conversion()(x*y))
|
|
517
|
+
-3*u*v
|
|
518
|
+
sage: grf(grA.one())
|
|
519
|
+
1
|
|
520
|
+
"""
|
|
521
|
+
grA = self.graded_algebra()
|
|
522
|
+
grB = other.graded_algebra()
|
|
523
|
+
from sage.categories.graded_modules_with_basis import GradedModulesWithBasis
|
|
524
|
+
cat = GradedModulesWithBasis(self.base_ring())
|
|
525
|
+
from_gr = self.from_graded_conversion()
|
|
526
|
+
|
|
527
|
+
def on_basis(m):
|
|
528
|
+
i = grA.degree_on_basis(m)
|
|
529
|
+
lifted_img_of_m = f(from_gr(grA.monomial(m)))
|
|
530
|
+
return other.projection(i)(lifted_img_of_m)
|
|
531
|
+
return grA.module_morphism(on_basis=on_basis,
|
|
532
|
+
codomain=grB, category=cat)
|
|
533
|
+
# If we could assume that the projection of the basis
|
|
534
|
+
# element of ``self`` indexed by an index ``m`` is the
|
|
535
|
+
# basis element of ``grA`` indexed by ``m``, then this
|
|
536
|
+
# could go faster:
|
|
537
|
+
#
|
|
538
|
+
# def on_basis(m):
|
|
539
|
+
# i = grA.degree_on_basis(m)
|
|
540
|
+
# return grB.projection(i)(f(self.monomial(m)))
|
|
541
|
+
# return grA.module_morphism(on_basis=on_basis,
|
|
542
|
+
# codomain=grB, category=cat)
|
|
543
|
+
#
|
|
544
|
+
# But this assumption might come back to bite us in the
|
|
545
|
+
# ass one day. What do you think?
|
|
546
|
+
|
|
547
|
+
class ElementMethods:
|
|
548
|
+
pass
|