11

Click here to load reader

Swi_prolog

Embed Size (px)

DESCRIPTION

introduction to prolog ,,, this notes of course in prolog

Citation preview

Page 1: Swi_prolog

1

Muhammad Siddig H.

Û@Ý�†ß@òÌÜProlog @ @ò߆ԽaZ@ @

���graming in Proא���� א���� ������ �����PROLOG��Wא��و��ج� ���

ic .Log�Kم������������و�����ذ� א�$���� ذ"ه !� �%�����������&'��(������$���א�,+*(%+-���.-�/Alan

Colmeraur ���������0��1��2�3��&�א�.��-$'�45�� 6��7���8��א)��;.������،�و9�*%�<� ��-�2�،�������2���������و5=���)�>5������$9�������*��ن��@'?*7����م�א��������;�����BCن���%�D$���'�������E�9Fא� ��א�

9��+7���+�-�Gא�.�م�H�2�I-�J�3א�Kא���;%�������;�L���+�١٩٨١�K� �

@òÌÛ@paŒî¾PrologZ@ @P����$�'א��و��ج������������.L��LQא�R�;%W� �

١�L�(5و+Tא���א�.$�-���(F.L�2��7),*�&$'����.L�U-א+������9�&$'��'�)LK� �٢�Lאج+WXل�وא�WدXא���2و��א�![D���G-�G[]Kא��\�ل�א�;��BC�+Hא�Fא9+�4وא� �٣�Lא�_,+�4א�����������9����7%simplisiy in codingK� �٤�L���U-���*�$���(5�����,+�4א� ���D]!��2א�_������א���\+a�b���]FSource Code�E�E�����e��f���وذ�

�g��h���kאم���Depuggingو��E��eא�� Copilation��b�D'�$���א���ijوא��%���fوذ��g;���Kوא��G-����mא�l>� Jא�+<�(����$��WTracing Facility�K�\���א� �

٥�LU-�*א���!h��l�$�L�BC�oدpL�4�(+a��qم�����(�U-א��א�����9�R�$%�K� �٦�Lא����������G-���.L��$-�[���Kא� �٧�L�������f���$�]��ً���T(و������u��>א������ل�א�._������وא��\����gא�$,��-�3���-�.���ز�2�4א����w��5א�������7(�����

�xود������4��������و-��)yא��?-������f�Fא�.�����و9������yوא��D�D�����אد�א� ��'P���������)�������א-]�*�gودوאل�א������z$zوא������)yوאل�א����bit-wise���L��+م���9+��2א��k�)L�mوא�K� �

� �

Ýà¦a@pbãìØß@Statements@@òÌÛ@¿PrologZ@ @Q@OFacts@ÕöbÔy@Z@ @

���2�������و[�3zא�y�<|�وא�.�5}�����Prolog�����Gو���א������4א{%�%'�45��;'������yوא�،�������)-predicate�5س����G������ن�-���[�(Head������?-�������<���و�א�.�����Gא��%���-������و���'

FArguments�KE� �Head (Arguments) � Predicate� �

������،��6�E���وא���'$�z-�FW����WFً?�א�����yא� ���7�$z]�G[��mوא���$�h9Clauses��2prolog��LQ�9�W

father (mohamed,ali).� �

Page 2: Swi_prolog

2

Muhammad Siddig H.

R@ORules@†ÇaìÓ@Z@ @� +W��������G-�����yل������ج�وא�%���Kא���'��G-�G[]�4א�% �

�����CWذא�9�ن���)���א�z�ل�א� �ali likes ahmed noha likes sami aser likes noha

�Wو��)����������l�L'$&��ن �yaser likes everything noha likes

��ل�'$&�و��د���������)���4ن)*���$'� �yaser likes sami

�2��7$�z]���.aprologW� �likes (ali,ahmed). likes (noha,sami). likes (aser,noha). likes(yaser,X) :- likes(noha,X).

�אa���{�u@ذא�9�ن� �likes(yaser,sami).� �

��YesKو��aTrue@ن�א�Kא�R)]�ن� �� �

�?ًz���a�Wن����$��%���������$'�������،�و�ن�وא��$'������������������8و�وא����K�bאذא�'$����L�4���'���f(���و��E���}����Kא���?'� �

father (ahmed,ali). father(salman,ahmed).� �

grandfather(X,Y):-father(X,Z),father(Z,Y).� ���ج�א���'��4������8��5�*���אL�����'��g-�|>��y]�ن���.7T��א�;.���$�\�ل��%

�.-K S@OQueries@òÜ÷�cZ@@ @

y�5��'$&�א�;�W�א�$����]��)��م���!�j-�BC����L�mא���$q%وא���א'و���א��|>���K� ������������ن�������f�F����Prolog��������������<|�وא���א'���y�������q�$-�����a+.-�4����'�������%�y�3א���.�

��� Kوא�.?�G������Gن��-��-�����9�����Uو*�������ن�*(��(+*�|�������ل�א�(��zא�F����$'������������$��ن����%E��!����(�m���وא�

�����7�����_]�3א����9W� �grandfather(salman,ali).

Page 3: Swi_prolog

3

Muhammad Siddig H.

�����%�yא�G-�����Xא��L���YesK� �

@pbãbîjÛa@ÊaìãcData Typer in Prolog@ @����prolog���o������o'$&��*�אع����*����L$��)��9;���������א�����،��]�7������

�������;�9+L�+�\��'�&�$'lixical elements ��K���������)��3�i����9+L�G[���asimple

structure��4��.-�3iو��Complex structure�Kن�[Lن���G[����9אjא��g�iوW� �Q@O@oiaìrÛaConstantsZ

�5Fא�� •��������������Gא�Atoms�Wא�������������-��$�������������)$%�����������������م��و��و���������������+و}��و�א{5������������y +_()*&&^%$#@!,a..z,A..Zא�+-�ز

����D�D\RealKو�Number��Winteger���(+)9א{5��م� • �R@O@pa�Ìn½aVariablesZ@ @

�!�א�� +)�G'�bא����א��������2+��ج���%��kאم�א{�+}�א�];��4(Upper-case letter�� 3z-FX,Y, M , Who, Where� E� �א�(,$�� �א�_+�� �א%��kאم !�(� �_?�و ?�oد+a� 3[_�

�.;��'�Gא�����א��7ل�$�Anonymous variable�K� �

@òÌÛ@ÝîÌ’mprolog@ @

Start�All programs �

SWI-Prolog�Prolog

٢�������א�.�9�3����2א�_]���h���5+6�Prolog��3ن� �

�5+6���(��6PrologW� �

��(+Hא�.��אن�و��(+H�&$'�5+א���H�H�4Fa�*�o���

א���א<!�،�و�-�����א�%�,(�5א���و������Lא{��א}�

�!�j���$q%}وאprologK� �

���*����4�'���E�_*C��G-������'وא���א�|>��yא�����و�]

�a+.-�4�'��وKnowldege-Base �"F��E�_*X �و�

������א���'��4،�*�;�gא��Jא��א� �

Page 4: Swi_prolog

4

Muhammad Siddig H.

�4Fa�*�b���م��,��������hن�א�+�5

�g�+-�2�<$-�!%א�����9�!�L��7�aوFile

�!%���4�(���4Fa�*�b�e!�)��م�א�+��5,

���>���&$'���Tא�File��+-}�5א���WوאNew…��4Fa�*�b���م��,��������hن�א�+�5

Create New Prolog Source�E�g�+-�2�<$-�!%א�����9�!�L��7�aو

��,yز�5א�&$'���T��م����*�!eSave��!%���4�(���4Fa�*�b�e!�)��م�א�+��5,

�4�'��*��م��]�����א�y�<|�وא���א'���2-$>�

�4��J�2א�����)Lو�"E�_*@�������oFא���a+.א�

�&$'���T*���>�א�����(��6��,yو

����5א{-+�Wא�!e�،Save Buffer�

�,y$���א�م�'�]X�fوذ�K � �

���$��X+א�F�,�L�Eא�$>�و���q7Lא���'���4

�&$'���T*��u?W�G-��5א�),�،��Compileא�%

Compile Buffer��+-}و�א�

�����5+6�4Faא�$���+W��4+-א�+��ع��!e

�,$�kא���5א�),�������א�%�K � �

� �

١�L���>���&$'���Tא�

4�(���FCreate New Prolog Source

Name���,yز�5א�&$'���T��م����*�!e

�א���'�4 �

� �

٢�L��4�'��*��م��]�����א�y�<|�وא���א'���2-$>�

�4��J�2א�����)Lو�"E�_*@�������oFא���a+.א�

��Kא�(���� �

٣�L�&$'���T*���>�א�����(��6��,yو

��>��File ��+-}�5א���Wא�!e�،

�,y$���א�م�'�]X�fوذ�

٤�L���$��X+א�F�,�L�Eא�$>�و���q7Lא���'���4

�&$'���T*��u?W�G-��5א�),�א�%

����5א{-+�Wא�!eCompile Buffer

Make�K���$�5+6�4א�Fa���� +W��4+-א�+��ع��!e

�,$�kא���5א�),�������א�%�

Page 5: Swi_prolog

5

Muhammad Siddig H.

@szjÛa@pbîvîma��aSearch Mechanism Z� �

á�Ôäm@@¿@szjÛa@pbîvîma��aProlog@´�îö‰@´à�Ó@µgZ@ @

QM@Þëþa@á�ÔÛa@Z@bß@ìçë@…ìäjÛaë@pa�jÈnÛa@´ië@bç‹aŠyg@lìÜĐ½a@Òa†çþa@´i@ÕÏaìnÛa@òîÜàÇ@óÜÇ@Ýàn’í

@†îyìnÛa@òîÜàÈi@ÒŠÈíIUnificationNH@ @

ÙÛ‡@|™ìí@ïÛbnÛa@Þbr½aëZ@ @

likes (ali,ahmed). likes (noha,sami). likes (aser,noha).

Ò†�a@æb×ëZ@ @

likes(X,Y).@ @

��G(������א���+�����f�F��،4ن���G-X,Yא�u}��'?"�،�����ن�א�-�G'�45�;'���

�G(����2��'��4א�.+�g-��aא�y�<|�א����دY��4و��X'�$���א��������+���o�5*��א�

���5��!�א����א��9���)$��!�(�����،� +W}א��$L�4وא��W� �

X=ali X=noha X=aser� �

Y=ahmed Y=sami Y=noha� �

�{�uא�|������fאس�وذ����F7א�)]�ن�א�+������א9����3]�3א����א�����دא�3Wא{

F3א�����Elikes�{�u�2א�;���وאK� �

L]�ن�*��C��Dذא�FClauses�E'�$���א������������}�و���'��-�GאK���3و�א�;��د�

�9W�ن �

١� J����yא�����3وא����2אK� �

٢� J�3'�د��Kود��2א�yد�א�.��oو�)-�{�uود��2א�yאK� �

٣� J�$�������2K����א{��א}�א�+�o+���;9א��������]�3زو���- �

Page 6: Swi_prolog

6

Muhammad Siddig H.

RM@ïãbrÛa@á�ÔÛa@Z¿@áØznm@Ñî×@ò�a‰…@óÜÇ@Ýàn’íëbèÔîÔ¤@ëc@Òa†çþa@‹aŠy⁄@Þìܧa@åÇ@szjÛa@N@ @

ÙÛ‡@|™ìíZ@ @

likes (ali,ahmed). likes (noha,sami). likes (aser,noha).

Ò†�a@æb×ëZ@ @

likes(aser,Y).� �

�Cذא�-������a+.�4א��'���lD,��!�jم�א����a�،��L�;eC��(+(�{�7������א�����$�'���;L

�a+.�4א��'��������>�-(;�ً��و-���د��2�{�u9�ن�א�K�&$'ل�� yא�G-�G[��Cذא���)

��G'������2א���א'��وא���{�u�5و��د�א�;�W�م����(�{�uא�{�uא�o����+z9��4و���'�

R�$א��

ïÐܨa@Ý�Ü�nÛaë@ïßbßþa@Ý�Ü�nÛa@ @

@@ïßbßþa@Ý�Ü�nÛaForward tracking@Z@ @

����4���(���|>���������7�-�|���_Lو�|>����yא�G��-����a+.-����'��h������;Lل�������jא���h�Lא%����א%�������&������K�.א��+���)Lو���aو+.-�|>����g-7��א�������L�-��-�|����L��'א����kאم�%����!��(

�������g��-�|������L��������-���-����-�f��$�]�m�����א�����א���א'�7��L�&�����}�،��و���uא�BCل����א��\�a+.-و������_-�|>���K� �

@ïÐܨa@Ý�Ü�nÛaBacktracking Z@ @

�����4x��+�א� �,���א���z9��G-��,$J�3א)$)��+�������Prolog).��א�z9����*+-�������7�$.��m�،�وא���!��jم�א���(�،��3%�37[_���$q%}وא��5א�),�-�Gא�$����א���$��)��،�و[]��K�.-�G-�Gא�%

���D,�������2�4د�����-������א-�7��א�������-�8�����Cذא�9�*�����$7��و��)$)L����)��4���'���3��9�l����-�����'�،�����a+.�4א�����'����<�Uא����������gא������م�������(�،���-�����F"�א����u�|����������א������2���������

���BCن�) �BC�3'�م�و��د���א'����)���G[��4ن�+W��4+-�5�;�Wא9+�4و)]+�5א����م�א�Fא�3����)LK�����*��&��������������@ن�א�$��a�،���������|��,Wو�����-�4���'��������'+a�{א������f����ن������Cذא�9

Page 7: Swi_prolog

7

Muhammad Siddig H.

�����R+���}�א�,+'���و��uא�BC���,$Jא�g;�����م����a�،�|,��4�'��4و�.�3א��+H�;-�!$)�)L��א'� +W�����$(���(���G-�5�;�W}دو�45א���.L��+D�L�!e�،��a+.�4א��'���2.�� �

��'����a+.-�4.�د�-�Gא�]�*���و�-��L�G9א�����دא�3Wא��xل�b��(������Wא�z�ل�א� �� �

location(desk, office). location(apple, kitchen).� �location(flashlight, desk).� �location('washing machine', cellar).� �location(nani, 'washing machine'). � �location(broccoli, kitchen).� �location(crackers, kitchen).� �location(computer, office).� �

�����و9�ن���)���א�%�.?م�א� �Location(apple, kitchen).� �

�!�-.���Kא�%�.?م�LF{�uא�E���� �W��_]�3א�• Bא{و��$�K���!�jא����;(���������y�م��?.���2��'��4א�.+��a،�6�وً��-������א�%

������������a+.�4א����������'����د�2�4��������א��� J����������������������א���������$�.������������F"�א�.�$����������{+��������.LوFUNIFICATIONE � J�������a@ذא�אW,��8'�$���א������،�)����BC�3א�����yא�

������������������א����ن�'�$��[L���������5و'��),���Gא�%���Exא{ول�-�Kא�|�����L�����������و'��8D�X=apple ����و)��م����5�ع�א�����*�zא��ExKو)���|�א�،True�K� �

• ���������(�������'�5���),���د�4א�%����א'��,��5و���$�)�%?��3����G��-�+��z9د��������و��!�و��2������������א�����L�E����X�������mא������א��$�K�8א��$L�m�����א��$�K������(���G��-����D;א������،�و);

������|��,��������و���a+.�4א����'���2�����������א�����yא�G��-�����;(����*��o��،م�?.�����8א�%�����&�אK�$��א�(�د%���+��)Lא�+א�.��،�و��$�Kא�G-�����א�����$�'���;Lو������ Wא�

X=broccali� �by@¿@ïÐܨa@ÉjnnÛa†ÇaìÔÛa@òÛZ

clerk(mohamed). � �clerk(adam). � �typist(ali). � �manager(salih). manager(omar). � �super(X,Y):- manager(X), clerk(Y). � �super(X,Y):- clerk(Y), typist(Y). � �super(X,Y):- manager(X), typist(Y). � �

����� .W super(Super,ali)و9�ن���)���א�%�,(��5א� �

Page 8: Swi_prolog

8

Muhammad Siddig H.

• ������������L�!��(�4����Exא{ول�-��Gא���'Kن�א���h���Bא���'��4א{و�lD,��!�jم�א���(������a+.�4א���'���2��������g�-FXEmanager������������ن�h��X=ali ��K���!��jא��G�و�]

����4����������Gא���'������-��*��������zא��Ex�������Kא�������������-�2�3�������_,(clerk(Y)���&�������$'�3������� D��Y=mohamedא����k��%������+����4،�و����);���א��j!��@'�د�4א�����-���,$Jא�g�;��م�א�

�و)+���BC�gא�(�pאل�א{ول��+W� �������*�zא�������yא�BCل������manager(omer)وא�*����ن��h��X=omar�K���*���zא��Ex��Kא��������-�5+��[(�!��eclerk(adam) �2�3��،�و),_

�������g���iن�}�B�4א{و�����ق�א���'�,WC�G��-����9���!�א���(�������و����*�z�4א�+���$��Ex��Kא�אF���8�,W���7>אx��K �5א+[(�!e����� ��K�������$��'��4א�

�,$Jא�g;���C)��}�א� ���������3א�Wدא���,$Jא�g�;���!�C)��}�א�(Prolog������oF���kאم�-.�-��3א�����gوא��%������G�'�45��;'����

������،���,$Jא����.���Fא��*��-�Uو����gא��,�L�2�![D�א%��د�دא�3Wא��*�-�G[]�Uא��-�G-�Uא����������.a�+���z9א�U-�����;�bא��*�� (������1���������א�.$�-����8و���دون��,����7?��א��������א%�����G���-

�E>Fو)�!�[K��x-+�����$�zא�Fא4+9 �g���3-�.-�b��L�������z-Wً?�אK�$��א� �

Factorial (0,1),!.� �GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG� �

���(�-����5�)-�+ ��-_]$��א�(������aא��ن�وאy �ل�'$&�� �road('A','C',200). road('A','D',300).� �road('C','D',100).� �road('C','B',120).� �road('D','B',130).� �route(Town1,Town2,Dist):-� �

road(Town1,Town2,Dist).�������������� �route(Town1,Town2,Dis):-� �

road(Town1,X,Dist1),� �route(X,Town2,Dist2),� �

Dis is Dist1+Dist2.� ����� a�W@ذא�9�ن�א�u}����א�

route (City1,City2,Distance).� ��R+������Wא�u}�א� �

route(A,B,X).� �GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG� �

Page 9: Swi_prolog

9

Muhammad Siddig H.

@áöaìÔÛaLists@ @• � ��.L���7)�� �7,�\�L� !�(� ���� ،� �א�;��*�� �L+א��9 ���%�%�� G-� �Kא���א<!

��.�+-��%���3Wدא���א���<�+\��'���[L[ ]��3 ,$���$\�,אم�א��k�،�-�gא%�����K�?ًz-[1,2,3,4,5,6,7,8,9]�Kא�.��\+�א�]�*���$��<�� �

• �>x��BC���>�א���!)��Lא�+�س��Head��3(Fوא�Tail�K��*�����>�و).+}��5س�א�� �Kول�'� +��2א���<���،�وא�F)���������3'��\+�א���<��

��kم� •)LProlog��������K�?ًz-[X|Y]�K$, ����3א�+�س�وא��F|��E3(Fא�+-�xא��T(���-�kً���2'�$���א���אa|����א���א<!�)L���9MatchingK

��>���3Wدא�+ �'�G'��D;א�� �member(member_name,[member1,member2]).

�?ًz-�W�a+.�4א��'���2�������Wאjaض��ن���)�fא���<���א� �[mohamed,ali,suliman,hamdan,mohmoud]� �

�G'��D;א���(+*���*�����+aوali�������j��4+H�;-W!�א��*�-�U*��م��������א�u}�א� �member(ali,[mohamed,ali,suliman,hamdan,mahmoud]). -----------------------------------------------------------------------------------

� ������Cذא�� �*��م ،� 3(Fא�� �و���3 �-.���5�2س�א���<�� �א�;�G'��Dא%! ���{�uא� 9�ن�����Wא�u}�א� �

member(Name,[mohamed | _ ]). ----------------------------------------------------------------------------------� �

@wßbãŠirologP@ò�Ü�@Þì�@Êbu‰hi@âìÔíN@ @mylength([],0). mylength([_|Tail], Len) :-� �

mylength(Tail, TailLen),� � Len is TailLen + 1.

�{�uذא�9�ن�א@amylength([],X). �!�jن�א�@a�����X=0.K� ��{�uذא�9�ن�א@amylength([a,b,c,d,e,f,g],X). ���،!�jن�א�@a�����X=7.K� �

� �@wßbãŠiProlog@ìÔíòÜ�Ü�@¿@ñ…ìuì½a@Š•bäÈÛa@Éà�@âZ@ @

sum([],0). sum([Head|Tail],X):-� �

sum(Tail,TailSum),� � X is Head+TailSum. � �

�{�uذא�9�ن�א@asum([1,2,3],Sum). ��،�����!�jن�א�@aSum=6K� �

Page 10: Swi_prolog

10

Muhammad Siddig H.

@‰aŠØnÛaRecursion@ @��'���4و�'?���-���(�'��4א%!��<�\�L�!�(��-��'�،�4+-�+z9��5א+[��!��C+א�E'�$���א�(

�7),*�����Kא���'���4و�א�.? �?ًz-�W���R��[-�����-W�G?ل�א�.�T-�R�)y�،N!���K+و�Rא�.�د�� Prologא��*�-�Uא�

�(x-+א�W� �factorial (0,1). factorial (N,Res) :- N>1, N1 is N-1, factorial(N1,FacN1), Res is N*FacN1.

������L���.aWא�u}�א��������j!�א�$�� �factorial(2,Answer).� �

����!�jن�5د�א��[(�����'� �� ��������Answer=2. � �� �

òî™bíŠÛa@pbîÜàÈÛaZ@ @��Falseو��True'�����)]�ن�א�+د����CF3>5�Eذא�9�*�8א�.�$����-������ �

���$9�����9�G-���������(5����$�.ذא�9�*�8א�C��-Cis�oو�)���G'��ً��F=E'?-��א� ������������L���'PrologWא{%�,(�5א��א���������FW����W�!�jא{-z$��א� �

1?- X=3+5. �����!�jن�א�@aW� �� �� �� �� �� �� ���������X=3+5.� �

�� *��$)$)9�UL�א���g�5�45-�����وא� ���5ن����א�.�-?������Kو����)]�ن� ��LQא��a��C���'�����G[�W� �

2?- X is 3+5. ���!�jא������Cن��[L��� �� �� �� �� �� �� ��X=8.� �

3?- X is 3-5. !�jא������Cن��[L������ �� �� �� �� �� �����������X= -2.� �

4?- X is 3/5. ����!�jא������Cن��[L��� �� �� �� �� �� ����������X=0.6.� �

5?- X is 3*5. ���!�jא������Cن��[L��� �� �� �� �� �� ����������X=15.� �

� �

Page 11: Swi_prolog

11

Muhammad Siddig H.

òî™bíŠÛa@Þaë†Ûa@ @ïÈîi�Ûa@‰ˆ¦a@òÛa…Z@ @

1?- sqrt(10,X). �!�jא������Cن��[L����� �� �� �� ��X=3.1622776601683795� �

ïÈîjĐÛa@áríŠËìÜÛa@òÛa…@ @2?- log(1,X).

���!�jא������Cن��[L��� �� �� �� �� �� �� ��X=1.0.� �@÷b�ÿÛ@áríŠËìÜÛa@òÛa…QP@ILNH@ @

3?- log10(1,X). ���!�jא������Cن��[L��� �� �� �� �� ��X=0.301029995.� �

@òÔÜĐ½a@òàîÔÛa@òÛa…@ @4?- abs(-3,X).

���!�jא������Cن��[L��� �� �� �� �� �� �� ��X=3.� �òà�ÔÛa@ïÓbi@òÛa…Z@ @

5?- X is 10 mod 20. ���!�jא������Cن��[L��� �� �� �� �� �� �����������X=10.� �

òîrÜr½a@Þaë†Ûa@ @

kî¦a@òÛa…@ @6?- sin(0,X).

���!�jא������Cن��[L��� �� �� �� �� �� �� �X=0.0.

âbànÛa@kîu@òÛa…@ @7?- cos(0,X).

���!�jא������Cن��[L��� �� �� �� �� �� �� �X=1.0.

�دא���א���3 �8?-tan(0,X).

���!�jא������Cن��[L��� �� �� �� �� �� �� ��X=0.0.� �� �@ @