Skip to content

commalg · CotangentSpace

14 accepted declarations. Python and Rust forms, contracts, evidence, failure boundaries, and checked usages are kept together below.

Worked example

The complete checked program Compute in an exterior algebra and induce a linear map on two-forms uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Compute in an exterior algebra and induce a linear map on two-forms."""

from noether import Q
from noether.commalg import PolynomialRing
from noether.homalg import FreeModule, ModuleElement, ModuleHomomorphism
from noether.linalg import Matrix, Vector


def main() -> None:
    ring = PolynomialRing(Q, ["t"])
    module = FreeModule(ring, 3, basis_labels=["e0", "e1", "e2"])
    exterior = module.exterior_algebra()
    e0, e1, e2 = [exterior.generator(position) for position in range(3)]

    volume = e0 * e1 * e2
    assert volume == exterior.alternating_product(
        [
            ModuleElement(module, Vector.from_values(ring, [1, 0, 0])),
            ModuleElement(module, Vector.from_values(ring, [0, 1, 0])),
            ModuleElement(module, Vector.from_values(ring, [0, 0, 1])),
        ]
    )
    assert e1 * e0 == -(e0 * e1)
    assert e0 * e0 == exterior.zero()

    e0_dual = ModuleElement(module.dual(), Vector.from_values(ring, [1, 0, 0]))
    assert volume.contract(e0_dual) == e1 * e2

    linear_map = ModuleHomomorphism(
        module,
        module,
        Matrix.from_rows(ring, [[1, 1, 0], [0, 1, 0], [0, 0, 2]]),
    )
    on_two_forms = linear_map.exterior_power(2)
    on_two_forms.verify()
    assert on_two_forms.apply_exterior(e1 * e2) == 2 * (e0 * e2 + e1 * e2)
    print(
        "Λ² has basis",
        exterior.basis(2),
        "and the induced map sends e1∧e2 to",
        on_two_forms.apply_exterior(e1 * e2).terms,
    )


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/40_exterior_algebra.py.

commalg.CotangentSpace

Exact cotangent fiber at a checked coefficient-field point.

class CotangentSpace

noether::commalg::CotangentSpace · Direct Rust declaration

pub struct CotangentSpace<C: Field> { /* private fields */ }
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:145 · validation/unit/commalg/test_kahler_differentials.py:18 · validation/unit/commalg/test_kahler_differentials.py:44

commalg.CotangentSpace.algebra

The affine algebra whose point defines this cotangent fiber.

Detailed contract

Affine algebra whose point is being studied.

(self) -> QuotientRing[D]

noether::commalg::CotangentSpace::algebra · Direct Rust declaration

pub fn algebra(&self) -> &QuotientRing<PolynomialRing<C>>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/40_exterior_algebra.py:3 · examples/distributed/f2_linear_algebra.py:3 · validation/unit/commalg/test_acceptance_workload.py:3 · validation/unit/commalg/test_construction_algebras.py:41 · validation/unit/commalg/test_construction_algebras.py:71 · validation/unit/commalg/test_construction_algebras.py:72

commalg.CotangentSpace.ambient_coordinate_count

Number of coordinates in the chosen ambient affine space.

Detailed contract

Number of affine coordinates before imposing differential relations.

(self) -> int

noether::commalg::CotangentSpace::ambient_coordinate_count · Direct Rust declaration

pub fn ambient_coordinate_count(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:47

commalg.CotangentSpace.coefficient_field

The exact coefficient field of the point and presentation matrix.

(self) -> D

noether::commalg::CotangentSpace · Python projection

Python projection convenience over this Rust mathematical type
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/linalg/test_semilinear_facade.py:53 · validation/unit/numthy/test_padic_local_field_facade.py:49 · validation/unit/numthy/test_padic_local_field_facade.py:78 · validation/unit/numthy/test_qadic_field_facade.py:145 · validation/unit/numthy/test_qadic_field_facade.py:146 · validation/unit/numthy/test_qadic_field_facade.py:31

commalg.CotangentSpace.embedding_dimension

Dimension of m_p/m_p^2, computed as n - rank(J(p)).

Detailed contract

Exact dimension of the cotangent fiber over the coefficient field.

(self) -> int

noether::commalg::CotangentSpace::embedding_dimension · Direct Rust declaration

pub fn embedding_dimension(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/39_kahler_differentials.py:24 · examples/39_kahler_differentials.py:25 · examples/39_kahler_differentials.py:36 · validation/unit/commalg/test_kahler_differentials.py:115 · validation/unit/commalg/test_kahler_differentials.py:48 · validation/unit/commalg/test_kahler_differentials.py:72

commalg.CotangentSpace.evaluated_jacobian

The exact Jacobian J(p) evaluated at the point.

Detailed contract

Evaluated Jacobian, with equations as rows and variables as columns.

(self) -> Matrix[D]

noether::commalg::CotangentSpace::evaluated_jacobian · Direct Rust declaration

pub fn evaluated_jacobian(&self) -> &Matrix<C>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/39_kahler_differentials.py:26 · validation/unit/commalg/test_kahler_differentials.py:70 · validation/unit/commalg/test_kahler_differentials.py:85 · validation/unit/commalg/test_kahler_differentials.py:86 · validation/parity/commalg/test_kahler_differentials_sage_parity.py:109 · validation/parity/commalg/test_kahler_differentials_sage_parity.py:131

commalg.CotangentSpace.from_json

Deserialize and verify an exact cotangent fiber.

Detailed contract

Deserialize and recheck an explicit point and its cotangent fiber.

(cls, value: str) -> CotangentSpace[RationalField] | CotangentSpace[FiniteField]

noether::commalg::CotangentSpace::from_json · Direct Rust declaration

pub fn from_json(value: &str) -> Result<Self, NoetherError>where C: for<'de> Deserialize<'de>, C::Element: for<'de> Deserialize<'de>,
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL released
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/category/test_category.py:14 · validation/unit/combin/test_acceptance_workload.py:65 · validation/unit/combin/test_acceptance_workload.py:86 · validation/unit/combin/test_graph_facade.py:106 · validation/unit/combin/test_graph_facade.py:25 · validation/unit/combinatorics/test_kashiwara_crystal.py:32

commalg.CotangentSpace.has_embedding_dimension

Test an expected embedding dimension without making a smoothness claim.

Detailed contract

Whether the exact cotangent fiber has the supplied embedding dimension. This is only an equality test on the computed vector-space dimension. It does not claim smoothness or regularity: such a conclusion also needs independently established local dimension and the appropriate field hypotheses.

(self, expected: int) -> bool

noether::commalg::CotangentSpace::has_embedding_dimension · Direct Rust declaration

pub fn has_embedding_dimension( &self, expected_embedding_dimension: usize, ) -> bool
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:89 · validation/unit/commalg/test_kahler_differentials.py:90

commalg.CotangentSpace.jacobian_rank

Rank of J(p) over the coefficient field.

Detailed contract

Rank of the evaluated Jacobian over the exact coefficient field.

(self) -> int

noether::commalg::CotangentSpace::jacobian_rank · Direct Rust declaration

pub fn jacobian_rank(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:46 · validation/bench/magma_release.py:1843

commalg.CotangentSpace.maximal_ideal_generators

Return the ambient polynomials x_i - p_i generating the point ideal.

Detailed contract

Generators x_i-a_i of the explicit point’s maximal ideal.

(self) -> list[Polynomial[D]]

noether::commalg::CotangentSpace::maximal_ideal_generators · Direct Rust declaration

pub fn maximal_ideal_generators( &self, ) -> Result<Vec<Polynomial<C>>, PolynomialError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL released
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:73

commalg.CotangentSpace.point

Coordinates of the checked field-valued point.

Detailed contract

Explicit point coordinates in polynomial-variable order.

(self) -> list[_Fraction | FiniteFieldElement]

noether::commalg::CotangentSpace::point · Direct Rust declaration

pub fn point(&self) -> &[C::Element]
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/26_elliptic_descent_functions.py:17 · examples/26_elliptic_descent_functions.py:18 · examples/26_elliptic_descent_functions.py:20 · examples/26_elliptic_descent_functions.py:25 · examples/26_elliptic_descent_functions.py:31 · examples/26_elliptic_descent_functions.py:32

commalg.CotangentSpace.presentation_matrix

Matrix J(p)^T presenting this fiber as a cokernel over its field.

Detailed contract

Presentation matrix J(p)^T whose cokernel is the cotangent fiber.

(self) -> Matrix[D]

noether::commalg::CotangentSpace::presentation_matrix · Direct Rust declaration

pub fn presentation_matrix(&self) -> Matrix<C>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/39_kahler_differentials.py:26 · validation/unit/commalg/test_kahler_differentials.py:49 · validation/unit/commalg/test_kahler_differentials.py:71 · validation/bench/macaulay2_core.py:1521 · validation/bench/macaulay2_core.py:1537

commalg.CotangentSpace.to_json

Serialize the exact point, Jacobian, and dimension evidence as typed JSON.

Detailed contract

Serialize the algebra and point; deserialization exactly reevaluates the Jacobian, rank, and presentation.

(self) -> str

noether::commalg::CotangentSpace::to_json · Direct Rust declaration

pub fn to_json(&self) -> Result<String, NoetherError>where C: Serialize, C::Element: Serialize,
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL attached / bounded
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: validation/unit/category/test_category.py:14 · validation/unit/category/test_category.py:15 · validation/unit/combin/test_acceptance_workload.py:30 · validation/unit/combin/test_acceptance_workload.py:65 · validation/unit/combin/test_acceptance_workload.py:86 · validation/unit/combin/test_graph_facade.py:106

commalg.CotangentSpace.verify

Replay point membership, evaluation, rank, and dimension checks.

Detailed contract

Re-evaluate the point and Jacobian and compare the exact presentation.

(self) -> None

noether::commalg::CotangentSpace::verify · Direct Rust declaration

pub fn verify(&self) -> Result<(), KahlerDifferentialError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, module-core, poly-core, resolution-kernel
GIL released
Semantic ID noether/commalg/CotangentSpace@1

Executable usage: examples/01_bezout_certificates.py:10 · examples/01_bezout_certificates.py:3 · examples/03_exact_linear_systems.py:13 · examples/03_exact_linear_systems.py:3 · examples/04_smith_normal_form.py:12 · examples/06_shortest_lattice_vectors.py:12