yacop - yet another cohomology program
Yacop/Sage is a Sage package that lets you work with large-scale resolutions over the Steenrod algebra and its sub Hopf algebras. It knows about modules over these algebras and recognizes their categories as abelian (meaning: you can take kernels, cokernels, images of \(A\)-linear maps between them). It lets you generate charts, take tensor products, and peek into the SQLite databases that store the resolutions.
It is also by now
- badly hurt by bitrot
- largely collapsed under the weight of its initial ambition
- essentially unmaintained
And, of course, there is no documentation to speak of.
If you’re still not discouraged, you can get its source code from its GitHub page.
A sample session
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 9.4, Release Date: 2021-08-22 │
│ Using Python 3.8.10. Type "help()" for help. │
└────────────────────────────────────────────────────────────────────┘
sage: import yacop
sage: A=SteenrodAlgebra(3)
sage: C=A.resolution()
sage: list(C.free_basis(s=5,n=67))
[g(5,72)]
sage: C.differential(C.g(5,72))
P(2)*g(4,64) + P(0,1)*g(4,56) + 2*P(4)*g(4,56) + P(6)*g(4,48) + 2*P(0,2)*g(4,40)
sage: from yacop.modules.dickson import DicksonAlgebra
sage: M=DicksonAlgebra(3,2)
sage: M
Dickson-Mui algebra D(2) for prime 3
sage: M.inject_variables()
Defining tau0, d12, tau1, d16
sage: [(n,A.P(n)*d12) for n in range(40) if A.P(n)*d12 != 0]
[(0, d12), (1, 2*d16), (3, d12**2), (4, d12*d16), (5, d16**2), (6, d12**3)]