Maxima -- 减少逻辑表达式

Maxima -- Reduction of Logical expressions

考虑以下 maxima 指令序列:

(in1) x=0;
(out) x=0

(in2) y>0;
(out) y>0

(in3) x>0 and y>0;
(out) x>0 and y>0

(in4) x=0 or y>0;
(out) y>0

(in5) x=0 and y>0;
(out) false

前三个指令产生预期的输出。 但是,为什么输入 (in4) 和 (in5) 中的逻辑命题 "x=0" 被认为等于 false?

我们可以看到当表达式"x=0"被隔离时,它并没有给它一个特定的值(这里是false),我在概念和数学上不理解这些输出,它不是预期的数学行为..

以下是我尝试调试时的一些奇怪行为。

(in1) prederror:true$
(in2) debugmode(true)$
(in3) x=0;
(out) x=0
(in4) y>0;
(out) y>0
(in5) x=0 or y>0;
(out) Unable to evaluate predicate y > 0

这是什么意思?

这里发生了什么?

x > 0 and y > 0;

参数 [x > 0][y > 0] 是对它们自己求值的。 [[x > 0] and [y > 0]] 也被评估为自身。

x = 0 or y > 0;

[x = 0] 被计算为 false[y > 0] 被计算为自身,[false or [y > 0]] 被计算为 [y > 0].

x = 0 and y > 0;

[x = 0] 被评估为 false 并且 [false and [y > 0]] 立即 在不计算第二个参数的情况下计算为 false

文档的相关部分是