
o
o
o
o
o
o
o
o
o
A


3
o
o
o
o
o
o
o
o
o
Prolog là ngôn ng lp trình lôgich (Prolog = PROgramming in LOGic) do
GS. A. Colmerauer ưa ra ln u tiên nm 1972 ti trưng i hc Marseille,
nưc Pháp. n nm 1980, Prolog nhanh chóng ưc áp dng rng rãi, ưc
ngưi Nht chn làm ngôn ng phát trin máy tính th h 5. Prolog ã ưc cài
t trên hu ht các dòng máy tính Unix/Linux, Macintosh, Windows.
Prolog còn ưc gi là ngôn ng lp trình ký hiu (symbolic programming) tương
t lp trình hàm (functional programming), hay lp trình phi s (non-numerical
programming). Nguyên lý lp trình lôgich da trên phép suy din lôgích, liên
quan n nhng khái nim toán hc như phép hp nht Herbrand, hp gii
Robinson, lôgich Horn, lôgich v t bc mt (first order predicate logic), v.v...
Prolog rt thích hp gii quyt nhng bài toán liên quan n các i tưng và
mi quan h gia chúng. Prolog ưc ng dng ch yu trong lnh vc trí tu nhân
to (Artificial Intelligence) như công ngh x lý tri thc, h chuyên gia, máy
hc, x lý ngôn ng, trò chơi, v.v...
Ni dung cun sách tp trung trình bày cơ s lý thuyt và nhng k thut
lp trình cơ bn trong Prolog, rt thích hp cho sinh viên các ngành tin hc và
nhng bn c mun tìm hiu v! k thut lp trình ng dng trong lnh vc trí
tu nhân to.
V TÁC GI :
Tt nghip ngành Toán Máy tính nm 1979 ti trưng i hc Bách khoa Hà Ni.
T 1979 n nay ging dy ti khoa Công ngh Thông tin, trưng i hc Bách
khoa, i hc à N"ng. Bo v tin s nm 1991 ti Pháp. Gi chc ch nhim
khoa
Công ngh Thông tin 1995-2000.
Hưng nghiên cu chính : x lý ngôn ng, x lý a ng, lý thuyt tính toán.
E-mail: khanhph@vnn.vn

LI NÓI U
Cun sách này nhm cung cp c s lý thuyt và nhng phưng pháp lp trình
c bn nht ca môn hc «Lp trình lôgich» (Programming in Logic). Ngưi c s
ưc làm quen vi mt s k thut lp trình lôgich ưc ng dng tưng i
ph bin và ch yu trong lnh vc trí tu nhân to (Artificial Intelligence) như công
ngh x lý tri thc, máy hc, h chuyên gia, x lý ngôn ng t nhiên, trò chi, v.v...
Cun sách gm nm chưng, trong mi chưng, tác gi u c g ng ưa vào
nhiu ví d minh ha. Ni dung các chưng như sau :
− Chưng 1 gii thiu ngôn ng lp trình Prolog da trên lôgich Horn (Horn
logic). Ngưi c ưc làm quen vi các ki!u d liu ca Prolog, khái nim
lut, s kin và vit ưc các chưng trình Prolog n gin.
− Chưng 2 trình bày các mc ngha khác nhau ca mt chưng trình Prolog :
ngha lôgich, ngha khai báo và ngha th tc, cách Prolog tr li các câu
h"i, cách Prolog làm tho mãn các ích.
− Chưng 3 trình bày các phép toán s hc, phép so sánh các i tưng và
#nh ngha các hàm s dng phép quy trong Prolog.
− Chưng 4 trình bày cu trúc danh sách và các phép x lý c bn trên danh
sách ca Prolog.
− Chưng 5 trình bày k thut lp trình nâng cao vi Prolog.
− Ph$n ph lc gii thiu ngôn ng lp trình SWI-Prolog, hưng d%n cách cài
&t s dng ph$n mm này và mt s chưng trình ví d tiêu bi!u vit trong
SWI Prolog ã chy có kt qu.
Cun sách này dùng làm giáo trình cho sinh viên ngành Tin hc và nhng bn
c mun tìm hi!u thêm v k thut lp trình cho lnh vc trí tu nhân to.
Trong quá trình biên son, tác gi ã nhn ưc t' các bn ng nghip nhiu
óng góp b ích v m&t chuyên môn, nhng ng viên khích l v m&t tinh th$n, s
giúp ( v biên tp ! cun sách ưc ra i. Tác gi xin ưc bày t" lòng bit n
sâu s c. Tác gi c)ng chân thành cm n mi ý kin phê bình óng góp ca bn c
g$n xa v ni dung ca cun sách này.
*à N+ng, ngày 27/05/2004
Tác gi.

i
MC LC
CHƠNG 1 M U V NGÔN NG PROLOG.................................. 1
I. GI#I THI$U NGÔN NG% PROLOG..........................................1
I.1. Prolog là ngôn ng lp trình lôgich ..............................................1
I.2. Cú pháp Prolog ............................................................................2
I.2.1. Các thut ng.............................................................................. 2
I.2.2. Các ki!u d liu Prolog ............................................................... 3
I.2.3. Chú thích ..................................................................................... 4
II. CÁC KI&U D% LI$U SƠ C(P C)A PROLOG..........................5
II.1. Các kiu h*ng (trc kin).............................................................5
II.1.1. Ki!u hng s................................................................................ 5
II.1.2. Ki!u hng lôgich.......................................................................... 5
II.1.3. Ki!u hng chui ký t.................................................................. 5
II.1.4. Ki!u hng nguyên t.................................................................... 5
II.2. Bin ............................................................................................. 6
III. S+ KI$N VÀ LU,T TRONG PROLOG.....................................6
III.1. Xây dng s kin.........................................................................6
III.2. Xây dng lut ............................................................................ 10
III.2.1. *#nh ngha lut.......................................................................... 10
III.2.2. *#nh ngha lut quy............................................................... 16
III.2.3. S dng bin trong Prolog ......................................................... 18
IV. KI&U D% LI$U C(U TRÚC C)A PROLOG........................... 20
IV.1. nh ngha kiu cu trúc ca Prolog........................................... 20
IV.2. So sánh và hp nht các hng..................................................... 23
CHƠNG 3 NG NGHA CA CHƠNG TRÌNH PROLOG ................ 31
I. QUAN H$ GI%A PROLOG VÀ LÔGICH TOÁN H-C........... 31
II. CÁC M.C NGH/A C)A CHƯƠNG TRÌNH PROLOG........... 32
II.1. Ngha khai báo ca chương trình Prolog .................................... 33
II.2. Khái nim v! gói mnh !.......................................................... 34
II.3. Ngha lôgich ca các mnh !.................................................... 35
II.4. Ngha th tc ca Prolog............................................................ 37
II.5. T1 hp các yu t khai báo và th tc ........................................ 47