最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

symbolic math - Is it possible to check if x*y*z is zero assuming x*z is zero in maple? - Stack Overflow

programmeradmin3浏览0评论

SymPy can handle the following query to its assumption system:

>>> from sympy import Q, ask
>>> from sympy.abc import x, y, z
>>> ask(Q.zero(x*y*z), Q.zero(x*z) & Q.real(y))
True
>>> ask(Q.zero(x*y*z), (Q.zero(x) | Q.zero(z)) & Q.real(y))
True
>>> ask(Q.zero(x*y) | Q.zero(y*z), Q.zero(x*z) & Q.real(y))
True

Mathematica can handle an equivalent query:

In[21]:= Assuming[{x*z == 0}, Refine[x*y*z == 0]]                               

Out[21]= True

Though it can't handle a similar type of query:

In[25]:= Assuming[{x == 0 || z == 0}, Simplify[x*y*z == 0]]                     

Out[25]= x y z == 0

In[28]:= Assuming[{x*y == 0}, Refine[x*z == 0 || z*y == 0]]                     

Out[28]= x z == 0 || y z == 0

However, it seems like Maple can't handle this type of query at all.

> with(RealDomain);
> is(x*y*z = 0) assuming (x*z = 0, y::real);
FAIL

Maple can handle easier assumptions like x = 0.

> is(x*y*z = 0) assuming (x = 0, y::real, z::real);
true

Is there some way to use Maple's assumption system to reason about assumptions like x*y=0? I believe that's not possible, because if Maple is able to infer either x=0 or y=0 from x*z=0, it's assumption system is incapable of dealing with this sort of assumption.

Based off of a paper by Weibel and Gonnet (1993), it doesn't seem like Maple can reason about assumptions that are disjunctions of properties for more than one variable such as "property p holds for x OR property p holds for y".

SymPy can handle these sorts of queries because it uses a SAT solver as part of its assumption system. However, there's no mention of a SAT solver—or any kind of method of checking multiple possibilities—in that paper or related papers.

Am I correct that Maple's assumption system is not capable of handling this sort of query?

Reference
Weibel, T., Gonnet, G.H. (1993). An assume facility for CAS, with a sample implementation for Maple. In: Fitch, J. (ed) Design and Implementation of Symbolic Computation Systems. DISCO 1992. Lecture Notes in Computer Science, vol 721. Springer, Berlin, Heidelberg. .1007/3-540-57272-4_27

发布评论

评论列表(0)

  1. 暂无评论