#6452: Submodules of (ZZ/nZZ)^r
-------------------------+-------------------------------------------------
       Reporter:  wdj    |        Owner:  rlm
           Type:         |       Status:  needs_review
  enhancement            |    Milestone:  sage-6.10
       Priority:  major  |   Resolution:
      Component:         |    Merged in:
  linear algebra         |    Reviewers:
       Keywords:         |  Work issues:
        Authors:         |       Commit:
  Vincent Delecroix      |  ffbd6e833d08b51cf78c46065ac07f71f46d795d
Report Upstream:  N/A    |     Stopgaps:
         Branch:         |
  u/vdelecroix/6452      |
   Dependencies:         |
-------------------------+-------------------------------------------------

Comment (by vdelecroix):

 Hi,

 Replying to [comment:29 jsrn]:
 > Great work Vincent!

 Thanks ;-)

 > Just to be sure: is this "In review"? You made many changes but didn't
 change the state of "needs review".

 It is in needs review. After the first commit, it appears that one doctest
 failed. And then, I found many typos and some better conventions. This is
 why there are so much commits afterwards. Shortly: it is ready and in
 needs review.

 > I will look at it in detail later, and when I'm sure it's ready. But in
 any case, some preliminary remarks:
 >
 > - Could you explain to me (reviewer) the reason for the patch in the
 category
 >   files? Something with you using the `Facade` in a previously unthought
 case.
 >   Is this related to the `Free`-thing below?

 Nope. There is no `TestSuite(U).run()` anywhere for submodules. And this
 is the reason why.

 A facade is a concept from the Sage category. A parent is a facade if its
 elements do not belong to itself, as for submodules
 {{{
 sage: F = FreeModule(ZZ,2)
 sage: U = F.span([F((3,0))])
 sage: U.an_element().parent() is U
 False
 sage: U.an_element().parent() is F
 True
 }}}
 So `U` is a '''facade''' for `F`. But this is currently not properly done
 {{{
 sage: U in Sets().Facade()
 False
 }}}
 I did it for the submodules over `ZZ/nZZ`. I will fix it later on for the
 other base rings as well and add some `TestSuite`.

 There are many generic tests in category (that are automatically run with
 the `TestSuite` thing) but some of them do not care about facades. In
 particulal the `_test_zero` and `_test_one` that I modified.

 > - `FreeModule_ambient_IntegerModRing.span` never uses its `check`
 argument.

 True. I did it for compatibility with the other `span` functions. Maybe I
 could remove it.

 > - Since you compute the smith form at construction, then construction is
 expensive even when nothing is asked of the object afterwards. Is the
 argument for this that nothing interesting can be said about the module
 without computing the smith form anyway? Generally, I like construction to
 be cheap and postponing computation till the user asks it.

 Without this nothing can be computed (number of generators, cardinality).
 Note that I postponed the `_lift` argument computation.

--
Ticket URL: <http://trac.sagemath.org/ticket/6452#comment:30>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to