#20312: parent of argument lost with Functions
-----------------------------+------------------------
       Reporter:  rws        |        Owner:
           Type:  defect     |       Status:  new
       Priority:  major      |    Milestone:  sage-7.2
      Component:  symbolics  |   Resolution:
       Keywords:             |    Merged in:
        Authors:             |    Reviewers:
Report Upstream:  N/A        |  Work issues:
         Branch:             |       Commit:
   Dependencies:             |     Stopgaps:
-----------------------------+------------------------
Description changed by rws:

Old description:

> Except for some classes, Python objects as function arguments are coerced
> into SR, but with `GinacFunction`s as well as with `BuiltinFunction`s the
> parent gets lost, i.e. the result is not converted back. Ths violates the
> rule that function input and output should be of the same type.
> {{{
> sage: S.<y> = PolynomialRing(RR)
> sage: ex = sin(asin(y)); ex
> y
> sage: type(ex)
> <type 'sage.symbolic.expression.Expression'>
> sage: ex.is_symbol()
> True
> }}}
> This also shows that the notion "SR encapsulates all Sage objects" is
> wrong because everything coerces into SR. SR only encapsulates certain
> "numeric" objects. Pynac can't be blamed as it only sees the coerced
> expressions. The problem is in
> `symbolic/function.pyx:BuiltinFunction.__call__` where the parent of
> function arguments is lost.
>
> See also #18832 and maybe #17790.

New description:

 Some Python objects as function arguments lose their parent, i.e. the code
 in the specific function can no longer access it because the object was
 coerced into SR. This can result in violation of the rule that function
 input and output should be of the same type.
 {{{
 sage: S.<y> = PolynomialRing(RR)
 sage: ex = sin(asin(y)); ex
 y
 sage: type(ex)
 <type 'sage.symbolic.expression.Expression'>
 sage: ex.is_symbol()
 True
 }}}
 The specific function (here sin) code cannot remedy this because there the
 damage is already done. The problem is in
 `symbolic/function.pyx:BuiltinFunction.__call__` where the parent of
 function arguments is lost.

 See also #18832 and maybe #17790.

--

--
Ticket URL: <http://trac.sagemath.org/ticket/20312#comment:4>
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 https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to