我是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)
造成这种差异的原因是什么?
我一直试图适应Prolog和Horn条款,但从形式逻辑的过渡仍然感到尴尬和被迫.我知道以标准形式提供所有东西都有好处,但是:
在Prolog中定义材料条件运算符的最佳方法是什么-->
,在OR 和OR A --> B
时成功?也就是说,是不言的时候是没有的.A = true
B = true
B = false
if->then
fail
if
false
else
另外,Horn条款的非显而易见的优点究竟是什么?
我刚刚发现了OWL和Protege.通过阅读这个参考页面(我在下面引用),我想知道是否可以不使用抽象的OWL语法,而是用DL语法编写.我的背景是逻辑上的,所以听起来它会更有趣,即使我以后必须翻译本体(虽然我确信必须有应用程序才能做到这一点 - 此外,不要让reasoners使用DL吗?).
如果可能,我应该在Protege(或您建议的其他软件)中使用哪些设置配置才能执行此操作?我怀疑这是不可能的,但我想确定,因为除了特殊符号的尴尬之外我没有其他正当理由.
编辑:如果不可能,DL语言究竟是如何使用的?
OWL DL是描述逻辑SHOIN,支持数据值,数据类型和数据类型属性,即SHOIN(D),但由于OWL基于RDF(S),因此术语略有不同....对于OWL本体或知识库的描述,可以使用DL语法.有一个类似LISP的"抽象"语法定义,更容易用ASCII字符集编写.