#10052: Improve the implementation of the Steenrod algebra
-----------------------------+----------------------------------------------
   Reporter:  jhpalmieri     |       Owner:  AlexGhitza        
       Type:  enhancement    |      Status:  needs_review      
   Priority:  major          |   Milestone:  sage-4.6.1        
  Component:  algebra        |    Keywords:  steenrod, notebook
     Author:  John Palmieri  |    Upstream:  N/A               
   Reviewer:  Niles Johnson  |      Merged:                    
Work_issues:                 |  
-----------------------------+----------------------------------------------

Old description:

> 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 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.
>

> == Apply ==
>
>  1. Patch from #9370.
>  1. [attachment:trac_10052-steenrod.v3.patch].

New description:

 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 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.


 == Apply ==

  1. Patch from #9370.
  1. Patch from #8589 (merged into 4.6.1.alpha0)
  1. [attachment:trac_10052-steenrod.v3.patch]
  1. [attachment:trac_10052-sagenb.patch]

--

Comment(by niles):

 For the buildbot:

 Depends on #9370, #8589.

 Apply  [attachment:trac_10052-steenrod.v3.patch],
 [attachment:trac_10052-sagenb.patch]

 (p.s. I haven't forgotten about this :)

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10052#comment:20>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to