1.2. OBIEKTY I RELACJE 5
przechodnia, gdy dla wszystkich elementów a, b, c € A, jeżeli elementy (a, b) są w relacji R i elementy (b, c) są w relacji R, to także elementy (a, c) są w relacji R. Jako przykłady takich relacji można podać np. relacje większości, relacja zawierania zbiorów czy relację być rodzeństwem. Przechodnia nie jest natomiast relacja różności, relacja być rodzicem czy być przyjacielem. W przypadku rozważanej przez nas relacji wystarczy dodać taką regułę1
ciezszy(X,Y) ciezszy(X,Z),ciezszy(Z,Y).
W powyższej regule symbol : - oznacza jeśli (jeśli zachodzi prawa strona to zachodzi lewa) a symbol przecinka (,) pełni rolę operatora logicznego i (AND). Symbole X, Y oraz Z są nazwami zmiennych (w Prologu nazwa zmiennej rozpoczyna się od dużej litery).
Umieszczając fakty i regułę w jednym pliku (owoce.pl) możemy teraz przetestować działanie programu. Uruchamiamy zatem interpreter
fulmanp@fulmanp-laptop-fsl2:~$ swipl
Welcome to SWI-Prolog (Multi-threaded, Version 5.6.47)
Copyright (c) 1990-2007 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topie). or ?- apropos(Word).
i wczytujemy program ?- [owoce].
% t compiled 0.00 sec, 1,176 bytes Yes
Zróbmy test na znajomość elementarnych faktów:
?- ciezszy(pomarańcz,jabłko).
Morę? [ENTER]
Yes
Chwilowo pomijamy znaczenie komunikatu Morę? i naciskamy ENTER gdy się on pokaże. Wszystko się zgadza, zatem pora na test przechodniości:
?- ciezszy(arbuz,winogrono).
Morę? [ENTER]
Yes
Tym razem odtrzymaliśmy odpowiedź zgodną z oczekiwaniem. Możemy jednak dowiedzieć się znacznie więcej, zadając np. pytanie od jakich obiektów jest cięższy arbuz:
Reguła ta nie do końca jest poprawna i zasadniczo problem powinien zostać rozwiązany w inny sposób, ale na tym etapie poznawania Prologa jest to rozwiązanie akceptowalne.
Programowanie w logice. Prolog ©2007-2009 by P. Fulmański (ostatnia modyfikacja: 18 maja 2009)