topology · EilenbergMacLaneIntegralCohomologyRelation¶
2 accepted declarations. Python and Rust forms, contracts, evidence, failure boundaries, and checked usages are kept together below.
Worked example¶
The complete checked program Factor an integer and construct a cyclotomic polynomial uses this API directly.
# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Factor an integer and construct a cyclotomic polynomial."""
from noether.numthy import cyclotomic_polynomial, factor, is_prime
def main() -> None:
integer = 2**20 * 3**7 * 101
factorization = factor(integer)
assert factorization.verify(integer)
assert all(is_prime(prime) for prime, _ in factorization.factors)
phi = cyclotomic_polynomial(12)
assert phi.terms() == [([4], 1), ([2], -1), ([0], 1)]
print(f"{integer} = {factorization}; Phi_12 = {phi}")
if __name__ == "__main__":
main()
Run it with .venv/bin/python examples/07_integer_factorization.py.
topology.EilenbergMacLaneIntegralCohomologyRelation¶
One homogeneous relation in an integral cohomology presentation.
noether::topology::EilenbergMacLaneIntegralCohomologyRelation · Direct Rust declaration
| Contract | Value |
|---|---|
| Guarantee | checked deterministic result |
| Determinism | deterministic |
| Availability | default CPU build |
| Domain implementation crates | noether, geom-core, m4rst, m4rste |
| GIL | attached / bounded |
topology.EilenbergMacLaneIntegralCohomologyRelation.terms¶
Return the terms recorded by this EilenbergMacLaneIntegralCohomologyRelation.
Detailed contract
Sparse terms in canonical monomial order.
noether::topology::EilenbergMacLaneIntegralCohomologyRelation::terms · Direct Rust declaration
| 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: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