Opened 11 years ago

Last modified 10 years ago

#10052 closed enhancement

Improve the implementation of the Steenrod algebra — at Version 1

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:

Status badges

Description (last modified by jhpalmieri)

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
                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 method an_element varies depending on the values of basis and p, 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.

Change History (2)

Changed 11 years ago by jhpalmieri

patch for sagenb repo

comment:1 Changed 11 years ago by jhpalmieri

  • Description modified (diff)
  • Keywords steenrod notebook added
  • Status changed from new to needs_review
Note: See TracTickets for help on using tickets.