Prolog编程深入解析:从知识表示到程序构建
1. Prolog调试与回溯机制
1.1 回溯示例
在Prolog中,回溯是一个重要的机制。例如,要证明 located_in(toronto,canada)
,计算机首先要证明 located_in(toronto,ontario)
。下面是一个更复杂的回溯示例:
?- located_in(What,texas).
** (0) CALL: located_in(_00,texas)
? > (Return)
** (0) EXIT: located_in(houston,texas)
? > (Return)
What = houston
->;
** (0) REDO: located_in(houston,texas)
? > (Return)
** (0) EXIT: located_in(austin,texas)
? > (Return)
What = austin
->;
** (0) REDO: located_in(austin,texas)
? > (Return)
** (0) FAIL: located_in(_00,texas)
? > (Return)
no
这里 _00
表示未实例化的变量。每个步骤有四种标记方式:
- CALL
:标记查询执行的开始。
- REDO
:表示为已经成功