Skip to content

topology · EilenbergMacLaneSpace

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

Worked example

The complete checked program Compute exact additive and Cartan--Serre invariants of Eilenberg--Mac Lane spaces uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Compute exact additive and Cartan--Serre invariants of Eilenberg--Mac Lane spaces."""

from noether.homalg import FinitelyGeneratedAbelianGroup
from noether.numthy import FiniteField
from noether.topology import EilenbergMacLaneSpace


def main() -> None:
    integral_space = EilenbergMacLaneSpace(FinitelyGeneratedAbelianGroup(2), 2)
    homology = integral_space.integral_homology(6)
    homology.verify()
    assert [group.free_rank for group in homology.groups] == [1, 0, 2, 0, 3, 0, 4]

    modular_space = EilenbergMacLaneSpace(FinitelyGeneratedAbelianGroup(1), 3)
    cohomology = modular_space.modular_cohomology_through_degree(FiniteField.prime(2), 16)
    cohomology.verify()
    assert [generator.degree for generator in cohomology.generators] == [3, 5, 9]
    print(
        f"K(Z^2,2) ranks={[group.free_rank for group in homology.groups]}; "
        f"K(Z,3) mod-two generators="
        f"{[generator.display_name for generator in cohomology.generators]}"
    )


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/35_eilenberg_maclane_spaces.py.

topology.EilenbergMacLaneSpace

A symbolic Eilenberg--Mac Lane space K(A,n).

EilenbergMacLaneSpace(group: FinitelyGeneratedAbelianGroup, delooping_degree: int)

noether::topology::EilenbergMacLaneSpace · Direct Rust declaration

pub struct EilenbergMacLaneSpace { /* 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
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: examples/35_eilenberg_maclane_spaces.py:11 · examples/35_eilenberg_maclane_spaces.py:16 · examples/35_eilenberg_maclane_spaces.py:7 · validation/unit/infra/test_public_api_index.py:188 · validation/unit/topology/test_eilenberg_maclane.py:109 · validation/unit/topology/test_eilenberg_maclane.py:116

topology.EilenbergMacLaneSpace.delooping_degree

Degree containing the sole nonzero homotopy group.

(self) -> int

noether::topology::EilenbergMacLaneSpace::delooping_degree · Direct Rust declaration

pub fn delooping_degree(&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
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:45

topology.EilenbergMacLaneSpace.from_json

Deserialize and revalidate a EilenbergMacLaneSpace from typed JSON.

Detailed contract

Deserialize and reverify a symbolic space.

(cls, value: str) -> EilenbergMacLaneSpace

noether::topology::EilenbergMacLaneSpace::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, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@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

topology.EilenbergMacLaneSpace.group

The sole nonzero homotopy group.

(self) -> FinitelyGeneratedAbelianGroup

noether::topology::EilenbergMacLaneSpace::group · Direct Rust declaration

pub fn group(&self) -> &FinitelyGeneratedAbelianGroup
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: examples/19_permutation_groups.py:13 · examples/19_permutation_groups.py:14 · examples/19_permutation_groups.py:15 · examples/19_permutation_groups.py:16 · examples/19_permutation_groups.py:17 · examples/19_permutation_groups.py:18

topology.EilenbergMacLaneSpace.integral_cohomology

Exact additive integral cohomology through an inclusive degree bound.

Detailed contract

Compute additive integral cohomology exactly through max_degree. This applies the integral universal coefficient theorem to the exact homology result retained inside the returned evidence. It computes additive groups only; it makes no cup-product or ring-presentation claim.

(self, max_degree: int) -> EilenbergMacLaneIntegralCohomology

noether::topology::EilenbergMacLaneSpace::integral_cohomology · Direct Rust declaration

pub fn integral_cohomology( &self, max_degree: usize, ) -> Result<EilenbergMacLaneIntegralCohomology, EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:58 · validation/unit/infra/test_discovery.py:114 · validation/unit/topology/test_eilenberg_maclane.py:54 · validation/unit/topology/test_eilenberg_maclane.py:73

topology.EilenbergMacLaneSpace.integral_cohomology_presentation

Complete closed-form integral cohomology-ring presentation.

Detailed contract

Construct a complete integral cohomology-ring presentation when a closed-form native playbook is available. The presentation is a quotient of the free graded-commutative Z-algebra on its ordered generators. The current exact lanes are a point, K(Z^r,1), K(Z^r + C_m,1), K(Z^r + C_m + C_n,1) for m | n, and K(Z^r,2). In particular, square-zero relations for the odd torus classes are explicit: graded commutativity over Z alone would imply only that twice an odd square vanishes. The rank-two torsion formula is Theorem 6.3.1 of C. D. Roberts, The cohomology ring of a finite abelian group (2013).

(self) -> EilenbergMacLaneIntegralCohomologyPresentation

noether::topology::EilenbergMacLaneSpace::integral_cohomology_presentation · Direct Rust declaration

pub fn integral_cohomology_presentation( &self, ) -> Result<EilenbergMacLaneIntegralCohomologyPresentation, EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: validation/unit/topology/test_eilenberg_maclane.py:111 · validation/unit/topology/test_eilenberg_maclane.py:118 · validation/unit/topology/test_eilenberg_maclane.py:136 · validation/unit/topology/test_eilenberg_maclane.py:84

topology.EilenbergMacLaneSpace.integral_homology

Exact integral homology through an inclusive degree bound.

Detailed contract

Compute integral homology exactly through max_degree. The native first edition covers K(A,1) for every finitely generated abelian group, K(Z^r,2), and the point K(0,n) in every positive degree. Other regimes return a typed unsupported-operation error.

(self, max_degree: int) -> EilenbergMacLaneIntegralHomology

noether::topology::EilenbergMacLaneSpace::integral_homology · Direct Rust declaration

pub fn integral_homology( &self, max_degree: usize, ) -> Result<EilenbergMacLaneIntegralHomology, EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: examples/35_eilenberg_maclane_spaces.py:12 · validation/unit/infra/test_public_api_index.py:188 · validation/unit/topology/test_eilenberg_maclane.py:142 · validation/unit/topology/test_eilenberg_maclane.py:144 · validation/unit/topology/test_eilenberg_maclane.py:41 · validation/unit/topology/test_eilenberg_maclane.py:67

topology.EilenbergMacLaneSpace.modular_cohomology

Complete closed-form cohomology algebra over a prime field.

Detailed contract

Construct a complete prime-field cohomology presentation when a closed-form native playbook is available. The current exact lanes are K(A,1), K(Z^r,2), and K(0,n). The result includes fundamental/derived generator names and the primary operations on those generators.

(self, field: FiniteField) -> EilenbergMacLaneModularCohomology

noether::topology::EilenbergMacLaneSpace::modular_cohomology · Direct Rust declaration

pub fn modular_cohomology( &self, field: FiniteField, ) -> Result<EilenbergMacLaneModularCohomology, EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: examples/34_finite_group_cohomology.py:11 · validation/unit/homalg/test_finite_group_cohomology.py:124 · validation/unit/homalg/test_finite_group_cohomology.py:139 · validation/unit/homalg/test_finite_group_cohomology.py:147 · validation/unit/homalg/test_finite_group_cohomology.py:168 · validation/unit/homalg/test_finite_group_cohomology.py:181

topology.EilenbergMacLaneSpace.modular_cohomology_through_degree

Cohomology algebra exact through an inclusive degree bound.

Detailed contract

Compute a prime-field cohomology presentation exactly through an inclusive degree bound when a bounded native playbook is available. The bounded Cartan–Serre lanes enumerate admissible squares over F_2 and admissible Bockstein/reduced-power words at odd primes for n >= 2, free abelian summands, and primary cyclic torsion. The finite presentation contains every algebra generator that can affect the requested range and makes no assertion above it.

(self, field: FiniteField, max_degree: int) -> EilenbergMacLaneModularCohomologyTruncation

noether::topology::EilenbergMacLaneSpace::modular_cohomology_through_degree · Direct Rust declaration

pub fn modular_cohomology_through_degree( &self, field: FiniteField, max_degree: usize, ) -> Result<EilenbergMacLaneModularCohomologyTruncation, EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@1

Executable usage: examples/35_eilenberg_maclane_spaces.py:17 · validation/unit/topology/test_eilenberg_maclane.py:194 · validation/unit/topology/test_eilenberg_maclane.py:222 · validation/unit/topology/test_eilenberg_maclane.py:228 · validation/unit/topology/test_eilenberg_maclane.py:241 · validation/unit/topology/test_eilenberg_maclane.py:252

topology.EilenbergMacLaneSpace.to_json

Serialize this EilenbergMacLaneSpace to its canonical typed JSON representation.

Detailed contract

Serialize the symbolic space as typed JSON.

(self) -> str

noether::topology::EilenbergMacLaneSpace::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, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@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

topology.EilenbergMacLaneSpace.verify

Replay and verify the mathematical evidence carried by this EilenbergMacLaneSpace.

Detailed contract

Recheck the positive delooping degree and canonical group.

(self) -> None

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

pub fn verify(&self) -> Result<(), EilenbergMacLaneError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, geom-core, m4rst, m4rste
GIL attached / bounded
Semantic ID noether/topology/EilenbergMacLaneSpace@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