> Dear group:
>
> In examining past thread on this issue, I am unable to tell if this
> bug is seen as resolved, but ... it isn't.
See #9835 and #9961 on the issue tracker. The patch by Robert
Marik attached to #9835 solves the problem you show below.
Cheers,
Burcin
> Many features in Maxima do not use the "assume" features at all.
> If Macsyma were to be redesigned from the ground up, the issues
> related to assume etc would probably be addressed at a foundational
> level.
>
> To the extent that other computer algebra systems claim to be a fresh
> look at issues, it appears that they have all failed to address this
> one.
>
> Instead they ignore "assumptions" and later patch them on in peculiar
> ways
> and provide access to this information only from some specific
> programs, e.g
> Mathematica's Integrate, Reduce, Simplify. But probably not much
> else.
>
> So this known problem (at least since 1974) was off the radar of the
> brainiacs
> who designed all those subsequent systems, including I suppose, Sage.
I think it would be a huge overstatement to say that the symbolics
subsystem in Sage was "designed" in any way. IMHO, it was mostly
patched together to support educational use, then acquired more cruft
through several rewrite attempts and cramped schedules.
I am definitely not an expert in this field and have no idea how the
assumptions should work. If you can provide some references, perhaps
these could be used as starting points when/if somebody decides to
work on this.
Here is the only reference I found on this topic:
http://portal.acm.org/citation.cfm?id=680466
The article is available for download here (for those with access):
http://www.springerlink.com/content/p77364025wh6j7h5/
Burcin
I did thesis work in this area. One of the attacks is to use
cylindrical algebraic decomposition (CAD). A second approach
is to create a tree of expressions based on intervals such as
[1/x where x < 0] [1/x where x = 0] [1/x where x > 0]
The computation proceeds in 3 parts, each one under an interval
assumption. If a new proviso is added the program tree-forks again:
[1/x where x < 0 && 1/y where y < 0]
[1/x where x < 0 && 1/y where y = 0]
[1/x where x < 0 && 1/y where y > 0]
[1/x where x = 0 && 1/y where y < 0]
[1/x where x = 0 && 1/y where y = 0]
[1/x where x = 0 && 1/y where y > 0]
[1/x where x > 0 && 1/y where y < 0]
[1/x where x > 0 && 1/y where y = 0]
[1/x where x > 0 && 1/y where y > 0]
Note that these can all be run in parallel and the results
combined after the computation. This approach lends itself
to massively parallel computations.
I did a literature analysis of a couple hundred textbooks
and found that approximately 80 percent of all equation
provisos could be rewritten into interval constraints.
A simple "assume" facility does not begin to address the
problem for many reasons, such as the fact that provisos
can arise during intermediate computations.
Tim Daly
Note that I did not make any restrictions on the provisos so they
could be anything (not even necessarily computable), such as polynomials
or roots (e.g. [x suchthat x in roots of ....] and they don't need to
be intervals (e.g. f(x) is holonomic, the so-called "is" provisos).
There are deep research questions here involving reformulating normal
algorithmic computations to collect the provisos, splitting the
collection into (not necessarily decidable) disjoint sets, doing
parallel computation under a proviso set (generating further subsets
as the computation proceeds), combining partial results to poison
other branches of the parallel computation tree (which implies computing
partial CAD results and a "blackboard architecture") and the question
of combining results under proviso constraints (e.g. combining intervals
if the representations are intervals, in order to recover the real line
or the complex plane).
There is a whole research program here but the NSF doesn't seem to know
or care so its unlikely to be explored except by open source. Axiom has
a long term goal of refactoring the algebra to include this in the design
at the fundamental level (which was the point of the thesis work). It is
only in recent years that hundred-core machines are becoming available to
support the huge parallel trees this generates. A proviso-based system
will enable parallel computation in a "natural" manner as opposed to the
current ideas that depend on simple cases (like matrix multiply).
An "assume" facility that is bolted-on after the fact cannot possibly
handle issues that arise as part of the computation since intermediate
expressions can contain computations that are not apparent in the final
result. An assume facility could create some initial conditions but would
naturally be expressed using something like Axiom's "suchthat".
Tim Daly