#10963: Axioms and more functorial constructions
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner: stumpc5
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.2
Component: categories | Resolution:
Keywords: days54 | Merged in:
Authors: Nicolas M. Thiéry | Reviewers: Simon King, Frédéric
Report Upstream: N/A | Chapoton
Branch: | Work issues: To be merged
public/ticket/10963-doc- | simultaneously with #15801
distributive | Commit:
Dependencies: #11224, #8327, | 59d73760c528cca3ede00c8b0fc951131c79f473
#10193, #12895, #14516, #14722, | Stopgaps:
#13589, #14471, #15069, #15094, |
#11688, #13394, #15150, #15506, |
#15757, #15759, #16244 |
-------------------------------------+-------------------------------------
Comment (by nthiery):
Hi Darij,
Replying to [comment:686 darij]:
> No, what I mean is this:
Sorry for the RTFM :-)
> {{{
> from sage.structure.element import get_coercion_model
> import operator
> return get_coercion_model().bin_op(left, right,
operator.mul)
> }}}
> What does `get_coercion_model` actually do?
`get_coercion_model()` just returns the coercion model, that is Sage's
"database" of coercions. For bin_op, see sage.structure.coerce.pyx:
{{{
cpdef bin_op(self, x, y, op):
"""
Execute the operation op on x and y. It first looks for an action
corresponding to op, and failing that, it tries to coerces x and y
into the a common parent and calls op on them.
...
}}}
See also Simon's tutorial which says a few things about coercion::
http://www.sagemath.org/doc/thematic_tutorials/coercion_and_categories.html
> Very well. I'd only put a WARNING in the doc of Modules rather than just
a TODO. Basically, we _don't know_ so far whether Modules will stand for
bimodules or symmetric bimodules, and we are asking for users to assume
neither. This is a bug, not just a task that has to be eventually done.
It's not a bug, it's explicitly unspecified behavior :-)
Honestly, that's ok. Let's move on rather than spending still more
time on things outside of the scope of this ticket.
> I don't understand what you are saying here, and I'm not sure if you are
understanding what I was saying. A bimodule over a field is an additive
group with *two commuting* vector space structures. For example, you can
make the field QQ(x) of rational functions in x over the rational numbers
QQ into a QQ(x)-QQ(x)-bimodule as follows:
>
> r m = r * m (product of rational functions) for r in the ring QQ(x) and
m in the bimodule QQ(x);
>
> m r = m * r(x^2)
> (again product of rational functions) for r in the ring QQ(x) and m in
the bimodule QQ(x).
>
> As a left QQ(x)-module, QQ(x) has basis (1) (just consisting of one
element). As a right QQ(x)-module, it has basis (1, x). So "left bases"
and "right bases" are two different things, and I don't see how a notion
of a "basis" of a (non-symmetric) bimodule can be made sense of.
>
> For a more down-to-earth example: The quaternions are a bimodule over
the complex numbers. (1+j, i+k) is a right CC-vector space basis (easy to
check) but not a left CC-vector space basis (since i(1+j) = i+k).
Indeed. But this is not really relevant to our `VectorSpaces()`, since
the latter says nothing about bases.
As for `VectorSpaces().WithBasis()`, since it does not say whether the
distinguished basis is a left basis or a right basis, it's not
unreasonable for the user to assume that it should be a basis on both
sides.
Anyway, if you want to proceed with this discussion on better
specifying the modules / vector spaces / ... categories, please open a
separate ticket.
Cheers,
Nicolas
PS: I like that comment 666 is from git about "some final fixes".
--
Ticket URL: <http://trac.sagemath.org/ticket/10963#comment:694>
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.