If statement Mathematica If then vs.暗示

If statement Mathematica If then vs.暗示,if-statement,wolfram-mathematica,boolean-logic,If Statement,Wolfram Mathematica,Boolean Logic,我是Mathematica(v8)的新手,正在用它来编程命题逻辑 我想知道If和隐含的运算符之间有什么区别。例如, 如果[p,q]和都暗示[p,q]返回q的p=True(如预期) 但当我试图获得令人满意的实例时,我得到了以下结果: SatisfiabilityInstances[If[p, q], {p, q}] (* {{True, True}} *) 除非我要求更多的例子: SatisfiabilityInstances[If[p, q], {p, q}, All] 可满足性实例

我是Mathematica(v8)的新手,正在用它来编程命题逻辑

我想知道
If
隐含的
运算符之间有什么区别。例如,
如果[p,q]
都暗示[p,q]
返回
q
p=True
(如预期)

但当我试图获得令人满意的实例时,我得到了以下结果:

SatisfiabilityInstances[If[p, q], {p, q}]
(*
  {{True, True}}
*)  
除非我要求更多的例子:

SatisfiabilityInstances[If[p, q], {p, q}, All]
可满足性实例::boolv:“如果[p,q]不是{False,True}处的布尔值

然而:

SatisfiabilityInstances[Implies[p, q], {p, q}, All]   
返回以下项中的预期值:

(* {{True, True}, {False, True}, {False, False}} *)
是什么导致了输出中的这种差异?

这是它所说的--
如果不是布尔值,即它不仅返回true或false。尝试
如果[false,true]
则不会看到结果。
如果[a,b,c,d]
可以返回任何b,c和d,而不仅仅是布尔值,例如
如果[true,2]
返回2。因此,
如果
用于分支(甚至是函数),而
意味着
是正常的布尔函数

另外,
意味着
也可以返回
2
。所以区别在于
如果[False,True]
不返回任何内容,那么
满足性实例
函数无法找到真区域

p.p.S.更准确地说,如果
if[]
的第一个参数是
False
,那么它将返回它的第三个参数。当它不存在时,它将不返回任何内容。

您可以尝试:

SatisfiabilityInstances[If[p, q, Not[q]], {p, q}, All]

你能告诉我一个好的教程吗?我读过Mathematica文档,但不知道可以给出“如果”四个值(如果其他值只有三个)。“如果[a,b,c,d]”返回“d”,但没有指定任何真值,这是为什么@Dims@QuietThud
If[条件、真子句、假子句、非真或假子句]
Thank you@belisarius.=)对于数学编程学习源代码,我非常感谢您的推荐——文档作为参考效果更好。@quiethud