Opened 11 years ago
Last modified 10 years ago
#10052 closed enhancement
Improve the implementation of the Steenrod algebra — at Version 4
Reported by: | jhpalmieri | Owned by: | AlexGhitza |
---|---|---|---|
Priority: | major | Milestone: | sage-4.7.1 |
Component: | algebra | Keywords: | steenrod, notebook |
Cc: | jvkersch, niles | Merged in: | |
Authors: | John Palmieri | Reviewers: | |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description (last modified by )
The attached patch does several things:
- it moves the Steenrod algebra code to a subdirectory of algebras. For one thing, there are already 4 files, and for another, I hope that more will be added: several people are working on related projects.
- it reimplements the Steenrod algebra using
CombinatorialFreeModule
, which provides a number of conveniences: scalar multiplication is already defined, as are tensor products, etc. Then for example the antipode or the coproduct can be defined just on basis elements, and the linear extension to all elements is handled automatically.
- it implements another way of computing products, using admissible sequences and the Adem relations. This provides a good way of checking for bugs: with two completely different algorithms for computing products, one can compute the same product two ways and compare answers.
- it implements sub-Hopf algebras of the Steenrod algebra. These were classified 35 years ago, and for some applications people want to use sub-Hopf algebras rather than the whole thing.
- the
TestSuite
has been improved: all components now pass, whereas before, we had some failures. From the old steenrod_algebra.py:sage: TestSuite(A).run() # todo: fix category inheritance for elements of A Failure in _test_category: ... ------------------------------------------------------------ The following tests failed: _test_category Failure in _test_elements The following tests failed: _test_elements
From the new one:sage: TestSuite(SteenrodAlgebra()).run() sage: TestSuite(SteenrodAlgebra(profile=[4,3,2,2,1])).run() sage: TestSuite(SteenrodAlgebra(basis='adem')).run() sage: TestSuite(SteenrodAlgebra(basis='wall')).run() sage: TestSuite(SteenrodAlgebra(basis='arnonc')).run() # long time sage: TestSuite(SteenrodAlgebra(basis='woody')).run() # long time sage: A3 = SteenrodAlgebra(3) sage: A3.category() Category of graded hopf algebras with basis over Finite Field of size 3 sage: TestSuite(A3).run() sage: TestSuite(SteenrodAlgebra(basis='adem', p=3)).run() sage: TestSuite(SteenrodAlgebra(basis='pst_llex', p=7)).run() # long time sage: TestSuite(SteenrodAlgebra(basis='comm_deg', p=5)).run() # long time
Not only are there no failures, but there are many more executions of the suite. This yields some repetition, but the methodan_element
varies depending on the values ofbasis
andp
, so there are also new tests run with each execution.
Unfortunately, since the patch moves files around, it is large. It also trivially affects a few doctests in sageinspect, which means that it requires a patch to sagenb.
This patch depends on #9370.
Change History (6)
Changed 11 years ago by
comment:1 Changed 11 years ago by
- Description modified (diff)
- Keywords steenrod notebook added
- Status changed from new to needs_review
comment:2 Changed 11 years ago by
- Cc jvkersch added
comment:3 follow-up: ↓ 4 Changed 11 years ago by
- Cc niles added
- Status changed from needs_review to needs_info
I seem to be missing something; here's what I get after applying trac_10052-steenrod.patch to sage 4.6.alpha2:
sage: SteenrodAlgebra(5) Traceback (most recent call last) ... TypeError: __init__() got an unexpected keyword argument 'scalar_mult'
Are there other patches I should have applied?
Moreover, the notebook patch doesn't apply at all -- I don't know where the directory sagenb
is, let alone the file
sageinspect.py
. Any ideas what I could be missing?
comment:4 in reply to: ↑ 3 Changed 11 years ago by
- Description modified (diff)
- Status changed from needs_info to needs_review
Replying to niles:
I seem to be missing something; here's what I get after applying trac_10052-steenrod.patch to sage 4.6.alpha2:
Oops, sorry, my fault. This patch depends on the one at #9370, so please apply that first.
Moreover, the notebook patch doesn't apply at all -- I don't know where the directory
sagenb
is, let alone the file
sageinspect.py
. Any ideas what I could be missing?
As of Sage 4.6.alpha2, this is a little complicated, but with 4.6.alpha3, you can do hg_sagenb.import_patch("...path_to_patch_file...")
from within Sage to apply it. (The sagenb patch on this ticket is pretty minor, just to make some doctests pass: there are some doctests in the patched file which return the path to one of the files which implements the Steenrod algebra, and since the files got moved around, the doctests fail without the sagenb patch.)
patch for sagenb repo