Click here to load reader
Upload
muhammad-hassan
View
129
Download
0
Embed Size (px)
DESCRIPTION
introduction to prolog ,,, this notes of course in prolog
Citation preview
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).� �
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).
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א��א� �
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א�),�������א�%�
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زو���- �
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
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א� �
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� �
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� �
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.� �
� �
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.� �� �@ @