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