You are on page 1of 31

Prolog Fast Foot

Prolog Fast Foot mt tri ca n ln.

NI DUNG HNG DN C IM CA PROLOG CU TRC CA CHNG TRNH PROLOG DOMAINS PREDICATES CLAUSES GOAL C IM CA BIN BN CHT QUI KIU DANH SCH NGUYN TC TR LI GOAL C CH HOT NG CA PROLOG LP TRNH LUN L M T LP TRNH LUN L QUI TP LUN LCH S TI LIU THAM KHO
HNG DN Thc n nhanh gip ngi ta nhanh chn hn trong vic ginh ly c hi. Nhng cng rt nguy him - nu lm dng. Hy thn trng v N.T. Son 1

thc. Mi tm huy chng u c mt tri. Nhng tt nht l ng lt

2 5 6 7 9 10 13 14 15 17 20 23 30 34 45 59 62

Hy nh rng ngn ng l phng tin, bt k n l loi ngn ng no. Ni dung truyn t quan trng hn l cch thc truyn t. Ti liu ny cung cp mt s kin thc c bn, gip cho ngi c hiu c quan im lp trnh lun l (logic programming). Cung cch lp trnh ny c khc vi loi lp trnh cu trc thng gp trong cc ngn ng Pascal, C, Fortran, . V vy vic lm quen vi mt phong cch mi cn phi c thi gian. Thi gian qun ci c. Do ti liu ny c trnh n vic trnh by di gc cu trc. Tuy nhin cng c i lc v s cm d ca ngi c m li sa vo. V cng hy vng rng, y cng nh l s cm d cui cng ca cha. Mt bi ton t khi t ra cho n khi c c li gii phi thc hin mt khi lng cng vic l M. D bi ton c gii bng ngn ng lp trnh no th khi lng vn l M. Ai s m nhim khi lng ny ?. Ngi lp trnh ng nhin s phi m nhim mt phn, phn cn li do h thng gnh vc. Nh vy ngi lp trnh trong h thng phi bit phn vic no mnh lm v phn vic no mnh khng lm. y chnh l hnh vi cn phi nhn thc. S phn chia ny s rt khc nhau cc ngn ng lp trnh. Ngi lp trnh trong h thng Prolog lun l mt ng ch nhn h v h thng Prolog l mt ngi thch m ly cng vic. Cn lp trnh cu trc th khng nh vy, h thng ca cc ngn ng cu trc lun th ng. N ch lm vic vi s ch bo ca ngi lp trnh. Vy ngi lp trnh Prolog s lm g ?. H ch cn m t bi ton theo qui nh ca lun l (logic). Ngha l dng cc cu khai bo m t 2 N.T. Son

Prolog Fast Foot bi ton. Ngoi ra khng cn lm thm g c, h thng Prolog s m nhim ht phn cn li.

Prolog Fast Foot

Phi qun i mt thi quen l mt hnh vi thng gp trong cc hot ng nghin cu khoa hc. y chnh l xa b nh kin. Hc tp ngoi mt tt ca n cn c mt kha cnh khc l hnh thnh nh kin. Nh vy nh kin l iu khng th trnh khi trong qu trnh hc tp. V vy hy chn la phng php hc tp sao cho phn nh kin c gim thiu. Lp trnh lun l s phn no gip chng ta gii quyt c bi ton ny.

N.T. Son

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

C IM CA PROLOG Prolog khng phn bit gia khi nim Data v Program nh trong Pascal. Sc mnh ca Prolog l qui. Ton b chng trnh c xem nh mt c s tri thc (knowledgebase). Chng trnh Prolog l mt tp hp cc lut (rules). Prolog l ngn ng c thit k ch yu cho cc suy lun, khng coi trng tnh ton. Kowalski ni Algorithm = logic+control. Logic l pht biu v ci g bi ton phi gii quyt. Control pht biu v lm th no bi ton c gii quyt. Ngi lp trnh lun l ch phi thc hin phn logic cn phn control h thng s m nhim.

H thng prolog cng cung cp cho ngi lp trnh kh nng to ra cc tp hp mi ph hp vi bi ton cn gii. Domains l ni ngi lp trnh nh ngha nhng tp hp mi (hoc t tn li). Predicates l phn khai bo cc quan h gia cc domains. Clauses l phn nh ngha cc quan h khai bo trong phn predicates. Clauses gm cc rule. Rule c dng biu din cho cu khai bo c dng iu kin - if nguyn_nhn then hu_qu. Nu rule khng c nguyn nhn th c gi l s kin (fact). Do fact l hu qu tt yu xy ra khng khng cn mt nguyn nhn no. Goal l phn t cu hi i vi h thng. DOMAINS Ni to tp hp mi c cng kiu vi tp hp c sn. Th d : Domains Tn = symbol Tui = integer NghNghip = symbol Ch thch : 1. Mt s kiu (tp hp) c bn : integer : kiu s nguyn,
5 6 N.T. Son

CU TRC CA CHNG TRNH PROLOG Domains, Predicates, Clauses, Goal. H thng prolog cung cp sn mt s tp hp ngi lp trnh s dng : Integer, Char, Real, Symbol, String, .
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

real : kiu s thc, char : kiu k t, string : kiu chui, gm chui cc k t c chiu di tu c t gia hai du nhy. symbol : l kiu gm nhng k hiu, mi k hiu c chiu di ti a 255 k t, bt u bng k t thng. 2. D min Tn v min NghNghip c cng kiu symbol nhng chng khng so snh hoc ng nht c vi nhau. Ni chung l cc tp hp trong Domains nu khng cng tn th s khng tng thch vi nhau. To tp hp l tch cc tp hp. Th d : Domains nphm = Tpch(symbol, symbol) TiuS = LLch(symbol, integer, symbol, symbol) To tp hp l hi cc tp hp. Th d : Domains Tn = symbol Tiliu = Book(Tn,Tn) or Magazine(Tn,Tn) Du = m ; dng ; Ks(integer) Hi hai tp hp bng k hiu OR hoc CHM PHY.
N.T. Son 7 8

Tp hp thnh phn ca hi c th l tp hp c mt phn t. Th d m, dng l hai tp hp c mt phn t.

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

PREDICATES To quan h gia cc tp hp. Th d : Domains Tn = symbol Nghnghip = string Tui = integer Predicates Llch(Tn, Tui, Nghnghip) To quan h trng. Th d : Predicates Repeat() Khngmu Repeat v Khngmu l tn ca hai quan h. Tp hp m n quan h l tp trng. Quan h Repeat() cn c th vit l Repeat. Quan h Khngmu c th vit l Khngmu().

Turbo Prolog qui nh bin c k t bt u l k t in (upppercase) hoc k t gch di (underscore). Hng c k t bt u l k t thng (lowercase). Th d : Minh, X, Ngi, _minh, _x, _ngi l 6 bin. minh, x, ngi, l 3 hng. Fact Fact l mt quan h trn cc tp hp xc nh (c sn hoc c xc nh trong Domains). y l cch xc nh tp hp bng lit k. Th d : Predicates Chi(symbol, symbol) Bit(symbol, symbol) Clauses Chi(s, piano). Chi(tn, keyboard). Chi(s, guitare). Bit(s, vtranh). Rule Chi(knh, violon). Chi(trang, guitare). Chi(knh, piano). Bit(knh, lmth).

Bit(knh, iukhc). Bit(knh, sonnhc). CLAUSES Bin v hng


N.T. Son 9 10

Rule l quan h c nh ngha t nhiu quan h khc. y l cch xc nh tp hp bng phng php trng tnh.
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Rule c dng ca cu iu kin, ngha l gm nguyn nhn v hu qu (nguyn nhn hu qu). Tuy nhin Rule l cu iu kin c trnh by theo dng thc : Hu qu nguyn nhn. Cc dng sau y tng ng : Hu qu Nguyn nhn hay Hu qu if Nguyn nhn hay Hu qu :- Nguyn nhn. Do Fact c th c xem l mt loi rule c bit - rule khng c iu kin. Nu mnh nguyn nhn gm 3 mnh nguyn nhn ngnh1, ngnh2 v ngnh3 kt hp li th c biu din nh sau : Nguyn nhn = Ngnh1 and Ngnh2 and Ngnh3. Hoc Nguyn nhn = Ngnh1, Ngnh2, Ngnh3. Th d : Predicates Chi(symbol, symbol) Bit(symbol, symbol) anng(symbol) Clauses
N.T. Son 11 12

anng(X) :- Bit(X, Y), Chi(X, Z). Mt hc sinh X a nng nu bit t nht mt mn ngh thut Y v chi c mt mn th thao Z. Th d : Chuyn i tam on lun sang Prolog : Mi ngi u phi cht. Socrates l ngi. Vy Socrates phi cht. Predicates Lngi(symbol) Cht(symbol) Clauses Lngi(socrates). Cht(Ai) :- Lngi(Ai). Nhn xt : Mt predicates c nh ngha trong clauses bng nhiu fact hoc nhiu rule hoc kt hp va fact va rule. Th d : Xc nh tp hp A = {1,2,3,4,5,6,8,10,12,14, } Predicates PtA(integer) Clauses PtA(1).
N.T. Son

/* nh ngha trn */ /* nh ngha trn */

Prolog Fast Foot

Prolog Fast Foot

PtA(3). PtA(5). PtA(X) :- (X mod 2) = 0. V t PtA c nh ngha gm 3 fact v 1 rule. GOAL Goal l ni t cu hi vi h thng v h thng s cho cu tr li. Goal gm mt hay nhiu predicates cng vi thng s. Nu goal gm nhiu thnh phn th mi thnh phn c gi l subgoal. Th d : Cho h thng tam on lun nh th d trn. Khi c th t 1 trong 5 cu hi sau : Goal Cht(Ai). Goal Cht(socates). Goal Lngi(Ai). Goal Lngi(socrates). Goal Cht(Ai), Lngi(socrates). Bn Goal u c 1 subgoal. Nhng goal cui c 2 subgoal l Cht(Ai) v Lngi(socrates).

C IM CA BIN TRONG TURBO PROLOG Bin trong mi clauses phi xut hin t nht 2 ln. Nu bin ch xut hin mt ln trong clauses th phi thay n bng bin rng (anonymous). Ngoi ra mt thng s no ca v t trong clauses m ta khng quan tm cng c th thay n bng bin rng. Bin rng c biu din bng k hiu gch di _ (underscore).

Th d : Clauses anng(X) :- Bit(X, Y), Chi(X, Z). Bin Y v Z ch xut hin 1 ln nn phi i thnh bin rng. Do : Clauses anng(X) :- Bit(X, _ ), Chi(X, _ ). Cc trng thi ca bin l : t do (free), b tri (bound), c ci (unbound). Cc trng thi ny do h thng thc hin. Ngi lp trnh khng c bt k tc ng no ln bin thay i trng thi. Do Prolog khng c hnh ng gn (assignment) gi tr cho bin nh trong ngn ng Pascal.

N.T. Son

13

14

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Min Cy l hi ca hai tp hp. Tp hp th nht ch c BN CHT QUI V Prolog khng phn bit gia d liu v chng trnh nh Pascal nn vn qui c thc hin c trong domains v clauses. Nn tng ton hc ca qui l nh l truy chng. Vic p dng qui trong Prolog s dng c 2 dng truy chng. Dng 1 : P1. Pn Pn+1. Dng 2 : P1. Pm Pn+1, vi m [1, n]. Trong thc t mnh P1 ca truy chng tng ng vi mt tp hp cc mnh s kin (fact). Mnh Pn Pn+1 cng tng ng vi mt tp hp cc mnh qui lut (rule). qui trong khai bo Domains Th d : Domains Cy = Tree(symbol, Cy); Trng qui trong phn clauses Th d : Tnh giai tha ca mt s nguyn. Giai tha ca 5 l 5 ! = 12345. Nh vy tnh giai tha ca 5 th tnh giai tha ca 4 (=51). Sau ly kt qu nhn vi 5. Vy 5 ! = 4! 5. Predicates Giaitha (real, real) Clauses Giaitha(1,1). Giaitha(N,T) :- M=N1, Giaitha(M,S), T=S*N. Tp hp th nht gm mt mnh s kin l Giaitha(1,1) v tp hp mt mnh qui l Giaitha(N,T) :- M=N 1, Giaitha(M, S), T = S*N. mt phn t l Trng v tp hp th hai l tp hp qui Tree(symbol, Cy).

N.T. Son

15

16

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

KIU DANH SCH y l mt loi tp hp c bn cht qui. Do nhng thao tc trn danh sch cn khai thc tnh qui trit . Danh sch l mt loi tp hp c phn t l chui cc phn t ca mt tp hp trong min Domains. Kiu danh sch ca Prolog c nh ngha bng cch thm k t * vo tn kiu phn t. Th d : Domains Htn = symbol DsSV = Htn* DsS = integer* DsTn = symbol* DsNghnghip = string* DsSV l danh sch cc phn t m mi phn t c kiu Hotn. DsS l danh sch cc phn t m mi phn t l s nguyn. Dng thc ca mt bin kiu danh sch : Lit k : cc phn t ca danh sch t cch nhau bng du phy. Tt c t gia 2 du mc vung. Th d : Domains
N.T. Son 17 18

Dss = integer* Bin X c kiu Dss l mt danh sch 4 s nguyn 1, 2, 3, 4, c vit nh sau : X = [1,2,3,4] qui : Danh sch c biu din gm 2 phn, phn Head gm 1 phn t u ca biu din lit k v phn Tail gm nhng phn t cn li ca biu din lit k. Phn Tail c biu din bng mt danh sch lit k khc. Head v Tail t cch nhau du s xung. Head v Tail c t trong du mc vung. Th d : Domains Dss = integer* Bin X c kiu Dss l mt danh sch 4 s nguyn 1, 2, 3, 4, c vit nh sau : X = [1|[2,3,4]]. Mt s danh sch c bit : a. Danh sch trng [] c head v tail khng c nh ngha. b. Danh sch [1,2,3,4] = [1|[2,3,4]] c head l 1, tail l [2,3,4]. c. Danh sch [1] = [1|[] ] c head l 1, tail l danh sch trng [].
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

d.

Danh

sch

[[1,2,3],

[2,3,4,5],

[6]]

Msg(Ct, Ct) Clauses Hanoi :- Hanoi(5). Hanoi(N) :- Di(N, tri, gia, phi). Di(1, A, _, C) :- Msg(A, C), !. Di(N, A, B, C) :M = N-1, Di(M, A, C, B), Msg(A, C), !, Di(M, B, A, C). Msg(Loc1, Loc2) :Goal Hanoi. M t cu trc chng trnh : 1. S dng 2 min : Ct v integer. 2. Khai bo 4 v t : v t Hni khng c thng s, v t Hni c 1 thng s, v t Di c 4 thng s, v t Msg c 2 thng s. 3. Phn nh ngha ca cc v t trong clauses : v t Hni c 1 mnh , v t Hni(_) c 1 mnh ,
19 20 N.T. Son

[[1,2,3]|[[2,3,4,5], [6]]] c head l [1,2,3] v tail l [[2,3,4,5],[6]]. NGUYN TC TR LI GOAL CA PROLOG Tun t t trn xung : h thng s tr li cho subgoal u tin, k n l subgoal th 2, th 3, cho n subgoal cui cng. So trng (matching) : tr li cho tng subgoal h thng d subgoal tun t theo tng dng trong clauses. Vic d tm s dng khi subgoal trng vi mt dng clause no , nu khng trng th d tip cho n dng cui cng ca clauses. Th d : Thp H Ni. ng c tm hiu ngha ca chng trnh ny, ch cn quan st hnh thc ca n. Cc k hiu ! v nl l cc subgoal. Domains Ct = symbol Predicates Hanoi Hanoi(integer) Di(integer, Ct, Ct, Ct)
N.T. Son

(1) (2) (3) (4)

(5)

write("Di a t ", Loc1, " vo", Loc2), nl, !.

Prolog Fast Foot

Prolog Fast Foot

v t Di(_,_,_,_) c 2 mnh , v t Msg(_,_) c 1 mnh . tha mn Goal Hanoi, h thng s d tun t t mnh u tin n mnh th 5 trong phn clauses. Goal Hanoi trng vi phn u ca mnh 1 Hanoi :- Hanoi(5). tha mn mnh ny th subgoal Hanoi(5) phi c tho. Khi h thng s d trong 5 mnh xem mnh no trng vi Hanoi(5) : Vi mnh 1, Hanoi(5) khng so trng c v phn u ca mnh 1 l Hanoi (khng c thng s) cn Hanoi(5) c mt thng s. Vi mnh 2, Hanoi(5) so trng c v phn u ca mnh 1 l Hanoi(N). Lc ny N b buc vo gi tr 5. mnh ny c tha th iu kin Di(N,tri,gia,phi) ca mnh 2 cn phi c tha mn. H thng li d trong 5 mnh v thy rng iu kin ny trng vi mnh 3. Do iu kin ca mnh 3 Msg(A, C) cng phi c tha. Qu trnh ny din tin cho n khi khng cn iu kin no i hi th h thng dng. C CH HOT NG CA PROLOG ng nht (unification). Khi so trng subgoal vi cc dng ca clauses h thng prolog p dng c ch ng nht. Nu subgoal so trng vi mt dng ca clauses l fact th n s ng nht tn v t k n l danh sch thng s. Cc thng s s c ng nht theo dng thc. Th d : Predicates Chto(symbol, symbol) Clauses Chto(minh, tnla). Chto(dng, mytnh). Chto(th, xehi). Goal Chto(th, X). Prolog s tr li bng cch d trn 3 mnh ca phn clauses. Vi mnh 1 Chto(minh, tnla) : tn v t ph hp cng l Chto, cng c 2 thng s,
N.T. Son 21 22 N.T. Son

(1) (2) (3)

Prolog Fast Foot

Prolog Fast Foot

nhng thng s th 1 ca goal l th khc vi thng s th 1 ca mnh 1 l minh. Do mnh ny khng ph hp vi goal. Vic so trng tip tc. Vi mnh 2 Chto(dng, mytnh) : tn v t ph hp cng l Chto, cng c 2 thng s, nhng thng s th 1 ca goal l th khc vi thng s th 1 ca mnh 1 l dng. Do mnh ny khng ph hp vi goal. Vic so trng tip tc. Vi mnh 3 Chto(th, xehi) : tn v t ph hp cng l Chto, cng c 2 thng s, thng s th 1 ging nhau cng l th, thng s th 2 ca goal l bin X cha c gi tr nn ng nht vi thng s th 2 l xehi. Vy h thng s tr li X l xehi. Nu subgoal so trng vi mt dng ca clauses l rule th n ng nht tn, k ng nht dng thc thng s. Cui cng l kim tra cc subgoal din t iu kin c trong mnh . Th d :
N.T. Son 23 24

Domains Dss = integer* Predicates Sub(Dss, Dss) Clauses Sub( [], _ ) :- subgoal, . Sub( [_|[3|Y]], [] ) :- subgoal, . Sub( X, [2|[3,4]] ) :- subgoal, .. . Goal Sub([5], [Y|[3]] ). tho mn goal, h thng s tin hnh d t mnh 1 n mnh 3. Vi mnh 1, thng s 1 c [] [5]. Vi mnh 2, thng s 1 c _ = [5] nhng [3|Y]] [], Vi mnh 3, thng s 1 c X = [5], thng s 2 c Y = 2 v [3,4] [3] (v danh sch [3,4] c 2 phn t cn danh sch [3] ch c 1 phn t), H thng tr li l khng p ng c goal ny mc d cha h kim tra n cc subgoal. Nhn xt : S khc bit gia rule ca Prolog v if then ca Pascal. If iukin then Ktqu = lnh iu kin ca Pascal.
N.T. Son

(1) (2) (3)

Prolog Fast Foot

Prolog Fast Foot

Ktqu if iukin = Rule ca Prolog. H thng Pascal khi thc hin lnh if-then s kim tra iu kin trc, nu ng mi thc hin kt qu. Nhng vi rule ca Prolog th kt qu c kim tra trc. Vic kim tra c thc hin gm hai phn - dng thc v gi tr. Khi dng thc v gi tr ph hp th h thng mi kim tra iu kin (cc subgoal). Trong mt s trng hp trnh t thc hin ny ca Prolog c tin li, v nu hnh thc kt qu khng ph hp th khng cn thit kim tra iu kin. Trong khi Pascal vic kim tra iu kin v hnh thc kt qu c gom chung vo trong iu kin. Thi lui (backtracking) Gi s c mnh P :- P1, P2, P3. Mun mnh P tha th cc subgoal P1, P2, P3 phi tha. Gi s P1 tha nhng cn 5 trng hp cha xt n. Khi h thng s kim tra xem P2 c tho hay khng. Nu P2 khng tha th h thng s thi lui li kim tra P1 vi 5 trng hp cha xt. Vic ny thc hin c nh c ch thi lui ca Prolog. Cc trng thi ca bin T do (free) : Trc khi b buc th bin c gi l t do.
N.T. Son 25 26

B tri (bound) : Khi bin c ng nht th n b buc gi tr c ng nht vo. c ci (unbind) : Khi backtracking ti v t no th bin trong thng s ca v t c ci b gi tr mang trc ra, v t lc ny n c t do v ch b buc gi tr mi vo. Th d : Predicates Chi(symbol, symbol) Bit(symbol, symbol) anng(symbol) Clauses Chi(minh, piano). Chi(tn, keyboard). Bit(tn, vtranh). Chi(knh, violon). Chi(trang, guitare). Bit(knh, lmth).

Bit(knh, iukhc). Bit(knh, sonnhc). anng(X) :- Bit(X, _), Chi(X, _). Goal anng(X). goal tha th 2 subgoal Bit(X,_) v Chi(X,_) phi tha.

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Subgoal Bit(X, _ ) s c duyt trn clauses v s ly gi tr l Bit(tn, vtranh) v cn 3 mnh m subgoal ny cha duyt. K subgoal Chi(tn, _ ) (bin X khng cn t do b buc vo gi tr tn) c duyt nhng khng c mnh no n tha v vy n tht bi. H thng s t thi lui ng thi bin X c ci b gi tr tn, n tr li trng thi t do v d tr li subgoal Bit(X, _) vi 3 mnh cn li. Nh vy s ly gi tr Bit(knh, lmth). Subgoal Chi li c d trng ly gi tr. N ly c gi tr Chi(knh, violon). Khi goal c tha v bin X ca v t anng ly gi tr l knh. Ch : Bin trong Prolog ch c ngha trong mnh cha n. Do nhiu mnh khc nhau c th c cng tn bin.

bt li hn l thun li. Lp trnh prolog c th hnh dung bng hai t : m t v qui. Nhng hng dn sau gip cho ngi lp trnh qun i thi quen lp trnh cu trc. Hy m t bi ton li thnh cc cu khai bo. Cn nhn dng ra cc cu iu kin v cc cu ch s kin. Th d : Dng ban u ca bi ton : Mi ngi c sch u c th cho Trang mn. Bit rng Tm c mt quyn sch. Hi rng Tm c th cho Trang mn sch hay khng ? Dng cu khai bo : - Nu ai c sch th cho Trang mn sch. - Tm c sch. - Tm cho Trang mn sch ? Nhn dng cc quan h. nhn dng ra cc quan h bng cch chn trong cc ng t ca cc cu khai bo. Cn i tng ca quan h chnh l cc danh t.

LP TRNH LUN L M T Mt vic kh khn cho ngi lp trnh Prolog l nu h qu quen thuc vi lp trnh cu trc. Kinh nghim ny gy nhiu
N.T. Son 27 28

Khi ng t l th chn quan h l tnh t i theo n. Th d : (tip theo) Cc ng t : C, Chomn.


N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Cc i tng : ai (c sch), ngi (cho mn), ngi (c cho mn), sch. C th chuyn thnh cc quan h : Csch(ngi), C(Ai, Ci_s_hu), Chomnsch(Ai_cho, Ai_mn), Chomn(Ai_cho,Ai_mn,Ci_c_mn) Nh vy c nhiu la chn m t bi ton : a. (1) & (3). b. (1) & (4). c. (2) & (3). d. (2) & (4). D liu c th vi tt c quan h trn : Csch(tm), C(tm, sch), if Csch(Ai) then Chomnsch(Ai, trang), if C(Ai, sch) then Chomn(Ai, trang, sch), Chomnsch(tm, trang) ?, Chomn(tm, trang, sch) ?. Nh vy da vo u c quyt nh c mt la chn ?. - Da vo cc i tng c th.
N.T. Son 29 30

Nu i tng tru tng ch c mt i tng c th th ghp n vo quan h. i tng tru tng Cig ch c mt i tng c th l sch nn ta ghp sch vo cc ng t tng ng. (1) (2) (3) (4) Do ch cn c cc quan h : Csch(ngi), Chomnsch(Ai_cho, Ai_mn), Chuyn thnh fact v rule. Khi chuyn cu iu kin thnh rule nh o ngc v tr h qu t pha trc v nguyn nhn t sau. Th d : (tip theo) if Csch(Ai) then Chomnsch(Ai, trang), Csch(tm), Chomnsch(tm, trang) ?, Th d : a. Dng ban u : Ngi no knh trng mnh th c ngi khc knh trng. Trang knh trng mnh. Ai c Tm knh trng ?. b. Dng khai bo : - Nu mnh knh trng mnh th ngi khc knh trng mnh. - Trang knh trng Trang. - Tm knh trng ai ?.
N.T. Son

(1) (3)

Prolog Fast Foot

Prolog Fast Foot

c. Chn quan h : - ng t : KnhTrng, - i tng : ngi, Trang, Tm. Cc i tng u thuc lp i tng tru tng l Ngi. d. Chuyn thnh fact v rule : Nu KnhTrng(X, X) th KnhTrng(Y, X), KnhTrng(trang, trang), KnhTrng(tm, Ai). e. Dng Prolog tng ng : KnhTrng(Y, X) :- KnhTrng(X, X). KnhTrng(trang, trang). Goal KnhTrng(tm, Ai). LP TRNH LUN L QUI lp trnh qui th trc ht vn phi thc hin phn lp trnh m t. Sau chn cc cu khai bo c bn cht truy chng chuyn thnh dng qui. Mt cu khai bo c gi l c bn cht truy chng khi c th bin i thnh tng ng vi v hn cu khai bo. Trong thc t mt cu khai bo c bn cht truy chng c th c nhiu dng tng ng truy chng. Cc th d sau s minh ha iu ny. L thuyt tp hp cho chng ta bit c hai dng truy chng hu hn. Lp trnh lun l s dng c 2 dng ny. V vic nhn dng cc cu khai bo c th c thm ti liu tham kho [9]. V cc k thut chuyn mt cu sang dng truy chng c th xem ph chng 4 ca ti liu tham kho [10].
N.T. Son 31 32

Th d : Phn t ca mt danh sch. Qui c L[n] l danh sch L c chiu di n. a. Dng nguyn thy : P = X l phn t X ca danh sch L. b. Bin i P tng ng vi v hn mnh Pn : P = (n)Pn, vi Pn = X l phn t ca danh sch L[n] . c. Dng truy chng 1 : P1. Pn Pn+1. d. Dng truy chng tng ng vi hai mnh : X l phn t ca L[1]. Nu X l phn t ca L[n] th X cng l phn t ca L[n+1]. e. Tng ng vi : P1 = X l phn t ca L[1]. P1 = X l phn t u ca L, hay L = [X, ] = [X|_] t ca L[n]). = Nu X l phn t ca L[n] th X l phn t ca L[n] thm phn t A u. (a) (Pn Pn+1) = (X l phn t ca L[n+1] :- X l phn

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

= Nu X l phn t ca L[n] th X l phn t ca [A|L[n]]. = Nu X l phn t ca L[n] th X cng l phn t ca [_|L[n]]. = X l phn t ca [_|L[n]] if X l phn t ca L[n]. (b) f. Chn quan h : Pt(Phnt, Danhsch). g. Chuyn thnh v t ca Prolog : Domains Phnt = char (kiu ty ) Danhsch = char* Predicates Pt(Phnt, Danhsch) Clauses Pt(X, [X | _ ]). Pt(X, [_ | Y]) :- Pt(X,Y). Th d : Prefix. (Danh sch u ca mt danh sch) (Ap dng truy chng dng th 1) Danh sch X = 234 l danh sch u (prefix) ca danh sch L = 23457894566. Nhng danh sch Q = 457 khng l danh sch u ca L. a. P = X l prefix ca L.
N.T. Son 33 34

b. Pn = X[n] l prefix ca L. c. X[0] = [] l prefix ca L. Nu X l prefix ca L th [A}X] l prefix ca [A|L]. (truy chng trn chiu di ca X). [A|Y]) l prefix ca [A|L] nu Y l prefix ca L. d. Prefix([], L). Prefix([A|Y], [A|L]) :- Prefix(Y,L). Ch thch : 1. K hiu [A|L] l thm phn t A vo u danh sch L. 2. Bin L trong (1) v (2) chng dnh dnh g vi nhau. C th vit li (2) l Prefix([A|Y], [A|Z]) :- Prefix(Y,Z). 3. Trng hp ny c 2 s nguyn truy chng l chiu di ca X v chiu di ca L. Nhng tnh cht (1) (2)

(t a) (t b)

prefix khng thay i theo chiu di ca L nn ta chn truy chng theo chiu di ca X. Mt s th d sau c th truy chng trn nhiu s nguyn khc nhau). Th d : Suffix. (Danh sch ui ca 1 danh sch) (Ap dng truy chng dng th 2) Danh sch X = 566 l danh sch ui (suffix) ca danh sch L = 23457894566.
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Nhng danh sch Q = 457 khng l danh sch ui ca L. a. P = X l suffix ca L. b. Pn = X l suffix ca L[n]. c. Danh sch X l phn ui ca danh sch X. Nu Danh sch X l phn ui ca danh sch L[n] th X l phn ui ca danh sch L[n+1]. d. Subfix(L, L). Subfix(X,[_|Z]) :- Subfix(X,Z). Th d : Sublist. (Danh sch con ca mt danh sch) (Ap dng truy chng dng th 2) Danh sch X = 579 l danh sch con ca danh sch L = 234579894566. Nhng danh sch Q = 452 khng l danh sch con ca L. a. P = X l sublist ca L. b. Pn = X l sublist ca L[n]. c. Ct chui L lm 2 phn, L = PQ. Chn P = 234579 v Q = 894566. Khi P l prefix ca L. Nu X l suffix ca P th X l sublist ca L. d. Sublist(X,Y) :- Prefix(P,Y), Suffix(X,P). Ch thch :
N.T. Son 35 36

1. Vic phn chia L thnh P, Q vi ch ly suffix ca mt prefix. Nu tn ti mt im ct nh vy th X l chui con ca L. Vic kim tra im ny c tn ti hay khng do h thng Prolog lo, ngi lp trnh khng phi lo. 2. im ct i chui L[n] l tu , do n l dng truy chng 2. V bi ton s p dng cho chui L[m] vi m < n. Nu ct ti phn t u l truy chng dng 1, P = 2, Q = 34579894566. 3. Th p dng dng truy chng 1 gii bi tp ny. Th d : Sublist. (Ap dng truy chng dng th 2) a. P = X l sublist ca L. b. Pn = X l sublist ca L[n]. c. Ct chui L = 234579894566 lm 2 phn gm P v Q. Chn P = 234 v Q = 579894566. Khi Q l suffix ca L. Nu X l prefix ca Q th X l sublist ca L. Vic phn chia ny vi ch ly prefix ca mt suffix. d. Sublist(X,Y) :- Prefix(X,Q), Suffix(Q,Y). Th d : Sublist. (Ap dng 2 ln truy chng dng 1) a. P = X l sublist ca L. b. Pn = X l sublist ca L[n]. c. X l sublist ca L[n].
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Nu X l prefix ca L th X l sublist L. (Trng hp X khng l prefix ca L th X c th l prefix ca L, vi L l L b phn t u). Nu X l sublist ca L th X l sublist ca [_|L]. d. Sublist(X,L) :- Prefix(X,L). Sublist(X,[_|L]) :- Sublist(X,L). Ch thch : 1. Khi trng hp X khng l prefix ca L th X c th l prefix ca L nhng b i phn t u. Phn t u ca L lin tip b ct i nu X cha l prefix ca L. 2. Nh vy c th p dng tng t cho suffix ca L v b i phn t ui khi X khng l suffix ca L hay khng ?. iu ny khng c v khng c cch trc tip b i phn t ui. Ch c cch xc nh trc tip phn t u l nh biu din head v tail). 3. Bin L ca 2 mnh trong phn d khng dnh dng g vi nhau. Th d : Kt ni 2 danh sch. (Ap dng truy chng dng th 1) Danh sch X = 1234, danh sch L = 5678910. Danh sch kt ni l XL = 12345678910. a. P = Kt ni X vo L. b. Pn = Kt ni X[n] vo L. c. X[0] l danh sch trng th kt qu l L.
N.T. Son 37 38

X[1] l [H] th kt qu l [H|L]. X[n+1] l [H|T] th kt ni T vi L sau ly kt qu thm phn t H u. Ch cn th hin chiu di 0 v chiu di n+1. Ly v t append c 3 thng s. Thng s 1 l X, thng s 2 l L v thng s 3 l kt qu. d. Append([], L, L). Append([H|T], L, [H|Z]) :- Append(T, L, Z). Th d : Sublist. (Ap dng truy chng dng th 2) a. P = X l sublist ca L. b. Pn = X l sublist ca L[n]. c. Danh sch L c th coi nh gm c 3 phn : P (prefix), X v S (suffix). Chui L = PXS = 234579894566 th P = 234, X = 579 v S = 894566. Mt chui no ( _ ) kt hp vi mt chui K (XS) c kt qu l L v chui K l kt qu ca s kt ni gia X v chui no . Nu c c s kt ni nh vy th X l chui con ca L. d. Sublist(X, PXS) :- Append(_ , XS, PXS), Append(X, _ , XS).
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Ch thch : 1. Cc thng s X, XS, PXS l tn ca 3 bin, khng phi l kt ni. Tn bin c t nh vy nhn dng s kt hp mong mun gia cc danh sch. Do c th thay tn bin XS bng tn Y v tn bin PXS bng tn L. Kt qu vn khng c g thay i. Do c th vit li nh sau : Sublist(X,L) :-Append(_,K,L), Append(X,_,K). 2. Mnh Append(_ , XS, PXS) c s dng dng ny ging nh kim tra XS l suffix ca PXS, cn Append(X, _ , XS) ging nh kim tra X l prefix ca XS. Th d : Sublist. (Ap dng truy chng dng th 2) a. P = X l sublist ca L. b. Pn = X l sublist ca L[n]. c. Subfix ca prefix v s dng append. Mt chui Q (PX) kt hp vi mt chui no (_ ) c kt qu l L (PXS) v chui Q l kt qu ca s kt ni gia X v chui no . Nu c c s kt ni nh vy th X l chui con ca L. d. Sublist(X, PXS) :- Append(PX, _ , PXS), Append(_ , X, PX).
N.T. Son 39 40

Ch thch : V t Pt c th coi nh l mt trng hp c bit ca Sublist. V Pt(X,Y) :- Sublist([X],Y). Th d : o ngc mt danh sch. (Ap dng truy chng dng th 1) a. P = o ngc danh sch L. b. Pn = o ngc danh sch L[n]. c. L[0] c o ngc l L[0]. o ngc L[n+1] = [H|Y] ta o ngc Y sau kt ni n vi H. d. Reverse([], []).
Reverse([H|Y],Z) :- reverse(Y,T), append(T,[H],Z).

Th d : o ngc mt danh sch. a. P = o ngc danh sch L. b. Pn = o ngc danh sch L[n]. c. Nu L[n] nghch o th L[n+1] c nghch o. Ly phn t u X ca danh sch L append vi danh sch trng E, ngha l c [X|E]. Vic ny thc hin cho n khi L thnh trng. d. Reverse(L, Y) :- Reverse3(L, [], Y). Reverse3([], E, E) :- !. Reverse3([X | Z], E, Y) :- Reverse3(Z, [X|E], Y).

N.T. Son

Prolog Fast Foot Ch thch : To mt v t trung gian Reverse3 c thm mt thng s trung gian.

Prolog Fast Foot

N.T. Son

41

42

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

TP LUN Trt t ca cc rule trong phn clauses s nh hng n thi gian thc thi. Cc v t c th t cng tn vi danh sch thng s khc nhau. Th d : Domains Dss = integer* Dskhiu = symbol* Dskt = char* Predicates Member(integer, Dss) Member(symbol, Dskhiu) Member(char, Dskt) Ty theo dng c th ca Member s ng nht vi dng thch hp. Khi nh ngha mt v t nn tnh cht cc thng s l input (in) hay output (out). Th d : Append([], X, X). Append([X | T], Y, [X | Z]) :- Append(T, Y, Z).

Ta c nh ngha Append vi dng (in, in, out) nhng cc nh ngha ca ta v tnh cho c trng hp (out, int, int), (in, out, in), (in, in, in). Khi s dng trong trng hp c th nn xem xt cc trng thi in, out ca cc thng s cho tng trng hp. Mt v t c gi l Deterministic khi n ch c mt kh nng la chn. Ngc li, n c gi l Nondeterministic khi c nhiu kh nng la chn. Th d : Clauses Lngi(socrates). Cht(Ai) :- Lngi(Ai). V t Lngi v Cht l deterministic v n ch c mt kh nng la chn. Nhng, Clauses Lngi(socrates). Lngi(platon). Cht(Ai) :- Lngi(Ai). V t Lngi v Cht l non-deterministic v c 2 kh nng la chn. V t fail l v t chun lun c gi tr sai. Dng fail vi mc ch to backtracking vt cn tt c cc kh nng la chn.

N.T. Son

43

44

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Th d : Predicates Nhvn(symbol, string) In_ra Clauses Nhvn(nguynTun, ChicLngMtCua). Nhvn(nguynDu, on trng tn thanh). Nhvn(phmthinTh, ontrngvthanh). Nhvn(phmThi, S knh tn trang). In_ra :- Nhvn(X,Y), write(X), write(Y), fail. In_ra. Clauses In_ra. Danh sch tt c mnh Nhvn(_,_) s c in ra ht nh v t fail. V t cut (!) c dng ngn chn backtracking. Khi dng thc hin chng trnh i qua cut th mi mnh ng trc n tr thnh deterministic. Th d : Cl :- sb1, sb2, sb3, . Cl :- sb4, sb5, !, sb6, . Cl :- .

Khi thc hin ti sb6 th khng th quay li chn cc kh nng cn li ca sb5, sb4, sb3, sb2, sb1, d chng cn nhiu kh nng la chn na. Ngoi ra mnh Cl ca dng th 3 ( sau ! ) cng khng c th v ! xa cc kh nng la chn cn li ca mnh Cl. V coi nh C1 ca dng th 1 v th 2 l ng trc !, nn C1 ca dng th 3 l kh nng la chn cn li ca C1 cng b xa. C hai l do s dng cut : 1. Khi ngha ca chng trnh khng mun xem ht cc kh nng cn li. 2. Khi bit trc mt s kh nng khng bao gi cho li gii c ngha. Th d : Predicates Hnhng(char) Ktra(char) Mctiu Clauses Hnh ng(1) :- !, write(In ra s 1). Hnh ng(2) :- !, write(In ra s 2). Hnh ng(3) :- !, write(In ra s 3). Ktra(1). Ktra(2). Ktra(3). Ktra(_) :- fail. Mctiu :- readchar(N), Hnhng(N), Ktra(N). (1) (2) (3)

N.T. Son

45

46

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Goal Mctiu. Nu readchar nhn gi tr 1 th Hnhng(1) thc hin v thc hin lnh write. V cut trc write nn subgoal Hnhng c b ht cc kh nng cn li. Do nu Ktra tht bi th Mctiu tht bi. Nu readchar nhn gi tr 1 th Hnhng(1) thc hin v thc hin lnh write. V nu khng c cut trc write th subgoal Hnhng s cn 2 kh nng la chn. Do nu Ktra tht bi th Hnhng(2) s thc hin v Ktra s thc hin. Cut ca cc mnh sau cng vy. Trong th d trn Mctiu l non-deterministic hay deterministic ?. Goal Mctiu c 3 subgoal l : readchar(N), Hnhng(N), Ktra(N). Subgoal readchar(N) l deterministic. Subgoal Hnhng(N) l deterministic v cc cut. Nhng Ktra(N) l non-deterministic. Do Mctiu l non-deterministic. Mun n tr thnh deterministic th thay : Ktra(1). Ktra(2). Ktra(3). bng : Ktra(1):-!. Ktra(2):-!. Ktra(3):-!.
N.T. Son 47 48

Ktra(_) ;- fail. Ti u cc v t c nh ngha bng qui. Khi mt chng trnh A gi chng trnh B th phi lu tnh trng hin hnh ca chng trnh A khi B hon tt th tr li thi hnh tip chng trnh A. Mt tnh trng ca chng trnh c gi trong stack frame. Nu chng trnh B l bc thi hnh cui cng ca chng trnh A th khng cn lu li trng thi ca A. Lc ny quyn iu khin s i n ni m n khi chng trnh A chm dt. Mt subgoal c gi l bc cui cng nu : - Subgoal l subgoal cui cng ca clause. - Khng c cc im backtracking trong cc subgoal trc ca clause. Th d : Predicates Giaitha (real, real) Clauses Giaitha(1, 1). Giaitha(N,T) :- M=N1, Giaitha(M,S), T=S*N. Subgoal Giaitha(M,S) khng phi l bc cui cng v sau n cn subgoal T = S*N.
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Th d : Predicates m(integer) Clauses m(N) :- N > 100. m(N) :- write(N), nl, M = N+1, m(M), nl. Subgoal m(M) khng phi l bc cui cng v sau n cn subgoal nl. Th d : Clauses m(N) :- N > 100. m(N) :- write(N), M=N+1, Kim(M), m(M). Kim(X) :- X >= 0. Kim(X) :- X <0. Subgoal m(M) khng phi l bc cui cng v c backtracking trc n l Kim(M). Th d : Predicates Repeat Clauses Repeat. Repeat :- Repeat. Subgoal Repeat l bc cui cng.
N.T. Son 49

Ngn ng khai bo (declarative language) so vi ngn ng cu trc (structured language). Th d : Cho ma trn 4x4, mi c mt gi tr t 1 n 16. Cc khoanh trn l cc bc i b cm. Cho mt im bt u start v im cui goal nh hnh v. Tm ng i t start n goal.
16 12 8 1 15 goal 11 7 2 14 10 6 3start 13 9 5 4

Mt con ng l : 3678121615.
Chng trnh c vit bng Pascal

Program MazeSearch; Type ng_arr = array[1 6, 1 2] of integer; Const max = 6; ng : ng_arr = ((3,6), (6,7), (7,8), (8,12), (12,16), (16,15)); Var goal, start : integer; Procedure Tm (start, goal : integer); Var
50 N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Found : boolean; I : integer; Begin Found := false; I := 0; Repeat I:=I+1; If start = ng[I,1] then Begin Found:= true; Writeln(i t,ng[I,1],ti , ng[I,2]); End; Until found or i := max; If found then Begin If ng[I,2]<>goal then Tm(ng[I,2],goal) else writeln(C li gii); End else writeln(Khng c li gii); End; Begin Write( Cho vo im bt u ); readln(start); Write( Cho vo im chm dt ); readln(goal); Tm(start, goal); End.
N.T. Son 51 52 Chng trnh vit bng Prolog

Predicates Tm_goal(integer, integer) ng(integer, integer) Clauses Tm_goal(Start, End) :ng(Start, End), write(Goal l , End), nl. Tm_goal(Start, End) :Path(Start, G), write(i t , Start, ti, G), nl, Tm_goal(G, goal). ng(6,7). ng(7,8). ng(16,15). ng(1,2). ng(8,12). ng(12,16). ng(6,10). Goal Tim_goal(3,15). Nhn xt : Hy thay i th t ca cc fact ng cho mi ln chy xem nhng kt qu khc nhau. Hy so snh gia hai chng trnh theo cc tiu chun sau : 1. Kch thc ma trn thay i. 2. Cc b cm thay i.
N.T. Son

{ end ca Proc Tm }

Prolog Fast Foot

Prolog Fast Foot

3. Nhng cng vic ngi lp trnh phi thc hin t phn tch n khi m ha. 4. Xy dng algorithm. 5. Trnh ngi lp trnh. Nhng iu khng khuyn khch. 1. Fact v rule c ngh nh nhng th tc. Th d : Clauses Cho :- write(Xin cho Anh). /*Ging nh gi th tc write */ Trli :- makewindow(),write(Xin cho Em). /*Ging nh gi th tc makewindow v write */ 2. Rule ging nh case ca Pascal. Th d : Predicates Cngvic(integer) Chn Clauses Cngvic(1) :- write(Nhp s liu). Cngvic(2) :- write(Hiu chnh s liu). Cngvic(3) :- write(Thot). Cngvic(_) :- Chn.
N.T. Son 53 54

Chn :- readint(I), Cngvic(I). 3. Tr v gi tr. Th d : Predicates Gitr(integer, symbol) Clauses Gitr(1, th_ging). Gitr(2, th_hai). Gitr(11, th_mimt). Gitr(12, th_chp). Goal Gitr(2, X). X coi nh c gn gi tr th_hai nh mt gi tr tr v. 4. Lp. Th d : Predicates Repeat Nhp_kt Clauses Repeat. Repeat :- Repeat. Nhp_kt :Repeat Readchar(X), Write(X), Char_int(X,13).
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

LCH S [1] 1. Logic c pht sinh Hylp trc Thin Cha ging sinh. N tr thnh mt phn ca vn ha phng ty v sau ny l ca th gii. 2. 1897 G. Frege pht minh ra predicate calculus. Frege dng n nh mt k hiu ca ngn ng din t cc khi nim, mc ch l sn sinh cc dn xut c tnh h thng. 3. 1925-1930. Tnh hon b (completeness) ca predicate calculus c T. Skolem, J. Herbrand, K. Godel chng minh. Trong giai on ny xut hin bi ton kh do vic tnh ton v s bng n t hp. 4. 1955-1960. Dng my tnh chng minh nh l mt cch t ng l mt bc ngoc quan trng. Giai on ny c gng lm n gin ha s tnh ton do s bng n t hp. 5. 1965. J. Robinson gii thiu mt phng php suy din mi l phn gii (resolution). y l mt bc c bn trong qu trnh lm gim phc tp tnh ton v tr thnh mt thnh phn ch yu ca mt c ch suy lun cho h thng dn xut t ng. T tng v lp trnh bng tin ln u tin c M. Foster v T. Elcock trnh by. D n khng c t nn tng trn predicate calculus, nhng chng din t cng nim nh logic programming ang dng ngy hm nay. 6. 1968. C. Hewitt gii thiu Planner, y l mt ngn ng AI (artificial intelligence) da trn nhiu khi nim tin b. Mt
N.T. Son 55 56

s tng sau ny c s dng trong Prolog. 1969. C. Green gii thiu question-answer computer system, tin thn ca ngn ng lp trnh lun l, trong phn gii l thnh phn ct li ca c ch suy lun. Vn bng n t hp vn cn l bc kh khn cha vt qua c. 7. 1970-1971. Nhiu kt qu v vic lm n gin qu trnh dn xut ca nhng h suy lun da trn phn gii. Gii hn c mt tp con cc mnh , l Horn clauses, do nh ton hc Alfred Horn nghin cu u tin. Phn gii c gii hn vo phn gii tuyn tnh. 8. 1972-1974. y l thi im sn sinh thut ng lp trnh lun l (logic programming). Trc y logic c dng trong my tnh nh l mt ngn ng c t vi din dch khai bo c nh ngha r rng. im then cht l gii thiu din dch th tc cho cc h thng gii hn vo Horn clauses v phn gii tuyn tnh. iu ny c R. Kowalski thc hin. Interpreter u tin ca Prolog c A. Colmerauer, P. Roussel, c hin thc vo nm 1972. 9. 1977. D. Warren hin thc Prolog compiler/interpreter ni ting cho DES-10 (c vit bng Prolog). 10. 1982. Logic programming c ngi Nht chn nh l c s cho n my tnh th h th 5. 11. Tng quan gia cc lp mnh : Cho Ai, Bj l cc cng thc nguyn.
N.T. Son

Prolog Fast Foot

Prolog Fast Foot

Dng Clausal form : A1 An B1 Bm. Th d : n_ng(X) n_B(X) Ngi(X). Horn clause l dng Clausal form vi 0 n 1.
Mathematical Logic

8. Turbo Prolog Reference guide V.2.0. ?. Borland. 9. Nguyn Thanh Sn. Lun l ton hc. 1996. NXB KHKT. 10. Nguyn Thanh Sn. L thuyt tp hp. 1999. NXB KHKT.

First Order Logic

Clausal Form

PROLOG FAST FOOT

TI LIU THAM KHO

Horn Clauses

1. Gregory L. Lazarev. Why Prolog ?. Justifying logic programming for practical applications. 1989. Prentice Hall. 2. Leon Sterling, Ehud Shapiro. The Art of Prolog Advenced programming Techniques.1986. MIT Press. 3. Neil C. Rowe. Artificial intelligence through prolog. ? . Prentice Hall. 4. Peter Schnupp, Lawrence W. Bernhard. Productive prolog programming. ? . Prentice Hall. 5. Ivan Bratko. Prolog programming for artificial intelligence. 1990. AddisonWesley Publishing. 6. Deyi Li. A prolog database. 1984. John Wiley & Sons 7. Keith Weiskamp, Terry Hengl. Artificial intelligence programming with turbo prolog. 1988. John Wiley &Sons, Inc.
N.T. Son 57 58 N.T. Son

Prolog Fast Foot

Prolog Fast Foot

FFLIBs 1999

T sch FAST-FOOT : Ch bin Nguyn Thanh Sn. Mi lin h xin theo cc a ch sau : Nguyn Thanh Sn, C nhn gio khoa Ton. Ging vin Khoa CNTT. Email : ntson@dit.hcmut.edu.vn Tel : 8658689 Khoa CNTT i Hc K Thut.

N.T. Son

59

60

N.T. Son

Prolog Fast Foot

Prolog Fast Foot

N. T. SON

PROLOG
FAST FOOT

FFLIBs 1999

N.T. Son

61

62

N.T. Son

You might also like