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,149 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Super Algebras
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.categories.super_modules import SuperModulesCategory
|
|
13
|
+
from sage.categories.signed_tensor import SignedTensorProductsCategory, tensor_signed
|
|
14
|
+
from sage.categories.tensor import tensor
|
|
15
|
+
from sage.misc.lazy_import import LazyImport
|
|
16
|
+
from sage.misc.cachefunc import cached_method
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class SuperAlgebras(SuperModulesCategory):
|
|
20
|
+
r"""
|
|
21
|
+
The category of super algebras.
|
|
22
|
+
|
|
23
|
+
An `R`-*super algebra* is an `R`-super module `A` endowed with an
|
|
24
|
+
`R`-algebra structure satisfying
|
|
25
|
+
|
|
26
|
+
.. MATH::
|
|
27
|
+
|
|
28
|
+
A_0 A_0 \subseteq A_0, \qquad
|
|
29
|
+
A_0 A_1 \subseteq A_1, \qquad
|
|
30
|
+
A_1 A_0 \subseteq A_1, \qquad
|
|
31
|
+
A_1 A_1 \subseteq A_0
|
|
32
|
+
|
|
33
|
+
and `1 \in A_0`.
|
|
34
|
+
|
|
35
|
+
EXAMPLES::
|
|
36
|
+
|
|
37
|
+
sage: Algebras(ZZ).Super()
|
|
38
|
+
Category of super algebras over Integer Ring
|
|
39
|
+
|
|
40
|
+
TESTS::
|
|
41
|
+
|
|
42
|
+
sage: TestSuite(Algebras(ZZ).Super()).run()
|
|
43
|
+
"""
|
|
44
|
+
def extra_super_categories(self):
|
|
45
|
+
"""
|
|
46
|
+
EXAMPLES::
|
|
47
|
+
|
|
48
|
+
sage: Algebras(ZZ).Super().super_categories() # indirect doctest
|
|
49
|
+
[Category of graded algebras over Integer Ring,
|
|
50
|
+
Category of super modules over Integer Ring]
|
|
51
|
+
"""
|
|
52
|
+
return [self.base_category().Graded()]
|
|
53
|
+
|
|
54
|
+
Supercommutative = LazyImport('sage.categories.supercommutative_algebras',
|
|
55
|
+
'SupercommutativeAlgebras')
|
|
56
|
+
|
|
57
|
+
class ParentMethods:
|
|
58
|
+
def graded_algebra(self):
|
|
59
|
+
r"""
|
|
60
|
+
Return the associated graded algebra to ``self``.
|
|
61
|
+
|
|
62
|
+
.. WARNING::
|
|
63
|
+
|
|
64
|
+
Because a super module `M` is naturally `\ZZ / 2 \ZZ`-graded, and
|
|
65
|
+
graded modules have a natural filtration induced by the grading, if
|
|
66
|
+
`M` has a different filtration, then the associated graded module
|
|
67
|
+
`\operatorname{gr} M \neq M`. This is most apparent with super
|
|
68
|
+
algebras, such as the :class:`differential Weyl algebra
|
|
69
|
+
<sage.algebras.weyl_algebra.DifferentialWeylAlgebra>`, and the
|
|
70
|
+
multiplication may not coincide.
|
|
71
|
+
"""
|
|
72
|
+
raise NotImplementedError
|
|
73
|
+
|
|
74
|
+
def tensor(*parents, **kwargs):
|
|
75
|
+
"""
|
|
76
|
+
Return the tensor product of the parents.
|
|
77
|
+
|
|
78
|
+
EXAMPLES::
|
|
79
|
+
|
|
80
|
+
sage: # needs sage.combinat sage.modules
|
|
81
|
+
sage: A.<x,y,z> = ExteriorAlgebra(ZZ); A.rename('A')
|
|
82
|
+
sage: T = A.tensor(A,A); T
|
|
83
|
+
A # A # A
|
|
84
|
+
sage: T in Algebras(ZZ).Graded().SignedTensorProducts()
|
|
85
|
+
True
|
|
86
|
+
sage: T in Algebras(ZZ).Graded().TensorProducts()
|
|
87
|
+
False
|
|
88
|
+
sage: A.rename(None)
|
|
89
|
+
|
|
90
|
+
This also works when the other elements do not have
|
|
91
|
+
a signed tensor product (:issue:`31266`)::
|
|
92
|
+
|
|
93
|
+
sage: # needs sage.combinat sage.modules
|
|
94
|
+
sage: a = SteenrodAlgebra(3).an_element()
|
|
95
|
+
sage: M = CombinatorialFreeModule(GF(3), ['s', 't', 'u'])
|
|
96
|
+
sage: s = M.basis()['s']
|
|
97
|
+
sage: tensor([a, s]) # needs sage.rings.finite_rings
|
|
98
|
+
2*Q_1 Q_3 P(2,1) # B['s']
|
|
99
|
+
"""
|
|
100
|
+
constructor = kwargs.pop('constructor', tensor_signed)
|
|
101
|
+
try:
|
|
102
|
+
cat = constructor.category_from_parents(parents)
|
|
103
|
+
except AttributeError:
|
|
104
|
+
# Fall back to the usual tensor product if the other parents
|
|
105
|
+
# do not support signed tensor products
|
|
106
|
+
cat = tensor.category_from_parents(parents)
|
|
107
|
+
return parents[0].__class__.Tensor(parents, category=cat)
|
|
108
|
+
|
|
109
|
+
class SubcategoryMethods:
|
|
110
|
+
@cached_method
|
|
111
|
+
def Supercommutative(self):
|
|
112
|
+
r"""
|
|
113
|
+
Return the full subcategory of the supercommutative objects
|
|
114
|
+
of ``self``.
|
|
115
|
+
|
|
116
|
+
A super algebra `M` is *supercommutative* if, for all
|
|
117
|
+
homogeneous `x,y\in M`,
|
|
118
|
+
|
|
119
|
+
.. MATH::
|
|
120
|
+
|
|
121
|
+
x \cdot y = (-1)^{|x||y|} y \cdot x.
|
|
122
|
+
|
|
123
|
+
REFERENCES:
|
|
124
|
+
|
|
125
|
+
:wikipedia:`Supercommutative_algebra`
|
|
126
|
+
|
|
127
|
+
EXAMPLES::
|
|
128
|
+
|
|
129
|
+
sage: Algebras(ZZ).Super().Supercommutative()
|
|
130
|
+
Category of supercommutative algebras over Integer Ring
|
|
131
|
+
sage: Algebras(ZZ).Super().WithBasis().Supercommutative()
|
|
132
|
+
Category of supercommutative algebras with basis over Integer Ring
|
|
133
|
+
"""
|
|
134
|
+
return self._with_axiom('Supercommutative')
|
|
135
|
+
|
|
136
|
+
class SignedTensorProducts(SignedTensorProductsCategory):
|
|
137
|
+
@cached_method
|
|
138
|
+
def extra_super_categories(self):
|
|
139
|
+
"""
|
|
140
|
+
EXAMPLES::
|
|
141
|
+
|
|
142
|
+
sage: Coalgebras(QQ).Graded().SignedTensorProducts().extra_super_categories()
|
|
143
|
+
[Category of graded coalgebras over Rational Field]
|
|
144
|
+
sage: Coalgebras(QQ).Graded().SignedTensorProducts().super_categories()
|
|
145
|
+
[Category of graded coalgebras over Rational Field]
|
|
146
|
+
|
|
147
|
+
Meaning: a signed tensor product of coalgebras is a coalgebra
|
|
148
|
+
"""
|
|
149
|
+
return [self.base_category()]
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Super algebras with basis
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2015,2019 Travis Scrimshaw <tcscrims at gmail.com>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
|
|
12
|
+
from sage.categories.super_modules import SuperModulesCategory
|
|
13
|
+
from sage.categories.signed_tensor import SignedTensorProductsCategory
|
|
14
|
+
from sage.misc.cachefunc import cached_method
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SuperAlgebrasWithBasis(SuperModulesCategory):
|
|
18
|
+
"""
|
|
19
|
+
The category of super algebras with a distinguished basis.
|
|
20
|
+
|
|
21
|
+
EXAMPLES::
|
|
22
|
+
|
|
23
|
+
sage: C = Algebras(ZZ).WithBasis().Super(); C
|
|
24
|
+
Category of super algebras with basis over Integer Ring
|
|
25
|
+
|
|
26
|
+
TESTS::
|
|
27
|
+
|
|
28
|
+
sage: TestSuite(C).run()
|
|
29
|
+
"""
|
|
30
|
+
def extra_super_categories(self):
|
|
31
|
+
"""
|
|
32
|
+
EXAMPLES::
|
|
33
|
+
|
|
34
|
+
sage: C = Algebras(ZZ).WithBasis().Super()
|
|
35
|
+
sage: sorted(C.super_categories(), key=str) # indirect doctest
|
|
36
|
+
[Category of graded algebras with basis over Integer Ring,
|
|
37
|
+
Category of super algebras over Integer Ring,
|
|
38
|
+
Category of super modules with basis over Integer Ring]
|
|
39
|
+
"""
|
|
40
|
+
return [self.base_category().Graded()]
|
|
41
|
+
|
|
42
|
+
class ParentMethods:
|
|
43
|
+
def graded_algebra(self):
|
|
44
|
+
r"""
|
|
45
|
+
Return the associated graded module to ``self``.
|
|
46
|
+
|
|
47
|
+
See :class:`~sage.algebras.associated_graded.AssociatedGradedAlgebra`
|
|
48
|
+
for the definition and the properties of this.
|
|
49
|
+
|
|
50
|
+
.. SEEALSO::
|
|
51
|
+
|
|
52
|
+
:meth:`~sage.categories.filtered_modules_with_basis.ParentMethods.graded_algebra`
|
|
53
|
+
|
|
54
|
+
EXAMPLES::
|
|
55
|
+
|
|
56
|
+
sage: W.<x,y> = algebras.DifferentialWeyl(QQ) # needs sage.modules
|
|
57
|
+
sage: W.graded_algebra() # needs sage.combinat sage.modules
|
|
58
|
+
Graded Algebra of Differential Weyl algebra of
|
|
59
|
+
polynomials in x, y over Rational Field
|
|
60
|
+
"""
|
|
61
|
+
from sage.algebras.associated_graded import AssociatedGradedAlgebra
|
|
62
|
+
return AssociatedGradedAlgebra(self)
|
|
63
|
+
|
|
64
|
+
class ElementMethods:
|
|
65
|
+
def supercommutator(self, x):
|
|
66
|
+
r"""
|
|
67
|
+
Return the supercommutator of ``self`` and ``x``.
|
|
68
|
+
|
|
69
|
+
Let `A` be a superalgebra. The *supercommutator* of homogeneous
|
|
70
|
+
elements `x, y \in A` is defined by
|
|
71
|
+
|
|
72
|
+
.. MATH::
|
|
73
|
+
|
|
74
|
+
[x, y\} = x y - (-1)^{|x| |y|} y x
|
|
75
|
+
|
|
76
|
+
and extended to all elements by linearity.
|
|
77
|
+
|
|
78
|
+
EXAMPLES::
|
|
79
|
+
|
|
80
|
+
sage: # needs sage.modules
|
|
81
|
+
sage: Q = QuadraticForm(ZZ, 3, [1,2,3,4,5,6])
|
|
82
|
+
sage: Cl.<x,y,z> = CliffordAlgebra(Q)
|
|
83
|
+
sage: a = x*y - z
|
|
84
|
+
sage: b = x - y + y*z
|
|
85
|
+
sage: a.supercommutator(b)
|
|
86
|
+
-5*x*y + 8*x*z - 2*y*z - 6*x + 12*y - 5*z
|
|
87
|
+
sage: a.supercommutator(Cl.one())
|
|
88
|
+
0
|
|
89
|
+
sage: Cl.one().supercommutator(a)
|
|
90
|
+
0
|
|
91
|
+
sage: Cl.zero().supercommutator(a)
|
|
92
|
+
0
|
|
93
|
+
sage: a.supercommutator(Cl.zero())
|
|
94
|
+
0
|
|
95
|
+
|
|
96
|
+
sage: # needs sage.modules
|
|
97
|
+
sage: Q = QuadraticForm(ZZ, 2, [-1,1,-3])
|
|
98
|
+
sage: Cl.<x,y> = CliffordAlgebra(Q)
|
|
99
|
+
sage: [a.supercommutator(b) for a in Cl.basis() for b in Cl.basis()]
|
|
100
|
+
[0, 0, 0, 0, 0, -2, 1, -x - 2*y, 0, 1,
|
|
101
|
+
-6, 6*x + y, 0, x + 2*y, -6*x - y, 0]
|
|
102
|
+
sage: [a*b-b*a for a in Cl.basis() for b in Cl.basis()]
|
|
103
|
+
[0, 0, 0, 0, 0, 0, 2*x*y - 1, -x - 2*y, 0,
|
|
104
|
+
-2*x*y + 1, 0, 6*x + y, 0, x + 2*y, -6*x - y, 0]
|
|
105
|
+
|
|
106
|
+
Exterior algebras inherit from Clifford algebras, so
|
|
107
|
+
supercommutators work as well. We verify the exterior algebra
|
|
108
|
+
is supercommutative::
|
|
109
|
+
|
|
110
|
+
sage: E.<x,y,z,w> = ExteriorAlgebra(QQ) # needs sage.modules
|
|
111
|
+
sage: all(b1.supercommutator(b2) == 0 # needs sage.modules
|
|
112
|
+
....: for b1 in E.basis() for b2 in E.basis())
|
|
113
|
+
True
|
|
114
|
+
"""
|
|
115
|
+
P = self.parent()
|
|
116
|
+
ret = P.zero()
|
|
117
|
+
for ms, cs in self:
|
|
118
|
+
term_s = P.term(ms, cs)
|
|
119
|
+
sign_s = (-1)**P.degree_on_basis(ms)
|
|
120
|
+
for mx, cx in x:
|
|
121
|
+
ret += term_s * P.term(mx, cx)
|
|
122
|
+
s = sign_s**P.degree_on_basis(mx)
|
|
123
|
+
ret -= s * P.term(mx, cx) * term_s
|
|
124
|
+
return ret
|
|
125
|
+
|
|
126
|
+
class SignedTensorProducts(SignedTensorProductsCategory):
|
|
127
|
+
"""
|
|
128
|
+
The category of super algebras with basis constructed by tensor
|
|
129
|
+
product of super algebras with basis.
|
|
130
|
+
"""
|
|
131
|
+
@cached_method
|
|
132
|
+
def extra_super_categories(self):
|
|
133
|
+
"""
|
|
134
|
+
EXAMPLES::
|
|
135
|
+
|
|
136
|
+
sage: Algebras(QQ).Super().SignedTensorProducts().extra_super_categories()
|
|
137
|
+
[Category of super algebras over Rational Field]
|
|
138
|
+
sage: Algebras(QQ).Super().SignedTensorProducts().super_categories()
|
|
139
|
+
[Category of signed tensor products of graded algebras over Rational Field,
|
|
140
|
+
Category of super algebras over Rational Field]
|
|
141
|
+
|
|
142
|
+
Meaning: a signed tensor product of super algebras is a super algebra
|
|
143
|
+
"""
|
|
144
|
+
return [self.base_category()]
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Super Hopf algebras with basis
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2015 Travis Scrimshaw <tscrim at ucdavis.edu>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
12
|
+
from sage.categories.super_modules import SuperModulesCategory
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SuperHopfAlgebrasWithBasis(SuperModulesCategory):
|
|
16
|
+
"""
|
|
17
|
+
The category of super Hopf algebras with a distinguished basis.
|
|
18
|
+
|
|
19
|
+
EXAMPLES::
|
|
20
|
+
|
|
21
|
+
sage: C = HopfAlgebras(ZZ).WithBasis().Super(); C
|
|
22
|
+
Category of super Hopf algebras with basis over Integer Ring
|
|
23
|
+
sage: sorted(C.super_categories(), key=str)
|
|
24
|
+
[Category of super Hopf algebras over Integer Ring,
|
|
25
|
+
Category of super algebras with basis over Integer Ring,
|
|
26
|
+
Category of super coalgebras with basis over Integer Ring]
|
|
27
|
+
|
|
28
|
+
TESTS::
|
|
29
|
+
|
|
30
|
+
sage: C = HopfAlgebras(ZZ).WithBasis().Super()
|
|
31
|
+
sage: TestSuite(C).run()
|
|
32
|
+
"""
|
|
33
|
+
class ParentMethods:
|
|
34
|
+
@lazy_attribute
|
|
35
|
+
def antipode(self):
|
|
36
|
+
"""
|
|
37
|
+
The antipode of this Hopf algebra.
|
|
38
|
+
|
|
39
|
+
If :meth:`.antipode_basis` is available, this constructs the
|
|
40
|
+
antipode morphism from ``self`` to ``self`` by extending it by
|
|
41
|
+
linearity. Otherwise, :meth:`self.antipode_by_coercion` is used,
|
|
42
|
+
if available.
|
|
43
|
+
|
|
44
|
+
EXAMPLES::
|
|
45
|
+
|
|
46
|
+
sage: A = SteenrodAlgebra(7) # needs sage.combinat sage.modules
|
|
47
|
+
sage: a = A.an_element() # needs sage.combinat sage.modules
|
|
48
|
+
sage: a, A.antipode(a) # needs sage.combinat sage.modules
|
|
49
|
+
(6 Q_1 Q_3 P(2,1), Q_1 Q_3 P(2,1))
|
|
50
|
+
|
|
51
|
+
TESTS::
|
|
52
|
+
|
|
53
|
+
sage: E.<x,y> = ExteriorAlgebra(QQ) # needs sage.modules
|
|
54
|
+
sage: [b.antipode() for b in E.basis()] # needs sage.modules
|
|
55
|
+
[1, -x, -y, x*y]
|
|
56
|
+
"""
|
|
57
|
+
if self.antipode_on_basis is not NotImplemented:
|
|
58
|
+
# Should give the information that this is an anti-morphism of algebra
|
|
59
|
+
return self._module_morphism(self.antipode_on_basis,
|
|
60
|
+
codomain=self)
|
|
61
|
+
elif hasattr(self, "antipode_by_coercion"):
|
|
62
|
+
return self.antipode_by_coercion
|
|
63
|
+
|
|
64
|
+
def _test_antipode(self, **options):
|
|
65
|
+
r"""
|
|
66
|
+
Test the antipode.
|
|
67
|
+
|
|
68
|
+
An *antipode* `S` of a (super) Hopf algebra is a linear
|
|
69
|
+
endomorphism of the Hopf algebra that satisfies the
|
|
70
|
+
following conditions (see :wikipedia:`HopfAlgebra`).
|
|
71
|
+
|
|
72
|
+
- If `\mu` and `\Delta` denote the product and coproduct of the
|
|
73
|
+
Hopf algebra, respectively, then `S` satisfies
|
|
74
|
+
|
|
75
|
+
.. MATH::
|
|
76
|
+
|
|
77
|
+
\mu \circ (S \tensor 1) \circ \Delta = unit \circ counit
|
|
78
|
+
\mu \circ (1 \tensor S) \circ \Delta = unit \circ counit
|
|
79
|
+
|
|
80
|
+
- `S` is an *anti*-homomorphism:
|
|
81
|
+
|
|
82
|
+
.. MATH::
|
|
83
|
+
|
|
84
|
+
S(ab) = (-1)^{\deg a \deg b} S(b) S(a)
|
|
85
|
+
|
|
86
|
+
for homogeneous `a` and `b`.
|
|
87
|
+
|
|
88
|
+
These properties are tested on :meth:`some_elements`.
|
|
89
|
+
|
|
90
|
+
TESTS::
|
|
91
|
+
|
|
92
|
+
sage: A = SteenrodAlgebra(7) # needs sage.combinat sage.modules
|
|
93
|
+
sage: A._test_antipode() # long time # needs sage.combinat sage.modules
|
|
94
|
+
"""
|
|
95
|
+
tester = self._tester(**options)
|
|
96
|
+
|
|
97
|
+
S = self.antipode
|
|
98
|
+
|
|
99
|
+
IS = lambda x: self.sum(c * self.monomial(t1) * S(self.monomial(t2))
|
|
100
|
+
for ((t1, t2), c) in x.coproduct())
|
|
101
|
+
|
|
102
|
+
SI = lambda x: self.sum(c * S(self.monomial(t1)) * self.monomial(t2)
|
|
103
|
+
for ((t1, t2), c) in x.coproduct())
|
|
104
|
+
|
|
105
|
+
for x in tester.some_elements():
|
|
106
|
+
x_even = x.even_component()
|
|
107
|
+
x_odd = x.odd_component()
|
|
108
|
+
for y in tester.some_elements():
|
|
109
|
+
y_even = y.even_component()
|
|
110
|
+
y_odd = y.odd_component()
|
|
111
|
+
|
|
112
|
+
# The antipode is a graded anti-homomorphism.
|
|
113
|
+
tester.assertEqual(S(x_even) * S(y_even),
|
|
114
|
+
S(y_even * x_even))
|
|
115
|
+
tester.assertEqual(S(x_even) * S(y_odd),
|
|
116
|
+
S(y_odd * x_even))
|
|
117
|
+
tester.assertEqual(S(x_odd) * S(y_even),
|
|
118
|
+
S(y_even * x_odd))
|
|
119
|
+
tester.assertEqual(S(x_odd) * S(y_odd),
|
|
120
|
+
-S(y_odd * x_odd))
|
|
121
|
+
|
|
122
|
+
# mu * (S # I) * delta == counit * unit
|
|
123
|
+
tester.assertEqual(SI(x), self.counit(x) * self.one())
|
|
124
|
+
|
|
125
|
+
# mu * (I # S) * delta == counit * unit
|
|
126
|
+
tester.assertEqual(IS(x), self.counit(x) * self.one())
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
"""
|
|
3
|
+
Super 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.categories.super_modules import SuperModulesCategory
|
|
22
|
+
from sage.misc.abstract_method import abstract_method
|
|
23
|
+
from sage.categories.lambda_bracket_algebras import LambdaBracketAlgebras
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class SuperLieConformalAlgebras(SuperModulesCategory):
|
|
27
|
+
r"""
|
|
28
|
+
The category of super Lie conformal algebras.
|
|
29
|
+
|
|
30
|
+
EXAMPLES::
|
|
31
|
+
|
|
32
|
+
sage: LieConformalAlgebras(AA).Super() # needs sage.rings.number_field
|
|
33
|
+
Category of super Lie conformal algebras over Algebraic Real Field
|
|
34
|
+
|
|
35
|
+
Notice that we can force to have a *purely even* super Lie
|
|
36
|
+
conformal algebra::
|
|
37
|
+
|
|
38
|
+
sage: bosondict = {('a','a'): {1:{('K',0):1}}}
|
|
39
|
+
sage: R = LieConformalAlgebra(QQ, bosondict, names=('a',), # needs sage.combinat sage.modules
|
|
40
|
+
....: central_elements=('K',), super=True)
|
|
41
|
+
sage: [g.is_even_odd() for g in R.gens()] # needs sage.combinat sage.modules
|
|
42
|
+
[0, 0]
|
|
43
|
+
"""
|
|
44
|
+
def extra_super_categories(self):
|
|
45
|
+
"""
|
|
46
|
+
The extra super categories of ``self``.
|
|
47
|
+
|
|
48
|
+
EXAMPLES::
|
|
49
|
+
|
|
50
|
+
sage: LieConformalAlgebras(QQ).Super().super_categories()
|
|
51
|
+
[Category of super modules over Rational Field,
|
|
52
|
+
Category of Lambda bracket algebras over Rational Field]
|
|
53
|
+
"""
|
|
54
|
+
return [LambdaBracketAlgebras(self.base_ring())]
|
|
55
|
+
|
|
56
|
+
def example(self):
|
|
57
|
+
"""
|
|
58
|
+
An example parent in this category.
|
|
59
|
+
|
|
60
|
+
EXAMPLES::
|
|
61
|
+
|
|
62
|
+
sage: LieConformalAlgebras(QQ).Super().example() # needs sage.combinat sage.modules
|
|
63
|
+
The Neveu-Schwarz super Lie conformal algebra over Rational Field
|
|
64
|
+
"""
|
|
65
|
+
from sage.algebras.lie_conformal_algebras.neveu_schwarz_lie_conformal_algebra\
|
|
66
|
+
import NeveuSchwarzLieConformalAlgebra
|
|
67
|
+
return NeveuSchwarzLieConformalAlgebra(self.base_ring())
|
|
68
|
+
|
|
69
|
+
class ParentMethods:
|
|
70
|
+
|
|
71
|
+
def _test_jacobi(self, **options):
|
|
72
|
+
"""
|
|
73
|
+
Test the Jacobi axiom of this super Lie conformal algebra.
|
|
74
|
+
|
|
75
|
+
INPUT:
|
|
76
|
+
|
|
77
|
+
- ``options`` -- any keyword arguments acceptde by :meth:`_tester`
|
|
78
|
+
|
|
79
|
+
EXAMPLES:
|
|
80
|
+
|
|
81
|
+
By default, this method tests only the elements returned by
|
|
82
|
+
``self.some_elements()``::
|
|
83
|
+
|
|
84
|
+
sage: V = lie_conformal_algebras.Affine(QQ, 'B2') # needs sage.combinat sage.modules
|
|
85
|
+
sage: V._test_jacobi() # long time (6 seconds) # needs sage.combinat sage.modules
|
|
86
|
+
|
|
87
|
+
It works for super Lie conformal algebras too::
|
|
88
|
+
|
|
89
|
+
sage: V = lie_conformal_algebras.NeveuSchwarz(QQ) # needs sage.combinat sage.modules
|
|
90
|
+
sage: V._test_jacobi() # needs sage.combinat sage.modules
|
|
91
|
+
|
|
92
|
+
We can use specific elements by passing the ``elements``
|
|
93
|
+
keyword argument::
|
|
94
|
+
|
|
95
|
+
sage: V = lie_conformal_algebras.Affine(QQ, 'A1', # needs sage.combinat sage.modules
|
|
96
|
+
....: names=('e', 'h', 'f'))
|
|
97
|
+
sage: V.inject_variables() # needs sage.combinat sage.modules
|
|
98
|
+
Defining e, h, f, K
|
|
99
|
+
sage: V._test_jacobi(elements=(e, 2*f + h, 3*h)) # needs sage.combinat sage.modules
|
|
100
|
+
|
|
101
|
+
TESTS::
|
|
102
|
+
|
|
103
|
+
sage: wrongdict = {('a', 'a'): {0: {('b', 0): 1}},
|
|
104
|
+
....: ('b', 'a'): {0: {('a', 0): 1}}}
|
|
105
|
+
sage: V = LieConformalAlgebra(QQ, wrongdict, # needs sage.combinat sage.modules
|
|
106
|
+
....: names=('a', 'b'), parity=(1, 0))
|
|
107
|
+
sage: V._test_jacobi() # needs sage.combinat sage.modules
|
|
108
|
+
Traceback (most recent call last):
|
|
109
|
+
...
|
|
110
|
+
AssertionError: {(0, 0): -3*a} != {} - {(0, 0): -3*a} + {}
|
|
111
|
+
"""
|
|
112
|
+
tester = self._tester(**options)
|
|
113
|
+
S = tester.some_elements()
|
|
114
|
+
# Try our best to avoid non-homogeneous elements
|
|
115
|
+
elements = []
|
|
116
|
+
for s in S:
|
|
117
|
+
try:
|
|
118
|
+
s.is_even_odd()
|
|
119
|
+
except ValueError:
|
|
120
|
+
try:
|
|
121
|
+
elements.extend([s.even_component(), s.odd_component()])
|
|
122
|
+
except (AttributeError, ValueError):
|
|
123
|
+
pass
|
|
124
|
+
continue
|
|
125
|
+
elements.append(s)
|
|
126
|
+
S = elements
|
|
127
|
+
from sage.misc.misc import some_tuples
|
|
128
|
+
from sage.arith.misc import binomial
|
|
129
|
+
pz = tester._instance.zero()
|
|
130
|
+
for x,y,z in some_tuples(S, 3, tester._max_runs):
|
|
131
|
+
if x.is_zero() or y.is_zero():
|
|
132
|
+
sgn = 1
|
|
133
|
+
elif x.is_even_odd() * y.is_even_odd():
|
|
134
|
+
sgn = -1
|
|
135
|
+
else:
|
|
136
|
+
sgn = 1
|
|
137
|
+
brxy = x.bracket(y)
|
|
138
|
+
brxz = x.bracket(z)
|
|
139
|
+
bryz = y.bracket(z)
|
|
140
|
+
br1 = {k: x.bracket(v) for k,v in bryz.items()}
|
|
141
|
+
br2 = {k: v.bracket(z) for k,v in brxy.items()}
|
|
142
|
+
br3 = {k: y.bracket(v) for k,v in brxz.items()}
|
|
143
|
+
jac1 = {(j,k): v for k in br1 for j,v in br1[k].items()}
|
|
144
|
+
jac3 = {(k,j): v for k in br3 for j,v in br3[k].items()}
|
|
145
|
+
jac2 = {}
|
|
146
|
+
for k,br in br2.items():
|
|
147
|
+
for j,v in br.items():
|
|
148
|
+
for r in range(j+1):
|
|
149
|
+
jac2[(k+r, j-r)] = (jac2.get((k+r, j-r), pz)
|
|
150
|
+
+ binomial(k+r, r)*v)
|
|
151
|
+
for k,v in jac2.items():
|
|
152
|
+
jac1[k] = jac1.get(k, pz) - v
|
|
153
|
+
for k,v in jac3.items():
|
|
154
|
+
jac1[k] = jac1.get(k, pz) - sgn*v
|
|
155
|
+
jacobiator = {k: v for k,v in jac1.items() if v}
|
|
156
|
+
tester.assertDictEqual(jacobiator, {})
|
|
157
|
+
|
|
158
|
+
class ElementMethods:
|
|
159
|
+
|
|
160
|
+
@abstract_method
|
|
161
|
+
def is_even_odd(self):
|
|
162
|
+
"""
|
|
163
|
+
Return ``0`` if this element is *even* and ``1`` if it is
|
|
164
|
+
*odd*.
|
|
165
|
+
|
|
166
|
+
EXAMPLES::
|
|
167
|
+
|
|
168
|
+
sage: R = lie_conformal_algebras.NeveuSchwarz(QQ) # needs sage.combinat sage.modules
|
|
169
|
+
sage: R.inject_variables() # needs sage.combinat sage.modules
|
|
170
|
+
Defining L, G, C
|
|
171
|
+
sage: G.is_even_odd() # needs sage.combinat sage.modules
|
|
172
|
+
1
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
class Graded(GradedModulesCategory):
|
|
176
|
+
"""
|
|
177
|
+
The category of H-graded super Lie conformal algebras.
|
|
178
|
+
|
|
179
|
+
EXAMPLES::
|
|
180
|
+
|
|
181
|
+
sage: LieConformalAlgebras(AA).Super().Graded() # needs sage.rings.number_field
|
|
182
|
+
Category of H-graded super Lie conformal algebras over Algebraic Real Field
|
|
183
|
+
"""
|
|
184
|
+
def _repr_object_names(self):
|
|
185
|
+
"""
|
|
186
|
+
The names of the objects of this category.
|
|
187
|
+
|
|
188
|
+
EXAMPLES::
|
|
189
|
+
|
|
190
|
+
sage: LieConformalAlgebras(QQbar).Graded() # needs sage.rings.number_field
|
|
191
|
+
Category of H-graded Lie conformal algebras over Algebraic Field
|
|
192
|
+
"""
|
|
193
|
+
return "H-graded {}".format(self.base_category()._repr_object_names())
|