#18182: pushout construction and finding common parents for/including cartesian
products
-------------------------------------+-------------------------------------
       Reporter:  dkrenn             |        Owner:
           Type:  enhancement        |       Status:  positive_review
       Priority:  major              |    Milestone:  sage-6.6
      Component:  coercion           |   Resolution:
       Keywords:  sd67, coercion,    |    Merged in:
  categories                         |    Reviewers:  Benjamin Hackl,
        Authors:  Daniel Krenn,      |  Daniel Krenn
  David Roe                          |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  bc70cb9f592a7f3eb93267b91591d9cd4ae7b358
  u/dkrenn/coercion/pushout          |     Stopgaps:
   Dependencies:                     |
-------------------------------------+-------------------------------------
Changes (by behackl):

 * status:  needs_review => positive_review


Comment:

 Replying to [comment:21 dkrenn]:
 > > 1. `categories.modules.CartesianProducts`: I'm not entirely sure [...]
 >
 > This is now #19375.

 Perfect.

 >
 > > 2. `categories.pushout.ConstructionFunctor.common_base`: I think that
 `Raise a CoercionException` does not fit in a `OUTPUT`-block from a
 semantic point of view.
 >
 > Rewritten (but I am open to suggestions if you want something different)

 No, the way you've rewritten it is fine.

 > > 4. `MultivariateConstructionFunctor.common_base`: Could you explain
 why you use `get_coercion_model().common_parent(...)` instead of
 `pushout(...)`?
 >
 > We need a common parent, thus `common_parent` is the correct method to
 call. A pushout is one possible way to construct a common parent, but
 there are other ways; e.g. one could coerce into the other, or there is a
 scalar multiplication or action available.

 I understand.

 >
 > > 5. `pushout`: Is there a reason for using
 > >   {{{
 > >     sage: from sage.sets.cartesian_product import CartesianProduct
 > >     sage: A = CartesianProduct((ZZ['x'], QQ['y'], QQ['z']),
 Sets().CartesianProducts())
 > >   }}}
 > >   over
 > >   {{{
 > >     sage: A = cartesian_product((ZZ['x'], QQ['y'], QQ['z']))
 > >   }}}
 > >   As far as I can tell, the only difference is in the categories --
 but they aren't used in these doctests.
 >
 > This is to check that it works as well (there was once a bug with this
 kind of construction, thus a doctest was added).

 Alright.

 I cross-checked your changes, everything seems to work now, and I have no
 more comments.

 The documentation builds and `make ptestlong` passes. -->
 `positive_review`.

--
Ticket URL: <http://trac.sagemath.org/ticket/18182#comment:24>
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