關於邏輯程式語言
Prolog以處理一階謂詞演算為背景,由於其簡單的文法、豐富的表達力和獨特的非過程語言的特點,很適合用來表示人類的思維和推理規則,從而一問世就贏得了人工智慧研究和套用開發者的廣泛興趣。尤其在西歐和日本,Prolog語言已推廣套用於許多套用領域,如
關係資料庫、
數理邏輯、抽象問題求解、
自然語言理解和
專家系統等。日本還在其於1979年提出的第五代計算機研究計畫中把Prolog列為核心語言。
Prolog實際上就是一種基於逆向規則的演繹推理技術,只不過對規則和目標的表示有嚴格的限制.再加上演繹推理控制機制自身的簡單性,難以適用於複雜的套用域。
Prolog語言的基本概念
Prolog語言的基本成分是Horn子句,表示為如下形式:
Prolog語言中,Horn子句以3種形式去分別表示逆向演繹推理中問題求解描述的3個部分:目標、規則和事實。
目標
表示為只有左部的Horn子句:
即在Prolog語言中,目標公式只限於表示為
原子公式的合取,而不能是任意的文字與或形。
規則
表示為典型的Horn子句:
這就是逆向演繹推理所使用的規範化B規則,只是規則左部限定為原子公式的合取,而非任意文字與或形。
事實
事實表示為事實元素的集合,每個事實元素表示為只有右部的Horn子句,即單一原子公式P。事實元素間隱含合取關係。
只要用Prolog語言表示問題描述的這3個部分,支持Prolog語句的推理機制就會自動執行基於規則的逆向演繹推理,並最終給出解答。

由於目標和規則的左部都限定為原子公式的合取,而這些原子公式又可激活多條規則(這些規則間隱含或關係)。所以,Prolog演繹推理過程建立的與或圖具有與、或關係呈現逐層交替的局面。隨著與或圖的向下擴展,最終會形成(搜尋到)一致解圖,從而演繹推理成功;否則推理失敗。
把目標中包含的各原子公式視為子目標,每當由子目標激活的規則插入與或圖時,規則左部的各原子公式又成為新的子目標,再用於激活新的規則;如此,隨著規則的激活和新子目標的產生,與或圖逐步擴展,直到子目標直接與事實元素(原子公式)匹配為止。
特點
Prolog語言的語法結構相當簡單,但描述能力很強。例如,當事實和規則描述的是某一學科公理。那么問題就是待證的命題;當事實和規則描述的是某些數據和關係,那么問題就是數據查詢語句;當事實和規則描述的是某些狀態變化規律,那么問題就是目標狀態。因此,Prolog語言是一種智慧型型程式設計語言。
Prolog程式沒有特定的運行順序,程式運行順序完全按照數理邏輯推導(消解法)的方式進行.而不是由編程式的人決定。Prolog是一種描述型語言,用特定的方法描述一個問題,然後由計算機自動找到這個問題的答案。舉個極端的例子:當建立好事實和規則後,只需要把某個問題告訴它,它就會自動查找答案。
Prolog程式中沒有
if、case、for這樣的控制流程語句。通常情況下,
程式設計師不需要了解程式的運行過程,只需要注重程式的描述是否全面。不過Prolog也提供了一些控制程式流程的方法,這些方法和其他語言中的方法有很大區別。