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,426 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
r"""
|
|
3
|
+
Unital algebras
|
|
4
|
+
"""
|
|
5
|
+
# ****************************************************************************
|
|
6
|
+
# Copyright (C) 2011 Nicolas M. Thiery <nthiery at users.sf.net>
|
|
7
|
+
#
|
|
8
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
9
|
+
# https://www.gnu.org/licenses/
|
|
10
|
+
# *****************************************************************************
|
|
11
|
+
from sage.misc.abstract_method import abstract_method
|
|
12
|
+
from sage.misc.cachefunc import cached_method
|
|
13
|
+
from sage.misc.lazy_attribute import lazy_attribute
|
|
14
|
+
from sage.categories.category import Category
|
|
15
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
|
|
16
|
+
from sage.categories.commutative_additive_groups import CommutativeAdditiveGroups
|
|
17
|
+
from sage.categories.magmas import Magmas
|
|
18
|
+
from sage.categories.morphism import SetMorphism
|
|
19
|
+
from sage.categories.homset import Hom
|
|
20
|
+
from sage.categories.rings import Rings
|
|
21
|
+
from sage.categories.magmatic_algebras import MagmaticAlgebras
|
|
22
|
+
from sage.categories.cartesian_product import CartesianProductsCategory
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class UnitalAlgebras(CategoryWithAxiom_over_base_ring):
|
|
26
|
+
"""
|
|
27
|
+
The category of non-associative algebras over a given base ring.
|
|
28
|
+
|
|
29
|
+
A non-associative algebra over a ring `R` is a module over `R`
|
|
30
|
+
which is also a unital magma.
|
|
31
|
+
|
|
32
|
+
.. WARNING::
|
|
33
|
+
|
|
34
|
+
Until :issue:`15043` is implemented, :class:`Algebras` is the
|
|
35
|
+
category of associative unital algebras; thus, unlike the name
|
|
36
|
+
suggests, :class:`UnitalAlgebras` is not a subcategory of
|
|
37
|
+
:class:`Algebras` but of
|
|
38
|
+
:class:`~.magmatic_algebras.MagmaticAlgebras`.
|
|
39
|
+
|
|
40
|
+
EXAMPLES::
|
|
41
|
+
|
|
42
|
+
sage: from sage.categories.unital_algebras import UnitalAlgebras
|
|
43
|
+
sage: C = UnitalAlgebras(ZZ); C
|
|
44
|
+
Category of unital algebras over Integer Ring
|
|
45
|
+
|
|
46
|
+
TESTS::
|
|
47
|
+
|
|
48
|
+
sage: from sage.categories.magmatic_algebras import MagmaticAlgebras
|
|
49
|
+
sage: C is MagmaticAlgebras(ZZ).Unital()
|
|
50
|
+
True
|
|
51
|
+
sage: TestSuite(C).run()
|
|
52
|
+
"""
|
|
53
|
+
_base_category_class_and_axiom = (MagmaticAlgebras, "Unital")
|
|
54
|
+
|
|
55
|
+
class ParentMethods:
|
|
56
|
+
def from_base_ring(self, r):
|
|
57
|
+
"""
|
|
58
|
+
Return the canonical embedding of ``r`` into ``self``.
|
|
59
|
+
|
|
60
|
+
INPUT:
|
|
61
|
+
|
|
62
|
+
- ``r`` -- an element of ``self.base_ring()``
|
|
63
|
+
|
|
64
|
+
EXAMPLES::
|
|
65
|
+
|
|
66
|
+
sage: A = AlgebrasWithBasis(QQ).example(); A # needs sage.combinat sage.modules
|
|
67
|
+
An example of an algebra with basis:
|
|
68
|
+
the free algebra on the generators ('a', 'b', 'c') over Rational Field
|
|
69
|
+
sage: A.from_base_ring(1) # needs sage.combinat sage.modules
|
|
70
|
+
B[word: ]
|
|
71
|
+
"""
|
|
72
|
+
return self.one()._lmul_(r)
|
|
73
|
+
|
|
74
|
+
def __init_extra__(self):
|
|
75
|
+
"""
|
|
76
|
+
Declare the canonical coercion from ``self.base_ring()``
|
|
77
|
+
to ``self``, if there has been none before.
|
|
78
|
+
|
|
79
|
+
EXAMPLES::
|
|
80
|
+
|
|
81
|
+
sage: A = AlgebrasWithBasis(QQ).example(); A # needs sage.combinat sage.modules
|
|
82
|
+
An example of an algebra with basis:
|
|
83
|
+
the free algebra on the generators ('a', 'b', 'c') over Rational Field
|
|
84
|
+
sage: coercion_model = sage.structure.element.get_coercion_model()
|
|
85
|
+
sage: coercion_model.discover_coercion(QQ, A) # needs sage.combinat sage.modules
|
|
86
|
+
((map internal to coercion system -- copy before use)
|
|
87
|
+
Generic morphism:
|
|
88
|
+
From: Rational Field
|
|
89
|
+
To: An example of an algebra with basis:
|
|
90
|
+
the free algebra on the generators ('a', 'b', 'c') over Rational Field,
|
|
91
|
+
None)
|
|
92
|
+
sage: A(1) # indirect doctest # needs sage.combinat sage.modules
|
|
93
|
+
B[word: ]
|
|
94
|
+
|
|
95
|
+
TESTS:
|
|
96
|
+
|
|
97
|
+
Ensure that :issue:`28328` is fixed and that non-associative
|
|
98
|
+
algebras are supported::
|
|
99
|
+
|
|
100
|
+
sage: # needs sage.modules
|
|
101
|
+
sage: class Foo(CombinatorialFreeModule):
|
|
102
|
+
....: def one(self):
|
|
103
|
+
....: return self.monomial(0)
|
|
104
|
+
sage: from sage.categories.magmatic_algebras import MagmaticAlgebras
|
|
105
|
+
sage: C = MagmaticAlgebras(QQ).WithBasis().Unital()
|
|
106
|
+
sage: F = Foo(QQ, (1,), category=C)
|
|
107
|
+
sage: F(0)
|
|
108
|
+
0
|
|
109
|
+
sage: F(3)
|
|
110
|
+
3*B[0]
|
|
111
|
+
"""
|
|
112
|
+
base_ring = self.base_ring()
|
|
113
|
+
if base_ring is self:
|
|
114
|
+
# There are rings that are their own base rings. No need to register that.
|
|
115
|
+
return
|
|
116
|
+
if self._is_coercion_cached(base_ring):
|
|
117
|
+
# We will not use any generic stuff, since a (presumably) better conversion
|
|
118
|
+
# has already been registered.
|
|
119
|
+
return
|
|
120
|
+
if base_ring is None:
|
|
121
|
+
# It may happen that self.base_ring() is not initialised at this point.
|
|
122
|
+
return
|
|
123
|
+
|
|
124
|
+
mor = self._coerce_map_from_base_ring()
|
|
125
|
+
if mor is not None:
|
|
126
|
+
mor._make_weak_references()
|
|
127
|
+
try:
|
|
128
|
+
self.register_coercion(mor)
|
|
129
|
+
except AssertionError:
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
def _coerce_map_from_(self, other):
|
|
133
|
+
"""
|
|
134
|
+
Return a coercion map from ``other`` to ``self``, or ``None``.
|
|
135
|
+
|
|
136
|
+
TESTS:
|
|
137
|
+
|
|
138
|
+
Check that :issue:`19225` is solved::
|
|
139
|
+
|
|
140
|
+
sage: A = cartesian_product((QQ['z'],)); A
|
|
141
|
+
The Cartesian product of (Univariate Polynomial Ring in z over Rational Field,)
|
|
142
|
+
sage: A.coerce_map_from(ZZ)
|
|
143
|
+
Composite map:
|
|
144
|
+
From: Integer Ring
|
|
145
|
+
To: The Cartesian product of (Univariate Polynomial Ring in z over Rational Field,)
|
|
146
|
+
Defn: Natural morphism:
|
|
147
|
+
From: Integer Ring
|
|
148
|
+
To: Rational Field
|
|
149
|
+
then
|
|
150
|
+
Generic morphism:
|
|
151
|
+
From: Rational Field
|
|
152
|
+
To: The Cartesian product of (Univariate Polynomial Ring in z over Rational Field,)
|
|
153
|
+
sage: A(1)
|
|
154
|
+
(1,)
|
|
155
|
+
"""
|
|
156
|
+
if other is self.base_ring():
|
|
157
|
+
return self._coerce_map_from_base_ring()
|
|
158
|
+
else:
|
|
159
|
+
return self._coerce_map_via([self.base_ring()], other)
|
|
160
|
+
|
|
161
|
+
def _coerce_map_from_base_ring(self):
|
|
162
|
+
"""
|
|
163
|
+
Return a suitable coercion map from the base ring of ``self``.
|
|
164
|
+
|
|
165
|
+
TESTS::
|
|
166
|
+
|
|
167
|
+
sage: A = cartesian_product((QQ['z'],)); A
|
|
168
|
+
The Cartesian product of (Univariate Polynomial Ring in z over Rational Field,)
|
|
169
|
+
sage: A.base_ring()
|
|
170
|
+
Rational Field
|
|
171
|
+
sage: A._coerce_map_from_base_ring()
|
|
172
|
+
Generic morphism:
|
|
173
|
+
From: Rational Field
|
|
174
|
+
To: The Cartesian product of (Univariate Polynomial Ring in z over Rational Field,)
|
|
175
|
+
|
|
176
|
+
Check that :issue:`29312` is fixed::
|
|
177
|
+
|
|
178
|
+
sage: F.<x,y,z> = FreeAlgebra(QQ, implementation='letterplace') # needs sage.combinat sage.libs.singular sage.modules
|
|
179
|
+
sage: F._coerce_map_from_base_ring() # needs sage.combinat sage.libs.singular sage.modules
|
|
180
|
+
Generic morphism:
|
|
181
|
+
From: Rational Field
|
|
182
|
+
To: Free Associative Unital Algebra on 3 generators (x, y, z) over Rational Field
|
|
183
|
+
"""
|
|
184
|
+
base_ring = self.base_ring()
|
|
185
|
+
|
|
186
|
+
# Pick a homset for the morphism to live in...
|
|
187
|
+
if self in Rings():
|
|
188
|
+
# The algebra is associative, and thus a ring. The
|
|
189
|
+
# base ring is also a ring. Everything is OK.
|
|
190
|
+
H = Hom(base_ring, self, Rings())
|
|
191
|
+
else:
|
|
192
|
+
# If the algebra isn't associative, we would like to
|
|
193
|
+
# use the category of unital magmatic algebras (which
|
|
194
|
+
# are not necessarily associative) instead. But,
|
|
195
|
+
# unfortunately, certain important rings like QQ
|
|
196
|
+
# aren't in that category. As a result, we have to use
|
|
197
|
+
# something weaker.
|
|
198
|
+
cat = Magmas().Unital()
|
|
199
|
+
cat = Category.join([cat, CommutativeAdditiveGroups()])
|
|
200
|
+
cat = cat.Distributive()
|
|
201
|
+
H = Hom(base_ring, self, cat)
|
|
202
|
+
|
|
203
|
+
# We need to construct a coercion from the base ring to self.
|
|
204
|
+
#
|
|
205
|
+
# There is a generic method from_base_ring(), that just does
|
|
206
|
+
# multiplication with the multiplicative unit. However, the
|
|
207
|
+
# unit is constructed repeatedly, which is slow.
|
|
208
|
+
# So, if the unit is available *now*, then we can create a
|
|
209
|
+
# faster coercion map.
|
|
210
|
+
#
|
|
211
|
+
# This only applies for the generic from_base_ring() method.
|
|
212
|
+
# If there is a specialised from_base_ring(), then it should
|
|
213
|
+
# be used unconditionally.
|
|
214
|
+
generic_from_base_ring = self.category().parent_class.from_base_ring
|
|
215
|
+
from_base_ring = self.from_base_ring # bound method
|
|
216
|
+
if from_base_ring.__func__ != generic_from_base_ring:
|
|
217
|
+
# Custom from_base_ring()
|
|
218
|
+
use_from_base_ring = True
|
|
219
|
+
elif isinstance(generic_from_base_ring, lazy_attribute):
|
|
220
|
+
# If the category implements from_base_ring() as lazy
|
|
221
|
+
# attribute, then we always use it.
|
|
222
|
+
# This is for backwards compatibility, see Issue #25181
|
|
223
|
+
use_from_base_ring = True
|
|
224
|
+
else:
|
|
225
|
+
try:
|
|
226
|
+
one = self.one()
|
|
227
|
+
use_from_base_ring = False
|
|
228
|
+
except (NotImplementedError, AttributeError, TypeError):
|
|
229
|
+
# The unit is not available, yet. But there are cases
|
|
230
|
+
# in which it will be available later. So, we use
|
|
231
|
+
# the generic from_base_ring() after all.
|
|
232
|
+
use_from_base_ring = True
|
|
233
|
+
|
|
234
|
+
mor = None
|
|
235
|
+
if use_from_base_ring:
|
|
236
|
+
mor = SetMorphism(function=from_base_ring, parent=H)
|
|
237
|
+
else:
|
|
238
|
+
# We have the multiplicative unit, so implement the
|
|
239
|
+
# coercion from the base ring as multiplying with that.
|
|
240
|
+
#
|
|
241
|
+
# But first we check that it actually works. If not,
|
|
242
|
+
# then the generic implementation of from_base_ring()
|
|
243
|
+
# would fail as well so we don't use it.
|
|
244
|
+
try:
|
|
245
|
+
if one._lmul_(base_ring.an_element()) is not None:
|
|
246
|
+
# There are cases in which lmul returns None,
|
|
247
|
+
# which means that it's not implemented.
|
|
248
|
+
# One example: Hecke algebras.
|
|
249
|
+
mor = SetMorphism(function=one._lmul_, parent=H)
|
|
250
|
+
except (NotImplementedError, AttributeError, TypeError):
|
|
251
|
+
pass
|
|
252
|
+
return mor
|
|
253
|
+
|
|
254
|
+
class WithBasis(CategoryWithAxiom_over_base_ring):
|
|
255
|
+
|
|
256
|
+
class ParentMethods:
|
|
257
|
+
|
|
258
|
+
@abstract_method(optional=True)
|
|
259
|
+
def one_basis(self):
|
|
260
|
+
"""
|
|
261
|
+
When the one of an algebra with basis is an element of
|
|
262
|
+
this basis, this optional method can return the index of
|
|
263
|
+
this element. This is used to provide a default
|
|
264
|
+
implementation of :meth:`.one`, and an optimized default
|
|
265
|
+
implementation of :meth:`.from_base_ring`.
|
|
266
|
+
|
|
267
|
+
EXAMPLES::
|
|
268
|
+
|
|
269
|
+
sage: # needs sage.combinat sage.modules
|
|
270
|
+
sage: A = AlgebrasWithBasis(QQ).example()
|
|
271
|
+
sage: A.one_basis()
|
|
272
|
+
word:
|
|
273
|
+
sage: A.one()
|
|
274
|
+
B[word: ]
|
|
275
|
+
sage: A.from_base_ring(4)
|
|
276
|
+
4*B[word: ]
|
|
277
|
+
"""
|
|
278
|
+
|
|
279
|
+
@cached_method
|
|
280
|
+
def one_from_one_basis(self):
|
|
281
|
+
"""
|
|
282
|
+
Return the one of the algebra, as per
|
|
283
|
+
:meth:`Monoids.ParentMethods.one()
|
|
284
|
+
<sage.categories.monoids.Monoids.ParentMethods.one>`
|
|
285
|
+
|
|
286
|
+
By default, this is implemented from
|
|
287
|
+
:meth:`.one_basis`, if available.
|
|
288
|
+
|
|
289
|
+
EXAMPLES::
|
|
290
|
+
|
|
291
|
+
sage: # needs sage.combinat sage.modules
|
|
292
|
+
sage: A = AlgebrasWithBasis(QQ).example()
|
|
293
|
+
sage: A.one_basis()
|
|
294
|
+
word:
|
|
295
|
+
sage: A.one_from_one_basis()
|
|
296
|
+
B[word: ]
|
|
297
|
+
sage: A.one()
|
|
298
|
+
B[word: ]
|
|
299
|
+
|
|
300
|
+
TESTS:
|
|
301
|
+
|
|
302
|
+
Try to check that :issue:`5843` Heisenbug is fixed::
|
|
303
|
+
|
|
304
|
+
sage: # needs sage.combinat sage.modules
|
|
305
|
+
sage: A = AlgebrasWithBasis(QQ).example()
|
|
306
|
+
sage: B = AlgebrasWithBasis(QQ).example(('a', 'c'))
|
|
307
|
+
sage: A == B
|
|
308
|
+
False
|
|
309
|
+
sage: Aone = A.one_from_one_basis
|
|
310
|
+
sage: Bone = B.one_from_one_basis
|
|
311
|
+
sage: Aone is Bone
|
|
312
|
+
False
|
|
313
|
+
|
|
314
|
+
Even if called in the wrong order, they should returns their
|
|
315
|
+
respective one::
|
|
316
|
+
|
|
317
|
+
sage: Bone().parent() is B # needs sage.combinat sage.modules
|
|
318
|
+
True
|
|
319
|
+
sage: Aone().parent() is A # needs sage.combinat sage.modules
|
|
320
|
+
True
|
|
321
|
+
"""
|
|
322
|
+
return self.monomial(self.one_basis())
|
|
323
|
+
|
|
324
|
+
@lazy_attribute
|
|
325
|
+
def one(self):
|
|
326
|
+
r"""
|
|
327
|
+
Return the multiplicative unit element.
|
|
328
|
+
|
|
329
|
+
EXAMPLES::
|
|
330
|
+
|
|
331
|
+
sage: A = AlgebrasWithBasis(QQ).example() # needs sage.combinat sage.modules
|
|
332
|
+
sage: A.one_basis() # needs sage.combinat sage.modules
|
|
333
|
+
word:
|
|
334
|
+
sage: A.one() # needs sage.combinat sage.modules
|
|
335
|
+
B[word: ]
|
|
336
|
+
"""
|
|
337
|
+
if self.one_basis is NotImplemented:
|
|
338
|
+
return NotImplemented
|
|
339
|
+
return self.one_from_one_basis
|
|
340
|
+
|
|
341
|
+
@lazy_attribute
|
|
342
|
+
def from_base_ring(self):
|
|
343
|
+
"""
|
|
344
|
+
TESTS::
|
|
345
|
+
|
|
346
|
+
sage: A = AlgebrasWithBasis(QQ).example() # needs sage.combinat sage.modules
|
|
347
|
+
sage: A.from_base_ring(3) # needs sage.combinat sage.modules
|
|
348
|
+
3*B[word: ]
|
|
349
|
+
"""
|
|
350
|
+
if self.one_basis is NotImplemented:
|
|
351
|
+
return NotImplemented
|
|
352
|
+
return self.from_base_ring_from_one_basis
|
|
353
|
+
|
|
354
|
+
def from_base_ring_from_one_basis(self, r):
|
|
355
|
+
"""
|
|
356
|
+
Implement the canonical embedding from the ground ring.
|
|
357
|
+
|
|
358
|
+
INPUT:
|
|
359
|
+
|
|
360
|
+
- ``r`` -- an element of the coefficient ring
|
|
361
|
+
|
|
362
|
+
EXAMPLES::
|
|
363
|
+
|
|
364
|
+
sage: # needs sage.combinat sage.modules
|
|
365
|
+
sage: A = AlgebrasWithBasis(QQ).example()
|
|
366
|
+
sage: A.from_base_ring_from_one_basis(3)
|
|
367
|
+
3*B[word: ]
|
|
368
|
+
sage: A.from_base_ring(3)
|
|
369
|
+
3*B[word: ]
|
|
370
|
+
sage: A(3)
|
|
371
|
+
3*B[word: ]
|
|
372
|
+
"""
|
|
373
|
+
return self.term(self.one_basis(), r)
|
|
374
|
+
|
|
375
|
+
class CartesianProducts(CartesianProductsCategory):
|
|
376
|
+
r"""
|
|
377
|
+
The category of unital algebras constructed as Cartesian products
|
|
378
|
+
of unital algebras.
|
|
379
|
+
|
|
380
|
+
This construction gives the direct product of algebras. See
|
|
381
|
+
discussion on:
|
|
382
|
+
|
|
383
|
+
- http://groups.google.fr/group/sage-devel/browse_thread/thread/35a72b1d0a2fc77a/348f42ae77a66d16#348f42ae77a66d16
|
|
384
|
+
- :wikipedia:`Direct_product`
|
|
385
|
+
"""
|
|
386
|
+
def extra_super_categories(self):
|
|
387
|
+
"""
|
|
388
|
+
A Cartesian product of algebras is endowed with a natural
|
|
389
|
+
unital algebra structure.
|
|
390
|
+
|
|
391
|
+
EXAMPLES::
|
|
392
|
+
|
|
393
|
+
sage: from sage.categories.unital_algebras import UnitalAlgebras
|
|
394
|
+
sage: C = UnitalAlgebras(QQ).CartesianProducts()
|
|
395
|
+
sage: C.extra_super_categories()
|
|
396
|
+
[Category of unital algebras over Rational Field]
|
|
397
|
+
sage: sorted(C.super_categories(), key=str)
|
|
398
|
+
[Category of Cartesian products of distributive magmas and additive magmas,
|
|
399
|
+
Category of Cartesian products of unital magmas,
|
|
400
|
+
Category of Cartesian products of vector spaces over Rational Field,
|
|
401
|
+
Category of unital algebras over Rational Field]
|
|
402
|
+
"""
|
|
403
|
+
return [self.base_category()]
|
|
404
|
+
|
|
405
|
+
class ParentMethods:
|
|
406
|
+
@cached_method
|
|
407
|
+
def one(self):
|
|
408
|
+
r"""
|
|
409
|
+
Return the multiplicative unit element.
|
|
410
|
+
|
|
411
|
+
EXAMPLES::
|
|
412
|
+
|
|
413
|
+
sage: # needs sage.graphs sage.modules
|
|
414
|
+
sage: S2 = simplicial_complexes.Sphere(2)
|
|
415
|
+
sage: H = S2.cohomology_ring(QQ)
|
|
416
|
+
sage: C = cartesian_product([H, H])
|
|
417
|
+
sage: one = C.one()
|
|
418
|
+
sage: one
|
|
419
|
+
B[(0, (0, 0))] + B[(1, (0, 0))]
|
|
420
|
+
sage: one == one * one
|
|
421
|
+
True
|
|
422
|
+
sage: all(b == b * one for b in C.basis())
|
|
423
|
+
True
|
|
424
|
+
"""
|
|
425
|
+
data = enumerate(self.cartesian_factors())
|
|
426
|
+
return self._cartesian_product_of_elements([C.one() for i, C in data])
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-categories
|
|
2
|
+
# sage.doctest: needs sage.symbolic
|
|
3
|
+
r"""
|
|
4
|
+
Vector Bundles
|
|
5
|
+
"""
|
|
6
|
+
#*****************************************************************************
|
|
7
|
+
# Copyright (C) 2019 Michael Jung <micjung at uni-potsdam.de>
|
|
8
|
+
#
|
|
9
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
10
|
+
# http://www.gnu.org/licenses/
|
|
11
|
+
#******************************************************************************
|
|
12
|
+
|
|
13
|
+
from sage.categories.category_types import Category_over_base_ring
|
|
14
|
+
from sage.categories.category_with_axiom import CategoryWithAxiom_over_base_ring
|
|
15
|
+
from sage.misc.cachefunc import cached_method
|
|
16
|
+
from sage.categories.sets_cat import Sets
|
|
17
|
+
from sage.categories.fields import Fields
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class VectorBundles(Category_over_base_ring):
|
|
21
|
+
r"""
|
|
22
|
+
The category of vector bundles over any base space and base field.
|
|
23
|
+
|
|
24
|
+
.. SEEALSO:: :class:`~sage.manifolds.vector_bundle.TopologicalVectorBundle`
|
|
25
|
+
|
|
26
|
+
EXAMPLES::
|
|
27
|
+
|
|
28
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
29
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
30
|
+
sage: C = VectorBundles(M, RR); C
|
|
31
|
+
Category of vector bundles over Real Field with 53 bits of precision
|
|
32
|
+
with base space 2-dimensional topological manifold M
|
|
33
|
+
sage: C.super_categories()
|
|
34
|
+
[Category of topological spaces]
|
|
35
|
+
|
|
36
|
+
TESTS::
|
|
37
|
+
|
|
38
|
+
sage: TestSuite(C).run(skip='_test_category_over_bases')
|
|
39
|
+
"""
|
|
40
|
+
def __init__(self, base_space, base_field, name=None):
|
|
41
|
+
r"""
|
|
42
|
+
Initialize ``self``.
|
|
43
|
+
|
|
44
|
+
EXAMPLES::
|
|
45
|
+
|
|
46
|
+
sage: M = Manifold(2, 'M')
|
|
47
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
48
|
+
sage: C = VectorBundles(M, RR)
|
|
49
|
+
sage: TestSuite(C).run(skip='_test_category_over_bases')
|
|
50
|
+
"""
|
|
51
|
+
if base_field not in Fields().Topological():
|
|
52
|
+
raise ValueError("base field must be a topological field")
|
|
53
|
+
self._base_space = base_space
|
|
54
|
+
Category_over_base_ring.__init__(self, base_field, name)
|
|
55
|
+
|
|
56
|
+
@cached_method
|
|
57
|
+
def super_categories(self):
|
|
58
|
+
r"""
|
|
59
|
+
EXAMPLES::
|
|
60
|
+
|
|
61
|
+
sage: M = Manifold(2, 'M')
|
|
62
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
63
|
+
sage: VectorBundles(M, RR).super_categories()
|
|
64
|
+
[Category of topological spaces]
|
|
65
|
+
"""
|
|
66
|
+
return [Sets().Topological()]
|
|
67
|
+
|
|
68
|
+
def base_space(self):
|
|
69
|
+
r"""
|
|
70
|
+
Return the base space of this category.
|
|
71
|
+
|
|
72
|
+
EXAMPLES::
|
|
73
|
+
|
|
74
|
+
sage: M = Manifold(2, 'M', structure='top')
|
|
75
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
76
|
+
sage: VectorBundles(M, RR).base_space()
|
|
77
|
+
2-dimensional topological manifold M
|
|
78
|
+
"""
|
|
79
|
+
return self._base_space
|
|
80
|
+
|
|
81
|
+
def _repr_object_names(self):
|
|
82
|
+
r"""
|
|
83
|
+
Return the name of the objects of this category.
|
|
84
|
+
|
|
85
|
+
.. SEEALSO:: :meth:`Category._repr_object_names`
|
|
86
|
+
|
|
87
|
+
EXAMPLES::
|
|
88
|
+
|
|
89
|
+
sage: M = Manifold(2, 'M')
|
|
90
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
91
|
+
sage: VectorBundles(M, RR)._repr_object_names()
|
|
92
|
+
'vector bundles over Real Field with 53 bits of precision with base
|
|
93
|
+
space 2-dimensional differentiable manifold M'
|
|
94
|
+
"""
|
|
95
|
+
base_space = self._base_space
|
|
96
|
+
return Category_over_base_ring._repr_object_names(self) + \
|
|
97
|
+
" with base space %s" % base_space
|
|
98
|
+
|
|
99
|
+
class SubcategoryMethods:
|
|
100
|
+
@cached_method
|
|
101
|
+
def Differentiable(self):
|
|
102
|
+
r"""
|
|
103
|
+
Return the subcategory of the differentiable objects
|
|
104
|
+
of ``self``.
|
|
105
|
+
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: M = Manifold(2, 'M')
|
|
109
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
110
|
+
sage: VectorBundles(M, RR).Differentiable()
|
|
111
|
+
Category of differentiable vector bundles over Real Field with
|
|
112
|
+
53 bits of precision with base space 2-dimensional
|
|
113
|
+
differentiable manifold M
|
|
114
|
+
|
|
115
|
+
TESTS::
|
|
116
|
+
|
|
117
|
+
sage: TestSuite(VectorBundles(M, RR).Differentiable()).run()
|
|
118
|
+
sage: VectorBundles(M, RR).Differentiable.__module__
|
|
119
|
+
'sage.categories.vector_bundles'
|
|
120
|
+
"""
|
|
121
|
+
return self._with_axiom('Differentiable')
|
|
122
|
+
|
|
123
|
+
@cached_method
|
|
124
|
+
def Smooth(self):
|
|
125
|
+
"""
|
|
126
|
+
Return the subcategory of the smooth objects of ``self``.
|
|
127
|
+
|
|
128
|
+
EXAMPLES::
|
|
129
|
+
|
|
130
|
+
sage: M = Manifold(2, 'M')
|
|
131
|
+
sage: from sage.categories.vector_bundles import VectorBundles
|
|
132
|
+
sage: VectorBundles(M, RR).Smooth()
|
|
133
|
+
Category of smooth vector bundles over Real Field with 53 bits
|
|
134
|
+
of precision with base space 2-dimensional differentiable
|
|
135
|
+
manifold M
|
|
136
|
+
|
|
137
|
+
TESTS::
|
|
138
|
+
|
|
139
|
+
sage: TestSuite(VectorBundles(M, RR).Smooth()).run()
|
|
140
|
+
sage: VectorBundles(M, RR).Smooth.__module__
|
|
141
|
+
'sage.categories.vector_bundles'
|
|
142
|
+
"""
|
|
143
|
+
return self._with_axiom('Smooth')
|
|
144
|
+
|
|
145
|
+
class Differentiable(CategoryWithAxiom_over_base_ring):
|
|
146
|
+
"""
|
|
147
|
+
The category of differentiable vector bundles.
|
|
148
|
+
|
|
149
|
+
A differentiable vector bundle is a differentiable manifold with
|
|
150
|
+
differentiable surjective projection on a differentiable base space.
|
|
151
|
+
"""
|
|
152
|
+
|
|
153
|
+
class Smooth(CategoryWithAxiom_over_base_ring):
|
|
154
|
+
"""
|
|
155
|
+
The category of smooth vector bundles.
|
|
156
|
+
|
|
157
|
+
A smooth vector bundle is a smooth manifold with
|
|
158
|
+
smooth surjective projection on a smooth base space.
|
|
159
|
+
"""
|