Skip to content

commalg · NoetherNormalization

21 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.NoetherNormalization

A verified finite polynomial-subring map into an affine algebra.

class NoetherNormalization

noether::commalg::NoetherNormalization · Direct Rust declaration

pub struct NoetherNormalization<R: 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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:10 · validation/unit/commalg/test_normalization_facade.py:21 · validation/unit/commalg/test_normalization_facade.py:39 · validation/unit/commalg/test_normalization_facade.py:46

commalg.NoetherNormalization.__call__

Coerce the supplied input through this context or mathematical map.

(self, value: Polynomial[C]) -> QuotientElement[C]

noether::commalg::NoetherNormalization · 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/NoetherNormalization@1

Executable usage: validation/unit/infra/test_discovery.py:57 · validation/unit/infra/test_public_api_index.py:155 · validation/unit/infra/test_public_api_index.py:169

commalg.NoetherNormalization.algebra

Return the algebra recorded by this NoetherNormalization.

Detailed contract

Target affine algebra k[x_1,...,x_n]/I.

(self) -> QuotientRing[C]

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

pub fn algebra(&self) -> &QuotientRing<PolynomialRing<R>>
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/NoetherNormalization@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.NoetherNormalization.apply

Apply this NoetherNormalization to the supplied value.

Detailed contract

Apply the retained injective finite map to one parameter polynomial.

(self, value: Polynomial[C]) -> QuotientElement[C]

noether::commalg::NoetherNormalization::apply · Direct Rust declaration

pub fn apply( &self, value: &Polynomial<R>, ) -> Result<QuotientElement<PolynomialRing<R>>, NoetherNormalizationError>where R: Display,
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/NoetherNormalization@1

Executable usage: examples/05_sparse_exact_operators.py:16 · validation/unit/commalg/test_local_algebra.py:94 · validation/unit/commalg/test_local_algebra.py:97 · validation/unit/commalg/test_polynomial_facade.py:199 · validation/unit/commalg/test_quotient_facade.py:186 · validation/unit/groups/test_weight_characters.py:39

commalg.NoetherNormalization.coordinate_images

Return the coordinate images recorded by this NoetherNormalization.

Detailed contract

Images of all sheared coordinates as ambient polynomials before quotienting.

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

noether::commalg::NoetherNormalization::coordinate_images · Direct Rust declaration

pub fn coordinate_images(&self) -> &[Polynomial<R>]
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/NoetherNormalization@1

Executable usage: examples/36_affine_normalization.py:18 · validation/unit/commalg/test_affine_normalization_facade.py:33 · validation/unit/commalg/test_affine_normalization_facade.py:69 · validation/bench/macaulay2_normalization.py:218 · validation/bench/macaulay2_normalization.py:219 · validation/corpus/commalg/cusp-normalization-conductor.py:18

commalg.NoetherNormalization.dependent_indices

Return the dependent indices recorded by this NoetherNormalization.

Detailed contract

Complementary coordinates proved finite over the parameters.

(self) -> list[int]

noether::commalg::NoetherNormalization::dependent_indices · Direct Rust declaration

pub fn dependent_indices(&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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:25

commalg.NoetherNormalization.dimension

Return the dimension recorded by this NoetherNormalization.

Detailed contract

Krull dimension of the target affine algebra.

(self) -> int

noether::commalg::NoetherNormalization::dimension · Direct Rust declaration

pub const fn 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/NoetherNormalization@1

Executable usage: examples/03_exact_linear_systems.py:15 · examples/03_exact_linear_systems.py:16 · examples/15_groebner_twisted_cubic.py:14 · examples/15_groebner_twisted_cubic.py:28 · examples/27_weight_characters.py:25 · examples/34_finite_group_cohomology.py:13

commalg.NoetherNormalization.from_json

Deserialize and revalidate a NoetherNormalization from typed JSON.

Detailed contract

Deserialize and exactly reverify a Noether normalization.

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

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

pub fn from_json(value: &str) -> Result<Self, NoetherError>
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/NoetherNormalization@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.NoetherNormalization.module_generator_count

Return the module generator count recorded by this NoetherNormalization.

Detailed contract

Exact cardinality of the retained rectangular module generating family.

(self) -> int

noether::commalg::NoetherNormalization::module_generator_count · Direct Rust declaration

pub fn module_generator_count(&self) -> Integer
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:29 · validation/unit/commalg/test_normalization_facade.py:62 · validation/bench/macaulay2_normalization.py:431 · validation/bench/macaulay2_normalization.py:433 · validation/bench/macaulay2_normalization.py:434

commalg.NoetherNormalization.module_generator_exponents

Compute module generator exponents for this NoetherNormalization.

Detailed contract

Ambient exponent vectors for a finite spanning family over the parameter ring.

(self) -> list[list[int]]

noether::commalg::NoetherNormalization::module_generator_exponents · Direct Rust declaration

pub fn module_generator_exponents( &self, ) -> Result<Vec<Vec<Integer>>, NoetherNormalizationError>
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:30

commalg.NoetherNormalization.module_generators

Compute module generators for this NoetherNormalization.

Detailed contract

A finite family of target elements spanning the algebra over the parameters.

(self) -> list[QuotientElement[C]]

noether::commalg::NoetherNormalization::module_generators · Direct Rust declaration

pub fn module_generators( &self, ) -> Result<Vec<QuotientElement<PolynomialRing<R>>>, NoetherNormalizationError>
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:31 · validation/bench/macaulay2_core.py:2669 · validation/bench/macaulay2_core.py:2774

commalg.NoetherNormalization.parameter_images

Return the parameter images recorded by this NoetherNormalization.

Detailed contract

Images of the polynomial parameters in the target affine algebra.

(self) -> list[QuotientElement[C]]

noether::commalg::NoetherNormalization::parameter_images · Direct Rust declaration

pub fn parameter_images(&self) -> &[QuotientElement<PolynomialRing<R>>]
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:27

commalg.NoetherNormalization.parameter_indices

Return the parameter indices recorded by this NoetherNormalization.

Detailed contract

Ambient pivot coordinates used for the parameter shear chart.

(self) -> list[int]

noether::commalg::NoetherNormalization::parameter_indices · Direct Rust declaration

pub fn parameter_indices(&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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:24 · validation/unit/infra/test_macaulay2_benchmark_protocol.py:217 · validation/unit/infra/test_macaulay2_benchmark_protocol.py:218 · validation/bench/macaulay2_normalization.py:226 · validation/bench/macaulay2_normalization.py:227 · validation/bench/macaulay2_normalization.py:375

commalg.NoetherNormalization.parameter_ring

Return the parameter ring recorded by this NoetherNormalization.

Detailed contract

Polynomial parameter ring k[t_1,...,t_d].

(self) -> PolynomialRing[C]

noether::commalg::NoetherNormalization::parameter_ring · Direct Rust declaration

pub fn parameter_ring(&self) -> &PolynomialRing<R>
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:35 · validation/unit/commalg/test_normalization_facade.py:60 · validation/unit/commalg/test_normalization_facade.py:61 · validation/unit/commalg/test_normalization_facade.py:63 · validation/unit/commalg/test_polynomial_ideal_facade.py:100 · validation/unit/commalg/test_polynomial_ideal_facade.py:103

commalg.NoetherNormalization.pure_power_bounds

Return the pure power bounds recorded by this NoetherNormalization.

Detailed contract

Strict exponent bounds for dependent monomials spanning the finite module.

(self) -> list[int]

noether::commalg::NoetherNormalization::pure_power_bounds · Direct Rust declaration

pub fn pure_power_bounds(&self) -> &[Integer]
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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:28 · validation/unit/commalg/test_normalization_facade.py:44 · validation/unit/commalg/test_normalization_facade.py:55

commalg.NoetherNormalization.shear_coefficients

Return the shear coefficients recorded by this NoetherNormalization.

Detailed contract

Shear coefficients, with rows aligned to parameters and columns to dependents.

(self) -> list[list[Coefficient]]

noether::commalg::NoetherNormalization::shear_coefficients · Direct Rust declaration

pub fn shear_coefficients(&self) -> &[Vec<R::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/NoetherNormalization@1

Executable usage: validation/unit/commalg/test_normalization_facade.py:26

commalg.NoetherNormalization.source

Return the source recorded by this NoetherNormalization.

Detailed contract

Defining ideal of the affine algebra being normalized.

(self) -> Ideal[PolynomialRing[C]]

noether::commalg::NoetherNormalization::source · Direct Rust declaration

pub fn source(&self) -> &Ideal<PolynomialRing<R>>
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/NoetherNormalization@1

Executable usage: examples/09_finite_field_isomorphisms.py:11 · examples/09_finite_field_isomorphisms.py:13 · examples/09_finite_field_isomorphisms.py:9 · examples/30_modules_and_resolutions.py:34 · examples/30_modules_and_resolutions.py:37 · validation/unit/category/test_acceptance_workload.py:25

commalg.NoetherNormalization.theorem

Return the theorem recorded by this NoetherNormalization.

Detailed contract

The exact commutative-algebra theorem certified by this value.

(self) -> str

noether::commalg::NoetherNormalization::theorem · Direct Rust declaration

pub const fn theorem(&self) -> &'static str
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/NoetherNormalization@1

Executable usage: examples/13_chinese_remainder_theorem.py:3 · validation/unit/commalg/test_polynomial_ideal_facade.py:1150 · validation/unit/commalg/test_polynomial_ideal_facade.py:507 · validation/unit/commalg/test_polynomial_ideal_facade.py:583 · validation/unit/commalg/test_polynomial_ideal_facade.py:659 · validation/unit/homalg/test_module_facade.py:509

commalg.NoetherNormalization.to_json

Serialize this NoetherNormalization to its canonical typed JSON representation.

Detailed contract

Serialize the source, finite map, coordinate change, and spanning evidence.

(self) -> str

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

pub fn to_json(&self) -> Result<String, NoetherError>
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/NoetherNormalization@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.NoetherNormalization.transformed_ideal

Return the transformed ideal recorded by this NoetherNormalization.

Detailed contract

Defining ideal after the retained invertible coordinate change and block order.

(self) -> Ideal[PolynomialRing[C]]

noether::commalg::NoetherNormalization::transformed_ideal · Direct Rust declaration

pub fn transformed_ideal(&self) -> &Ideal<PolynomialRing<R>>
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/NoetherNormalization@1

commalg.NoetherNormalization.verify

Replay and verify the mathematical evidence carried by this NoetherNormalization.

Detailed contract

Independently replay the coordinate change and finite-module proof.

(self) -> None

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

pub fn verify(&self) -> Result<(), NoetherNormalizationError>
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/NoetherNormalization@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