Skip to content

topology · SimplicialMorseReduction

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

Worked example

The complete checked program Reduce a finite Poset and its order complex with replayable evidence uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Reduce a finite Poset and its order complex with replayable evidence."""

from noether import Z
from noether.combin import Poset


def main() -> None:
    chain = Poset(4, [(0, 1), (1, 2), (2, 3)])
    core = chain.core()
    core.verify(chain)
    assert core.core.order == 1

    order_complex = chain.order_complex()
    morse = order_complex.morse_reduction(Z)
    morse.verify()
    assert sum(morse.critical_cells) == 1
    assert morse.reduced.homology_invariants(0).free_rank == 1
    print(
        f"Poset order {chain.order} -> core order {core.core.order}; "
        f"Morse cells {morse.original_cells} -> {morse.critical_cells}"
    )


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/32_poset_core_and_morse.py.

topology.SimplicialMorseReduction

Verified critical-cell chain model of a simplicial complex.

class SimplicialMorseReduction

noether::topology::SimplicialMorseReduction · Direct Rust declaration

pub struct SimplicialMorseReduction<R: Ring> { /* 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: validation/unit/topology/test_simplicial_complex_facade.py:208 · validation/unit/topology/test_simplicial_complex_facade.py:23

topology.SimplicialMorseReduction.critical_cells

Number of critical cells in each simplicial dimension.

(self) -> list[int]

noether::topology::SimplicialMorseReduction::critical_cells · Direct Rust declaration

pub fn critical_cells(&self) -> Vec<usize>
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/32_poset_core_and_morse.py:18 · examples/32_poset_core_and_morse.py:22 · validation/unit/topology/test_simplicial_complex_facade.py:211

topology.SimplicialMorseReduction.matched_pairs

Number of matched face/coface pairs.

(self) -> int

noether::topology::SimplicialMorseReduction::matched_pairs · Direct Rust declaration

pub fn matched_pairs(&self) -> usize
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:212

topology.SimplicialMorseReduction.original_cells

Number of nonempty simplices before reduction.

(self) -> int

noether::topology::SimplicialMorseReduction::original_cells · Direct Rust declaration

pub fn original_cells(&self) -> usize
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/32_poset_core_and_morse.py:22 · validation/unit/topology/test_simplicial_complex_facade.py:210

topology.SimplicialMorseReduction.reduced

Chain complex generated by critical cells.

Detailed contract

Chain complex generated by the critical cells.

(self) -> ChainComplex[_CoefficientContext]

noether::topology::SimplicialMorseReduction::reduced · Direct Rust declaration

pub const fn reduced(&self) -> &ChainComplex<R>
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/16_rational_functions.py:14 · examples/16_rational_functions.py:15 · examples/16_rational_functions.py:16 · examples/16_rational_functions.py:17 · examples/32_poset_core_and_morse.py:19 · examples/distributed/f2_linear_algebra.py:50

topology.SimplicialMorseReduction.source

Source simplicial complex.

(self) -> SimplicialComplex

noether::topology::SimplicialMorseReduction::source · Direct Rust declaration

pub const fn source(&self) -> &SimplicialComplex
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/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

topology.SimplicialMorseReduction.verify

Recheck the acyclic matching and Morse boundary.

Detailed contract

Recheck the matching, its acyclicity order, and the Morse boundary.

(self) -> None

noether::topology::SimplicialMorseReduction::verify · Direct Rust declaration

pub fn verify(&self) -> Result<(), VerificationError>
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: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