0
我在使用YAP序言來編寫序言時遇到了困難。我孤立我的問題的這兩行代碼:序言中的無限循環
is_a(G, A2):-is_a(G, A1), is_a_link(A1, A2).
is_a(x, y).
如果我把這兩行代碼在一個文件中,並諮詢文件,EN問序言如果is_a(x,y)
,程序永遠不會結束,導致我相信有一個無限循環涉及。
但我不明白爲什麼會出現一個循環,我只是問了序言它的一個公理是否屬實,是否應該不是這樣(沒有第二個想法)只是吐出來Yes
?
我的意思是,據我瞭解的方式序言作品,它會試圖找到在知識基礎,「證明」的說法真實的說明。我很困惑它爲什麼不簡單地返回公理。
編輯:
開關的代碼行,即
is_a(x, y).
is_a(G, A2):-is_a(G, A1), is_a_link(A1, A2).
使序言不會崩潰,因爲它顯然首先遇到真實的陳述。
如何'is_a_link/2'實施?即使你與謂詞交換的事實,它仍然不會終止。它只是碰巧產生'x'和'y'的解決方案,而不是無限的只有一次。 – lurker