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

Reply via email to