#12737: Add an `unsafe` argument to Expression.simplify_full()
-------------------------------+--------------------------------------------
Reporter: mjo | Owner: mjo
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-5.0
Component: symbolics | Resolution:
Keywords: | Work issues:
Report Upstream: N/A | Reviewers:
Authors: | Merged in:
Dependencies: #12650 | Stopgaps:
-------------------------------+--------------------------------------------
Comment (by mjo):
Replying to [comment:4 kcrisman]:
> > > It's not entirely clear to me which simplifications are "safe" and
which are not. Simplifying `x^2/x` to `x` is also not "safe" in the sense
that equality does not hold for `x=0`. In many computer algebra systems,
acceptable simplifications are not "safe" in this respect. By including a
default `unsafe=False` I'm afraid you'll be raising expectations to a
level that Sage does not attain (yet?).
> >
> > It's completely heuristic: the four I chose nobody seems to have a
problem with.
> Only in that we couldn't find Trac tickets about them.
> >`simplify_radical`, on the other hand, wreaks havoc on trivial
functions and has been the cause of numerous bug reports and mailing list
discussions.
> >
> > In `simplify`, after #12650, I say that a safe simplification is one
"for which we are reasonably sure that the input will be considered
equivalent to the output." That's probably the best we can do for now, and
I'm ''reasonably sure'' that most people would consider `x^2/x` equivalent
to `x`.
>
> I'm reasonably sure that no mathematician would consider them equivalent
unless you add "almost everywhere". Simplification ''simplifies'', hence
makes it not actually the same (at least potentially). This shouldn't be
controversial.
>
Before our discussion on another one of these tickets, I had assumed it
was not controversial that simplification had to return an equivalent
expression. So it is at least a little controversial.
> > As it stands, I think `full_simplify` ''sounds'' safe so people will
assume that anyway. This fix, while not perfect, at least improves things.
>
> Well, everything ''sounds'' safe unless you put in the word "unsafe".
>
> I'm pretty confused as to the relation of this to #12650. See
[comment:6:ticket:12650 my comments there].
>
> I'm sympathetic to doing something about `radcan`, but simplification is
simplification, not identity.
>
> Doesn't it make more sense to either document fully what can go wrong
with `simplify_full`, or to add a flag `simplify_radicals` or something?
I think that changing behavior in this case is probably the best
compromise, but probably `unsafe` is sending the wrong message. There
isn't anything unsafe about `radcan`, it's just a different point of view
than ours - symbolic expressions versus functions. Spend some time on the
Maxima list :)
All expressions in sage are callable like functions, so if you have both
radicals and a variable in an expression, `simplify_radical()` is unsafe.
I.e. you're probably gonna get the wrong answer. I think marking it as
unsafe is more likely to catch someone's attention than asking him to read
the documentation. I almost certainly used `full_simplify()` for years
without doing so, since I thought I knew what it was doing and had used
similar functions in e.g. Mathematica. I think the problem is that it's
called "simplification," not that it exists.
Either way, `f.full_simplify(simplify_radicals=True)` is not much better
than `f.full_simplify().simplify_radical()`... the keyword argument is the
easy way out, but I feel like it should control more than one method call
if we do it. And if we remove the unsafe simplifications from
`full_simplify()`, that seems to make `simplify()` redundant, too. That's
the dual situation to what we'd have after #12650, but at least we could
add more stuff to `full_simplify()` in the future to change that.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12737#comment:5>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.