私はMathematica(v8)を初めて使用し、命題論理をプログラムするためにそれを使用しています。
If
とImplies
演算子の違いは何だろうと思います。たとえば、とは両方
とも(予想どおり)If[p,q]
にImplies[p,q]
戻ります。q
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}} *)
この出力の違いの原因は何ですか?