(事实和谓词)&&(单一和确定)之间的区别

Difference between (Facts and Predicates) && (Single and Determ)

我只是想知道,序言中的 "facts" 和 "predicates" 部分有什么区别?

"single" 和 "determ" 关键字有什么区别?

简单明了:"Facts section"是针对事实的,事实是永远为真的谓词,用来描述一些属性。

Singledeterm 是 "fact mode",可选地用于事实声明,Single 表示事实始终只有一个值,determ 表示事实可以有零个或一个值。

Fact 在 db Table(Column1,Column2, ...)[ 中替换谓词,如 table =58=] 确实 Facts 采用类似 Fact(Arg1,Arg2) 的形式,它只为 "()"[ 中提到的特定常量提供 {true,false} 值=22=]

所以 Fact 确实是一个复杂的术语或参数谓词,Args 不是变量,是单独的常量。

例子

father(fathername,childname).

Rule 也是谓词的替代形式

rule_type1(+In_Args,?Out_Args) :- body .  
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body . 

它命令从事实或通过查询导出到正文中的逻辑规则生成数据

示例

max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .

?- max(3,5,Z).   /* give us */ Z=5

in visual-prolog Facts 可以用几个可选关键字来声明:

用关键字 determ 声明的事实。

关键字determ决定了事实数据库只能包含一个事实实例(数据库谓词)fact_N(...) 用这个关键字声明。因此,如果您尝试将 assert 一个然后是第二个这样的事实存入数据库,则 Visual Prolog 引擎将产生运行时错误。 (1041 断言声明为确定的事实,但事实已经存在)。 example

用关键字 single 声明的事实。

事实 fact_N 声明之前的关键字 single 决定了事实的一个且只有一个实例必须始终存在:

因为当程序调用目标时,必须已经知道单个事实;因此,必须在程序源代码的子句部分中初始化单个事实。

例如:

FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").