Skip to content

topology · AdmissibleCohomologyOperation

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

Worked example

The complete checked program Compute the mod-two cohomology ring of RP2 and its Steenrod square uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Compute the mod-two cohomology ring of RP2 and its Steenrod square."""

from noether.numthy import FiniteField
from noether.topology import AdmissibleCohomologyOperation, SimplicialComplex


def main() -> None:
    projective_plane = SimplicialComplex(
        [
            [0, 1, 2],
            [0, 1, 4],
            [0, 2, 3],
            [0, 3, 5],
            [0, 4, 5],
            [1, 2, 5],
            [1, 3, 4],
            [1, 3, 5],
            [2, 3, 4],
            [2, 4, 5],
        ]
    )
    cohomology = projective_plane.cohomology_ring(FiniteField.prime(2))
    cohomology.verify()
    assert [basis.degree for basis in cohomology.basis] == [0, 1, 2]
    assert cohomology.product(1, 1)[0].basis == 2

    square = AdmissibleCohomologyOperation.steenrod_square(1)
    image = cohomology.apply_operation(square, 1)
    assert image[0].basis == 2 and int(image[0].coefficient) == 1
    print(f"H*(RP2; F2) degrees={[basis.degree for basis in cohomology.basis]}; Sq^1(h)=h^2")


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/33_simplicial_cohomology_operations.py.

topology.AdmissibleCohomologyOperation

A checked admissible word in the mod-p Steenrod algebra.

class AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation · Direct Rust declaration

pub struct AdmissibleCohomologyOperation { /* private fields */ }
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/33_simplicial_cohomology_operations.py:29 · examples/33_simplicial_cohomology_operations.py:6 · validation/unit/topology/test_simplicial_complex_facade.py:17 · validation/unit/topology/test_simplicial_complex_facade.py:195 · validation/unit/topology/test_simplicial_set_facade.py:17 · validation/unit/topology/test_simplicial_set_facade.py:191

topology.AdmissibleCohomologyOperation.bockstein_reduced_power

Construct a AdmissibleCohomologyOperation using bockstein reduced power.

Detailed contract

The single operation beta P^power; beta P^0 is normalized to beta.

(prime: int, power: int) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::bockstein_reduced_power · Direct Rust declaration

pub fn bockstein_reduced_power( prime: u64, power: u32, ) -> Result<Self, TopologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/infra/test_discovery.py:141 · validation/unit/infra/test_discovery.py:149 · validation/unit/topology/test_simplicial_set_facade.py:186 · validation/unit/topology/test_simplicial_set_facade.py:190 · validation/unit/topology/test_simplicial_set_facade.py:191

topology.AdmissibleCohomologyOperation.bocksteins

Return the bocksteins recorded by this AdmissibleCohomologyOperation.

Detailed contract

Odd-primary Bockstein exponents, or None at the prime two.

(self) -> list[bool] | None

noether::topology::AdmissibleCohomologyOperation::bocksteins · Direct Rust declaration

pub fn bocksteins(&self) -> Option<&[bool]>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:247 · validation/unit/topology/test_eilenberg_maclane.py:264

topology.AdmissibleCohomologyOperation.degree_shift

Return the degree shift recorded by this AdmissibleCohomologyOperation.

Detailed contract

Total cohomological degree shift.

(self) -> int

noether::topology::AdmissibleCohomologyOperation::degree_shift · Direct Rust declaration

pub fn degree_shift(&self) -> u32
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

topology.AdmissibleCohomologyOperation.display_name

Return the display name recorded by this AdmissibleCohomologyOperation.

Detailed contract

Canonical plain-text mathematical notation.

(self) -> str

noether::topology::AdmissibleCohomologyOperation::display_name · Direct Rust declaration

pub fn display_name(&self) -> String
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/35_eilenberg_maclane_spaces.py:23 · validation/unit/homalg/test_finite_group_cohomology.py:203 · validation/unit/homalg/test_finite_group_cohomology.py:205 · validation/unit/topology/test_eilenberg_maclane.py:160 · validation/unit/topology/test_eilenberg_maclane.py:167 · validation/unit/topology/test_eilenberg_maclane.py:202

topology.AdmissibleCohomologyOperation.excess

Return the excess recorded by this AdmissibleCohomologyOperation.

Detailed contract

Classical excess of the admissible word.

(self) -> int

noether::topology::AdmissibleCohomologyOperation::excess · Direct Rust declaration

pub fn excess(&self) -> u32
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

topology.AdmissibleCohomologyOperation.from_json

Deserialize and revalidate a AdmissibleCohomologyOperation from typed JSON.

(cls, value: str) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation · 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, geom-core, m4rst, m4rste
GIL attached / bounded

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

topology.AdmissibleCohomologyOperation.identity

Construct a AdmissibleCohomologyOperation using identity.

Detailed contract

The identity operation at the indicated prime.

(prime: int) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::identity · Direct Rust declaration

pub fn identity(prime: u64) -> Result<Self, TopologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/01_bezout_certificates.py:10 · examples/01_bezout_certificates.py:12 · examples/01_bezout_certificates.py:14 · examples/01_bezout_certificates.py:9 · examples/02_ball_arithmetic.py:3 · examples/distributed/f2_linear_algebra.py:20

topology.AdmissibleCohomologyOperation.is_identity

Test whether this AdmissibleCohomologyOperation is identity.

Detailed contract

Whether this is the identity operation.

(self) -> bool

noether::topology::AdmissibleCohomologyOperation::is_identity · Direct Rust declaration

pub fn is_identity(&self) -> bool
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/26_elliptic_descent_functions.py:39 · validation/unit/groups/test_acceptance_workload.py:103 · validation/unit/numthy/test_elliptic_curve_facade.py:108 · validation/unit/numthy/test_elliptic_curve_facade.py:93 · validation/corpus/groups/hurwitz-degree-nine-generating-triple.py:20

topology.AdmissibleCohomologyOperation.mod_two

Construct a AdmissibleCohomologyOperation using mod two.

Detailed contract

Construct an admissible mod-two word Sq^{i_1} ... Sq^{i_r}.

(sequence: list[int]) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::mod_two · Direct Rust declaration

pub fn mod_two(sequence: impl Into<Vec<u32>>) -> Result<Self, TopologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/topology/test_simplicial_complex_facade.py:231 · validation/unit/topology/test_simplicial_complex_facade.py:240

topology.AdmissibleCohomologyOperation.odd_primary

Construct a AdmissibleCohomologyOperation using odd primary.

Detailed contract

Construct an admissible odd-primary word. bocksteins has length reduced_powers.len() + 1 and records the exponents e_0, ..., e_r in beta^{e_0} P^{s_1} ... P^{s_r} beta^{e_r}.

(prime: int, bocksteins: list[bool], reduced_powers: list[int]) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::odd_primary · Direct Rust declaration

pub fn odd_primary( prime: u64, bocksteins: impl Into<Vec<bool>>, reduced_powers: impl Into<Vec<u32>>, ) -> Result<Self, TopologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:240 · validation/unit/topology/test_eilenberg_maclane.py:241

topology.AdmissibleCohomologyOperation.prime

Return the prime recorded by this AdmissibleCohomologyOperation.

Detailed contract

Coefficient characteristic on which this operation is defined.

(self) -> int

noether::topology::AdmissibleCohomologyOperation::prime · Direct Rust declaration

pub const fn prime(&self) -> u64
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/07_integer_factorization.py:12 · examples/12_number_field_ideals.py:16 · examples/12_number_field_ideals.py:19 · examples/18_finite_field_schemes.py:10 · examples/24_homology_and_persistence.py:22 · examples/33_simplicial_cohomology_operations.py:24

topology.AdmissibleCohomologyOperation.reduced_power

Construct a AdmissibleCohomologyOperation using reduced power.

Detailed contract

The single operation P^power, with P^0 normalized to identity.

(prime: int, power: int) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::reduced_power · Direct Rust declaration

pub fn reduced_power(prime: u64, power: u32) -> Result<Self, TopologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

topology.AdmissibleCohomologyOperation.reduced_powers

Return the reduced powers recorded by this AdmissibleCohomologyOperation.

Detailed contract

Odd-primary reduced-power indices, or None at the prime two.

(self) -> list[int] | None

noether::topology::AdmissibleCohomologyOperation::reduced_powers · Direct Rust declaration

pub fn reduced_powers(&self) -> Option<&[u32]>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:248 · validation/unit/topology/test_eilenberg_maclane.py:265

topology.AdmissibleCohomologyOperation.square_sequence

Return the square sequence recorded by this AdmissibleCohomologyOperation.

Detailed contract

The mod-two admissible sequence, or None at an odd prime.

(self) -> list[int] | None

noether::topology::AdmissibleCohomologyOperation::square_sequence · Direct Rust declaration

pub fn square_sequence(&self) -> Option<&[u32]>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:210 · validation/unit/topology/test_eilenberg_maclane.py:224

topology.AdmissibleCohomologyOperation.steenrod_square

Construct a AdmissibleCohomologyOperation using steenrod square.

Detailed contract

The single operation Sq^square, with Sq^0 normalized to identity.

(square: int) -> AdmissibleCohomologyOperation

noether::topology::AdmissibleCohomologyOperation::steenrod_square · Direct Rust declaration

pub fn steenrod_square(square: u32) -> Self
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded

Executable usage: examples/33_simplicial_cohomology_operations.py:29 · validation/unit/infra/test_discovery.py:139 · validation/unit/infra/test_discovery.py:147 · validation/unit/topology/test_simplicial_complex_facade.py:171 · validation/unit/topology/test_simplicial_complex_facade.py:192 · validation/unit/topology/test_simplicial_complex_facade.py:193

topology.AdmissibleCohomologyOperation.to_json

Serialize this AdmissibleCohomologyOperation to its canonical typed JSON representation.

(self) -> str

noether::topology::AdmissibleCohomologyOperation · 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, geom-core, m4rst, m4rste
GIL attached / bounded

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