我是 Mathematica(v8) 的新手,正在用它来编程命题逻辑。
我想知道 theIf
和Implies
运营商之间有什么区别。例如,
both If[p,q]
and Implies[p,q]
return q
for p=True
(如预期的那样)。
但是当我尝试获取 SatisfiabilityInstances 时,我得到以下信息:
SatisfiabilityInstances[If[p, q], {p, q}]
(*
{{True, True}}
*)
除非我要求更多实例:
SatisfiabilityInstances[If[p, q], {p, q}, All]
SatisfiabilityInstances::boolv: "If[p,q] 不是布尔值 {False,True}。
然而:
SatisfiabilityInstances[Implies[p, q], {p, q}, All]
返回预期的:
(* {{True, True}, {False, True}, {False, False}} *)
是什么导致输出出现这种差异?