passagemath-modules 10.5.32__cp310-cp310-macosx_14_0_arm64.whl → 10.6.20__cp310-cp310-macosx_14_0_arm64.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.
Potentially problematic release.
This version of passagemath-modules might be problematic. Click here for more details.
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/METADATA +51 -46
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/RECORD +333 -323
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/WHEEL +1 -1
- passagemath_modules.dylibs/libgcc_s.1.1.dylib +0 -0
- passagemath_modules.dylibs/libgfortran.5.dylib +0 -0
- passagemath_modules.dylibs/libgsl.28.dylib +0 -0
- passagemath_modules.dylibs/libmpc.3.dylib +0 -0
- passagemath_modules.dylibs/libopenblasp-r0.3.29.dylib +0 -0
- passagemath_modules.dylibs/libquadmath.0.dylib +0 -0
- sage/algebras/clifford_algebra.py +2 -2
- sage/algebras/clifford_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/clifford_algebra_element.pyx +4 -2
- sage/algebras/exterior_algebra_groebner.cpython-310-darwin.so +0 -0
- sage/algebras/exterior_algebra_groebner.pyx +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra.py +83 -5
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pxd +2 -0
- sage/algebras/finite_dimensional_algebras/finite_dimensional_algebra_element.pyx +28 -3
- sage/algebras/finite_gca.py +1 -1
- sage/algebras/lie_algebras/bgg_dual_module.py +18 -11
- sage/algebras/lie_algebras/classical_lie_algebra.py +3 -3
- sage/algebras/lie_algebras/examples.py +2 -2
- sage/algebras/lie_algebras/free_lie_algebra.py +1 -1
- sage/algebras/lie_algebras/heisenberg.py +4 -4
- sage/algebras/lie_algebras/lie_algebra.py +1 -1
- sage/algebras/lie_algebras/lie_algebra_element.cpython-310-darwin.so +0 -0
- sage/algebras/lie_algebras/lie_algebra_element.pyx +65 -28
- sage/algebras/lie_algebras/quotient.py +40 -29
- sage/algebras/lie_algebras/subalgebra.py +76 -53
- sage/algebras/lie_algebras/verma_module.py +1 -3
- sage/algebras/octonion_algebra.cpython-310-darwin.so +0 -0
- sage/algebras/octonion_algebra.pyx +1 -1
- sage/algebras/orlik_solomon.py +4 -4
- sage/algebras/orlik_terao.py +4 -4
- sage/algebras/steenrod/steenrod_algebra.py +37 -30
- sage/algebras/steenrod/steenrod_algebra_bases.py +2 -2
- sage/algebras/steenrod/steenrod_algebra_misc.py +4 -4
- sage/algebras/steenrod/steenrod_algebra_mult.py +2 -2
- sage/all__sagemath_modules.py +1 -0
- sage/calculus/integration.cpython-310-darwin.so +0 -0
- sage/calculus/integration.pyx +6 -5
- sage/calculus/interpolation.cpython-310-darwin.so +0 -0
- sage/calculus/interpolators.cpython-310-darwin.so +0 -0
- sage/calculus/ode.cpython-310-darwin.so +0 -0
- sage/calculus/ode.pxd +2 -2
- sage/calculus/ode.pyx +6 -4
- sage/calculus/riemann.cpython-310-darwin.so +0 -0
- sage/calculus/riemann.pyx +68 -48
- sage/calculus/transforms/dwt.cpython-310-darwin.so +0 -0
- sage/calculus/transforms/fft.cpython-310-darwin.so +0 -0
- sage/coding/ag_code_decoders.cpython-310-darwin.so +0 -0
- sage/coding/ag_code_decoders.pyx +31 -31
- sage/coding/binary_code.cpython-310-darwin.so +0 -0
- sage/coding/binary_code.pxd +6 -6
- sage/coding/binary_code.pyx +212 -173
- sage/coding/guruswami_sudan/utils.py +3 -5
- sage/coding/kasami_codes.cpython-310-darwin.so +0 -0
- sage/coding/kasami_codes.pyx +20 -24
- sage/coding/linear_code.py +2 -2
- sage/coding/linear_code_no_metric.py +5 -5
- sage/coding/linear_rank_metric.py +81 -19
- sage/combinat/cartesian_product.py +1 -1
- sage/combinat/free_module.py +22 -2
- sage/combinat/root_system/all.py +1 -1
- sage/combinat/root_system/ambient_space.py +1 -1
- sage/combinat/root_system/associahedron.py +4 -4
- sage/combinat/root_system/braid_move_calculator.py +2 -2
- sage/combinat/root_system/braid_orbit.cpython-310-darwin.so +0 -0
- sage/combinat/root_system/braid_orbit.pyx +1 -1
- sage/combinat/root_system/branching_rules.py +3 -3
- sage/combinat/root_system/cartan_type.py +14 -14
- sage/combinat/root_system/coxeter_group.py +3 -3
- sage/combinat/root_system/coxeter_matrix.py +1 -1
- sage/combinat/root_system/coxeter_type.py +12 -1
- sage/combinat/root_system/extended_affine_weyl_group.py +9 -9
- sage/combinat/root_system/fundamental_group.py +3 -5
- sage/combinat/root_system/hecke_algebra_representation.py +1 -1
- sage/combinat/root_system/integrable_representations.py +1 -1
- sage/combinat/root_system/pieri_factors.py +3 -3
- sage/combinat/root_system/root_lattice_realization_algebras.py +1 -1
- sage/combinat/root_system/root_lattice_realizations.py +1 -1
- sage/combinat/root_system/type_folded.py +3 -3
- sage/combinat/root_system/type_reducible.py +8 -7
- sage/combinat/root_system/type_super_A.py +2 -2
- sage/combinat/root_system/weight_lattice_realizations.py +9 -8
- sage/combinat/root_system/weyl_characters.py +2 -2
- sage/crypto/__init__.py +1 -0
- sage/crypto/block_cipher/des.py +1 -1
- sage/crypto/block_cipher/miniaes.py +3 -3
- sage/crypto/block_cipher/present.py +3 -3
- sage/crypto/block_cipher/sdes.py +3 -3
- sage/crypto/boolean_function.cpython-310-darwin.so +0 -0
- sage/crypto/boolean_function.pyx +22 -23
- sage/crypto/key_exchange/diffie_hellman.py +4 -9
- sage/crypto/mq/sr.py +1 -1
- sage/crypto/public_key/blum_goldwasser.py +3 -3
- sage/crypto/sbox.cpython-310-darwin.so +0 -0
- sage/crypto/sbox.pyx +1 -1
- sage/crypto/sboxes.py +22 -0
- sage/crypto/util.py +4 -6
- sage/ext/interpreters/__init__.py +1 -1
- sage/ext/interpreters/all__sagemath_modules.py +1 -1
- sage/ext/interpreters/wrapper_cc.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cc.pxd +5 -5
- sage/ext/interpreters/wrapper_cc.pyx +1 -1
- sage/ext/interpreters/wrapper_cdf.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_cdf.pxd +5 -7
- sage/ext/interpreters/wrapper_cdf.pyx +4 -10
- sage/ext/interpreters/wrapper_rdf.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rdf.pxd +1 -1
- sage/ext/interpreters/wrapper_rdf.pyx +1 -1
- sage/ext/interpreters/wrapper_rr.cpython-310-darwin.so +0 -0
- sage/ext/interpreters/wrapper_rr.pxd +5 -5
- sage/ext/interpreters/wrapper_rr.pyx +1 -2
- sage/geometry/toric_lattice.py +3 -3
- sage/geometry/toric_lattice_element.cpython-310-darwin.so +0 -0
- sage/groups/additive_abelian/additive_abelian_group.py +1 -1
- sage/groups/additive_abelian/qmodnz.py +4 -4
- sage/groups/matrix_gps/coxeter_group.py +17 -4
- sage/groups/matrix_gps/group_element.cpython-310-darwin.so +0 -0
- sage/groups/misc_gps/argument_groups.py +2 -2
- sage/groups/misc_gps/imaginary_groups.py +4 -4
- sage/groups/perm_gps/partn_ref/refinement_binary.cpython-310-darwin.so +0 -0
- sage/groups/perm_gps/partn_ref/refinement_matrices.cpython-310-darwin.so +0 -0
- sage/homology/chain_complex.py +0 -2
- sage/homology/hochschild_complex.py +3 -3
- sage/homology/homology_morphism.py +6 -6
- sage/homology/homology_vector_space_with_basis.py +1 -1
- sage/libs/gsl/array.cpython-310-darwin.so +0 -0
- sage/libs/mpmath/utils.cpython-310-darwin.so +0 -0
- sage/matrix/action.cpython-310-darwin.so +0 -0
- sage/matrix/args.cpython-310-darwin.so +0 -0
- sage/matrix/args.pyx +25 -10
- sage/matrix/benchmark.py +8 -4
- sage/matrix/compute_J_ideal.py +2 -2
- sage/matrix/constructor.cpython-310-darwin.so +0 -0
- sage/matrix/echelon_matrix.cpython-310-darwin.so +0 -0
- sage/matrix/echelon_matrix.pyx +1 -1
- sage/matrix/matrix0.cpython-310-darwin.so +0 -0
- sage/matrix/matrix0.pxd +3 -3
- sage/matrix/matrix0.pyx +7 -5
- sage/matrix/matrix1.cpython-310-darwin.so +0 -0
- sage/matrix/matrix1.pyx +87 -48
- sage/matrix/matrix2.cpython-310-darwin.so +0 -0
- sage/matrix/matrix2.pxd +3 -3
- sage/matrix/matrix2.pyx +1261 -63
- sage/matrix/matrix_cdv.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_complex_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_complex_double_dense.pyx +1 -1
- sage/matrix/matrix_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_dense.pyx +2 -3
- sage/matrix/matrix_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_double_dense.pyx +11 -5
- sage/matrix/matrix_double_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_generic_sparse.pyx +1 -1
- sage/matrix/matrix_laurent_mpolynomial_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_numpy_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_numpy_integer_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_polynomial_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_polynomial_dense.pyx +952 -261
- sage/matrix/matrix_real_double_dense.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_sparse.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_sparse.pyx +6 -7
- sage/matrix/matrix_window.cpython-310-darwin.so +0 -0
- sage/matrix/matrix_window.pyx +2 -2
- sage/matrix/misc_mpfr.cpython-310-darwin.so +0 -0
- sage/matrix/operation_table.py +0 -2
- sage/matrix/special.py +5 -1
- sage/matrix/strassen.cpython-310-darwin.so +0 -0
- sage/matrix/strassen.pyx +1 -1
- sage/matroids/basis_exchange_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/basis_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/chow_ring.py +68 -65
- sage/matroids/chow_ring_ideal.py +41 -38
- sage/matroids/circuit_closures_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/circuits_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/database_matroids.py +16 -5
- sage/matroids/dual_matroid.py +2 -2
- sage/matroids/extension.cpython-310-darwin.so +0 -0
- sage/matroids/flats_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/gammoid.py +1 -1
- sage/matroids/graphic_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/graphic_matroid.pyx +3 -3
- sage/matroids/lean_matrix.cpython-310-darwin.so +0 -0
- sage/matroids/lean_matrix.pyx +22 -22
- sage/matroids/linear_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/linear_matroid.pyx +13 -13
- sage/matroids/matroid.cpython-310-darwin.so +0 -0
- sage/matroids/matroid.pyx +15 -15
- sage/matroids/matroids_plot_helpers.py +48 -46
- sage/matroids/minor_matroid.py +2 -2
- sage/matroids/set_system.cpython-310-darwin.so +0 -0
- sage/matroids/transversal_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/transversal_matroid.pyx +3 -3
- sage/matroids/union_matroid.cpython-310-darwin.so +0 -0
- sage/matroids/union_matroid.pyx +3 -0
- sage/matroids/unpickling.cpython-310-darwin.so +0 -0
- sage/matroids/utilities.py +2 -2
- sage/misc/c3.cpython-310-darwin.so +0 -0
- sage/misc/compat.py +1 -2
- sage/misc/pickle_old.cpython-310-darwin.so +0 -0
- sage/modules/diamond_cutting.py +117 -30
- sage/modules/fg_pid/fgp_module.py +3 -3
- sage/modules/filtered_vector_space.py +4 -4
- sage/modules/finite_submodule_iter.cpython-310-darwin.so +0 -0
- sage/modules/fp_graded/free_module.py +2 -2
- sage/modules/fp_graded/module.py +2 -2
- sage/modules/fp_graded/morphism.py +4 -4
- sage/modules/fp_graded/steenrod/morphism.py +1 -1
- sage/modules/free_module.py +162 -26
- sage/modules/free_module_element.cpython-310-darwin.so +0 -0
- sage/modules/free_module_element.pyx +4 -4
- sage/modules/free_module_integer.py +2 -2
- sage/modules/free_module_morphism.py +3 -3
- sage/modules/free_module_pseudohomspace.py +352 -0
- sage/modules/free_module_pseudomorphism.py +578 -0
- sage/modules/free_quadratic_module_integer_symmetric.py +24 -13
- sage/modules/matrix_morphism.py +9 -9
- sage/modules/multi_filtered_vector_space.py +4 -4
- sage/modules/ore_module.py +2208 -0
- sage/modules/ore_module_element.py +178 -0
- sage/modules/ore_module_homspace.py +147 -0
- sage/modules/ore_module_morphism.py +968 -0
- sage/modules/quotient_module.py +11 -1
- sage/modules/submodule.py +1 -1
- sage/modules/torsion_quadratic_module.py +1 -1
- sage/modules/vector_complex_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_integer_sparse.pyx +4 -4
- sage/modules/vector_modn_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_modn_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_numpy_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_numpy_integer_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_dense.pyx +1 -1
- sage/modules/vector_rational_sparse.cpython-310-darwin.so +0 -0
- sage/modules/vector_rational_sparse.pyx +5 -5
- sage/modules/vector_real_double_dense.cpython-310-darwin.so +0 -0
- sage/modules/vector_space_morphism.py +2 -2
- sage/modules/with_basis/cell_module.py +17 -0
- sage/modules/with_basis/indexed_element.cpython-310-darwin.so +0 -0
- sage/modules/with_basis/indexed_element.pyx +1 -1
- sage/modules/with_basis/invariant.py +1 -1
- sage/modules/with_basis/representation.py +0 -1
- sage/modules/with_basis/subquotient.py +2 -2
- sage/numerical/gauss_legendre.cpython-310-darwin.so +0 -0
- sage/probability/probability_distribution.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/binary_qf.py +11 -11
- sage/quadratic_forms/bqf_class_group.py +26 -92
- sage/quadratic_forms/count_local_2.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/extras.py +1 -1
- sage/quadratic_forms/quadratic_form.py +5 -4
- sage/quadratic_forms/quadratic_form__equivalence_testing.py +7 -4
- sage/quadratic_forms/quadratic_form__evaluate.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/quadratic_form__local_field_invariants.py +10 -10
- sage/quadratic_forms/quadratic_form__ternary_Tornaria.py +2 -2
- sage/quadratic_forms/ternary.cpython-310-darwin.so +0 -0
- sage/quadratic_forms/ternary_qf.py +50 -83
- sage/rings/cfinite_sequence.py +16 -17
- sage/rings/complex_conversion.cpython-310-darwin.so +0 -0
- sage/rings/complex_double.cpython-310-darwin.so +0 -0
- sage/rings/complex_double.pxd +1 -0
- sage/rings/complex_double.pyx +37 -32
- sage/rings/complex_mpc.cpython-310-darwin.so +0 -0
- sage/rings/complex_mpc.pyx +27 -23
- sage/rings/complex_mpfr.cpython-310-darwin.so +0 -0
- sage/rings/complex_mpfr.pyx +11 -11
- sage/rings/function_field/drinfeld_modules/charzero_drinfeld_module.py +277 -21
- sage/rings/function_field/drinfeld_modules/drinfeld_module.py +10 -1
- sage/rings/function_field/drinfeld_modules/finite_drinfeld_module.py +1 -1
- sage/rings/function_field/drinfeld_modules/homset.py +1 -2
- sage/rings/function_field/drinfeld_modules/morphism.py +2 -2
- sage/rings/function_field/hermite_form_polynomial.cpython-310-darwin.so +0 -0
- sage/rings/function_field/khuri_makdisi.cpython-310-darwin.so +0 -0
- sage/rings/function_field/khuri_makdisi.pyx +27 -25
- sage/rings/invariants/invariant_theory.py +61 -60
- sage/rings/invariants/reconstruction.py +8 -8
- sage/rings/polynomial/laurent_polynomial_mpair.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/ore_function_element.py +1 -1
- sage/rings/polynomial/ore_polynomial_element.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/ore_polynomial_element.pyx +8 -8
- sage/rings/polynomial/ore_polynomial_ring.py +134 -17
- sage/rings/polynomial/polynomial_real_mpfr_dense.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_element.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_field.pyx +3 -4
- sage/rings/polynomial/skew_polynomial_finite_order.cpython-310-darwin.so +0 -0
- sage/rings/polynomial/skew_polynomial_finite_order.pyx +2 -5
- sage/rings/real_double_element_gsl.cpython-310-darwin.so +0 -0
- sage/rings/real_mpfr.cpython-310-darwin.so +0 -0
- sage/rings/real_mpfr.pyx +25 -7
- sage/rings/ring_extension.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension.pyx +4 -2
- sage/rings/ring_extension_conversion.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension_element.cpython-310-darwin.so +0 -0
- sage/rings/ring_extension_element.pyx +42 -0
- sage/rings/ring_extension_morphism.cpython-310-darwin.so +0 -0
- sage/schemes/all__sagemath_modules.py +1 -0
- sage/schemes/projective/all__sagemath_modules.py +1 -0
- sage/schemes/projective/coherent_sheaf.py +300 -0
- sage/schemes/projective/cohomology.py +510 -0
- sage/stats/basic_stats.py +17 -15
- sage/stats/distributions/dgs_misc.h +11 -4
- sage/stats/distributions/discrete_gaussian_integer.cpython-310-darwin.so +0 -0
- sage/stats/distributions/discrete_gaussian_integer.pyx +9 -7
- sage/stats/hmm/chmm.cpython-310-darwin.so +0 -0
- sage/stats/hmm/chmm.pyx +13 -13
- sage/stats/hmm/distributions.cpython-310-darwin.so +0 -0
- sage/stats/hmm/distributions.pxd +3 -3
- sage/stats/hmm/distributions.pyx +3 -3
- sage/stats/hmm/hmm.cpython-310-darwin.so +0 -0
- sage/stats/hmm/hmm.pxd +3 -3
- sage/stats/hmm/hmm.pyx +6 -6
- sage/stats/hmm/util.cpython-310-darwin.so +0 -0
- sage/stats/hmm/util.pyx +6 -6
- sage/stats/intlist.cpython-310-darwin.so +0 -0
- sage/stats/intlist.pxd +3 -3
- sage/stats/time_series.cpython-310-darwin.so +0 -0
- sage/tensor/modules/alternating_contr_tensor.py +3 -3
- sage/tensor/modules/comp.py +3 -3
- sage/tensor/modules/ext_pow_free_module.py +3 -3
- sage/tensor/modules/format_utilities.py +3 -3
- sage/tensor/modules/free_module_linear_group.py +3 -3
- sage/tensor/modules/free_module_morphism.py +0 -1
- sage/tensor/modules/tensor_free_module.py +3 -3
- sage/tensor/modules/tensor_free_submodule.py +1 -1
- sage/tensor/modules/tensor_free_submodule_basis.py +1 -1
- sage/tensor/modules/tensor_with_indices.py +5 -5
- passagemath_modules.dylibs/libopenblas_armv8p-r0.3.28.dylib +0 -0
- {passagemath_modules-10.5.32.dist-info → passagemath_modules-10.6.20.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-modules
|
|
2
|
+
# sage.doctest: needs sage.libs.singular
|
|
3
|
+
r"""
|
|
4
|
+
Coherent sheaves on projective schemes
|
|
5
|
+
|
|
6
|
+
EXAMPLES:
|
|
7
|
+
|
|
8
|
+
We define the Fermat cubic surface in `\PP^2` and examine its structure sheaf::
|
|
9
|
+
|
|
10
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
11
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
12
|
+
sage: sh = X.structure_sheaf()
|
|
13
|
+
sage: sh
|
|
14
|
+
Coherent sheaf on Closed subscheme of Projective Space of dimension 2
|
|
15
|
+
over Rational Field defined by: x^4 + y^4 + z^4
|
|
16
|
+
sage: sh.euler_characteristic()
|
|
17
|
+
-2
|
|
18
|
+
|
|
19
|
+
AUTHORS:
|
|
20
|
+
|
|
21
|
+
- Kwankyu Lee (2024-01-22): initial version
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from functools import cached_property
|
|
26
|
+
from sage.structure.sage_object import SageObject
|
|
27
|
+
from sage.modules.free_module import FreeModule
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class CoherentSheaf(SageObject):
|
|
31
|
+
r"""
|
|
32
|
+
Coherent sheaf on a projective scheme.
|
|
33
|
+
|
|
34
|
+
INPUT:
|
|
35
|
+
|
|
36
|
+
- ``scheme`` -- the base scheme on which the sheaf is defined
|
|
37
|
+
|
|
38
|
+
- ``module`` -- a free module or its quotient by a submodule
|
|
39
|
+
|
|
40
|
+
- ``twist`` -- (default: 0) an integer
|
|
41
|
+
|
|
42
|
+
This class constructs the coherent sheaf `\tilde M(n)` if `M` is the
|
|
43
|
+
``module`` and `n` is the ``twist``.
|
|
44
|
+
"""
|
|
45
|
+
def __init__(self, scheme, module, twist=0):
|
|
46
|
+
"""
|
|
47
|
+
Initialize ``self``.
|
|
48
|
+
|
|
49
|
+
TESTS::
|
|
50
|
+
|
|
51
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
52
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
53
|
+
sage: sheaf = X.structure_sheaf()
|
|
54
|
+
sage: TestSuite(sheaf).run(skip=['_test_pickling'])
|
|
55
|
+
"""
|
|
56
|
+
try:
|
|
57
|
+
if module.is_ambient():
|
|
58
|
+
module = module.quotient(module.zero_submodule())
|
|
59
|
+
except AttributeError:
|
|
60
|
+
pass
|
|
61
|
+
|
|
62
|
+
assert module.cover() == module.free_cover()
|
|
63
|
+
|
|
64
|
+
self._base_scheme = scheme
|
|
65
|
+
self._module = module
|
|
66
|
+
self._twist = twist
|
|
67
|
+
|
|
68
|
+
def _cohomology(self):
|
|
69
|
+
"""
|
|
70
|
+
Return an object that computes the cohomology.
|
|
71
|
+
|
|
72
|
+
EXAMPLES::
|
|
73
|
+
|
|
74
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
75
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
76
|
+
sage: sheaf = X.structure_sheaf()
|
|
77
|
+
sage: c = sheaf._cohomology
|
|
78
|
+
sage: c.H(1).dimension()
|
|
79
|
+
3
|
|
80
|
+
sage: c.h(1)
|
|
81
|
+
3
|
|
82
|
+
"""
|
|
83
|
+
raise NotImplementedError('_cohomology is not implemented')
|
|
84
|
+
|
|
85
|
+
def _repr_(self):
|
|
86
|
+
"""
|
|
87
|
+
Return the string representation of this sheaf.
|
|
88
|
+
|
|
89
|
+
EXAMPLES::
|
|
90
|
+
|
|
91
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
92
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
93
|
+
sage: s = X.structure_sheaf()
|
|
94
|
+
sage: s
|
|
95
|
+
Coherent sheaf on Closed subscheme of Projective Space of dimension 2
|
|
96
|
+
over Rational Field defined by: x^4 + y^4 + z^4
|
|
97
|
+
sage: s.twist(2)
|
|
98
|
+
Twisted coherent sheaf on Closed subscheme of Projective Space of dimension 2
|
|
99
|
+
over Rational Field defined by: x^4 + y^4 + z^4
|
|
100
|
+
"""
|
|
101
|
+
sheaf = 'Twisted coherent sheaf' if self._twist else 'Coherent sheaf'
|
|
102
|
+
return f'{sheaf} on {self._base_scheme}'
|
|
103
|
+
|
|
104
|
+
def base_scheme(self):
|
|
105
|
+
"""
|
|
106
|
+
Return the base scheme on which this sheaf is defined.
|
|
107
|
+
|
|
108
|
+
EXAMPLES::
|
|
109
|
+
|
|
110
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
111
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
112
|
+
sage: s = X.structure_sheaf()
|
|
113
|
+
sage: s.base_scheme()
|
|
114
|
+
Closed subscheme of Projective Space of dimension 2 over Rational Field defined by:
|
|
115
|
+
x^4 + y^4 + z^4
|
|
116
|
+
"""
|
|
117
|
+
return self._base_scheme
|
|
118
|
+
|
|
119
|
+
def defining_twist(self):
|
|
120
|
+
"""
|
|
121
|
+
Return the integer by which the module defining this coherent sheaf is
|
|
122
|
+
twisted.
|
|
123
|
+
|
|
124
|
+
EXAMPLES::
|
|
125
|
+
|
|
126
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
127
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
128
|
+
sage: s = X.structure_sheaf(3)
|
|
129
|
+
sage: s.defining_twist()
|
|
130
|
+
3
|
|
131
|
+
"""
|
|
132
|
+
return self._twist
|
|
133
|
+
|
|
134
|
+
def defining_module(self):
|
|
135
|
+
"""
|
|
136
|
+
Return the module defining this coherent sheaf.
|
|
137
|
+
|
|
138
|
+
EXAMPLES::
|
|
139
|
+
|
|
140
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
141
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
142
|
+
sage: s = X.structure_sheaf()
|
|
143
|
+
sage: s.defining_module()
|
|
144
|
+
Quotient module by Submodule of Ambient free module of rank 1 over the integral domain Quotient
|
|
145
|
+
of Multivariate Polynomial Ring in x, y, z over Rational Field by the ideal (x^4 + y^4 + z^4)
|
|
146
|
+
Generated by the rows of the matrix:
|
|
147
|
+
[]
|
|
148
|
+
"""
|
|
149
|
+
return self._module
|
|
150
|
+
|
|
151
|
+
def cohomology(self, r=0):
|
|
152
|
+
"""
|
|
153
|
+
Return the dimension of the `r`-th cohomology as a vector space.
|
|
154
|
+
|
|
155
|
+
INPUT:
|
|
156
|
+
|
|
157
|
+
- ``r`` -- (default: 0) a non-negative integer
|
|
158
|
+
|
|
159
|
+
EXAMPLES::
|
|
160
|
+
|
|
161
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
162
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
163
|
+
sage: sheaf = X.structure_sheaf()
|
|
164
|
+
sage: sheaf.cohomology(0)
|
|
165
|
+
1
|
|
166
|
+
sage: sheaf.cohomology(1)
|
|
167
|
+
3
|
|
168
|
+
sage: sheaf.cohomology(2)
|
|
169
|
+
0
|
|
170
|
+
"""
|
|
171
|
+
return self._cohomology.h(r)
|
|
172
|
+
|
|
173
|
+
def twist(self, t=0):
|
|
174
|
+
r"""
|
|
175
|
+
Return the twisted sheaf `F(n)` of this sheaf `F`.
|
|
176
|
+
|
|
177
|
+
EXAMPLES::
|
|
178
|
+
|
|
179
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
180
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
181
|
+
sage: sh = X.structure_sheaf()
|
|
182
|
+
sage: sh.twist(1).euler_characteristic()
|
|
183
|
+
2
|
|
184
|
+
sage: sh.twist(2).euler_characteristic()
|
|
185
|
+
6
|
|
186
|
+
|
|
187
|
+
TESTS::
|
|
188
|
+
|
|
189
|
+
sage: sh.defining_twist()
|
|
190
|
+
0
|
|
191
|
+
sage: twisted = sh.twist(1)
|
|
192
|
+
sage: twisted_twisted = twisted.twist(2)
|
|
193
|
+
sage: twisted_twisted.defining_twist()
|
|
194
|
+
3
|
|
195
|
+
"""
|
|
196
|
+
return type(self)(self._base_scheme, self._module, self._twist + t)
|
|
197
|
+
|
|
198
|
+
def euler_characteristic(self):
|
|
199
|
+
"""
|
|
200
|
+
Return the Euler characteristic of this coherent sheaf.
|
|
201
|
+
|
|
202
|
+
EXAMPLES::
|
|
203
|
+
|
|
204
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
205
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
206
|
+
sage: sh = X.structure_sheaf()
|
|
207
|
+
sage: sh.euler_characteristic()
|
|
208
|
+
-2
|
|
209
|
+
"""
|
|
210
|
+
d = self._base_scheme.dimension()
|
|
211
|
+
chi = 0
|
|
212
|
+
for r in range(d + 1): # for Grothendieck's vanishing theorem
|
|
213
|
+
d = self.cohomology(r)
|
|
214
|
+
if r % 2:
|
|
215
|
+
chi = chi - d
|
|
216
|
+
else:
|
|
217
|
+
chi = chi + d
|
|
218
|
+
return chi
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class CoherentSheaf_on_projective_space(CoherentSheaf):
|
|
222
|
+
r"""
|
|
223
|
+
Coherent sheaf on a projective space.
|
|
224
|
+
|
|
225
|
+
EXAMPLES::
|
|
226
|
+
|
|
227
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
228
|
+
sage: P2.structure_sheaf()
|
|
229
|
+
Coherent sheaf on Projective Space of dimension 2 over Rational Field
|
|
230
|
+
"""
|
|
231
|
+
@cached_property
|
|
232
|
+
def _cohomology(self):
|
|
233
|
+
"""
|
|
234
|
+
This property keeps the cohomology object for this sheaf.
|
|
235
|
+
|
|
236
|
+
EXAMPLES::
|
|
237
|
+
|
|
238
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
239
|
+
sage: P2.structure_sheaf()._cohomology
|
|
240
|
+
Maruyama Method using S(0) <-- 0
|
|
241
|
+
"""
|
|
242
|
+
from sage.schemes.projective.cohomology import MaruyamaMethod
|
|
243
|
+
return MaruyamaMethod(self._module, twist=self._twist)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
class CoherentSheaf_on_projective_subscheme(CoherentSheaf):
|
|
247
|
+
r"""
|
|
248
|
+
Coherent sheaf on a projective subscheme.
|
|
249
|
+
|
|
250
|
+
EXAMPLES::
|
|
251
|
+
|
|
252
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
253
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
254
|
+
sage: X.structure_sheaf()
|
|
255
|
+
Coherent sheaf on Closed subscheme of Projective Space of dimension 2
|
|
256
|
+
over Rational Field defined by: x^4 + y^4 + z^4
|
|
257
|
+
"""
|
|
258
|
+
@cached_property
|
|
259
|
+
def _cohomology(self):
|
|
260
|
+
"""
|
|
261
|
+
This property keeps the cohomology object for this sheaf.
|
|
262
|
+
|
|
263
|
+
EXAMPLES::
|
|
264
|
+
|
|
265
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
266
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
267
|
+
sage: X.structure_sheaf()._cohomology
|
|
268
|
+
Maruyama Method using S(0) <-- S(-4) <-- 0
|
|
269
|
+
"""
|
|
270
|
+
return self.image_to_ambient_space()._cohomology
|
|
271
|
+
|
|
272
|
+
def image_to_ambient_space(self):
|
|
273
|
+
"""
|
|
274
|
+
Return the direct image of this sheaf to the ambient space.
|
|
275
|
+
|
|
276
|
+
The image is with respect to the inclusion morphism from the base
|
|
277
|
+
scheme into the projective space.
|
|
278
|
+
|
|
279
|
+
INPUT:
|
|
280
|
+
|
|
281
|
+
- ``twist`` -- (default: `0`) an integer
|
|
282
|
+
|
|
283
|
+
EXAMPLES::
|
|
284
|
+
|
|
285
|
+
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
|
|
286
|
+
sage: X = P2.subscheme(x^4 + y^4 + z^4)
|
|
287
|
+
sage: X.structure_sheaf().image_to_ambient_space()
|
|
288
|
+
Coherent sheaf on Projective Space of dimension 2 over Rational Field
|
|
289
|
+
"""
|
|
290
|
+
X = self._base_scheme
|
|
291
|
+
A = X.ambient_space()
|
|
292
|
+
S = A.coordinate_ring()
|
|
293
|
+
|
|
294
|
+
d = self._module.degree()
|
|
295
|
+
M = FreeModule(S, d)
|
|
296
|
+
I = X.defining_polynomials()
|
|
297
|
+
J = self._module.relations().gens()
|
|
298
|
+
G = [f * M.gen(i) for i in range(d) for f in I] + [v.change_ring(S) for v in J]
|
|
299
|
+
N = M.submodule(G)
|
|
300
|
+
return A.coherent_sheaf(M.quotient(N), twist=self._twist)
|