Qui*_*hud 7 boolean-logic if-statement wolfram-mathematica
我是Mathematica(v8)的新手,并且正在使用它来编写命题逻辑.
我想知道运营商If和Implies运营商之间的区别.例如,
既If[p,q]和Implies[p,q]返回q的p=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)
造成这种差异的原因是什么?
正如它所说的那样——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,那么它返回第三个参数。当它不存在时,它不会返回任何内容。