GiáotrìnhLogicToán
Gv:TrịnhHuyHoàng Trang58
BÀI6:lGÔllGỮPROLOG
1.TưduylậptrìnhvàđịnhnghĩavấnđềtrênProlog
ĐốivớiProlog,mộtchươngtrìnhcóthểhiểunhưlàcáctrithứcđượcngườilậptrình
cungcấpchohệthốngProlog.N hờvàocáckiếnthứcđượccungcấp,hệthốngcóthểtrảlời
đượccáccâuhỏiđượcđặtra,vàcâutrảlờicóthểđạtđượcnhờcơchếsuyluậncủahệthống
dựatrênnhữngkiếnthứcđượccungcấpbanđầu.
ĐơnvịkiếnthứcmàngườilậptrìnhcungcấpchoProloggọilàcácvịtừ[predicate].
Cácvịtừdùngđểbiểudiễncáckháiniệmmàngườilậptrìnhmuốnhệthốngdùngđểsuyluận
đểđạtđượccáckiếnthứckhácmàmìnhmongmuốn.Vềmặtkỹthuật,cácpredicatecóthể
đượcxemnhưcáchàm,nhưnggiátrịtrảvềchỉcóthểlàcácgiátrịluậnlý†đúnghoặcsai.Và
giátrịtrảvềnàychỉcóthểsửdụngđểsuyluận,Prologkhôngcócơthếchồngchấthàmnhư
cácngônngữthủtụckhác,chínhđiềunàysẽlàmnhữngngườiquenvớiviệclậptrìnhthủtục
gặpkhókhănkhibướcđầulậptrìnhvớiProlog.CôngviệcđầutiênkhilậptrìnhtrênProloglà
địnhnghĩacácvịtừ†cáckháiniệmmàmìnhcầncungcấpchochươngtrình.
Xétcácvídụsau:
VD1:
Dữkiệnbanđầu:Mọingườiđềuphảichết.Socrateslàngười.
Yêucầu:
Chúngtamuốnhệthốngphảicókhảnăngsuyluậnvàtrảlờiđượccácvấnđềliênquan
đếncáckháiniệmtrên:ailàngười,aikhônglàngười,aiphảichết,aikhôngphảichết.Ởđây
chúngtacómộtsựsuyluậnthôngminhđặctrưngchosứcmạnhcủaProlog:hệthốngsẽtự
độngsuyluậnrằngSocratesphảichết[điềukhôngđượccungcấpbanđầu].
ĐểbiểudiễncácvấnđềtrênbằngngônngữProlog,chúngtacầnphảixácđịnhcần
phảibiểudiễnnhữngkháiniệmgì.Trongvấnđềnàychúngtacóhaikháiniệmcầnbiểudiễn:
mộtthựcthểnàođócó
thểlàngười[hoặckhông],vàmộtthựcthểnàođócóthểchết.
N hưvậychúngtabiểudiễnvấnđềđầutiênbằngngônngữProlognhưsau:
nguoi[symbol]
SymbollàmộtkiểudữliệuđặcbiệtcủaProlog,dùngđểbiểudiễnchomộtthựcthể,mộtkhái
niệmtổngquát.Chúngtasẽtrởlạivấnđềnàysau.N hưvậychúngtavừađịnhnghĩamộtkhái
niệm:mộtsymbolnàođócóthểlàngười,mộtsymbolnàokhácthìkhông.
Hiểunhưmộtsựđịnhnghĩa hàm,chúngta cóthểxemnhưđịnhnghĩamộthàm mangtên
nguoi,hàmnàycóthôngsốmộtbiếnthuộckiểudữliệusymbol,và kếtquảcủahàmnày,
khôngcầnphảikhaibáothuộcvềkiểugì,vìchỉcóthểthuộckiểuboolean,chỉcóthểđúng
hoặcsai.N hiệmvụcủaProloglàphảitrảlờiđượcvớigiátrịsymbolnhậpvào,thìhàmnày