Skip to content

commalg · KahlerDifferentials

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

Worked example

The complete checked program Differentiate exactly and distinguish a cusp's smooth and singular points uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Differentiate exactly and distinguish a cusp's smooth and singular points."""

from noether import Q
from noether.commalg import KahlerDifferentials, PolynomialRing


def main() -> None:
    ring = PolynomialRing(Q, ["x", "y"])
    x, y = ring.generators()
    relation = y**2 - x**3
    cusp = ring.quotient(ring.ideal([relation]))
    omega = cusp.kahler_differentials()

    assert isinstance(omega, KahlerDifferentials)
    dx = omega.differentiate(cusp(x))
    dy = omega.differentiate(cusp(y))
    assert omega.differentiate(cusp(x * y)) == dx * cusp(y) + dy * cusp(x)
    assert omega.differentiate(cusp(relation)).is_zero()

    singular = cusp.cotangent_space_at([0, 0])
    smooth = cusp.cotangent_space_at([1, 1])
    assert singular.embedding_dimension == 2
    assert smooth.embedding_dimension == 1
    assert singular.presentation_matrix == singular.evaluated_jacobian.transpose()

    complex = cusp.cotangent_complex()
    assert complex.codimension == 1
    assert (complex.amplitude.lowest_degree, complex.amplitude.highest_degree) == (-1, 0)
    assert complex.hypothesis.equation_count == 1
    complex.verify()

    print(
        "cusp cotangent dimensions: "
        f"singular={singular.embedding_dimension}, smooth={smooth.embedding_dimension}; "
        "complete-intersection amplitude=[-1,0]"
    )


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/39_kahler_differentials.py.

commalg.KahlerDifferentials

Exact module of Kähler differentials of an affine algebra over its field.

class KahlerDifferentials

noether::commalg::KahlerDifferentials · Direct Rust declaration

pub struct KahlerDifferentials<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/KahlerDifferentials@1

Executable usage: examples/39_kahler_differentials.py:16 · examples/39_kahler_differentials.py:6 · validation/unit/commalg/test_kahler_differentials.py:139 · validation/unit/commalg/test_kahler_differentials.py:20 · validation/unit/commalg/test_kahler_differentials.py:33

commalg.KahlerDifferentials.algebra

The affine algebra whose relative differentials this module represents.

Detailed contract

Exact affine-algebra coefficient context.

(self) -> QuotientRing[D]

noether::commalg::KahlerDifferentials::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/KahlerDifferentials@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.KahlerDifferentials.ambient_generator_count

Number of ambient coordinate differentials dx_i.

Detailed contract

Number of ambient coordinate differentials dx_i.

(self) -> int

noether::commalg::KahlerDifferentials::ambient_generator_count · Direct Rust declaration

pub fn ambient_generator_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/KahlerDifferentials@1

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

commalg.KahlerDifferentials.conormal_evidence

Replayable conormal/Jacobian evidence for this presentation.

Detailed contract

Exact conormal and Jacobian evidence behind the presentation.

(self) -> ConormalSequenceEvidence[D]

noether::commalg::KahlerDifferentials::conormal_evidence · Direct Rust declaration

pub fn conormal_evidence(&self) -> &ConormalSequenceEvidence<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/KahlerDifferentials@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:114 · validation/unit/commalg/test_kahler_differentials.py:62

commalg.KahlerDifferentials.cotangent_complex

Construct the verified two-term cotangent complex for a complete intersection.

Detailed contract

The exact two-term cotangent complex for the canonical equations when their count equals the exactly computed codimension. Polynomial rings over fields are Cohen–Macaulay, so a proper ideal generated by codimension elements is a regular sequence. Outside that proved complete-intersection lane this method fails closed.

(self) -> CotangentComplexPresentation[D]

noether::commalg::KahlerDifferentials::cotangent_complex · Direct Rust declaration

pub fn cotangent_complex( &self, ) -> Result<CotangentComplexPresentation<C>, 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/KahlerDifferentials@1

Executable usage: examples/39_kahler_differentials.py:28 · validation/unit/commalg/test_kahler_differentials.py:146 · validation/unit/commalg/test_kahler_differentials.py:92 · validation/unit/infra/test_public_api_index.py:243

commalg.KahlerDifferentials.cotangent_space_at

Construct the exact cotangent fiber at a checked field-valued point.

Detailed contract

Fiber Omega_{A/C} tensor_A C at an explicit rational or finite-field point. The point is checked against every defining equation first.

(self, point: Sequence[_Fraction | int | FiniteFieldElement]) -> CotangentSpace[D]

noether::commalg::KahlerDifferentials::cotangent_space_at · Direct Rust declaration

pub fn cotangent_space_at( &self, point: Vec<C::Element>, ) -> Result<CotangentSpace<C>, 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/KahlerDifferentials@1

Executable usage: examples/39_kahler_differentials.py:22 · examples/39_kahler_differentials.py:23 · validation/unit/commalg/test_kahler_differentials.py:115 · validation/unit/commalg/test_kahler_differentials.py:132 · validation/unit/commalg/test_kahler_differentials.py:134 · validation/unit/commalg/test_kahler_differentials.py:144

commalg.KahlerDifferentials.differentiate

Apply the universal derivation to a class in the affine algebra.

Detailed contract

Universal derivation of one quotient element.

(self, value: QuotientElement[D]) -> KahlerDifferential[D]

noether::commalg::KahlerDifferentials::differentiate · Direct Rust declaration

pub fn differentiate( &self, value: &QuotientElement<PolynomialRing<C>>, ) -> Result<KahlerDifferential<C>, 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/KahlerDifferentials@1

Executable usage: examples/39_kahler_differentials.py:17 · examples/39_kahler_differentials.py:18 · examples/39_kahler_differentials.py:19 · examples/39_kahler_differentials.py:20 · validation/unit/commalg/test_kahler_differentials.py:113 · validation/unit/commalg/test_kahler_differentials.py:142

commalg.KahlerDifferentials.differentiate_polynomial

Differentiate an ambient polynomial, then descend to the quotient.

Detailed contract

Derive an ambient polynomial and project the result to Omega_{A/C}.

(self, value: Polynomial[D]) -> KahlerDifferential[D]

noether::commalg::KahlerDifferentials::differentiate_polynomial · Direct Rust declaration

pub fn differentiate_polynomial( &self, value: &Polynomial<C>, ) -> Result<KahlerDifferential<C>, 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/KahlerDifferentials@1

Executable usage: validation/unit/commalg/test_kahler_differentials.py:137 · validation/unit/commalg/test_kahler_differentials.py:178 · validation/unit/commalg/test_kahler_differentials.py:179 · validation/unit/commalg/test_kahler_differentials.py:181 · validation/unit/commalg/test_kahler_differentials.py:182 · validation/unit/commalg/test_kahler_differentials.py:31

commalg.KahlerDifferentials.from_json

Deserialize and verify an exact construction over Q or a finite field.

Detailed contract

Deserialize and exactly reconstruct Omega_{A/C}.

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

noether::commalg::KahlerDifferentials::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/KahlerDifferentials@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.KahlerDifferentials.module

The exact finitely presented A-module Omega_{A/k}.

Detailed contract

Retained finite presentation of Omega_{A/C}.

(self) -> PresentedModule[QuotientRing[RationalField]] | PresentedModule[QuotientRing[FiniteField]]

noether::commalg::KahlerDifferentials::module · Direct Rust declaration

pub fn module(&self) -> &PresentedModule<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/KahlerDifferentials@1

Executable usage: examples/30_modules_and_resolutions.py:3 · examples/30_modules_and_resolutions.py:51 · examples/40_exterior_algebra.py:13 · examples/40_exterior_algebra.py:14 · examples/40_exterior_algebra.py:20 · examples/40_exterior_algebra.py:21

commalg.KahlerDifferentials.to_json

Serialize the complete exact construction as canonical typed JSON.

Detailed contract

Serialize the affine algebra; deserialization reconstructs and reverifies all conormal and module-Gröbner evidence.

(self) -> str

noether::commalg::KahlerDifferentials::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/KahlerDifferentials@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.KahlerDifferentials.verify

Replay all context, conormal, and presentation checks.

Detailed contract

Recompute the conormal presentation, module basis, and the fact that every chosen defining equation derives to zero in the cokernel.

(self) -> None

noether::commalg::KahlerDifferentials::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/KahlerDifferentials@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

commalg.KahlerDifferentials.zero

The zero differential in this module.

Detailed contract

The zero differential class.

(self) -> KahlerDifferential[D]

noether::commalg::KahlerDifferentials::zero · Direct Rust declaration

pub fn zero(&self) -> KahlerDifferential<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/KahlerDifferentials@1

Executable usage: examples/08_finite_field_extensions.py:11 · examples/10_padic_hensel_lifting.py:15 · examples/40_exterior_algebra.py:26 · examples/distributed/f2_linear_algebra.py:28 · examples/distributed/f2_linear_algebra.py:29 · examples/distributed/f2_linear_algebra.py:30