Mathematica If-then vs.Implies

Qui*_*hud 7 boolean-logic if-statement wolfram-mathematica

我是Mathematica(v8)的新手,并且正在使用它来编写命题逻辑.

我想知道运营商IfImplies运营商之间的区别.例如,
If[p,q]Implies[p,q]返回qp=True(如预期).

但是当我尝试获得满意度时,我得到以下结果:

SatisfiabilityInstances[If[p, q], {p, q}]
(*
  {{True, True}}
*)  
Run Code Online (Sandbox Code Playgroud)

除非我要求更多实例:

SatisfiabilityInstances[If[p, q], {p, q}, All]
Run Code Online (Sandbox Code Playgroud)

SatisfiabilityInstances :: boolv:"如果[p,q]不是布尔值{False,True}.

然而:

SatisfiabilityInstances[Implies[p, q], {p, q}, All]   
Run Code Online (Sandbox Code Playgroud)

返回预期的:

(* {{True, True}, {False, True}, {False, False}} *)
Run Code Online (Sandbox Code Playgroud)

造成这种差异的原因是什么?

Dim*_*ims 4

正如它所说的那样——If不是布尔值,即它不仅返回 true 或 false。尝试一下If[False,True],你将看不到任何结果。 If[a,b,c,d]可以返回任何 b、c 和 d,而不仅仅是布尔值,例如If[True,2]返回 2。因此,If是用于分支(即使是函数式),而Implies是普通布尔函数。

PS啊,Implies也可以退货2。所以不同之处在于它If[False,True]不返回任何内容,因此SatisfiabilityInstances函数无法找到真正的区域。

PPS 更准确地说,如果 的第一个参数If[]False,那么它返回第三个参数。当它不存在时,它不会返回任何内容。