【问题标题】:Mathematica If-then vs. ImpliesMathematica If-then 与蕴含
【发布时间】:2012-10-17 04:51:19
【问题描述】:

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

我想知道IfImplies 运算符之间有什么区别。例如,
If[p,q]Implies[p,q] 都为 p=True 返回 q(如预期的那样)。

但是当我尝试获取 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}} *)

是什么导致输出出现这种差异?

【问题讨论】:

    标签: if-statement wolfram-mathematica boolean-logic


    【解决方案1】:

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

    附:啊,Implies也可以回2。所以不同的是If[False,True]什么都不返回,所以SatisfiabilityInstances函数找不到真正的区域。

    附言更准确地说,如果If[] 的第一个参数是False,那么它返回它的第三个参数。当它不存在时,它什么也不返回。

    【讨论】:

    • 你能指导我找到一个好的教程吗?我已经阅读了 Mathematica 文档,但不知道可以给“If”四个值(if-else 只有三个)。 'If[a,b,c,d]' 返回 'd' 而没有分配任何真值——这是为什么呢? @Dims
    • @QuietThud If[ condition, true clause, false clause, non-true-or-false-clause]
    • 谢谢@belisarius。 =) 我会很感激关于数学的建议。编程学习资源去——文档作为参考效果更好。
    【解决方案2】:

    你可以试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多