filtration_one/
filtration_one.rs

1//! This computes all available filtration one products for a module. This only works at the prime
2//! 2 for the moment.
3//!
4//! We omit outputs where the target bidegree is zero (or not yet computed)
5
6use ext::{
7    chain_complex::{ChainComplex, FreeChainComplex},
8    utils::query_module,
9};
10use sseq::coordinates::{Bidegree, BidegreeGenerator};
11
12fn main() -> anyhow::Result<()> {
13    ext::utils::init_logging()?;
14
15    let resolution = query_module(None, false)?;
16    assert_eq!(resolution.prime(), 2);
17
18    for b in resolution.iter_stem() {
19        let mut i = 0;
20        while resolution.has_computed_bidegree(b + Bidegree::s_t(1, 1 << i)) {
21            // TODO: This doesn't work with the reordered Adams basis
22            let products = resolution.filtration_one_product(1 << i, 0, b).unwrap();
23            for (idx, row) in products.into_iter().enumerate() {
24                let g = BidegreeGenerator::new(b, idx);
25                if !row.is_empty() {
26                    println!("h_{i} x_{g} = {row:?}");
27                }
28            }
29            i += 1;
30        }
31    }
32    Ok(())
33}