Defeasible Prolog:实用工具与示例解析
1. 可废止查询与详尽响应
在可废止逻辑编程中,查询 ?- @ Goal
(其中 Goal
不含变量)会使 d - Prolog 给出 yes
或 no
的响应。若答案为 yes
,我们并不清楚在推导 Goal
时是否使用了可废止规则;若答案为 no
,也不明确 d - Prolog 能否证明 Goal
为正假(即 ?- @ neg Goal
成功),还是仅仅无法可废止地推导 Goal
。为获取这些信息,我们需要尝试以下四种查询的组合:
1. ?- Goal.
2. ?- neg Goal.
3. ?- @ Goal.
4. ?- @ neg Goal.
为简化这一过程,提供了一个实用谓词。在 DPUTILS.PL
中,第一行是一个查询,它声明了一个新运算符 @@/1
。该运算符用于要求 d - Prolog 对无变量的可废止查询提供详尽响应。由于对于含变量的查询,不同的变量实例化可能需要不同的响应,因此很难给出详尽响应。所以 @@
定义的第一个子句会检查目标中是否存在未实例化的变量。若存在,会告知用户问