Skip to content

homalg · FiniteGroupCohomologyTruncation

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

Worked example

The complete checked program Certify a complete presentation of the mod-two cohomology of C2 uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Certify a complete presentation of the mod-two cohomology of C2."""

from noether.groups import Permutation, PermutationGroup


def main() -> None:
    transposition = Permutation.from_images([1, 0])
    cyclic_two = PermutationGroup.from_generators(2, [transposition])
    truncation = cyclic_two.modular_cohomology(2, 2)
    truncation.verify()
    assert [truncation.dimension(degree) for degree in range(3)] == [1, 1, 1]

    complete = truncation.algebra_truncation().certify_symonds_universal_bound()
    complete.verify()
    assert complete.completion_strategy == "symonds_universal_bound"
    print(
        f"H^0..2(C2; F2) dimensions="
        f"{[truncation.dimension(degree) for degree in range(3)]}; "
        f"completion={complete.completion_strategy}"
    )


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/34_finite_group_cohomology.py.

homalg.FiniteGroupCohomologyTruncation

Exact initial segment of a finite group's mod-p cohomology ring.

class FiniteGroupCohomologyTruncation

noether::homalg::FiniteGroupCohomologyTruncation · Direct Rust declaration

pub struct FiniteGroupCohomologyTruncation { /* private fields */ }
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:126 · validation/unit/homalg/test_finite_group_cohomology.py:127 · validation/unit/homalg/test_finite_group_cohomology.py:17

homalg.FiniteGroupCohomologyTruncation.algebra_truncation

Minimal generators and exact relations visible through this bound.

Detailed contract

Extract minimal homogeneous generators and every relation determined through the exact cohomological degree bound. The returned presentation is a truncated algebra invariant. It is not asserted to present the ring in higher degrees.

(self) -> FiniteGroupCohomologyAlgebraTruncation

noether::homalg::FiniteGroupCohomologyTruncation::algebra_truncation · Direct Rust declaration

pub fn algebra_truncation( &self, ) -> Result<FiniteGroupCohomologyAlgebraTruncation, FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: examples/34_finite_group_cohomology.py:15 · validation/unit/homalg/test_finite_group_cohomology.py:148 · validation/unit/homalg/test_finite_group_cohomology.py:168 · validation/unit/homalg/test_finite_group_cohomology.py:181 · validation/unit/homalg/test_finite_group_cohomology.py:196

homalg.FiniteGroupCohomologyTruncation.apply_operation

Apply a typed admissible Steenrod word to one basis class.

Detailed contract

Apply one typed admissible Steenrod word to a canonical basis class. Identity, instability, and top-operation formulas are evaluated in every resolution strategy. Genuinely lower operations are evaluated cochain-level on the normalized nerve of the group when this truncation uses the normalized bar resolution. Reduced-resolution lanes fail closed until a checked bar comparison is available.

(self, operation: AdmissibleCohomologyOperation, source_degree: int, source_index: int) -> Vector[FiniteField]

noether::homalg::FiniteGroupCohomologyTruncation::apply_operation · Direct Rust declaration

pub fn apply_operation( &self, operation: &AdmissibleCohomologyOperation, source_degree: usize, source_index: usize, ) -> Result<Vector<FiniteField>, FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: examples/33_simplicial_cohomology_operations.py:30 · validation/unit/topology/test_simplicial_complex_facade.py:197 · validation/unit/topology/test_simplicial_set_facade.py:192

homalg.FiniteGroupCohomologyTruncation.basis_cocycles

Deterministically chosen model cocycles for one basis.

Detailed contract

Deterministic model cocycles representing a cohomology basis. The minimal and bar lanes return cochains in their named resolutions. The stable-elements lane returns coordinates in the canonical basis of the retained Sylow-resolution cohomology.

(self, degree: int) -> list[Vector[FiniteField]]

noether::homalg::FiniteGroupCohomologyTruncation::basis_cocycles · Direct Rust declaration

pub fn basis_cocycles( &self, degree: usize, ) -> Result<&[Vector<FiniteField>], FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:133 · validation/unit/homalg/test_finite_group_cohomology.py:64

homalg.FiniteGroupCohomologyTruncation.basis_cup_product

Coordinates of the cup product of two canonical basis classes.

Detailed contract

Coordinates of the cup product of two canonical basis classes. Coordinates use the canonical basis returned by Self::basis_cocycles in degree left_degree + right_degree.

(self, left_degree: int, left_index: int, right_degree: int, right_index: int) -> Vector[FiniteField]

noether::homalg::FiniteGroupCohomologyTruncation::basis_cup_product · Direct Rust declaration

pub fn basis_cup_product( &self, left_degree: usize, left_index: usize, right_degree: usize, right_index: usize, ) -> Result<Vector<FiniteField>, FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:134 · validation/unit/homalg/test_finite_group_cohomology.py:142 · validation/unit/homalg/test_finite_group_cohomology.py:143 · validation/unit/homalg/test_finite_group_cohomology.py:241 · validation/unit/homalg/test_finite_group_cohomology.py:245 · validation/unit/homalg/test_finite_group_cohomology.py:262

homalg.FiniteGroupCohomologyTruncation.basis_left_multiplication

Matrix of multiplication on the left by one canonical basis class.

Detailed contract

Matrix of multiplication on the left by one canonical basis class. Columns are indexed by the canonical basis in right_degree; rows are indexed by the canonical basis in left_degree + right_degree. This batched operation reuses one resolution lift across all right-hand basis vectors.

(self, left_degree: int, left_index: int, right_degree: int) -> Matrix[FiniteField]

noether::homalg::FiniteGroupCohomologyTruncation::basis_left_multiplication · Direct Rust declaration

pub fn basis_left_multiplication( &self, left_degree: usize, left_index: usize, right_degree: usize, ) -> Result<Matrix<FiniteField>, FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:243

homalg.FiniteGroupCohomologyTruncation.dimension

Dimension of one mod-p cohomology group.

Detailed contract

Dimension of H^degree(BG; F_p).

(self, degree: int) -> int

noether::homalg::FiniteGroupCohomologyTruncation::dimension · Direct Rust declaration

pub fn dimension( &self, degree: usize, ) -> Result<usize, FiniteGroupCohomologyError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: examples/03_exact_linear_systems.py:15 · examples/03_exact_linear_systems.py:16 · examples/15_groebner_twisted_cubic.py:14 · examples/15_groebner_twisted_cubic.py:28 · examples/27_weight_characters.py:25 · examples/34_finite_group_cohomology.py:13

homalg.FiniteGroupCohomologyTruncation.field

Exact prime coefficient field.

(self) -> FiniteField

noether::homalg::FiniteGroupCohomologyTruncation::field · Direct Rust declaration

pub const fn field(&self) -> &FiniteField
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: examples/08_finite_field_extensions.py:10 · examples/08_finite_field_extensions.py:11 · examples/08_finite_field_extensions.py:12 · examples/08_finite_field_extensions.py:13 · examples/08_finite_field_extensions.py:14 · examples/08_finite_field_extensions.py:3

homalg.FiniteGroupCohomologyTruncation.group

Supplied concrete permutation group.

(self) -> PermutationGroup

noether::homalg::FiniteGroupCohomologyTruncation::group · Direct Rust declaration

pub const fn group(&self) -> &PermutationGroup
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@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

homalg.FiniteGroupCohomologyTruncation.max_degree

Largest cohomological degree computed exactly.

(self) -> int

noether::homalg::FiniteGroupCohomologyTruncation::max_degree · Direct Rust declaration

pub const fn max_degree(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:130 · validation/unit/homalg/test_finite_group_cohomology.py:152 · validation/unit/homalg/test_finite_group_cohomology.py:153 · validation/unit/homalg/test_finite_group_cohomology.py:173 · validation/unit/topology/test_eilenberg_maclane.py:48 · validation/parity/groups/test_finite_group_cohomology_hap_parity.py:41

homalg.FiniteGroupCohomologyTruncation.resolution_strategy

Stable name of the mathematical resolution strategy.

Detailed contract

Mathematical strategy used by this calculation.

(self) -> Literal['minimal_p_group', 'normalized_bar', 'sylow_stable_elements']

noether::homalg::FiniteGroupCohomologyTruncation::resolution_strategy · Direct Rust declaration

pub const fn resolution_strategy(&self) -> FiniteGroupResolutionStrategy
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@1

Executable usage: validation/unit/homalg/test_finite_group_cohomology.py:131 · validation/unit/homalg/test_finite_group_cohomology.py:237 · validation/unit/homalg/test_finite_group_cohomology.py:260 · validation/unit/homalg/test_finite_group_cohomology.py:60

homalg.FiniteGroupCohomologyTruncation.verify

Recompute the retained resolution, quotient bases, and evidence.

Detailed contract

Recompute every differential, quotient basis, and retained cocycle.

(self) -> None

noether::homalg::FiniteGroupCohomologyTruncation::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, flint-core, groebner-kernel, m4rst, m4rste, module-core, resolution-kernel, sparla
GIL attached / bounded
Semantic ID noether/homalg/FiniteGroupCohomologyTruncation@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