Skip to content

combin · SymmetricFunction

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

Worked example

The complete checked program Reproduce Fisher's order-five elliptic-function normalization uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Reproduce Fisher's order-five elliptic-function normalization."""

from noether import Q
from noether.commalg import RationalFunctionField, WeilDivisor
from noether.numthy import EllipticCurve, NthPowerClassGroup


def main() -> None:
    coefficients = RationalFunctionField(Q, "lambda")
    parameter = coefficients.generator()
    curve = EllipticCurve(
        coefficients,
        [1 - parameter, -parameter, -parameter, 0, 0],
    )
    point = curve.point(0, 0)
    point.verify_exact_order(5)

    miller = curve.miller_function(point, 5)
    divisor = WeilDivisor(
        curve.underlying_curve,
        [
            (curve.origin().underlying_curve_point.as_closed_point(), 5),
            (point.underlying_curve_point.as_closed_point(), -5),
        ],
    )
    function = divisor.riemann_roch_space().basis[0]
    assert (function / miller.function).as_constant() is not None

    evaluation_at_two = function.evaluate_at((2 * point).underlying_curve_point)
    evaluation_at_four = function.evaluate_at((4 * point).underlying_curve_point)
    assert evaluation_at_two.value is not None
    assert evaluation_at_four.value is not None
    classes = NthPowerClassGroup(coefficients, 5)
    normalization = classes.class_of(evaluation_at_two.value) ** -2 * classes.class_of(
        evaluation_at_four.value
    )
    assert normalization.is_identity()
    print("order 5 verified; Riemann--Roch and Miller agree; normalization is trivial")


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/26_elliptic_descent_functions.py.

combin.SymmetricFunction

A thin Python handle around Noether's exact rational symmetric function.

SymmetricFunction(basis: SymmetricBasis, terms: Sequence[SymmetricTerm])

noether::combin::SymmetricFunction · Direct Rust declaration

pub struct SymmetricFunction { /* private fields */ }
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: validation/unit/combin/test_acceptance_workload.py:17 · validation/unit/combin/test_acceptance_workload.py:40 · validation/unit/combinatorics/test_partition_types.py:18 · validation/unit/combinatorics/test_partition_types.py:31 · validation/unit/combinatorics/test_partition_types.py:34 · validation/unit/combinatorics/test_partition_types.py:46

combin.SymmetricFunction.__add__

Add another compatible value to this value.

Detailed contract

Add homogeneous values, returning the result in self’s basis. Returns the argument unchanged.

(self, rhs: SymmetricFunction) -> SymmetricFunction

noether::combin::SymmetricFunction::add · Direct Rust declaration

pub fn add(&self, rhs: &Self) -> Result<Self, CombinError>
fn add(self, rhs: &SymmetricFunction) -> Self::Output
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: validation/unit/infra/test_discovery.py:211 · validation/unit/infra/test_public_api_index.py:293

combin.SymmetricFunction.__eq__

Test mathematical equality with another value.

(self, other: object) -> bool

noether::combin::SymmetricFunction · 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, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

combin.SymmetricFunction.__mul__

Multiply this value by another compatible value.

Detailed contract

Multiply values in the symmetric-function ring, returning self’s basis.

(self, rhs: SymmetricFunction) -> SymmetricFunction

noether::combin::SymmetricFunction::mul · Direct Rust declaration

pub fn mul(&self, rhs: &Self) -> Result<Self, CombinError>
fn mul(self, rhs: &SymmetricFunction) -> Self::Output
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: validation/unit/infra/test_public_api_index.py:214

combin.SymmetricFunction.__sub__

Subtract another compatible value from this value.

Detailed contract

Subtract homogeneous values, returning the result in self’s basis.

(self, rhs: SymmetricFunction) -> SymmetricFunction

noether::combin::SymmetricFunction::sub · Direct Rust declaration

pub fn sub(&self, rhs: &Self) -> Result<Self, CombinError>
fn sub(self, rhs: &SymmetricFunction) -> Self::Output
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: validation/unit/infra/test_discovery.py:212

combin.SymmetricFunction.basis

Canonical basis label.

Detailed contract

The classical basis used by this representation.

(self) -> SymmetricBasis

noether::combin::SymmetricFunction::basis · Direct Rust declaration

pub const fn basis(&self) -> SymmetricBasis
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: examples/26_elliptic_descent_functions.py:28 · examples/30_modules_and_resolutions.py:27 · examples/30_modules_and_resolutions.py:28 · examples/30_modules_and_resolutions.py:29 · examples/33_simplicial_cohomology_operations.py:26 · examples/33_simplicial_cohomology_operations.py:27

combin.SymmetricFunction.convert_basis

Re-express this value exactly in another classical basis.

(self, basis: SymmetricBasis) -> SymmetricFunction

noether::combin::SymmetricFunction::convert_basis · Direct Rust declaration

pub fn convert_basis(&self, basis: SymmetricBasis) -> Result<Self, CombinError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: validation/unit/combinatorics/test_partition_types.py:35 · validation/unit/combinatorics/test_partition_types.py:40 · validation/parity/combinatorics/test_symmetric_functions_parity.py:90

combin.SymmetricFunction.degree

Homogeneous degree, or None for zero.

Detailed contract

Homogeneous degree, or None for zero.

(self) -> int | None

noether::combin::SymmetricFunction::degree · Direct Rust declaration

pub const fn degree(&self) -> Option<usize>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: examples/14_weighted_polynomials.py:16 · examples/14_weighted_polynomials.py:18 · examples/15_groebner_twisted_cubic.py:15 · examples/15_groebner_twisted_cubic.py:28 · examples/31_local_fields_and_precision.py:37 · examples/33_simplicial_cohomology_operations.py:26

combin.SymmetricFunction.from_json

Deserialize and revalidate partitions, coefficients, and homogeneity.

(value: str) -> SymmetricFunction

noether::combin::SymmetricFunction · 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, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@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

combin.SymmetricFunction.terms

Immutable (Partition, Fraction) terms in deterministic order.

Detailed contract

Nonzero exact terms in deterministic partition order.

(self) -> tuple[tuple[Partition, Fraction], ...]

noether::combin::SymmetricFunction::terms · Direct Rust declaration

pub fn terms(&self) -> impl ExactSizeIterator<Item = (&Partition, &Rational)>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@1

Executable usage: examples/07_integer_factorization.py:14 · examples/40_exterior_algebra.py:43 · validation/unit/combin/test_acceptance_workload.py:45 · validation/unit/combin/test_acceptance_workload.py:81 · validation/unit/combinatorics/test_boundary.py:31 · validation/unit/combinatorics/test_boundary.py:44

combin.SymmetricFunction.to_json

Serialize the basis and typed exact terms.

(self) -> str

noether::combin::SymmetricFunction · 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, graph-core, perm-core
GIL attached / bounded
Semantic ID noether/combin/SymmetricFunction@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