1

我只是想知道,序言中的“事实”和“谓词”部分有什么区别?

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

4

2 回答 2

3

序言中的事实是 db Table(Column1,Column2, ...)中的谓词表的替换确实Facts采用了这样的形式,它只为“()”Fact(Arg1,Arg2)中提到的特定常量提供 {true,false} 值

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

例子

father(fathername,childname).

规则也是谓词的替换形式

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

在 visual-prologFacts中可以用几个可选关键字声明:

用关键字 determ 声明的事实。

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

用关键字 single 声明的事实。

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

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

例如:

FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").
于 2016-01-23T13:25:07.207 回答
1

明确指出:“事实部分”用于事实,事实是始终为真的谓词,用于描述某些属性。

Single并且determ是“事实模式”,在事实声明中可选地使用,Single意味着事实总是只有一个值,determ意味着事实可以有零或一个值。

于 2016-01-23T11:48:09.483 回答