Lập trình Logic

Cuốn sách này nhằm cung cấp cơ sở lý thuyết và các phương pháp lập trình cơ bản nhất của môn học «Lập trình lôgich» (Programming in Logic). Người đọc sẽ được làm quen với một số kỹ thuật lập trình lôgich được ứng dụng tương đối phổ biến và chủ yếu trong lĩnh vực trí tuệ nhân tạo (Artificial Intelligence) như công nghệ xử lý tri thức, máy học, hệ chuyên gia, xử lý ngôn ngữ tự nhiên, trò chơi, v.v..

pdf193 trang | Chia sẻ: franklove | Lượt xem: 3057 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Lập trình Logic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LÅÌI NOÏI ÂÁÖU Cuäún saïch naìy nhàòm cung cáúp cå såí lyï thuyãút vaì caïc phæång phaïp láûp trçnh cå baín nháút cuía män hoüc «Láûp trçnh lägich» (Programming in Logic). Ngæåìi âoüc seî âæåüc laìm quen våïi mäüt säú kyî thuáût láûp trçnh lägich âæåüc æïng duûng tæång âäúi phäø biãún vaì chuí yãúu trong lénh væûc trê tuãû nhán taûo (Artificial Intelligence) nhæ cäng nghãû xæí lyï tri thæïc, maïy hoüc, hãû chuyãn gia, xæí lyï ngän ngæî tæû nhiãn, troì chåi, v.v... Cuäún saïch gäöm nàm chæång vaì phuû luûc nhæ sau : − Chæång 1 giåïi thiãûu ngän ngæî láûp trçnh Prolog lägich dæûa trãn lägich Horn (Horn logic). Ngæåìi âoüc laìm quen våïi caïc kiãøu dæî liãûu cuía Prolog, khaïi niãûm vãö luáût, sæû kiãûn vaì viãút caïc chæång trçnh Prolog âån giaín. − Chæång 2 trçnh baìy caïc mæïc nghéa khaïc nhau cuía mäüt chæång trçnh Prolog : nghéa lägich, nghéa khai baïo vaì nghéa thuí tuûc, caïch Prolog traí låìi caïc cáu hoíi, caïch laìm thoaí maîn âêch. − Chæång 3 trçnh baìy caïc pheïp toaïn säú hoüc, pheïp so saïnh vaì âënh nghéa haìm sæí duûng pheïp âãû quy trong Prolog. − Chæång 4 trçnh baìy cáúu truïc danh saïch vaì caïc pheïp xæí lyï cå baín trãn danh saïch cuía Prolog. − Chæång 5 trçnh baìy kyî thuáût láûp trçnh náng cao våïi Prolog. − Pháön phuû luûc giåïi thiãûu ngän ngæî láûp trçnh SWI-Prolog, hæåïng dáùn caïch caìi âàût sæí duûng pháön mãöm naìy vaì mäüt säú chæång trçnh vê duû tiãu biãøu viãút trong SWI Prolog. Cuäún saïch naìy duìng laìm giaïo trçnh cho sinh viãn ngaình Tin hoüc vaì caïc âäüc giaí muäún tçm hiãøu thãm vãö kyî thuáût láûp trçnh cho lénh væûc trê tuãû nhán taûo. Trong quaï trçnh biãn soaûn, taïc giaí âaî nháûn âæåüc tæì caïc baûn âäöng nghiãûp nhiãöu âoïng goïp bäø êch vãö màût chuyãn män, nhæîng âäüng viãn khêch lãû vãö màût tinh tháön, sæû giuïp âåî vãö biãn táûp âãø cuäún saïch âæåüc ra âåìi. Taïc giaí xin âæåüc baìy toí loìng biãút ån sáu sàõc. Taïc giaí cuîng chán thaình caím ån moüi yï kiãún phã bçnh âoïng goïp cuía baûn âoüc gáön xa vãö näüi dung cuía cuäún saïch naìy. Âaì Nàông, ngaìy 27/05/2004 Taïc giaí. MUÛC LUÛC CHÆÅNG 1 MÅÍ ÂÁÖU VÃÖ NGÄN NGÆÎ PROLOG.................................1 I. GIÅÏI THIÃÛU NGÄN NGÆÎ PROLOG ........................................ 1 I.1. Prolog laì ngän ngæî láûp trçnh lägich ........................................... 1 I.2. Cuï phaïp Prolog........................................................................... 2 I.2.1. Caïc thuáût ngæî ............................................................................. 2 I.2.2. Caïc kiãøu dæî liãûu Prolog .............................................................. 3 I.2.3. Chuï thêch .................................................................................... 4 II. CAÏC KIÃØU DÆÎ LIÃÛU SÅ CÁÚP CUÍA PROLOG......................... 5 II.1. Caïc kiãøu hàòng (træûc kiãûn) .......................................................... 5 II.1.1. Kiãøu hàòng säú ............................................................................... 5 II.1.2. Kiãøu hàòng lägich......................................................................... 5 II.1.3. Kiãøu hàòng chuäùi kyï tæû ................................................................ 5 II.1.4. Kiãøu hàòng nguyãn tæí .................................................................. 5 II.2. Biãún............................................................................................. 6 III. SÆÛ KIÃÛN VAÌ LUÁÛT TRONG PROLOG .................................... 6 III.1. Xáy dæûng sæû kiãûn........................................................................ 6 III.2. Xáy dæûng luáût ........................................................................... 10 III.2.1. Âënh nghéa luáût ........................................................................ 10 III.2.2. Âënh nghéa luáût âãû quy ............................................................ 15 III.2.3. Sæí duûng biãún trong Prolog ....................................................... 18 IV. KIÃØU DÆÎ LIÃÛU CÁÚU TRUÏC CUÍA PROLOG ......................... 19 IV.1. Âënh nghéa kiãøu cáúu truïc cuía Prolog ....................................... 19 IV.2. So saïnh vaì håüp nháút caïc haûng ................................................. 22 CHÆÅNG 2 NGÆÎ NGHÉA CUÍA CHÆÅNG TRÇNH PROLOG ..........31 I. QUAN HÃÛ GIÆÎA PROLOG VAÌ LÄGICH TOAÏN HOÜC .......... 31 II. CAÏC MÆÏC NGHÉA CUÍA CHÆÅNG TRÇNH PROLOG .......... 32 II.1. Nghéa khai baïo cuía chæång trçnh Prolog................................. 33 II.2. Khaïi niãûm vãö goïi mãûnh âãö ....................................................... 34 i II.3. Nghéa lägich cuía caïc mãûnh âãö.................................................. 35 II.4. Nghéa thuí tuûc cuía Prolog ......................................................... 37 II.5. Täø håüp caïc yãúu täú khai baïo vaì thuí tuûc ..................................... 47 III. VÊ DUÛ : CON KHÈ VAÌ QUAÍ CHUÄÚI ....................................... 48 III.1. Phaït biãøu baìi toaïn .................................................................... 48 III.2. Giaíi baìi toaïn våïi Prolog............................................................ 49 III.3. Sàõp âàût thæï tæû caïc mãûnh âãö vaì caïc âêch .................................. 54 III.3.1. Nguy cå gàûp caïc voìng làûp vä haûn ............................................. 54 III.3.2. Thay âäøi thæï tæû mãûnh âãö vaì âêch trong chæång trçnh............. 56 CHÆÅNG 3 CAÏC PHEÏP TOAÏN VAÌ SÄÚ HOÜC.......................................65 I. SÄÚ HOÜC .................................................................................... 65 I.1. Caïc pheïp toaïn säú hoüc ................................................................ 65 I.2. Biãøu thæïc säú hoüc ....................................................................... 65 I.3. Âënh nghéa caïc pheïp toaïn trong Prolog ................................... 68 II. CAÏC PHEÏP SO SAÏNH CUÍA PROLOG.................................... 73 II.1. Caïc pheïp so saïnh säú hoüc........................................................... 73 II.2. Caïc pheïp so saïnh haûng............................................................. 75 II.3. Vë tæì xaïc âënh kiãøu ................................................................... 77 II.4. Mäüt säú vë tæì xæí lyï haûng ............................................................ 77 III. ÂËNH NGHÉA HAÌM................................................................. 79 III.1. Âënh nghéa haìm sæí duûng âãû quy.............................................. 79 III.2. Täúi æu pheïp âãû quy................................................................... 87 III.3. Mäüt säú vê duû khaïc vãö âãû quy..................................................... 88 III.3.1. Tçm âæåìng âi trong mäüt âäö thë coï âënh hæåïng ........................ 88 III.3.2. Tênh âäüü daìi âæåìng âi trong mäüt âäö thë .................................... 89 III.3.3. Tênh gáön âuïng caïc chuäùi.......................................................... 90 CHÆÅNG 4 CÁÚU TRUÏC DANH SAÏCH.................................................95 I. BIÃØU DIÃÙN CÁÚU TRUÏC DANH SAÏCH .................................. 95 II. MÄÜT SÄÚ VË TÆÌ XÆÍ LYÏ DANH SAÏCH CUÍA PROLOG........... 98 III. CAÏC THAO TAÏC CÅ BAÍN TRÃN DANH SAÏCH .................... 99 III.1. Xáy dæûng laûi mäüt säú vë tæì coï sàôn ............................................. 99 III.2. Hoaïn vë ................................................................................... 107 ii III.3. Mäüt säú vê duû vãö danh saïch...................................................... 109 CHÆÅNG 5 KYÎ THUÁÛT LÁÛP TRÇNH PROLOG ..............................117 I. NHAÏT CÀÕT ............................................................................. 117 I.1. Khaïi niãûm nhaït càõt ................................................................ 117 I.2. Kyî thuáût sæí duûng nhaït càõt..................................................... 118 I.3. Pheïp phuí âënh ........................................................................ 126 II. SÆÍ DUÛNG CAÏC CÁÚU TRUÏC.................................................. 131 II.1. Truy cáûp thäng tin cáúu truïc tæì mäüt cå såí dæî liãûu .................. 132 II.2. Træìu tæåüng hoaï dæî liãûu .......................................................... 136 II.3. Mä phoíng ätämat hæîu haûn..................................................... 138 II.4. Vê duû : láûp kãú hoaûch âi du lëch bàòng maïy bay ....................... 144 II.5. Baìi toaïn taïm quán háûu .......................................................... 150 III. QUAÏ TRÇNH VAÌO-RA VAÌ LAÌM VIÃÛC VÅÏI TÃÛP.................. 163 III.1. Khaïi niãûm ............................................................................... 163 III.2. Laìm viãûc våïi caïc tãûp................................................................ 164 III.3. ÆÏng duûng chãú âäü laìm viãûc våïi caïc tãûp .................................... 172 PHUÛ LUÛC A MÄÜT SÄÚ CHÆÅNG TRÇNH PROLOG..........................187 PHUÛ LUÛC B HÆÅÏNG DÁÙN SÆÍ DUÛNG SWI-PROLOG .....................194 I. GIÅÏI THIÃUU SWI-PROLOG............................................... 194 II. LAIM VIÃUC VÅÏI SWI-PROLOG......................................... 195 II.1. Âàût cáu hoíi.............................................................................. 195 II.2. Chaûy trçnh demo..................................................................... 196 II.3. Chaûy trçnh demo XPCE ......................................................... 197 II.4. Caïc lãûnh âån (Menu commands)............................................ 198 II.5. Soaûn thaío chæång trçnh.......................................................... 200 III. MÄÜT SÄÚ LÃÛNH SWI-PROLOG THÄNG DUÛNG.................. 201 TAÌI LIÃÛU THAM KHAÍO ............................................................................ 203 iii CHÆÅNG 1 Måí âáöu vãö ngän ngæî Prolog « A program is a theory (in some logic) and computation is deduction from the theory » J. A. Robinson « Program = data structure + algorithm » N. Wirth « Algorithm = logic + control » R. Kowalski I. Giåïi thiãûu ngän ngæî Prolog I.1. P rolog laì ngän ngæî âæåüc sæí duûng phäø biãún nháút trong doìng caïc ngän ngæî láûp trçnh lägich (Prolog coï nghéa laì PROgramming in LOGic). Ngän ngæî Prolog do giaïo sæ ngæåìi Phaïp Alain Colmerauer vaì nhoïm nghiãn cæïu cuía äng âãö xuáút láön âáöu tiãn taûi træåìng Âaûi hoüc Marseille âáöu nhæîng nàm 1970. Âãún nàm 1980, Prolog nhanh choïng âæåüc aïp duûng räüng raîi åí cháu Áu, âæåüc ngæåìi Nháût choün laìm ngän ngæî phaït triãøn doìng maïy tênh thãú hãû 5. Prolog âaî âæåüc caìi âàût trãn caïc maïy vi tênh Apple II, IBM-PC, Macintosh. rolog laì ngän ngæî láûp trçnh lägich P Prolog coìn âæåüc goüi laì ngän ngæî láûp trçnh kyï hiãûu (symbolic programming) tæång tæû caïc ngän ngæî láûp trçnh haìm (functional programming), hay láûp trçnh phi säú (non-numerical programming). Prolog ráút thêch håüp âãø giaíi quyãút caïc baìi toaïn liãn quan âãún caïc âäúi tæåüng (object) vaì mäúi quan hãû (relation) giæîa chuïng. Prolog âæåüc sæí duûng phäø biãún trong lénh væûc trê tuãû nhán taûo. Nguyãn lyï láûp trçnh lägich dæûa trãn caïc mãûnh âãö Horn (Horn logêc). Mäüt mãûnh âãö Horn biãùu diãùn mäüt sæû kiãûn hay mäüt sæû viãûc naìo âoï laì âuïng hoàûc khäng âuïng, xaíy ra hoàûc khäng xaíy ra (coï hoàûc khäng coï, v.v...). 1 2 Láûp trçnh logic trong Prolog Vê duû I.1 : Sau âáy laì mäüt säú mãûnh âãö Horn : 1. Nãúu mäüt ngæåìi giaì maì (vaì) khän ngoan thç ngæåìi âoï haûnh phuïc. 2. Jim laì ngæåìi haûnh phuïc. 3. Nãúu X laì cha meû cuía Y vaì Y laì cha meû cuía Z thç X laì äng cuía Z. 4. Tom laì äng cuía Pat. 5. Táút caí moüi ngæåìi âãöu chãút (hoàûc Nãúu ai laì ngæåìi thç ai âoï phaíi chãút). 6. Socrat laì ngæåìi. Trong caïc mãûnh âãö Horn åí trãn, caïc mãûnh âãö 1, 3, 5 âæåüc goüi laì caïc luáût (rule), caïc mãûnh âãö coìn laûi âæåüc goüi laì caïc sæû kiãûn (fact). Mäüt chæång trçnh lägich coï thãø âæåüc xem nhæ laì mäüt cå såí dæî liãûu gäöm caïc mãûnh âãö Horn, hoàûc daûng luáût, hoàûc daûng sæû kiãûn, chàóng haûn nhæ táút caí caïc sæû kiãûn vaì luáût tæì 1 âãún 6 åí trãn. Ngæåìi sæí duûng (NSD) goüi chaûy mäüt chæång trçnh lägich bàòng caïch âàût cáu hoíi (query/ question) truy váún trãn cå såí dæî liãûu naìy, chàóng haûn cáu hoíi : Socrat coï chãút khäng ? (tæång âæång khàóng âënh Socrat chãút âuïng hay sai ?) Mäüt hãû thäúng lägich seî thæûc hiãûn chæång trçnh theo caïch «suy luáûn»-tçm kiãúm dæûa trãn väún «hiãøu biãút» âaî coï laì chæång trçnh - cå såí dæî liãûu, âãø minh chæïng cáu hoíi laì mäüt khàóng âënh, laì âuïng (Yes) hoàûc sai (No). Våïi cáu hoíi trãn, hãû thäúng tçm kiãúm trong cå såí dæî liãûu khàóng âënh Socrat chãút vaì «tçm tháúy» luáût 5 thoaí maîn (vãú thç). Váûn duûng luáût 5, hãû thäúng nháûn âæåüc Socrat laì ngæåìi (vãú nãúu) chênh laì sæû kiãûn 5. Tæì âoï, cáu traí låìi seî laì : Yes coï nghéa Socrat chãút laì âuïng. I.2. Cuï phaïp Prolog I.2.1. Caïc thuáût ngæî Mäüt chæång trçnh Prolog laì mäüt cå såí dæî liãûu gäöm caïc mãûnh âã ö (clause). Mäùi mãûnh âãö âæåüc xáy dæûng tæì caïc vë tæì (predicat). Mäüt vë tæì laì mäüt phaït biãøu naìo âoï vãö caïc âäúi tæåüng coï giaï trë chán âuïng (true) hoàûc sai (fail). Mäüt vë tæì coï thãø coï caïc âäúi laì caïc nguyãn lägich (logic atom). Måí âáöu vãö ngän ngæî Prolog 3 Mäùi nguyãn tæí (noïi goün) biãøu diãùn mäüt quan hãû giæîa caïc haûng (term). Nhæ váûy, haûng vaì quan hãû giæîa caïc haûng taûo thaình mãûnh âãö. Haûng âæåüc xem laì nhæîng âäúi tæåüng “dæî liãûu” trong mäüt trçnh Prolog. Haûng coï thãø laì haûng så cáúp (elementary term) gäöm hàòng (constant), biãún (variable) vaì caïc haûng phæïc håüp (compound term). Caïc haûng phæïc håüp biãøu diãùn caïc âäúi tæåüng phæïc taûp cuía baìi toaïn cáön giaíi quyãút thuäüc lénh væûc âang xeït. Haûng phæïc håüp laì mäüt haìm tæí (functor) coï chæïa caïc âäúi (argument), coï daûng Tãn_haìm_tæí(Âäúi_1, ..., Âäúi_n) Tãn haìm tæí laì mäüt chuäùi chæî caïi vaì/hoàûc chuî säú âæåüc bàõt âáöu båíi mäüt chæî caïi thæåìng. Caïc âäúi coï thãø laì biãún, haûng så cáúp, hoàûc haûng phæïc håüp. Trong Prolog, haìm tæí âàûc biãût “.” (dáúu cháúm) biãøu diãùn cáúu truïc danh saïch (list). Kiãøu dæî liãûu haìm tæí tæång tæû kiãøu baín ghi (record) vaì danh saïch (list) tæång tæû kiãøu maíng (array) trong caïc ngän ngæî láûp trçnh mãûnh lãûnh (C, Pascal...). Vê duû I.2 : f(5, a, b). student(robert, 1975, info, 2, address(6, 'mal juin', 'Caen')). [a, b, c] Mãûnh âãö coï thãø laì mäüt sæû kiãûn, mäüt luáût (hay quy tàõc), hay mäüt cáu hoíi. Prolog quy æåïc viãút sau mäùi mãûnh âãö mäüt dáúu cháúm âãø kãút thuïc nhæ sau : • Sæû kiãûn : . (tæång æïng våïi luáût :- true. ) • Luáût : :- . • Cáu hoíi ?- . (åí chãú âäü tæång taïc coï dáúu nhàõc lãûnh) I.2.2. Caïc kiãøu dæî liãûu Prolog Hçnh 1.1. biãøu diãùn mäüt sæû phán låïp caïc kiãøu dæî liãûu trong Prolog gäöm kiãøu dæî liãûu så cáúp vaì kiãøu dæî liãûu coï cáúu truïc. Sæû phán låïp naìy nháûn biãút kiãøu cuía mäüt âäúi tæåüng nhåì bãö ngoaìi cuï phaïp. Cuï phaïp cuía Prolog quy âënh mäùi kiãøu âäúi tæåüng coï mäüt daûng khaïc nhau. Prolog khäng cáön cung cáúp mäüt thäng tin naìo khaïc âãø nháûn biãút kiãøu cuía mäüt âäúi tæåüng. Trong Prolog, NSD khäng cáön khai baïo kiãøu dæî liãûu. 4 Láûp trçnh logic trong Prolog kiãøu dæî liãûu kiãøu så cáúp kiãøu phæïc håüp hàòng biãún säú chuäùi kyï tæû nguyãn tæí Hçnh I.1. Caïc kiãøu dæî liãûu trong Prolog Caïc kiãøu dæî liãûu Prolog âæåüc xáy dæûng tæì caïc kyï tæû ASCII : • Caïc chæî caïi in hoa A, B, ..., Z vaì chæî caïi in thæåìng a, b, ..., z. • Caïc chæî säú 0, 1, ..., 9. • Caïc kyï tæû âàûc biãût, chàóng haûn + − ∗ / = : . & _ ∼. I.2.3. Chuï thêch Trong mäüt chæång trçnh Prolog, chuï thêch (comment) âæåüc âàût giæîa hai càûp kyï hiãûu /* vaì */ (tæång tæû ngän ngæî C). Vê duû : /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/ /∗∗∗ Âáy laì mäüt chuï thêch ∗∗∗/ /∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗/ Trong træåìng håüp muäún âàût mäüt chuï thêch ngàõn sau mäùi pháön khai baïo Prolog cho âãún hãút doìng, coï thãø âàût træåïc mäüt kyï hiãûu %. Vê duû : %%%%%%%%%%%%%%% % Âáy cuîng laì mäüt chuï thêch %%%%%%%%%%%%%%% Prolog seî boí qua táút caí caïc pháön chuï thêch trong thuí tuûc. Måí âáöu vãö ngän ngæî Prolog 5 II. Caïc kiãøu dæî liãûu så cáúp cuía Prolog II.1. Caïc kiãøu hàòng (træûc kiãûn) II.1.1. Kiãøu hàòng säú Prolog sæí duûng caí säú nguyãn vaì säú thæûc. Cuï phaïp cuía caïc säú nguyãn vaì säú thæûc ráút âån giaín, chàóng haûn nhæ caïc vê duû sau : 1 1515 0 -97 3.14 -0.0035 100.2 Tuyì theo phiãn baín caìi âàût, Prolog coï thãø xæí lyï caïc miãön säú nguyãn vaì miãön säú thæûc khaïc nhau. Vê duû trong phiãn baín Turbo Prolog, miãön säú nguyãn cho pheïp tæì -32768 âãún 32767, miãön säú thæûc cho pheïp tæì ±1e-307 âãún ±1e+308. Caïc säú thæûc ráút khi âæåüc sæí duûng trong Prolog. Lyï do chuí yãúu åí chäù Prolog laì ngän ngæî láûp trçnh kyï hiãûu, phi säú. Caïc säú nguyãn thæåìng chè âæåüc sæí duûng khi cáön âãúm säú læåüng caïc pháön tæí hiãûn diãûn trong mäüt danh saïch Prolog daûng [a1, a2, ..., an ]. II.1.2. Kiãøu hàòng lägich Prolog sæí duûng hai hàòng lägich coï giaï trë laì true vaì fail. Thäng thæåìng caïc hàòng lägich khäng âæåüc duìng nhæ tham säú maì âæåüc duìng nhæ caïc mãûnh âãö. Hàòng fail thæåìng âæåüc duìng âãø taûo sinh låìi giaíi baìi toaïn. II.1.3. Kiãøu hàòng chuäùi kyï tæû Caïc hàòng laì chuäùi (string) caïc kyï tæû âæåüc âàût giæîa hai dáúu nhaïy keïp. "Toto \#\{@ tata" chuäùi coï tuyì yï kyï tæû "" chuäùi räùng (empty string) "\"" chuäùi chè coï mäüt dáúu nhaïy keïp. II.1.4. Kiãøu hàòng nguyãn tæí Caïc hàòng nguyãn tæí Prolog laì chuäùi kyï tæû åí mäüt trong ba daûng nhæ sau : (1) Chuäùi gäöm chæî caïi, chæî säú vaì kyï tæû _ luän luän âæåüc bàõt âáöu bàòng mäüt chæî caïi in thæåìng. newyork a_ nil x__y x25 tom_cruise 6 Láûp trçnh logic trong Prolog (2) Chuäùi caïc kyï tæû âàûc biãût : .:. ======> ::== ... (3) chuäùi âàût giæîa hai dáúu nhaïy âån (quote) âæåüc bàõt âáöu bàòng chæî in hoa, duìng phán biãût våïi caïc tãn biãún : ’Jerry’ ’Tom SMITH’ II.2. Biãún Tãn biãún laì mäüt chuäùi kyï tæû gäöm chæî caïi, chæî säú, bàõt âáöu båíi chæî hoa hoàûc dáúu gaûch dæåïi doìng : X, Y, A Result, List_of_members _x23, _X, _, ... III. Sæû kiãûn vaì luáût trong Prolog III.1. Xáy dæûng sæû kiãûn Vê duû III.1 : Quan hãû gia âçnh Âãø xáy dæûng caïc sæû kiãûn trong mäüt chæång trçnh Prolog, ta láúy mäüt vê duû vãöï. Ta xáy dæûng mäüt cáy gia hãû nhæ sau : (a) (b) pam jim pat ann liz bob tom parent tom bob Hçnh III.1.Cáy gia hãû. Måí âáöu vãö ngän ngæî Prolog 7 Trong cáy gia hãû (a), caïc nuït chè ngæåìi, coìn caïc muîi tãn chè quan hãû cha meû cuía (parent of). Sæû kiãûn Tom laì cha meû cuía Bob âæåüc viãút thaình mäüt vë tæì Prolog nhæ sau (chuï yï mãûnh âãö âæåüc kãút thuïc båíi mäüt dáúu cháúm) : parent(tom, bob). % Chuï yï khäng coï dáúu caïch træåïc dáúu måí ngoàûc ÅÍ âáy, vë tæì parent coï hai âäúi laì tom vaì bob. Ngæåìi ta coï thãø biãøu diãùn vë tæì naìy båíi mäüt cáy nhæ trong Hçnh III.1 (b) : nuït gäúc laì tãn vë tæì, caïc nuït laï laï caïc âäúi. Tæì cáy gia hãû trãn âáy, coï thãø tiãúp tuûc viãút caïc vë tæì khaïc âãø nháûn âæåüc mäüt chæång trçnh Prolog gäöm 6 vë tæì nhæ sau : parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat, jim). Sau khi hãû thäúng Prolog nháûn âæåüc chæång trçnh naìy, thæûc cháút