Aleph的输入变量和输出变量是什么?

时间:2020-07-10 15:26:22

标签: prolog logic swi-prolog aleph-ilp

我已经阅读了手册:

以下是它们在文件中的显示方式的一些示例:

:- mode(1,mem(+number,+list)).
:- mode(1,dec(+integer,-integer)).
:- mode(1,mult(+integer,+integer,-integer)).
:- mode(1,plus(+integer,+integer,-integer)).
:- mode(1,(+integer)=(#integer)).
:- mode(*,has_car(+train,-car)).

每个ModeType要么(a)很简单;要么或(b)结构化。一个简单的ModeType是以下之一: (a)+ T指定当在假设子句中出现带有谓词符号p的文字时,相应的自变量应为类型T的“输入”变量; (b)-T指定该参数是类型T的“输出”变量; 或(c)#T指定它应该是类型T的常量。以上所有示例均具有简单的模式类型。结构化ModeType的形式为f(..),其中f是函数符号,其每个参数都是简单或结构化ModeType。这是一个包含结构化ModeType的示例:

:- mode(1,mem(+number,[+number|+list])).

Aleph使用这些指令确保对于任何假设的从句形式H:-B1,B2,...,Bc:

输入变量。主体文字Bi中类型T的任何输入变量将显示为主体文字中类型T的输出变量,出现在Bi之前,或者显示为H中类型T的输入变量。 输出变量。 H中类型T的任何输出变量都将在Bi中类型T的输出变量显示。 常数。在模式中用#T表示的所有参数都只有T类型的基本项。

但是我仍然不明白我什么时候应该使用'+'和'-'? 你能给我一个例子吗?

0 个答案:

没有答案
相关问题