البرمجة المنطقية
البرمجة المنطقية هي نموذج برمجي وقواعد بيانات وتمثيل معرفي قائم على المنطق الصوري . البرنامج المنطقي عبارة عن مجموعة من الجمل بصيغة منطقية، تمثل معرفة حول مجال مشكلة معينة. يتم إجراء العمليات الحسابية بتطبيق الاستدلال المنطقي على تلك المعرفة لحل المشكلات في هذا المجال. تشمل عائلات لغات البرمجة المنطقية الرئيسية: برولوج ، وبرمجة مجموعات الإجابات (ASP)، وداتالوج . في جميع هذه اللغات، تُكتب القواعد على شكل بنود .
A :- B1, ..., Bn.
وتُقرأ كجمل خبرية في شكل منطقي:
A if B1 and ... and Bn.
Aيُطلق على رأس القاعدة اسم ، و يُطلق على جسم القاعدة اسم ، وتُسمى المتغيرات أو الشروط. عندما n = 0، تُسمى القاعدة حقيقة وتُكتب في أبسط صورة:B1BnBi
A.
تتشابه الاستعلامات (أو الأهداف) في تركيبها النحوي مع قواعد البيانات، وعادةً ما تُكتب بالشكل التالي:
?- B1, ..., Bn.
في أبسط حالات عبارات هورن (أو العبارات "المحددة")، تكون جميع العناصر A، B1 ، ...، Bn صيغًا ذرية على شكل p(t1 ، ...، tm ) ، حيث p رمز مسند يدل على علاقة، مثل "الأمومة"، و t1 مصطلحات تدل على كائنات (أو أفراد). تشمل المصطلحات رموزًا ثابتة، مثل "تشارلز"، ومتغيرات، مثل X، التي تبدأ بحرف كبير.
على سبيل المثال، لنأخذ برنامج جملة هورن التالي كمثال:
mother_child ( elizabeth , charles ). father_child ( charles , william ). father_child ( charles , harry ). parent_child ( X , Y ) :- mother_child ( X , Y ). parent_child ( X , Y ) :- father_child ( X , Y ). grandparent_child ( X , Y ) :- parent_child ( X , Z ), parent_child ( Z , Y ).عند إدخال استعلام، يُنتج البرنامج إجابات. على سبيل المثال، بالنسبة لاستعلام ما ?- parent_child(X, william)، تكون الإجابة الوحيدة هي
X = تشارلزيمكن طرح استعلامات متنوعة. على سبيل المثال، يمكن استخدام البرنامج لإنشاء كل من الأجداد والأحفاد. بل ويمكن استخدامه لإنشاء جميع أزواج الأحفاد والأجداد، أو ببساطة للتحقق مما إذا كان زوج معين يمثل زوجًا من هذا النوع.
grandparent_child ( X , william ). X = elizabeth?- grandparent_child ( elizabeth , Y ). Y = william ; Y = harry .?- grandparent_child ( X , Y ). X = elizabeth Y = william ; X = elizabeth Y = harry .?- grandparent_child ( william , harry ). no ?- grandparent_child ( elizabeth , harry ). yesعلى الرغم من أن برامج منطق بنود هورن كاملة تورينج ، [ 1 ] [ 2 ] إلا أنه في معظم التطبيقات العملية، يجب توسيع برامج بنود هورن لتشمل برامج المنطق "العادية" ذات الشروط السلبية. على سبيل المثال، يستخدم تعريف "شقيق" شرطًا سلبيًا، حيث يتم تعريف المسند = بواسطة البند X = X :
sibling ( X , Y ) :- parent_child ( Z , X ), parent_child ( Z , Y ), not ( X = Y ).تتمتع لغات البرمجة المنطقية التي تتضمن شروطًا سلبية بقدرات تمثيل المعرفة الخاصة بالمنطق غير الرتيب .
في لغتي ASP و Datalog، تُقرأ البرامج المنطقية قراءةً وصفيةً فقط ، ويتم تنفيذها بواسطة إجراء إثبات أو مولد نماذج لا يُفترض أن يتحكم المبرمج في سلوكه. أما في عائلة لغات Prolog، فتُفسَّر البرامج المنطقية أيضًا تفسيرًا إجرائيًا كإجراءات اختزال الهدف. من هذا المنظور، يُفهم البند A :- B 1 ,...,B n على النحو التالي:
- لحل
A، حل ، و... وحل .B1Bn
للشروط السلبية في متن الجمل تفسير إجرائي أيضًا، يُعرف باسم النفي على أنه فشل not B : يُعتبر الحرف السلبي صحيحًا إذا وفقط إذا Bفشل الحرف الإيجابي في التحقق.
انصبّ جزء كبير من الأبحاث في مجال البرمجة المنطقية على محاولة تطوير دلالات منطقية للنفي باعتباره فشلاً، وعلى تطوير دلالات أخرى وتطبيقات أخرى للنفي. وقد كانت هذه التطورات مهمة بدورها لدعم تطوير أساليب رسمية للتحقق من البرامج وتحويلها باستخدام المنطق .
تاريخ
يُعدّ استخدام المنطق الرياضي لتمثيل وتنفيذ برامج الحاسوب سمةً من سمات حساب لامدا ، الذي طوّره ألونسو تشيرش في ثلاثينيات القرن العشرين. مع ذلك، كان كورديل غرين أول من اقترح استخدام الصيغة الشرطية للمنطق لتمثيل برامج الحاسوب . [ 3 ] وقد اعتمد هذا الاقتراح على بديهية مجموعة فرعية من لغة ليسب ، بالإضافة إلى تمثيل لعلاقة الإدخال والإخراج، لحساب هذه العلاقة من خلال محاكاة تنفيذ البرنامج بلغة ليسب. من جهة أخرى، وظّف برنامج أبسيس ، الذي ابتكره فوستر وإلكوك ، مزيجًا من المعادلات وحساب لامدا في لغة برمجة تأكيدية لا تفرض أي قيود على ترتيب تنفيذ العمليات. [ 4 ]
يمكن تتبع أصول البرمجة المنطقية، بصيغتها الحالية القائمة على الحقائق والقواعد، إلى نقاشات دارت في أواخر الستينيات وأوائل السبعينيات حول التمثيل التصريحي مقابل التمثيل الإجرائي للمعرفة في الذكاء الاصطناعي . وقد برز مناصرو التمثيل التصريحي في جامعة ستانفورد ، بالتعاون مع جون مكارثي ، وبرترام رافائيل ، وكورديل غرين، وفي إدنبرة ، مع جون آلان روبنسون (باحث زائر من جامعة سيراكيوز )، وبات هايز ، وروبرت كوالسكي . أما مناصرو التمثيل الإجرائي، فقد تركزوا بشكل رئيسي في معهد ماساتشوستس للتكنولوجيا (MIT) ، بقيادة مارفن مينسكي وسيمور بابيرت . [ 5 ]
على الرغم من اعتمادها على أساليب البرهان المنطقي، كانت لغة Planner ، التي طورها كارل هيويت في معهد ماساتشوستس للتكنولوجيا، أول لغة تظهر ضمن هذا النموذج الإجرائي. [ 6 ] تميزت Planner باستدعاء الخطط الإجرائية الموجهة بالأنماط من الأهداف (أي اختزال الأهداف أو الاستدلال العكسي ) ومن التأكيدات (أي الاستدلال الأمامي ). كان التطبيق الأكثر تأثيرًا لـ Planner هو مجموعة فرعية منها تُسمى Micro-Planner، والتي طورها جيري سوسمان ويوجين شارنياك وتيري وينوغراد . استخدم وينوغراد Micro-Planner لتنفيذ برنامج SHRDLU الرائد في فهم اللغة الطبيعية . [ 7 ] ولتحقيق الكفاءة، استخدمت Planner بنية تحكم تراجعية بحيث لا يلزم تخزين سوى مسار حسابي واحد ممكن في كل مرة. أدى برنامج Planner إلى ظهور لغات البرمجة QA4 ، [ 8 ] وPopler، [ 9 ] وConniver، [ 10 ] و QLISP، [ 11 ] ولغة البرمجة المتزامنة Ether. [ 12 ]
حاول هايز وكوالسكي في إدنبرة التوفيق بين النهج التصريحي القائم على المنطق لتمثيل المعرفة والنهج الإجرائي لبلانر. وقد طور هايز (1973) لغة معادلات، أطلق عليها اسم جولوكس، والتي يمكن من خلالها الحصول على إجراءات مختلفة عن طريق تغيير سلوك مُثبت النظرية. [ 13 ]
في هذه الأثناء، كان آلان كولميرور في مرسيليا يعمل على فهم اللغة الطبيعية ، مستخدمًا المنطق لتمثيل الدلالات، ومستخدمًا الاستدلال المنطقي للإجابة على الأسئلة. خلال صيف عام ١٩٧١، دعا كولميرور كوالسكي إلى مرسيليا، واكتشفا معًا إمكانية استخدام الصيغة الشرطية للمنطق لتمثيل القواعد النحوية الرسمية ، وإمكانية استخدام مُثبتات النظريات الاستدلالية للتحليل النحوي. ولاحظا أن بعض مُثبتات النظريات، مثل الاستدلال المنطقي الفائق [ ١٤ ] ، تعمل كمحللات نحوية تصاعدية، بينما تعمل مُثبتات أخرى، مثل استدلال SL (١٩٧١) [ ١٥ ]، كمحللات نحوية تنازلية.
في صيف عام 1972، قام كوالسكي، بالتعاون مع كولميراور، بتطوير التفسير الإجرائي للاستلزام في الصيغة الجملية. واتضح أيضًا أن هذه الجمل يمكن حصرها في الجمل المحددة أو جمل هورن ، وأن حل الجملة المحددة (SL) يمكن حصره (وتعميمه) على حل الجملة المحددة (SLD ) . وقد وُصف التفسير الإجرائي لكوالسكي ونظرية الجملة المحددة (SLD) في مذكرة عام 1973، نُشرت عام 1974. [ 16 ]
استخدم كولميراور، بالتعاون مع فيليب روسيل، التفسير الإجرائي كأساس للغة برولوج، التي طُبقت في صيف وخريف عام ١٩٧٢. وكان أول برنامج مكتوب بلغة برولوج، والذي كُتب أيضًا في عام ١٩٧٢ وطُبق في مرسيليا، نظامًا فرنسيًا للإجابة على الأسئلة. وقد اكتسب استخدام برولوج كلغة برمجة عملية زخمًا كبيرًا بفضل تطوير ديفيد إتش دي وارين لمترجمها في إدنبرة عام ١٩٧٧. وأظهرت التجارب أن برولوج إدنبرة قادرة على منافسة سرعة معالجة لغات البرمجة الرمزية الأخرى مثل ليسب . [ ١٧ ] وأصبحت برولوج إدنبرة المعيار الفعلي ، وأثرت بشكل كبير على تعريف معيار برولوج ISO .
حظيت البرمجة المنطقية باهتمام دولي واسع خلال ثمانينيات القرن الماضي، عندما اختارتها وزارة التجارة الدولية والصناعة اليابانية لتطوير برمجيات مشروع أنظمة الحواسيب من الجيل الخامس (FGCS). هدف مشروع FGCS إلى استخدام البرمجة المنطقية لتطوير تطبيقات ذكاء اصطناعي متقدمة على حواسيب فائقة التوازي . ورغم أن المشروع استكشف في البداية استخدام لغة برولوج، إلا أنه اعتمد لاحقًا البرمجة المنطقية المتزامنة ، نظرًا لتوافقها مع بنية حاسوب FGCS.
مع ذلك، تداخلت خاصية الاختيار الملتزم في البرمجة المنطقية المتزامنة مع الدلالات المنطقية للغة [ 18 ] ومع ملاءمتها لتمثيل المعرفة وتطبيقات حل المشكلات. علاوة على ذلك، فشلت أنظمة الحوسبة المتوازية التي طُوّرت في المشروع في منافسة التطورات الحاصلة في مجال تطوير الحواسيب التقليدية متعددة الأغراض. وقد أدى هذان العاملان معًا إلى فشل مشروع FGCS في تحقيق أهدافه، ما أسفر عن تراجع الاهتمام بالبرمجة المنطقية والذكاء الاصطناعي على مستوى العالم [ 19 ] .
في غضون ذلك، واصلت مناهج البرمجة المنطقية التصريحية، بما فيها تلك القائمة على استخدام لغة برولوج، إحراز تقدم مستقل عن مشروع FGCS. وعلى وجه الخصوص، على الرغم من أن برولوج طُوّرت لدمج التمثيلات التصريحية والإجرائية للمعرفة، إلا أن التفسير التصريحي البحت للبرامج المنطقية أصبح محور التركيز للتطبيقات في مجال قواعد البيانات الاستنتاجية . وقد برز العمل في هذا المجال حوالي عام 1977، عندما نظّم هيرفيه غالير وجاك مينكر ورشة عمل حول المنطق وقواعد البيانات في تولوز. [ 20 ] وأُعيد تسمية هذا المجال لاحقًا إلى داتالوج .
وقد تعزز هذا التركيز على القراءة المنطقية والتصريحية لبرامج المنطق من خلال تطوير برمجة منطق القيود في ثمانينيات القرن العشرين وبرمجة مجموعات الإجابات في تسعينيات القرن العشرين. كما يحظى هذا التركيز باهتمام متجدد في التطبيقات الحديثة للغة برولوج [ 21 ].
تأسست جمعية البرمجة المنطقية (ALP) عام 1986 بهدف الترويج للبرمجة المنطقية. وكانت مجلتها الرسمية حتى عام 2000 هي مجلة البرمجة المنطقية ، وكان رئيس تحريرها المؤسس ج . آلان روبنسون . [ 22 ] وفي عام 2001، أُعيد تسمية المجلة إلى مجلة البرمجة المنطقية والجبرية ، وأصبحت المجلة الرسمية لجمعية البرمجة المنطقية هي نظرية وممارسة البرمجة المنطقية ، التي تنشرها مطبعة جامعة كامبريدج .
المفاهيم
تتمتع البرامج المنطقية بمجموعة متنوعة غنية من الدلالات وأساليب حل المشكلات، بالإضافة إلى مجموعة واسعة من التطبيقات في البرمجة وقواعد البيانات وتمثيل المعرفة وحل المشكلات.
الخوارزمية = المنطق + التحكم
يُعدّ التفسير الإجرائي للبرامج المنطقية، الذي يستخدم الاستدلال العكسي لاختزال الأهداف إلى أهداف فرعية، حالةً خاصةً من استخدام استراتيجية حلّ المشكلات للتحكم في استخدام تمثيل منطقي تصريحي للمعرفة بهدف الحصول على سلوك الخوارزمية . وبشكلٍ أعم، يمكن تطبيق استراتيجيات مختلفة لحلّ المشكلات على نفس التمثيل المنطقي للحصول على خوارزميات مختلفة. أو بدلاً من ذلك، يمكن الحصول على خوارزميات مختلفة باستخدام استراتيجية حلّ مشكلات مُحددة من خلال استخدام تمثيلات منطقية مختلفة. [ 23 ]
الاستراتيجيتان الرئيسيتان لحل المشكلات هما التفكير العكسي (تقليل الهدف) والتفكير الأمامي ، والمعروفان أيضًا باسم التفكير من أعلى إلى أسفل والتفكير من أسفل إلى أعلى، على التوالي.
في الحالة البسيطة لبرنامج عبارة هورن المنطقية وهدف ذري رئيسي، يُحدد الاستدلال العكسي شجرة "و-أو" ، التي تُشكل فضاء البحث لحل الهدف. الهدف الرئيسي هو جذر الشجرة. عند إعطاء أي عقدة في الشجرة وأي عبارة يتطابق رأسها مع تلك العقدة، توجد مجموعة من العقد الفرعية التي تُقابل الأهداف الفرعية في متن العبارة. تُجمع هذه العقد الفرعية معًا بواسطة "و". تُجمع مجموعات العقد الفرعية البديلة التي تُقابل طرقًا بديلة لحل العقدة معًا بواسطة "أو".
يمكن استخدام أي استراتيجية بحث للبحث في هذا المجال. يستخدم برولوج استراتيجية تسلسلية، تعتمد على مبدأ "الأول في الأول خارج"، مع التراجع، حيث يُنظر في بديل واحد وهدف فرعي واحد فقط في كل مرة. على سبيل المثال، يمكن حل الأهداف الفرعية بالتوازي، ويمكن أيضًا تجربة العبارات بالتوازي. تُسمى الاستراتيجية الأولى بـوالاستراتيجية الثانية تسمى "و-متوازية"أو-متوازية . استراتيجيات بحث أخرى، مثل التراجع الذكي، [ 24 ] أو البحث الأفضل أولاً لإيجاد الحل الأمثل، [ 25 ] ممكنة أيضًا.
في الحالة العامة غير القائمة على القضايا، حيث يمكن للأهداف الفرعية أن تتشارك المتغيرات، يمكن استخدام استراتيجيات أخرى، مثل اختيار الهدف الفرعي الأكثر تكرارًا أو الذي تم تكراره بشكل كافٍ بحيث لا ينطبق عليه سوى إجراء واحد. [ 26 ] تُستخدم هذه الاستراتيجيات، على سبيل المثال، في البرمجة المنطقية المتزامنة .
في معظم الحالات، يكون الاستدلال العكسي من الاستعلام أو الهدف أكثر كفاءة من الاستدلال الأمامي. ولكن في بعض الأحيان، مع لغة Datalog وبرمجة مجموعات الإجابات، قد لا يكون هناك استعلام منفصل عن مجموعة البنود ككل، وبالتالي فإن توليد جميع الحقائق التي يمكن استخلاصها من البنود يُعد استراتيجية منطقية لحل المشكلات. إليك مثال آخر، حيث يتفوق الاستدلال الأمامي على الاستدلال العكسي في مهمة حسابية تقليدية، حيث يكون الهدف ?- fibonacci(n, Result)هو إيجاد العدد النوني في متتالية فيبوناتشي:
فيبوناتشي ( 0 , 0 ). فيبوناتشي ( 1 ، 1 ).fibonacci ( N , Result ) :- N > 1 , N1 is N - 1 , N2 is N - 2 , fibonacci ( N1 , F1 ), fibonacci ( N2 , F2 ), Result is F1 + F2 .هنا، تمثل العلاقة fibonacci(N, M)الدالة fibonacci(N) = M، والمسند N is Expressionهو تدوين برولوج للمسند الذي يقوم بتعيين المتغير Nإلى قيمة Expression.
بافتراض هدف حساب عدد فيبوناتشي n-1 n، فإن الاستدلال العكسي يُختزل الهدف إلى هدفين فرعيين هما حساب عددي فيبوناتشي n-1 و n-2. ويُختزل الهدف الفرعي n-1 إلى هدفين فرعيين هما حساب عددي فيبوناتشي n-2 و n-3، مع تكرار حساب عدد فيبوناتشي n-2. تستمر هذه العملية، أي اختزال هدف فرعي واحد إلى هدفين فرعيين، حتى الوصول إلى العددين 0 و 1. يبلغ تعقيد هذه العملية 2^ n . في المقابل، يُولّد الاستدلال الأمامي متتالية أعداد فيبوناتشي، بدءًا من 0 و 1 دون أي إعادة حساب، ويكون تعقيدها خطيًا بالنسبة إلى n.
لا يستطيع برولوج إجراء الاستدلال الأمامي مباشرةً. لكنه يستطيع تحقيق تأثير الاستدلال الأمامي ضمن سياق الاستدلال العكسي عن طريق الجداول : تُحفظ الأهداف الفرعية في جدول، إلى جانب حلولها. إذا تكرر ظهور هدف فرعي، يُحل مباشرةً باستخدام الحلول الموجودة في الجدول، بدلاً من إعادة حل الأهداف الفرعية بشكل زائد. [ 27 ]
العلاقة بالبرمجة الوظيفية
يمكن اعتبار البرمجة المنطقية تعميمًا للبرمجة الوظيفية، حيث تُعدّ الدوال حالة خاصة من العلاقات. [ 28 ] على سبيل المثال، يمكن تمثيل الدالة mother(X) = Y (لكل X أم واحدة فقط Y) بالعلاقة mother(X, Y). من هذا المنطلق، تُشبه البرامج المنطقية قواعد البيانات العلائقية ، التي تُمثّل الدوال أيضًا كعلاقات.
بالمقارنة مع الصيغة العلائقية، فإن الصيغة الوظيفية أكثر إيجازًا للدوال المتداخلة. على سبيل المثال، في الصيغة الوظيفية، يمكن كتابة تعريف الجدة لأمها في شكل متداخل:
mother_grandmother ( X ) = mother ( mother ( X )).يجب كتابة التعريف نفسه في شكل غير متداخل ومسطح باستخدام الترميز العلائقي:
mother_grandmother ( X , Y ) :- mother ( X , Z ), mother ( Z , Y ).مع ذلك، يمكن اعتبار البنية المتداخلة بمثابة اختصار برمجي للبنية غير المتداخلة. على سبيل المثال، يحوّل برنامج Ciao Prolog البنية الوظيفية إلى بنية علائقية، وينفذ البرنامج المنطقي الناتج باستخدام استراتيجية تنفيذ Prolog القياسية. [ 29 ] علاوة على ذلك، يمكن استخدام التحويل نفسه لتنفيذ العلاقات المتداخلة غير الوظيفية. على سبيل المثال:
الجد ( س ) := الوالد ( الوالد ( س )). الوالد ( س ) := الأم ( س ). الوالد ( س ) := الأب ( س ).الأم ( تشارلز ) := إليزابيث . الأب ( تشارلز ) := فيليب . الأم ( هاري ) := ديانا . الأب ( هاري ) := تشارلز .?- الجد/الجدة ( س ، ص ). س = هاري ، ص = إليزابيث . س = هاري ، ص = فيليب .العلاقة مع البرمجة العلائقية
يُستخدم مصطلح البرمجة العلائقية ليشمل مجموعة متنوعة من لغات البرمجة التي تُعامل الدوال كحالة خاصة من العلاقات. بعض هذه اللغات، مثل miniKanren [ 28 ] والبرمجة الخطية العلائقية [ 30 ]، هي لغات برمجة منطقية بالمعنى المقصود في هذه المقالة.
ومع ذلك، فإن لغة RML العلائقية هي لغة برمجة إجرائية [ 31 ] التي بنيتها الأساسية هي تعبير علائقي، وهو مشابه للتعبير في منطق المسند من الدرجة الأولى.
تعتمد لغات البرمجة العلائقية الأخرى على حساب العلاقات [ 32 ] أو الجبر العلائقي. [ 33 ]
دلالات برامج جملة هورن
من منظور منطقي بحت، هناك نهجان للدلالات التصريحية لبرامج منطق جملة هورن: أحد هذه النهج هو دلالات النتيجة المنطقية الأصلية ، والتي تفهم حل الهدف على أنه إظهار أن الهدف هو نظرية صحيحة في جميع نماذج البرنامج.
في هذا النهج، تُعدّ الحسابات بمثابة إثبات نظريات في منطق الرتبة الأولى ؛ ويُعتبر كلٌّ من الاستدلال العكسي ، كما في حل SLD، والاستدلال الأمامي ، كما في الحل الفائق، طريقتين صحيحتين وكاملتين لإثبات النظريات. أحيانًا، تُعتبر هذه الطرق لإثبات النظريات بمثابة توفير دلالات نظرية إثباتية (أو تشغيلية) منفصلة لبرامج المنطق. ولكن من وجهة نظر منطقية، فهي طرق إثبات، وليست دلالات.
يتمثل النهج الآخر للدلالات التصريحية لبرامج عبارات هورن في دلالات الإرضاء ، والتي تفهم حل الهدف على أنه إثبات صحة (أو تحقق) هذا الهدف في نموذج مُراد (أو قياسي) للبرنامج. بالنسبة لبرامج عبارات هورن، يوجد دائمًا مثل هذا النموذج القياسي: فهو النموذج الأدنى الوحيد للبرنامج.
بصورة غير رسمية، فإن النموذج الأدنى هو نموذج، عندما يُنظر إليه على أنه مجموعة جميع الحقائق (الخالية من المتغيرات) التي تكون صحيحة في النموذج، لا يحتوي على مجموعة أصغر من الحقائق التي تمثل أيضًا نموذجًا للبرنامج.
على سبيل المثال، تمثل الحقائق التالية النموذج الأدنى لمثال العلاقات الأسرية الوارد في مقدمة هذه المقالة. جميع الحقائق الأخرى الخالية من المتغيرات خاطئة في النموذج:
الأم والطفل ( إليزابيث ، تشارلز ). الأب والطفل ( تشارلز ، ويليام ). الأب والطفل ( تشارلز ، هاري ). الوالد والطفل ( إليزابيث ، تشارلز ) . الوالد والطفل ( تشارلز ، ويليام ). الوالد والطفل ( تشارلز ، هاري ). الجد والجدة والطفل ( إليزابيث ، ويليام ). الجد والجدة والطفل ( إليزابيث ، هاري ).كما أن دلالات الإرضاء لها توصيف بديل وأكثر رياضية باعتبارها أقل نقطة ثابتة للدالة التي تستخدم القواعد في البرنامج لاستخلاص حقائق جديدة من الحقائق الموجودة في خطوة واحدة من الاستدلال.
ومن اللافت للنظر أن أساليب حل المشكلات نفسها، كالتفكير الأمامي والخلفي، التي طُوّرت في الأصل لدلالات النتائج المنطقية، قابلة للتطبيق بنفس القدر على دلالات الإرضاء: يُولّد التفكير الأمامي النموذج الأدنى لبرنامج جملة هورن، من خلال استنباط حقائق جديدة من الحقائق الموجودة، إلى أن يتعذر توليد أي حقائق إضافية جديدة. أما التفكير الخلفي، الذي ينجح بتقليص الهدف إلى أهداف فرعية، إلى أن تُحلّ جميع الأهداف الفرعية بالحقائق، فيضمن صحة الهدف في النموذج الأدنى، دون توليد النموذج بشكل صريح. [ 34 ]
يمكن ملاحظة الفرق بين الدلالتين التصريحيتين من خلال تعريفات الجمع والضرب في حساب المتتابع ، الذي يُمثل الأعداد الطبيعية 0, 1, 2, ...كسلسلة من الحدود على الصورة 0, s(0), s(s(0)), .... بشكل عام، s(X)يُمثل الحدّ التالي للعدد X,، أي . X + 1.فيما يلي التعريفات القياسية للجمع والضرب في الترميز الوظيفي:
X + 0 = X. X + s(Y) = s(X + Y). أي أن X + (Y + 1) = (X + Y) + 1 X × 0 = 0. X × s(Y) = X + (X × Y). أي X × (Y + 1) = X + (X × Y).
فيما يلي نفس التعريفات المستخدمة في برنامج منطقي، باستخدام add(X, Y, Z)لتمثيل X + Y = Z,و multiply(X, Y, Z)لتمثيل X × Y = Z:
أضف ( X ، 0 ، X ). أضف ( X ، s ( Y )، s ( Z )) :- أضف ( X ، Y ، Z ).اضرب ( X ، 0 ، 0 ). اضرب ( X ، s ( Y )، W ) :- اضرب ( X ، Y ، Z )، أضف ( X ، Z ، W ).يُعطي كلا الدلالتين التصريحيتين نفس الإجابات لنفس عمليات الجمع والضرب الكمية الوجودية. على سبيل المثال، 2 × 2 = Xللمعادلة حل واحد X = 4؛ X × X = X + Xوللمعادلة حلان : X = 0و X = 2.
?- ضرب ( s ( s ( 0 )), s ( s ( 0 )), X ). X = s ( s ( s ( s ( 0 )))).?- اضرب ( X ، X ، Y )، اجمع ( X ، X ، Y ). X = 0 ، Y = 0. X = s ( s ( 0 ))، Y = s ( s ( s ( s ( 0 )))).مع ذلك، في سياق دلالات النتائج المنطقية، توجد نماذج غير قياسية للبرنامج، حيث تكون العبارة add(s(s(0)), s(s(0)), s(s(s(s(s(0)))))),ie 2 + 2 = 5صحيحة، على سبيل المثال. أما في سياق دلالات الإرضاء، فلا يوجد سوى نموذج واحد، وهو النموذج القياسي للحساب، حيث 2 + 2 = 5تكون العبارة خاطئة.
في كلا الدلالتين، يفشل الهدف . ففي دلالات الإرضاء، يعني فشل الهدف أن قيمة صدق الهدف خاطئة. أما في دلالات النتيجة المنطقية، فيعني الفشل أن قيمة صدق الهدف غير معروفة.?-add(s(s(0)),s(s(0)),s(s(s(s(s(0))))))
النفي كفشل
كان النفي كفشل (NAF)، كوسيلة للاستنتاج بأن الشرط السلبي not pصحيح من خلال إظهار عدم صحة الشرط الإيجابي p، سمةً من سمات أنظمة برولوج المبكرة. ويُطلق على الامتداد الناتج لحل SLD اسم SLDNF . كما وُجد تركيب مشابه، يُسمى "thnot"، في لغة مايكرو بلانر .
لم يتم حل الدلالات المنطقية لـ NAF حتى أظهر كيث كلارك [ 35 ] أنه في ظل ظروف طبيعية معينة، فإن NAF هي طريقة فعالة وصحيحة (وأحيانًا كاملة) للتفكير بدلالات النتيجة المنطقية باستخدام إكمال برنامج منطقي في منطق الرتبة الأولى.
يُقصد بالإكمال تقريبًا النظر في مجموعة جميع بنود البرنامج التي لها نفس المسند في الرأس، على سبيل المثال:
A :- Body1....A :- Bodyk.
كتعريف للمسند:
A iff (Body1 or ... or Bodyk)
حيث iffتعني "إذا وفقط إذا". يشمل الإكمال أيضًا بديهيات المساواة، التي تتوافق مع التوحيد . وقد أظهر كلارك أن البراهين التي يولدها SLDNF تشبه بنيويًا البراهين التي يولدها أسلوب الاستدلال بالاستنتاج الطبيعي مع إكمال البرنامج.
لنأخذ على سبيل المثال البرنامج التالي:
should_receive_sanction ( X , punish ) :- is_a_thief ( X ), not should_receive_sanction ( X , rehabilitation ).should_receive_sanction ( X , rehabilitation ) :- is_a_thief ( X ), is_a_minor ( X ), not is_violent ( X ).هو لص ( توم ).بالنظر إلى الهدف المتمثل في تحديد ما إذا كان ينبغي معاقبة توم، فإن القاعدة الأولى تنجح في إظهار أنه ينبغي معاقبة توم:
?- should_receive_sanction ( tom , Sanction ). Sanction = punish .ذلك لأن توم لص، ولا يمكن إثبات ضرورة إعادة تأهيله. ولا يمكن إثبات ضرورة إعادة تأهيله، لأنه لا يمكن إثبات أنه قاصر.
لكن إذا تلقينا معلومات جديدة تفيد بأن توم قاصر بالفعل، فإن الاستنتاج السابق القائل بضرورة معاقبة توم سيحل محله الاستنتاج الجديد القائل بضرورة إعادة تأهيل توم:
is_a_minor ( tom ).?- should_receive_sanction ( tom , Sanction ). Sanction = rehabilitation .تُسمى هذه الخاصية المتمثلة في سحب الاستنتاج عند إضافة معلومات جديدة، عدم الرتابة، وهي تجعل البرمجة المنطقية منطقًا غير رتيب .
لكن، إذا قيل لنا الآن أن توم عنيف، فسيتم إعادة تأكيد الاستنتاج القائل بضرورة معاقبة توم:
is_violent ( tom ).?- should_receive_sanction ( tom , Sanction ). Sanction = punish .إتمام هذا البرنامج هو:
should_receive_sanction ( X , Sanction ) iff Sanction = punish , is_a_thief ( X ), not should_receive_sanction ( X , reconstruction ) or Sanction = reconstruction , is_a_thief ( X ), is_a_minor ( X ), not is_violent ( X ).is_a_thief ( X ) iff iff X = tom.is_a_minor ( X ) iff X = tom.is_violent ( X ) iff X = tom .يرتبط مفهوم الإكمال ارتباطًا وثيقًا بدلالات التحديد لجون مكارثي للاستدلال الافتراضي، [ 36 ] وافتراض العالم المغلق لراي رايتر . [ 37 ]
تُعدّ دلالات الإكمال للنفي دلالاتٍ منطقية للنتائج، ويُقدّم لها SLDNF تطبيقًا قائمًا على نظرية البرهان. مع ذلك، في ثمانينيات القرن الماضي، شاعت دلالات الإرضاء لبرامج المنطق التي تتضمن النفي. في دلالات الإرضاء، يُفسّر النفي وفقًا للتعريف الكلاسيكي للحقيقة في نموذج مُقصود أو قياسي لبرنامج المنطق.
في حالة البرامج المنطقية ذات الشروط السلبية، يوجد نوعان رئيسيان من دلالات الإرضاء: في الدلالات المؤسسة جيدًا ، يكون النموذج المقصود للبرنامج المنطقي نموذجًا فريدًا ثلاثي القيم، وهو نموذج أدنى موجود دائمًا. تعمم الدلالات المؤسسة جيدًا مفهوم التعريف الاستقرائي في المنطق الرياضي. [ 38 ] تُنفذ لغة XSB Prolog [ 39 ] الدلالات المؤسسة جيدًا باستخدام حل SLG. [ 40 ]
في دلالات النموذج المستقر البديل ، قد لا توجد نماذج مقصودة أو قد توجد عدة نماذج مقصودة، جميعها نماذج دنيا ذات قيمتين. وتُعد دلالات النموذج المستقر أساس برمجة مجموعات الإجابات (ASP).
ينطبق كل من دلالات النموذج الراسخ والنموذج المستقر على برامج المنطق العشوائية التي تتضمن النفي. ومع ذلك، تتطابق الدلالتان في برامج المنطق الطبقية . على سبيل المثال، برنامج معاقبة اللصوص هو برنامج طبقي (محليًا)، وتحدد الدلالات الثلاث للبرنامج النموذج المقصود نفسه.
يجب معاقبة ( توم ، عقاب ). هو لص ( توم ). هو قاصر ( توم ). هو عنيف ( توم ).ساهمت محاولات فهم النفي في البرمجة المنطقية في تطوير أطر الحجاج المجردة . [ 41 ] في تفسير النفي بالحجاج، تُهاجم الحجة الأولية القائلة بضرورة معاقبة توم لأنه لص، بحجة أخرى تدعو إلى إعادة تأهيله لأنه قاصر. لكن كون توم عنيفًا يُضعف حجة إعادة تأهيله، ويعيد تأكيد حجة معاقبته.
برمجة ما وراء المنطق
كانت البرمجة الوصفية ، التي تُعامل فيها البرامج كبيانات، سمةً من سمات تطبيقات برولوج المبكرة. [ 42 ] [ 43 ] على سبيل المثال، تضمن تطبيق إدنبرة DEC10 لبرولوج "مفسرًا ومترجمًا، كلاهما مكتوب بلغة برولوج نفسها". [ 43 ] أبسط أنواع البرمجة الوصفية هو ما يُسمى بالمفسر الوصفي " الأساسي ".
حل ( صحيح ). حل (( ب ، ج )):- حل ( ب )، حل ( ج ). حل ( أ ):- جملة ( أ ، ب )، حل ( ب ).حيث يمثل true عطفًا فارغًا، و(B,C) هو مصطلح مركب يمثل عطف B و C. تعني جملة المسند (A,B) وجود جملة على شكل A :- B.
البرمجة الميتا هي تطبيق للاستخدام الأكثر عمومية للمنطق الميتا أو اللغة الميتا لوصف لغة أخرى والتفكير فيها، وتسمى لغة الكائن .
تتيح البرمجة الميتالوجية دمج تمثيلات مستوى الكائن وتمثيلات المستوى الميتالوجية، كما هو الحال في اللغة الطبيعية. على سبيل المثال، في البرنامج التالي، attends(Person, Meeting)تظهر الصيغة الذرية كصيغة على مستوى الكائن، وكوسيطة للمسندات الميتالوجية prohibitedوapproved.
ممنوع ( يحضر ( الشخص ، الاجتماع )) :- غير ( موافق عليه ( يحضر ( الشخص ، الاجتماع ))).ينبغي أن يتلقى الشخص عقوبة ( توبيخًا ) :- يحضر ( الشخص ، اجتماعًا )، رفيع المستوى ( الشخص )، ممنوع ( يحضر ( الشخص ، اجتماعًا )). ينبغي أن يتلقى الشخص عقوبة ( طردًا ) : - يحضر ( الشخص ، اجتماعًا )، وضيع ( الشخص )، ممنوع ( يحضر ( الشخص ، اجتماعًا )).تمت الموافقة ( يحضر ( أليس ، حفلة الشاي )). يحضر ( صانع القبعات المجنون ، حفلة الشاي ). يحضر ( الفأر النائم ، حفلة الشاي ).سامٍ ( صانع القبعات المجنون ). متواضع ( الفأر النائم ).?- should_receive_sanction ( X , Y ). Person = mad_hatter , Sanction = scolding . Person = dormouse , Sanction = banishment .العلاقة بالفهم الحسابي التمثيلي للعقل
في كتابه الشهير "مقدمة في علم الإدراك" [ 44 ] ، يُدرج بول ثاغارد المنطق والقواعد كنهجين بديلين لنمذجة التفكير البشري. ويجادل بأن القواعد، التي تأخذ شكل " إذا تحقق الشرط، فافعل الفعل" ، "تشبه إلى حد كبير" العبارات الشرطية المنطقية، لكنها أبسط وأكثر منطقية من الناحية النفسية (صفحة 51). ومن بين الاختلافات الأخرى بين المنطق والقواعد، يُشير إلى أن المنطق يستخدم الاستدلال الاستنتاجي، بينما تستخدم القواعد البحث (صفحة 45)، ويمكن استخدامها للاستدلال إما للأمام أو للخلف (صفحة 47). ويضيف أن الجمل في المنطق "يجب تفسيرها على أنها صحيحة بشكل مطلق "، بينما يمكن أن تكون القواعد افتراضية ، مما يسمح بوجود استثناءات (صفحة 44).
يذكر أن "الأنظمة القائمة على القواعد، على عكس المنطق، يمكنها بسهولة تمثيل المعلومات الاستراتيجية حول ما يجب فعله" (صفحة 45). على سبيل المثال، "إذا كنت ترغب في العودة إلى المنزل لقضاء عطلة نهاية الأسبوع، ولديك أجرة الحافلة، فيمكنك حينها ركوب الحافلة". لكنه لا يلاحظ أن الاستراتيجية نفسها المتمثلة في تقسيم الهدف إلى أهداف فرعية يمكن تفسيرها، على غرار البرمجة المنطقية، على أنها تطبيق للاستدلال العكسي على شرط منطقي.
can_go ( you , home ) :- have ( you , bus_fare ), catch ( you , bus ).جميع هذه الخصائص للأنظمة القائمة على القواعد - البحث، والاستدلال الأمامي والخلفي، والاستدلال الافتراضي، واختزال الهدف - هي أيضًا خصائص مميزة للبرمجة المنطقية. وهذا يشير إلى استنتاج ثاغارد (صفحة 56) بأن:
يتم وصف جزء كبير من المعرفة البشرية بشكل طبيعي من حيث القواعد، ويمكن نمذجة العديد من أنواع التفكير مثل التخطيط بواسطة أنظمة قائمة على القواعد.
وينطبق ذلك أيضاً على البرمجة المنطقية.
يقدم كيث ستينينغ وميشيل فان لامبالجن في كتابهما "الاستدلال البشري والعلوم المعرفية" حججًا أخرى توضح كيفية استخدام البرمجة المنطقية لنمذجة جوانب من التفكير البشري. [ 45 ] ويبينان كيف يمكن استخدام الطبيعة غير الرتيبة للبرامج المنطقية لتفسير الأداء البشري في مجموعة متنوعة من المهام النفسية. كما يوضحان (صفحة 237) أن "الاستدلال في العالم المغلق، في صورته كبرمجة منطقية، له تطبيق عصبي جذاب، على عكس المنطق الكلاسيكي".
في كتاب "المعالجة الصحيحة للأحداث"، [ 46 ] قام ميشيل فان لامبالجين وفريتز هام بالتحقيق في استخدام برمجة منطق القيود لترميز "المفاهيم الزمنية في اللغة الطبيعية من خلال النظر في الطريقة التي يبني بها البشر الوقت".
تمثيل المعرفة
كان استخدام المنطق لتمثيل المعرفة الإجرائية والمعلومات الاستراتيجية أحد الأهداف الرئيسية التي ساهمت في التطور المبكر لبرمجة المنطق. علاوة على ذلك، لا يزال هذا الاستخدام سمة مهمة في عائلة لغات برمجة المنطق "برولوج" حتى اليوم. مع ذلك، تركز العديد من تطبيقات برمجة المنطق، بما في ذلك تطبيقات "برولوج"، بشكل متزايد على استخدام المنطق لتمثيل المعرفة التصريحية البحتة. وتشمل هذه التطبيقات تمثيل المعرفة العامة البديهية وتمثيل الخبرة المتخصصة في مجال معين .
يشمل الحس السليم معرفة العلاقة بين السبب والنتيجة، كما هو مُصاغٌ، على سبيل المثال، في حساب المواقف ، وحساب الأحداث ، ولغات الأفعال . إليك مثالٌ مُبسّط يُوضّح السمات الرئيسية لهذه الصياغات. تنصّ العبارة الأولى على أن الحقيقة تبقى قائمةً فور وقوع حدثٍ ما يُسبّبها. أما العبارة الثانية فهي مُسلّمة إطارية ، تنصّ على أن الحقيقة القائمة في وقتٍ ما تستمرّ في القائمة في الوقت التالي ما لم ينتهِها حدثٌ يقع في ذلك الوقت. يسمح هذا الصياغة بوقوع أكثر من حدثٍ في الوقت نفسه.
holds ( Fact , Time2 ) :- happens ( Event , Time1 ), Time2 is Time1 + 1 , initiates ( Event , Fact ).holds ( Fact , Time2 ) :- happens ( Event , Time1 ), Time2 is Time1 + 1 , holds ( Fact , Time1 ), not ( terminated ( Fact , Time1 )).تم إنهاء ( حقيقة ، وقت ) :- يحدث ( حدث ، وقت )، وينتهي ( حدث ، حقيقة ).هذا holdsمثال على مسند فوقي، مشابه لما solveسبق. مع ذلك، بينما solveيحتوي على وسيط واحد فقط، وهو ما ينطبق على الجمل العامة، فإن الوسيط الأول في هذا المثال holdsهو حقيقة، والوسيط الثاني هو وقت (أو حالة). holds(Fact, Time)تُعبّر الصيغة الذرية عن أن هذه الحقيقة Factصحيحة في الوقت المحدد Time. تُسمى هذه الحقائق المتغيرة مع الزمن أيضًا بالحقائق المتغيرة . تُعبّر الصيغة الذرية happens(Event, Time)عن أن الحدث يقع في الوقت المحدد Time.
يوضح المثال التالي كيفية استخدام هذه العبارات للاستدلال على السببية في عالم مكعبات اللعب . هنا، في الحالة الابتدائية عند الزمن 0، يوجد مكعب أخضر على طاولة، ومكعب أحمر موضوع فوقه (مثل إشارة المرور). عند الزمن 0، يُنقل المكعب الأحمر إلى الطاولة. عند الزمن 1، يُنقل المكعب الأخضر فوق المكعب الأحمر. إن نقل أي جسم إلى مكان ما يُنهي وجوده في أي مكان، ويُنشئ وجوده في المكان الذي نُقل إليه.
يحتفظ ( على ( الكتلة_الخضراء ، الجدول )، 0 ). يحتفظ ( على ( الكتلة_الحمراء ، الكتلة_الخضراء )، 0 ).يحدث ( نقل ( الكتلة_الحمراء ، الجدول )، 0 ). يحدث ( نقل ( الكتلة_الخضراء ، الكتلة_الحمراء )، 1 ).يبدأ ( نقل ( كائن ، مكان )، على ( كائن ، مكان )). ينتهي ( نقل ( كائن ، مكان2 )، على ( كائن ، مكان1 )).?- يحتفظ ( حقيقة ، وقت ).الحقيقة = على ( المربع_الأخضر ، الجدول )، الوقت = 0. الحقيقة = على ( المربع_الأحمر ، المربع_الأخضر )، الوقت = 0. الحقيقة = على ( المربع_الأخضر ، الجدول )، الوقت = 1. الحقيقة = على ( المربع_الأحمر ، الجدول )، الوقت = 1. الحقيقة = على ( المربع_الأخضر ، المربع_الأحمر )، الوقت = 2. الحقيقة = على ( المربع_الأحمر ، الجدول )، الوقت = 2.يُنتج كل من الاستدلال الأمامي والاستدلال العكسي نفس الإجابات للهدف holds(Fact, Time). لكن الاستدلال الأمامي يُنتج إجابات متدرجة بترتيب زمني، بينما يُنتج الاستدلال العكسي إجابات متدرجة بترتيب تنازلي ، كما هو الحال في استخدام الانحدار في حساب المواقف . [ 47 ]
أثبتت البرمجة المنطقية جدواها في تمثيل الخبرات المتخصصة في مجال معين ضمن أنظمة الخبراء . [ 48 ] إلا أن الخبرة البشرية، كالحس السليم العام، غالباً ما تكون ضمنية وغير مباشرة ، ويصعب تمثيل هذه المعرفة الضمنية في قواعد صريحة. مع ذلك، لا تظهر هذه الصعوبة عند استخدام البرامج المنطقية لتمثيل القواعد الصريحة القائمة لمنظمة تجارية أو سلطة قانونية.
على سبيل المثال، إليكم تمثيل لنسخة مبسطة من الجملة الأولى من قانون الجنسية البريطانية، والتي تنص على أن الشخص المولود في المملكة المتحدة يصبح مواطناً بريطانياً وقت ولادته إذا كان أحد والديه مواطناً بريطانياً وقت ولادته:
يبدأ ( الميلاد ( الشخص )، المواطن ( الشخص ، المملكة المتحدة )):- وقت ( الميلاد ( الشخص )، الوقت )، مكان ( الميلاد ( الشخص )، المملكة المتحدة )، الوالد الطفل ( شخص آخر ، الشخص )، يحمل ( المواطن ( شخص آخر ، المملكة المتحدة )، الوقت ).تاريخياً، كان تمثيل جزء كبير من قانون الجنسية البريطانية كبرنامج منطقي في ثمانينيات القرن العشرين [ 49 ] "مؤثراً للغاية في تطوير التمثيلات الحاسوبية للتشريعات، مما يُظهر كيف تُمكّن البرمجة المنطقية من إنشاء تمثيلات جذابة بديهياً يمكن استخدامها مباشرة لتوليد استدلالات تلقائية". [ 50 ]
وفي الآونة الأخيرة، أصبح نظام PROLEG، [ 51 ] الذي بدأ العمل به في عام 2009 ويتألف من حوالي 2500 قاعدة واستثناء من قواعد القانون المدني وقواعد المحكمة العليا في اليابان، ربما أكبر قاعدة قواعد قانونية في العالم. [ 52 ]
المتغيرات والتوسعات
مقدمة
قاعدة الاستدلال في SLD محايدة فيما يتعلق بترتيب اختيار الأهداف الفرعية في متن الجمل لحلها . ولتحقيق الكفاءة، يقتصر Prolog هذا الترتيب على ترتيب كتابة الأهداف الفرعية. كما أن SLD محايدة أيضًا فيما يتعلق باستراتيجية البحث في فضاء براهين SLD. يبحث Prolog في هذا الفضاء، من الأعلى إلى الأسفل، وبأسلوب البحث العميق أولًا، مجربًا جملًا مختلفة لحل نفس الهدف (الفرعي) بالترتيب الذي كُتبت به الجمل.
تتميز استراتيجية البحث هذه بإمكانية تمثيل الفرع الحالي للشجرة بكفاءة باستخدام مكدس . عند اختزال شرط الهدف في أعلى المكدس إلى شرط هدف جديد، يُضاف شرط الهدف الجديد إلى أعلى المكدس. وعندما يتعذر حل الهدف الفرعي المحدد في شرط الهدف الموجود في أعلى المكدس، تتراجع استراتيجية البحث ، فتزيل شرط الهدف من أعلى المكدس، ثم تعيد محاولة حل الهدف الفرعي المحدد في شرط الهدف السابق باستخدام الشرط التالي الذي يطابقه.
يمكن تقييد التراجع باستخدام هدف فرعي يُسمى cut ، ويُكتب على شكل !، وهو ينجح دائمًا ولكن لا يمكن التراجع عنه. يُمكن استخدام cut لتحسين الكفاءة، ولكنه قد يُؤثر أيضًا على المعنى المنطقي للعبارات. في كثير من الحالات، يُمكن استبدال استخدام cut بالنفي كفشل. في الواقع، يُمكن تعريف النفي كفشل في لغة برولوج، باستخدام cut، مع أي قيمة حرفية، مثل fail ، التي تتحد مع رأس عبارة no.
ليس ( P ) :-P ، ! ، فشل . ليس ( P ).توفر لغة برولوج ميزات أخرى، بالإضافة إلى وظيفة القطع (cut)، لا تخضع لتفسير منطقي. وتشمل هذه الميزات المسندات المدمجة assert و retract لتحديث حالة البرنامج بشكل جذري أثناء تنفيذه.
على سبيل المثال، يمكن تنفيذ مثال عالم مكعبات اللعب المذكور أعلاه بدون استخدام بديهيات الإطار باستخدام تغيير الحالة المدمر:
on ( green_block , table ). on ( red_block , green_block ).move ( Object , Place2 ) :- retract ( on ( Object , Place1 )), assert ( on ( Object , Place2 ).يمكن حساب تسلسل أحداث النقل والمواقع الناتجة للكتل عن طريق تنفيذ الاستعلام التالي:
?- move ( red_block , table ), move ( green_block , red_block ), on ( Object , Place ).الكائن = red_block ، المكان = table . الكائن = green_block ، المكان = red_block .تم تطوير العديد من امتدادات البرمجة المنطقية لتوفير إطار منطقي لمثل هذا التغيير المدمر للحالة. [ 53 ] [ 54 ] [ 55 ]
تم تسليط الضوء على النطاق الواسع لتطبيقات لغة برولوج، سواء بشكل منفرد أو بالاشتراك مع لغات أخرى، في كتاب عام برولوج، [ 21 ] احتفالاً بالذكرى الخمسين لظهور لغة برولوج في عام 2022.
وقد ساهمت لغة البرمجة Prolog أيضًا في تطوير لغات برمجة أخرى، بما في ذلك ALF و Fril و Gödel و Mercury و Oz و Ciao و Visual Prolog و XSB و λProlog .
برمجة المنطق المقيد
تجمع برمجة منطق القيود (CLP) بين برمجة منطق بنود هورن وحل القيود . وهي توسع بنود هورن بالسماح لبعض المسندات، المُعلنة كمسندات قيود، بالظهور كقيم حرفية في متن البند. لا تُحدد مسندات القيود بالحقائق والقواعد في البرنامج، بل تُحدد مسبقًا بواسطة بنية أو نظرية نموذجية خاصة بالمجال.
إجرائيًا، تُحل الأهداف الفرعية التي تُحدد شروطها بواسطة البرنامج عن طريق اختزال الهدف، كما هو الحال في البرمجة المنطقية العادية، ولكن يتم تبسيط القيود والتحقق من قابليتها للتحقيق بواسطة مُحلِّل قيود خاص بالمجال، والذي يُنفذ دلالات شروط القيود. تُحل المشكلة الأولية عن طريق اختزالها إلى اقتران قابل للتحقيق من القيود.
ومن المثير للاهتمام أن الإصدار الأول من لغة برولوج كان يتضمن بالفعل دالة قيد dif(term1, term2)، من أطروحة الدكتوراه لفيليب روسيل عام 1972، والتي تنجح إذا كان كلا وسيطيها مصطلحين مختلفين، ولكنها تتأخر إذا كان أي من المصطلحين يحتوي على متغير. [ 52 ]
يمثل برنامج منطق القيود التالي قاعدة بيانات زمنية تجريبية john'sللتاريخ كمعلم:
يُدرّس ( جون ، الأجهزة ، T ) :- 1990 ≤ T ، T < 1999. يُدرّس ( جون ، البرمجيات ، T ) :- 1999 ≤ T ، T < 2005. يُدرّس ( جون ، المنطق ، T ) :- 2005 ≤ T ، T ≤ 2012. الرتبة ( جون ، مُدرّس ، T ) :- 1990 ≤ T ، T < 2010. الرتبة ( جون ، أستاذ ، T ) :- 2010 ≤ T ، T < 2014.هنا ، يمثل كل ≤من و <قيودًا منطقية، مع دلالاتهما المقصودة المعتادة. يستعلم شرط الهدف التالي من قاعدة البيانات لمعرفة متى johnتم تدريس كل من logicو وكان professor.
؟- يُدرّس ( جون ، المنطق ، T )، رتبة ( جون ، أستاذ ، T ).ينتج الحل 2010 ≤ T, T ≤ 2012 عن تبسيط القيود 2005 ≤ T, T ≤ 2012, 2010 ≤ T, T < 2014.
استُخدمت برمجة المنطق المقيد لحل المشكلات في مجالات مثل الهندسة المدنية ، والهندسة الميكانيكية ، والتحقق من الدوائر الرقمية ، والجدولة الآلية ، ومراقبة الحركة الجوية ، والتمويل. وهي ترتبط ارتباطًا وثيقًا ببرمجة المنطق الاستنباطي .
داتالوج
Datalog هي لغة تعريف قواعد البيانات، والتي تجمع بين عرض علائقي للبيانات، كما هو الحال في قواعد البيانات العلائقية ، وعرض منطقي، كما هو الحال في البرمجة المنطقية.
تستخدم قواعد البيانات العلائقية حسابًا علائقيًا أو جبرًا علائقيًا، مع عمليات علائقية مثل الاتحاد والتقاطع وفرق المجموعات والضرب الديكارتي لتحديد الاستعلامات التي تصل إلى قاعدة البيانات. يستخدم Datalog روابط منطقية، مثل " أو" و" و " و " ليس" في نصوص القواعد لتعريف العلاقات كجزء من قاعدة البيانات نفسها.
أُدرك مبكراً في تطوير قواعد البيانات العلائقية أن الاستعلامات المتكررة لا يمكن التعبير عنها باستخدام الجبر العلائقي أو حساب التفاضل والتكامل العلائقي، وأن هذا القصور يمكن تداركه بإدخال عامل النقطة الثابتة الصغرى. [ 56 ] [ 57 ] في المقابل، يمكن تعريف العلاقات المتكررة بشكل طبيعي بواسطة قواعد في البرامج المنطقية، دون الحاجة إلى أي روابط أو عوامل منطقية جديدة.
تختلف لغة Datalog عن لغات البرمجة المنطقية العامة الأخرى باحتوائها على الثوابت والمتغيرات فقط. علاوة على ذلك، فإن جميع الحقائق فيها خالية من المتغيرات، والقواعد مقيدة، بحيث إذا تم تنفيذها من الأسفل إلى الأعلى، فإن الحقائق المستنتجة منها تكون خالية من المتغيرات أيضاً.
على سبيل المثال، لنأخذ قاعدة بيانات العائلة كمثال:
mother_child ( elizabeth , charles ). father_child ( charles , william ). father_child ( charles , harry ). parent_child ( X , Y ) :- mother_child ( X , Y ). parent_child ( X , Y ) :- father_child ( X , Y ). ancestor_descendant ( X , Y ) :- parent_child ( X , X ). ancestor_descendant ( X , Y ) :- ancestor_descendant ( X , Z ), ancestor_descendant ( Z , Y ).يستخلص التنفيذ من الأسفل إلى الأعلى مجموعة الحقائق الإضافية التالية وينتهي:
parent_child ( elizabeth , charles ). parent_child ( charles , william ). parent_child ( charles , harry ).ancestor_descendant ( elizabeth , charles ). ancestor_descendant ( charles , william ). ancestor_descendant ( charles , harry ).ancestor_descendant ( elizabeth , william ). ancestor_descendant ( elizabeth , harry ).يؤدي التنفيذ من أعلى إلى أسفل إلى الحصول على نفس الإجابات للاستعلام:
?- ancestor_descendant ( X , Y ).لكن بعد ذلك يدخل في حلقة لا نهائية. مع ذلك، فإن التنفيذ من أعلى إلى أسفل مع استخدام الجدولة يعطي نفس النتائج وينتهي دون الدخول في حلقة.
برمجة مجموعة الإجابات
على غرار لغة Datalog، فإن برمجة مجموعات الإجابات (ASP) ليست كاملة تورينج. علاوة على ذلك، فبدلاً من فصل الأهداف (أو الاستعلامات) عن البرنامج المستخدم في حل هذه الأهداف، تتعامل ASP مع البرنامج بأكمله كهدف، وتحل الهدف من خلال توليد نموذج مستقر يجعله صحيحًا. ولهذا الغرض، تستخدم دلالات النموذج المستقر ، والتي بموجبها يمكن أن يحتوي البرنامج المنطقي على صفر أو نموذج واحد أو أكثر من النماذج المقصودة. على سبيل المثال، يمثل البرنامج التالي حالة متدهورة من مشكلة تلوين الخريطة، حيث يتم تلوين دولتين باللون الأحمر أو الأخضر:
country ( oz ). country ( iz ). neighbour ( oz , iz ). colour ( C , red ) :- country ( C ), not ( colour ( C , green )). colour ( C , green ) :- country ( C ), not ( colour ( C , red )).للمشكلة أربعة حلول ممثلة بأربعة نماذج مستقرة:
البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أحمر ). اللون ( إز ، أحمر ).البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أخضر ). اللون ( إز ، أخضر ).البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أحمر ). اللون ( إز ، أخضر ).البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أخضر ). اللون ( إز ، أحمر ).لتمثيل النسخة القياسية من مسألة تلوين الخريطة، نحتاج إلى إضافة قيد يمنع تلوين دولتين متجاورتين بنفس اللون. في لغة البرمجة ASP، يمكن كتابة هذا القيد كبند على النحو التالي:
:- البلد ( C1 )، البلد ( C2 )، المجاور ( C1 ، C2 )، اللون ( C1 ، X )، اللون ( C2 ، X ).بإضافة هذا القيد، أصبح للمشكلة الآن حلان فقط:
البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أحمر ). اللون ( إز ، أخضر ).البلد ( أوز ). البلد ( إز ). المجاور ( أوز ، إز ). اللون ( أوز ، أخضر ). اللون ( إز ، أحمر ).إن إضافة قيود من هذا النوع :- Body.تلغي النماذج التي Bodyتكون فيها هذه العبارة صحيحة.
من المثير للدهشة أن القيود في لغة ASP تختلف عن القيود في لغة CLP . فالقيود في CLP هي شروط تحدد إجابات الاستعلامات (وحلول الأهداف). أما القيود في ASP فهي بنود تستبعد النماذج التي قد تحقق الأهداف لولاها. وتُشبه القيود في ASP قيود التكامل في قواعد البيانات.
يوضح هذا المزيج من عبارات البرمجة المنطقية العادية وعبارات القيود منهجية توليد واختبار حل المشكلات في ASP: تحدد العبارات العادية مساحة بحث عن الحلول الممكنة، وتقوم القيود بتصفية الحلول غير المرغوب فيها. [ 58 ]
تعتمد معظم تطبيقات ASP على خطوتين: أولاً، يتم إنشاء البرنامج بجميع الطرق الممكنة، مما يختزله إلى برنامج منطقي افتراضي (يُعرف بالتأسيس ). ثم يتم تطبيق خوارزمية لحل مسائل المنطق الافتراضي، مثل خوارزمية DPLL أو خوارزمية SAT المنطقية . مع ذلك، تستخدم بعض التطبيقات، مثل s(CASP) [ 59 ] ، إجراءً موجهاً نحو الهدف، من أعلى إلى أسفل، يشبه حل SLD، دون الحاجة إلى التأسيس.
البرمجة المنطقية الاستنباطية
تُوسّع البرمجة المنطقية الاستنباطية [ 60 ] (ALP)، مثل البرمجة المنطقية التقليدية (CLP)، نطاق البرمجة المنطقية العادية بالسماح لأجسام العبارات باحتواء متغيرات حرفية لا تُعرّف عباراتها. في ALP، تُعلن هذه المتغيرات على أنها قابلة للاستنباط (أو قابلة للافتراض )، وتُستخدم كما في الاستدلال الاستنباطي لتفسير الملاحظات، أو بشكل أعم لإضافة حقائق جديدة إلى البرنامج (كمفترضات) لتحقيق الأهداف.
على سبيل المثال، لنفترض أننا حصلنا على حالة أولية يكون فيها مكعب أحمر فوق مكعب أخضر على طاولة في الوقت 0:
يحتفظ ( على ( الكتلة_الخضراء ، الجدول )، 0 ). يحتفظ ( على ( الكتلة_الحمراء ، الكتلة_الخضراء )، 0 ).لنفترض أننا حصلنا أيضاً على الهدف التالي:
?- holds ( on ( green_block , red_block ), 3 ), holds ( on ( red_block , table ), 3 ).قد يُمثل الهدف ملاحظةً، وفي هذه الحالة يكون الحل تفسيراً لتلك الملاحظة. أو قد يُمثل الهدف حالةً مستقبليةً مرغوبةً، وفي هذه الحالة يكون الحل خطةً لتحقيق الهدف. [ 61 ]
يمكننا استخدام قواعد السبب والنتيجة التي تم عرضها سابقًا لحل الهدف، وذلك بمعاملة happensالمسند على أنه قابل للاستنتاج:
holds ( Fact , Time2 ) :- happens ( Event , Time1 ), Time2 is Time1 + 1 , initiates ( Event , Fact ).holds ( Fact , Time2 ) :- happens ( Event , Time1 ), Time2 is Time1 + 1 , holds ( Fact , Time1 ), not ( terminated ( Fact , Time1 )).تم إنهاء ( حقيقة ، وقت ) :- يحدث ( حدث ، وقت )، وينتهي ( حدث ، حقيقة ).يبدأ ( نقل ( كائن ، مكان )، على ( كائن ، مكان )). ينتهي ( نقل ( كائن ، مكان2 )، على ( كائن ، مكان1 )).يحلّ برنامج ALP الهدفَ من خلال الاستدلال العكسي وإضافة افتراضات إلى البرنامج، وذلك لحلّ الأهداف الفرعية القابلة للاستدلال. في هذه الحالة، توجد حلول بديلة عديدة، منها:
يحدث ( نقل ( الكتلة_الحمراء ، الجدول )، 0 ). يحدث ( العلامة ، 1 ). يحدث ( نقل ( الكتلة_الخضراء ، الكتلة_الحمراء )، 2 ).يحدث ( العلامة ، 0 ). يحدث ( تحريك ( الكتلة الحمراء ، الجدول )، 1 ). يحدث ( تحريك ( الكتلة الخضراء ، الكتلة الحمراء )، 2 ).يحدث ( نقل ( الكتلة الحمراء ، الجدول )، 0 ). يحدث ( نقل ( الكتلة الخضراء ، الكتلة الحمراء )، 1 ). يحدث ( النبضة ، 2 ).هذا tickحدث يُشير إلى مرور الوقت دون بدء أو إنهاء أي طلاقة.
توجد أيضاً حلول moveيحدث فيها الحدثان في نفس الوقت. على سبيل المثال:
يحدث ( نقل ( الكتلة الحمراء ، الجدول )، 0 ). يحدث ( نقل ( الكتلة الخضراء ، الكتلة الحمراء )، 0 ). يحدث ( الخطوة ، 1 ). يحدث ( الخطوة ، 2 ).يمكن إزالة هذه الحلول، إن لم تكن مرغوبة، عن طريق إضافة قيد تكاملي، وهو ما يشبه بند القيد في لغة ASP:
:- يحدث ( نقل ( الكتلة 1 ، المكان )، الوقت )، يحدث ( نقل ( الكتلة 2 ، الكتلة 1 )، الوقت ).استُخدمت البرمجة المنطقية الاستنباطية في تشخيص الأعطال، والتخطيط، ومعالجة اللغة الطبيعية، والتعلم الآلي. كما استُخدمت لتفسير النفي على أنه فشل كشكل من أشكال الاستدلال الاستنباطي. [ 62 ]
برمجة المنطق الاستقرائي
البرمجة المنطقية الاستقرائية (ILP) هي منهج في التعلم الآلي يقوم على استنباط برامج منطقية كتعميمات افتراضية لأمثلة إيجابية وسلبية. فعند وجود برنامج منطقي يمثل المعرفة الأساسية والأمثلة الإيجابية، بالإضافة إلى قيود تمثل الأمثلة السلبية، يقوم نظام ILP باستنباط برنامج منطقي يعمم الأمثلة الإيجابية مع استبعاد الأمثلة السلبية.
تتشابه البرمجة الخطية الصحيحة (ILP) مع البرمجة الخطية التطبيقية (ALP) في كونهما تُولِّدان فرضيات لتفسير الملاحظات، وتستخدمان قيودًا لاستبعاد الفرضيات غير المرغوب فيها. لكن في البرمجة الخطية التطبيقية، تكون الفرضيات حقائق مستقلة عن المتغيرات، بينما في البرمجة الخطية الصحيحة، تكون الفرضيات قواعد عامة. [ 63 ] [ 64 ]
على سبيل المثال، بالنظر فقط إلى المعرفة الأساسية لعلاقات الأم والطفل والأب والطفل، وأمثلة مناسبة لعلاقة الجد والطفل، يمكن لأنظمة البرمجة الخطية الحالية أن تولد تعريف علاقة الجد والطفل، وتخترع مسندًا مساعدًا، والذي يمكن تفسيره على أنه علاقة الأب والطفل: [ 65 ]
grandparent_child ( X , Y ):- auxiliary ( X , Z ), auxiliary ( Z , Y ). auxiliary ( X , Y ):- mother_child ( X , Y ). auxiliary ( X , Y ):- father_child ( X , Y ).أشار ستيوارت راسل [ 66 ] إلى أن ابتكار مفاهيم جديدة هو أهم خطوة مطلوبة للوصول إلى مستوى الذكاء الاصطناعي البشري.
أدت الأعمال الحديثة في البرمجة المنطقية الاستقرائية، التي تجمع بين البرمجة المنطقية والتعلم والاحتمالات، إلى ظهور مجالات التعلم العلائقي الإحصائي والبرمجة المنطقية الاستقرائية الاحتمالية .
البرمجة المنطقية المتزامنة
تدمج البرمجة المنطقية المتزامنة مفاهيم البرمجة المنطقية مع البرمجة المتزامنة . وقد حظي تطويرها بدفعة كبيرة في ثمانينيات القرن الماضي باختيارها كلغة برمجة أنظمة لمشروع الجيل الخامس الياباني (FGCS) . [ 67 ]
برنامج المنطق المتزامن هو مجموعة من عبارات هورن المحمية بالشكل التالي:
H :- G1, ..., Gn | B1, ..., Bn.
يُطلق على الرابط اسم شرط الشرط، و | هو عامل الالتزام. وتُقرأ شروط هورن الشرطية، من الناحية التصريحية، على أنها استدلالات منطقية عادية.G1, ... , Gn
H if G1 and ... and Gn and B1 and ... and Bn.
مع ذلك، من الناحية الإجرائية، عندما تتطابق عدة بنود مع Hهدف محدد، تُنفَّذ جميع البنود بالتوازي، مع التحقق من صحة شروطها . إذا تحققت شروط أكثر من بند، يُختار أحد البنود، ويستمر التنفيذ مع الأهداف الفرعية للبند المُختار. يمكن أيضًا تنفيذ هذه الأهداف الفرعية بالتوازي. وهكذا، تُطبِّق البرمجة المنطقية المتزامنة شكلاً من أشكال "عدم الحتمية غير المُبالية"، بدلاً من "عدم الحتمية غير المعروفة".G1, ... , GnB1, ..., Bn
على سبيل المثال، يُعرّف برنامج المنطق المتزامن التالي دالة منطقية shuffle(Left, Right, Merge)، والتي يمكن استخدامها لخلط قائمتين Leftو Right، ودمجهما في قائمة واحدة Mergeتحافظ على ترتيب القائمتين Leftو Right:
shuffle ([], [], []). shuffle ( Left , Right , Merge ) :- Left = [ First | Rest ] | Merge = [ First | ShortMerge ], shuffle ( Rest , Right , ShortMerge ) .shuffle ( Left , Right , Merge ) :- Right = [ First | Rest ] | Merge = [ First | ShortMerge ], shuffle ( Left , Rest , ShortMerge ).هنا، []يُمثل قائمة فارغة، بينما [Head | Tail]يُمثل قائمة تحتوي على العنصر الأول Headمتبوعًا بقائمة Tail، كما هو الحال في لغة برولوج. (لاحظ أن أول ظهور لـ | في البندين الثاني والثالث هو مُنشئ القائمة، بينما الظهور الثاني لـ | هو عامل الالتزام). يمكن استخدام البرنامج، على سبيل المثال، لخلط القوائم [ace, queen, king]و [1, 4, 2]عن طريق استدعاء بند الهدف.
shuffle ([ ace , queen , king ], [ 1 , 4 , 2 ], Merge ).سيقوم البرنامج بتوليد حل واحد بشكل غير حتمي، على سبيل المثال Merge = [ace, queen, 1, king, 4, 2].
جادل كارل هيويت [ 68 ] بأنه نظرًا لعدم حتمية الحساب المتزامن ، لا يمكن لبرمجة المنطق المتزامن أن تُحقق التزامن العام. ومع ذلك، ووفقًا للدلالات المنطقية، فإن أي نتيجة لحساب برنامج منطقي متزامن تُعد نتيجة منطقية للبرنامج، حتى وإن لم يكن بالإمكان استخلاص جميع النتائج المنطقية.
برمجة منطق القيود المتزامنة
تجمع برمجة منطق القيود المتزامنة [ 69 ] بين برمجة المنطق المتزامن وبرمجة منطق القيود ، مستخدمةً القيود للتحكم في التزامن. يمكن أن يحتوي الشرط على شرط حماية، وهو مجموعة من القيود التي قد تمنع تطبيق الشرط. عندما تتحقق شروط الحماية لعدة شروط، تتخذ برمجة منطق القيود المتزامنة قرارًا نهائيًا باستخدام شرط واحد فقط.
برمجة المنطق من الرتبة العليا
قام العديد من الباحثين بتوسيع نطاق البرمجة المنطقية بإضافة خصائص برمجة من الرتبة العليا مستمدة من منطق الرتبة العليا ، مثل متغيرات المسند. وتشمل هذه اللغات امتدادات لغة برولوج HiLog [ 70 ] و λProlog [ 71 ] .
البرمجة المنطقية الخطية
أدى بناء البرمجة المنطقية على أساس المنطق الخطي إلى تصميم لغات برمجة منطقية أكثر تعبيرًا بكثير من تلك القائمة على المنطق الكلاسيكي. تقتصر برامج بنود هورن على تمثيل تغيير الحالة من خلال تغيير وسائط المسندات. أما في البرمجة المنطقية الخطية، فيمكن استخدام المنطق الخطي المحيط لدعم تغيير الحالة. من بين التصاميم المبكرة للغات البرمجة المنطقية القائمة على المنطق الخطي: LO [ 72 ] ، وLolli [ 73 ] ، و ACL [ 74 ] ، وForum [ 75 ] . يوفر Forum تفسيرًا موجهًا نحو الهدف لجميع أنواع المنطق الخطي.
البرمجة المنطقية الموجهة للكائنات
F-logic [ 76 ] يوسع برمجة المنطق باستخدام الكائنات وبنية الإطار.
تُوسّع Logtalk [ 77 ] لغة برمجة Prolog بدعم الكائنات والبروتوكولات ومفاهيم البرمجة الكائنية الأخرى. وهي تدعم معظم أنظمة Prolog المتوافقة مع المعايير كمترجمات خلفية.
برمجة منطق المعاملات
منطق المعاملات [ 53 ] هو امتداد لبرمجة المنطق، ويعتمد على نظرية منطقية لتحديثات الحالة. يتميز هذا المنطق بدلالات نظرية نموذجية وإجرائية. يتوفر تطبيق لمجموعة فرعية من منطق المعاملات في نظام Flora-2 [ 78 ] . كما تتوفر نماذج أولية أخرى .
انظر أيضاً
- إثبات النظريات آلياً
- مشكلة إرضاء المنطق البولياني
- برمجة المنطق المقيد
- نظرية التحكم
- داتالوج
- فريل
- البرمجة الوظيفية
- المنطق الضبابي
- برمجة المنطق الاستقرائي
- المنطق الخطي
- المنطق في علوم الحاسوب (يشمل الأساليب الرسمية )
- لغات البرمجة المنطقية
- وحدة تحكم منطقية قابلة للبرمجة
- R++
- نظام الاستدلال
- التعلم الآلي القائم على القواعد
- قابلية الإرضاء
- بناء الجملة ودلالات البرمجة المنطقية
الاقتباسات
- ↑ تارنلوند، س.أ. (1977). "قابلية حساب بند هورن". الرياضيات العددية BIT . 17 (2): 215-226 . doi : 10.1007/BF01932293 . S2CID 32577496 .
- ↑ أندريكا، هـ.؛ نيميتي، إ. (1978). "الشمولية المعممة لمنطق هورن المسند كلغة برمجة" . أكتا سايبرنيتيكا . 4 (1): 3-10 .
- ↑ غرين، كورديل. تطبيق إثبات النظريات على حل المشكلات (ملف PDF) . المؤتمر الدولي المشترك للذكاء الاصطناعي 1969.
- ↑ فوستر، جيه إم؛ إلكوك، إي دبليو (1969). ABSYS 1: مُجمِّع تزايدي للتأكيدات: مقدمة . ورشة العمل السنوية الرابعة للذكاء الآلي. الذكاء الآلي. المجلد 4. إدنبرة، المملكة المتحدة: مطبعة جامعة إدنبرة . الصفحات 423-429 .
- ↑ كوالسكي، ر. أ. (1988). "السنوات الأولى لبرمجة المنطق" (ملف PDF) . مجلة اتصالات رابطة مكائن الحوسبة . 31 : 38-43 . doi : 10.1145/35043.35046 . S2CID 12259230 .
- ↑ هيويت، كارل . بلانر: لغة لإثبات النظريات في الروبوتات (PDF) . المؤتمر الدولي المشترك للذكاء الاصطناعي 1969.
- ↑ وينوغراد، تيري (1972). "فهم اللغة الطبيعية". علم النفس المعرفي . 3 (1): 1-191 . doi : 10.1016/0010-0285(72)90002-3 .
- ↑ جيف روليفسون ؛ جان ديركسن؛ ريتشارد والدينجر (نوفمبر 1973). QA4، حساب إجرائي للاستدلال الحدسي (ملف PDF) (تقرير فني). مذكرة فنية رقم 73 لمركز SRI للذكاء الاصطناعي.
- ↑ ديفيز، جيه إم، 1971. بوبلر: مخطط POP-2. جامعة إدنبرة، قسم الذكاء الآلي والإدراك.
- ↑ ماكديرموت، دي في ؛ سوسمان، جي جي (مايو 1972). دليل مرجعي لبرنامج كونيفير (تقرير فني). مذكرة الذكاء الاصطناعي رقم 259.
- ↑ ريبوه، ر.؛ ساسيردوتي، إي دي (أغسطس 1973). دليل أولي للغة QLISP (تقرير فني). مركز الذكاء الاصطناعي، معهد SRI الدولي.
- ↑ كورنفيلد، دبليو إيه؛ هيويت، سي إي (1981). "استعارة المجتمع العلمي". معاملات IEEE في الأنظمة والإنسان وعلم التحكم الآلي . 11 (1): 24-33 . Bibcode : 1981ITSMC..11...24K . doi : 10.1109/TSMC.1981.4308575 . hdl : 1721.1/5693 . S2CID 1322857 .
- ↑ هايز، بات (1973). "الحساب والاستنتاج". وقائع الندوة الثانية لـ MFCS . أكاديمية العلوم التشيكوسلوفاكية . ص 105-118 .
- ↑ روبنسون، ج. (1965). "الاستنتاج التلقائي مع الدقة الفائقة". المجلة الدولية للرياضيات الحاسوبية . 1 (3): 227-234 . doi : 10.2307/2272384 . JSTOR 2272384 .
- ↑ كوالسكي، روبرت؛ كوهنر، دونالد (1971). "التحليل الخطي باستخدام دالة الاختيار" (ملف PDF) . الذكاء الاصطناعي . 2 ( 3-4 ): 227-260 . doi : 10.1016/0004-3702(71)90012-9 .
- ↑ كوالسكي، روبرت (1973). "منطق المسند كلغة برمجة" (ملف PDF) . قسم الذكاء الاصطناعي، جامعة إدنبرة . مذكرة رقم 70.وأيضًا في وقائع مؤتمر الاتحاد الدولي لمعالجة المعلومات، ستوكهولم، شركة نورث هولاند للنشر، 1974، الصفحات 569-574.
- ↑ وارن، د.هـ؛ بيريرا، ل.م؛ بيريرا، ف. (1977). "برولوج - اللغة وتطبيقها مقارنةً بلغة ليسب". إشعارات ACM SIGPLAN . 12 (8): 109-115 . doi : 10.1145/872734.806939 .
- ↑ أويدا، ك.، 2018. البرمجة المنطقية/القيدية والتزامن: الدروس المستفادة بصعوبة من مشروع حاسوب الجيل الخامس. علم برمجة الحاسوب، 164، ص 3-17.
- ↑ إتش بي نيوكويست، 2020. صانعو العقول: تاريخ الذكاء الاصطناعي. مجموعة ريلاير.
- ^ جالير ، هيرفيه. مينكر، جون جاك، محرران. (1978)، “قواعد المنطق والبيانات، ندوة حول المنطق وقواعد البيانات، مركز الدراسات والبحوث في تولوز، 1977”، التقدم في نظرية قواعد البيانات ، نيويورك: مطبعة بلينوم، ISBN 978-0-306-40060-5.
- 1 2 وارن، دي إس (2023). "مقدمة إلى لغة برولوج". في: وارن، دي إس؛ دال، في؛ إيتر، تي؛ هيرمينجيلدو، إم في؛ كوالسكي، آر؛ روسي، إف (محررون). برولوج: الخمسون عامًا القادمة . سلسلة محاضرات في علوم الحاسوب. المجلد 13900. سبرينغر، تشام. الصفحات 3-19 . doi : 10.1007/978-3-031-35254-6_1 . ISBN 978-3-031-35253-9.
- ↑ روبنسون، ج. آلان (2001). "مقال افتتاحي مدعو" . نظرية وممارسة البرمجة المنطقية . 1 (1). مطبعة جامعة كامبريدج : 1. doi : 10.1017/s1471068400000028 .
- ↑ RAKowalski (يوليو 1979). "الخوارزمية = المنطق + التحكم" . اتصالات ACM . 22 (7): 424-436 . doi : 10.1145/359131.359136 . S2CID 2509896 .
- ↑ بروينوغ، م.؛ بيريرا، ل.م. (1984). "مراجعة الاستنتاج عن طريق التراجع الذكي". تطبيقات برولوج . تشيتشستر، إنجلترا: إليس هوروود. ص 194-215 .
- ↑ ناكامورا، ك. (يوليو 1985). برولوج الاستدلالي: تنفيذ البرامج المنطقية عن طريق البحث الاستدلالي . مؤتمر البرمجة المنطقية. برلين، هايدلبرغ: سبرينغر برلين هايدلبرغ. ص 148-155 .
- ↑ جينسيريث، إم آر؛ جينسبيرغ، إم إل (1985). "البرمجة المنطقية" . اتصالات رابطة آلات الحوسبة . 28 (9): 933-941 . doi : 10.1145/4284.4287 . S2CID 15527861 .
- ↑ سويفت، ت.؛ وارين، د.س. (يناير 2012). "XSB: توسيع لغة برولوج باستخدام البرمجة المنطقية الجدولية". نظرية وممارسة البرمجة المنطقية . 12 ( 1-2 ): 157-187 . arXiv : 1012.5123 . doi : 10.1017/S1471068411000500 . S2CID 6153112 .
- 1 2 دانيال فريدمان؛ ويليام بيرد؛ أوليغ كيسليوف؛ جيسون هيمان (2018). المخطط العقلاني، الطبعة الثانية . مطبعة معهد ماساتشوستس للتكنولوجيا.
- ↑ أ. كاساس، د. كابيزا، م. ف. هيرمينجيلدو. منهج نحوي لدمج الترميز الوظيفي والتقييم الكسول والترتيب الأعلى في أنظمة البرمجة الخطية. الندوة الدولية الثامنة حول البرمجة الوظيفية والمنطقية (FLOPS'06)، الصفحات 142-162، أبريل 2006.
- ↑ كيرستينغ، ك.، ملادينوف، م. وتوكماكوف، ب.، 2017. البرمجة الخطية العلائقية. الذكاء الاصطناعي، 244، ص 188-216.
- ↑ باير، د.، مايو 2006. البرمجة العلائقية باستخدام CrocoPat. في وقائع المؤتمر الدولي الثامن والعشرين لهندسة البرمجيات (ص 807-810).
- ↑ ماكلينان، بروس جيمس (مارس 1983). ويكسلبلات، ريتشارد ل. (محرر). "نظرة عامة على البرمجة العلائقية" . نشرة ACM SIGPLAN . 18 (3). نيويورك، نيويورك: رابطة آلات الحوسبة: 36-45 . doi : 10.1145/988209.988213 . hdl : 10945/29034 . ISSN 0362-1340 . OCLC 25073822. تاريخ الاسترجاع: 8 مايو 2025 .
- ↑ بينكه، ر.، بيرغامر، ر.، ماير، إ.، وشنايدر، ب.، 1998. RELVIEW - نظام للحساب باستخدام العلاقات والبرمجة العلائقية. في: المناهج الأساسية لهندسة البرمجيات: المؤتمر الدولي الأول، FASE'98، الذي عُقد كجزء من المؤتمرات الأوروبية المشتركة حول نظرية وممارسة البرمجيات، ETAPS'98، لشبونة، البرتغال، 28 مارس - 4 أبريل 1998، وقائع المؤتمر 1 (ص 318-321). سبرينغر برلين هايدلبرغ.
- ↑ فان إمدن، إم إتش؛ كوالسكي، آر إيه (أكتوبر 1976). "دلالات منطق المسند كلغة برمجة" . مجلة ACM . 23 (4): 733-742 . doi : 10.1145/321978.321991 . S2CID 11048276 .
- ↑ كلارك، ك. ل. (1977). "النفي كفشل". المنطق وقواعد البيانات . بوسطن، ماساتشوستس: سبرينغر الولايات المتحدة. ص 293-322 . doi : 10.1007/978-1-4684-3384-5_11 . ISBN 978-1-4684-3386-9.
- ↑ جيلفوند، م.؛ برزيموسينسكا، هـ.؛ برزيموسينسكي، ت. (1989). "حول العلاقة بين التحديد والنفي كفشل". الذكاء الاصطناعي . 38 (1): 75-94 . doi : 10.1016/0004-3702(89)90068-4 .
- ↑ شيبردسون، جيه سي (1984). "النفي كفشل: مقارنة بين قاعدة بيانات كلارك المكتملة وفرضية العالم المغلق لرايتر". مجلة البرمجة المنطقية . 1 (1): 51-79 . doi : 10.1016/0743-1066(84)90023-2 .
- ↑ دينيكر، م.؛ تيرنوفسكا، إ. (2008). "منطق التعريفات الاستقرائية غير الرتيبة" . معاملات ACM في المنطق الحسابي . 9 (2): 14:1–14:52. arXiv : cs/0501025 . doi : 10.1145/1342991.1342998 . S2CID 13156469 .
- ↑ راو، ب.؛ ساغوناس، ك.؛ سويفت، ت.؛ وارين، د.س.؛ فراير، ج. (28-31 يوليو 1997). XSB: نظام لحساب الدلالات المؤسسة بكفاءة . برمجة المنطق والاستدلال غير الرتيب: المؤتمر الدولي الرابع، LPNMR'97. قلعة داغشتول، ألمانيا: سبرينغر برلين هايدلبرغ. ص 430-440 . doi : 10.1007/3-540-63255-7_33 .
- ↑ و. تشين؛ د. س. وارين (يناير 1996). "التقييم المجدول مع التأخير لبرامج المنطق العام" . مجلة ACM . 43 (1): 20-74 . doi : 10.1145/227595.227597 . S2CID 7041379 .
- ↑ فان مينه دونغ (1995). "حول مقبولية الحجج ودورها الأساسي في الاستدلال غير الرتيب، والبرمجة المنطقية، وألعاب اللاعبين المتعددين" . الذكاء الاصطناعي . 77 (2): 321-357 . doi : 10.1016/0004-3702(94)00041-X .
- ↑ كولميراور، أ. وروسيل، ب.، 1996. ميلاد برولوج. في تاريخ لغات البرمجة - الجزء الثاني (ص 331-367).
- 1 2 وارين، دي إتش، بيريرا، إل إم وبيريرا، إف، 1977. برولوج - اللغة وتنفيذها مقارنة بلغة ليسب. إشعارات ACM SIGPLAN، 12(8)، ص 109-115.
- ↑ ثاغارد، بول (2005). العقل: مقدمة في العلوم المعرفية . مطبعة معهد ماساتشوستس للتكنولوجيا. ص 11. ISBN 9780262701099.https://www.google.co.uk/books/edition/Mind_second_edition/gjcR1U2HT7kC?hl=en&gbpv=1&pg=PP11&printsec=frontcover
- ^ ستينينج ، كيث. فان لامبالجين، ميشيل (2008). المنطق البشري والعلوم المعرفية . مطبعة معهد ماساتشوستس للتكنولوجيا . رقم ISBN 978-0-262-19583-6.https://philpapers.org/archive/STEHRA-5.pdf
- ↑ فان لامبالجن، م. وهام، ف.، 2008. المعالجة الصحيحة للأحداث. جون وايلي وأولاده. https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=3126320bb6e37ca3727fed404828b53fc56ff063
- ↑ رايتر، ر.، 1991. مشكلة الإطار في حساب المواقف: حل بسيط (أحيانًا) ونتيجة اكتمال لانحدار الهدف. النظرية الاصطناعية والرياضية للحوسبة، 3.
- ↑ ميريت، د.، 2012. بناء أنظمة الخبراء في لغة برولوج. سبرينغر ساينس آند بيزنس ميديا. https://ds.amu.edu.et/xmlui/bitstream/handle/123456789/4434/%28Text%20Book%29%20Building%20Expert%20Systems%20in%20Prolog.pdf?sequence=1&isAllowed=y
- ↑ سيرجوت، إم جيه؛ صدري، إف؛ كوالسكي، آر إيه؛ كريواتشيك، إف؛ هاموند، بي؛ كوري، إتش تي (1986). "قانون الجنسية البريطانية كبرنامج منطقي" (ملف PDF) . اتصالات رابطة آلات الحوسبة . 29 (5): 370-386 . doi : 10.1145/5689.5920 . S2CID 5665107 .
- ↑ براكن، هـ.؛ سارتور، ج. (أكتوبر 2015). "القانون والمنطق: مراجعة من منظور الحجاج" (ملف PDF) . الذكاء الاصطناعي . 227 : 214-245 . doi : 10.1016/j.artint.2015.06.005 . S2CID 4261497 .
- ↑ ساتوه، ك.، 2023. بروليغ: نظام عملي للاستدلال القانوني. في برولوج: الخمسون عامًا القادمة (ص 277-283). تشام: سبرينغر نيتشر سويسرا.
- 1 2 كورنر، فيليب؛ ليوشيل، مايكل. باربوسا، جواو؛ كوستا، فيتور سانتوس؛ دال، فيرونيكا. هيرمينجيلدو، مانويل الخامس؛ موراليس، خوسيه ف. ويليميكر، يناير؛ دياز، دانيال. أبرو، سلفادور؛ سياتو ، جيوفاني (نوفمبر 2022). "خمسون عامًا من البرولوج وما بعده" . نظرية وممارسة البرمجة المنطقية . 22 (6): 776– 858. أرخايف : 2201.10816 . دوى : 10.1017/S1471068422000102 . ردمك 1471-0684 .
- 1 2 بونر، أ.ج. وكيفر، م.، فبراير 1993. برمجة منطق المعاملات. في ICLP (المجلد 93، الصفحات 257-279).
- ↑ جينسيريث، م.، 2023. البرمجة المنطقية الديناميكية. في برولوج: الخمسون عامًا القادمة (ص 197-209). تشام: سبرينغر نيتشر سويسرا.
- ↑ كوالسكي، ر.، صدري، ف.، كاليخو، م.، وديفيلا، ج.، 2023. دمج البرمجة المنطقية والبرمجة الإجرائية في LPS. في برولوج: الخمسون عامًا القادمة (ص 210-223). تشام: سبرينغر نيتشر سويسرا.
- ↑ أهو، أ.ف. وأولمان، ج.د.، يناير 1979. عالمية لغات استرجاع البيانات. في وقائع الندوة السادسة لجمعية آلات الحوسبة SIGACT-SIGPLAN حول مبادئ لغات البرمجة (ص 110-119).
- ↑ ماير، د.، تيكلي، ك.ت.، كيفر، م. ووارن، د.س.، 2018. داتالوج: المفاهيم والتاريخ والتوقعات. في برمجة المنطق التصريحي: النظرية والأنظمة والتطبيقات (ص 3-100).
- ↑ إيتر، تي.، إياني، جي. وكرينوالنر، تي.، 2009. برمجة مجموعة الإجابات: مدخل تمهيدي. في شبكة الاستدلال. التقنيات الدلالية لنظم المعلومات: المدرسة الصيفية الدولية الخامسة 2009، بريكسن-بريسانوني، إيطاليا، 30 أغسطس - 4 سبتمبر 2009، محاضرات تعليمية (ص 40-110).
- ↑ آرياس، ج.؛ كارو، م.؛ سالازار، إ.؛ ماربل، ك.؛ غوبتا، ج. (2018). "برمجة مجموعة إجابات القيود بدون تأريض" . نظرية وممارسة البرمجة المنطقية . 18 ( 3-4 ): 337-354 . arXiv : 1804.11162 . doi : 10.1017/S1471068418000285 . S2CID 13754645 .
- ↑ دينيكر، م.؛ كاكاس، أ.س. (يوليو 2000). "عدد خاص: البرمجة المنطقية الاستنباطية" . مجلة البرمجة المنطقية . 44 ( 1-3 ): 1-4 . doi : 10.1016/S0743-1066(99)00078-3 .
- ↑ إشغي، ك.، 1988، أغسطس. التخطيط الاستدلالي باستخدام حساب الأحداث. في ICLP/SLP (ص 562-579).
- ↑ إشغي، ك. وكوالسكي، ر.أ.، يونيو 1989. مقارنة الاستدلال الاستنباطي بالنفي بالفشل. في ICLP (المجلد 89، الصفحات 234-255).
- ↑ نينهويس-تشنغ، شان-هوي؛ وولف، رونالد دي (1997). أسس البرمجة المنطقية الاستقرائية . سلسلة محاضرات في علوم الحاسوب، سلسلة محاضرات في الذكاء الاصطناعي. برلين هايدلبرغ: سبرينغر. ص 173. ISBN 978-3-540-62927-6.
- ↑ فلاخ، ب.أ. وكاكاس، أ.س.، 2000. حول العلاقة بين الاستدلال الاستنباطي والتعلم الاستقرائي. في الاستدلال الاستنباطي والتعلم (ص 1-33). دوردريخت: سبرينغر هولندا.
- ↑ كروبر، أ. ودومانشيتش، س.، 2022. البرمجة المنطقية الاستقرائية في عامها الثلاثين: مقدمة جديدة. مجلة أبحاث الذكاء الاصطناعي، 74، ص 765-850.
- ↑ راسل، س.، 2019. متوافق مع الإنسان: الذكاء الاصطناعي ومشكلة التحكم. بنغوين.
- ↑ شونيتشي أوشيدا وكازوهيرو فوتشي. وقائع ورشة عمل تقييم مشروع FGCS . معهد تكنولوجيا الحاسوب للجيل الجديد (ICOT). 1992.
- ↑ هيويت، كارل (27 أبريل 2016). "متانة برامج المنطق في مواجهة التناقض" . أرشيفات هال. ص 21-26 . تم الاطلاع عليه في 7 نوفمبر 2016 .
- ↑ ساراسوات، في إيه ورينارد، إم، ديسمبر 1989. برمجة القيود المتزامنة. في وقائع الندوة السابعة عشرة لجمعية آلات الحوسبة SIGPLAN-SIGACT حول مبادئ لغات البرمجة (ص 232-245).
- ↑ تشين، ويدونغ؛ كيفر، مايكل؛ وارين، ديفيد س. (فبراير 1993). "HiLog: أساس لبرمجة المنطق من الرتبة العليا" . مجلة برمجة المنطق . 15 (3): 187-230 . doi : 10.1016/0743-1066(93)90039-J .
- ↑ ميلر، د.أ. وناداثور، ج.، يوليو 1986. برمجة المنطق من الرتبة العليا. في المؤتمر الدولي لبرمجة المنطق (ص 448-462). برلين، هايدلبرغ: سبرينغر برلين هايدلبرغ.
- ↑ أندريولي، جان مارك (1 يونيو 1992). "البرمجة المنطقية باستخدام البراهين المركزة في المنطق الخطي". مجلة المنطق والحوسبة . 2 (3): 297-347 . doi : 10.1093/logcom/2.3.297 .
- ↑ هوداس، جوشوا؛ ميلر، ديل (1994). "البرمجة المنطقية في جزء من المنطق الخطي الحدسي" . المعلومات والحوسبة . 110 (2): 327-365 . doi : 10.1006/inco.1994.1036 .
- ↑ كوباياشي، ناوكي؛ يونيزاوا، أكينوري (1994). نموذج اتصال غير متزامن قائم على المنطق الخطي . ورشة عمل الولايات المتحدة/اليابان حول الحوسبة الرمزية المتوازية. الصفحات 279-294 . CiteSeerX 10.1.1.42.8749 .
- ↑ ميلر، ديل (30 سبتمبر 1996). "المنتدى: منطق مواصفات متعدد الاستنتاجات" . علوم الحاسوب النظرية . 165 (1): 201-232 . doi : 10.1016/0304-3975(96)00045-X .
- ↑ كيفر، م. ولاوسن، ج.، يونيو 1989. منطق F: لغة من الدرجة العليا للاستدلال حول الكائنات والوراثة والمخطط. في وقائع مؤتمر ACM SIGMOD الدولي لعام 1989 حول إدارة البيانات (ص 134-146).
- ↑ دي مورا، PJL، 2003. تصميم لغة برمجة منطقية موجهة للكائنات (أطروحة دكتوراه، جامعة دا بيرا الداخلية).
- ↑ يانغ، ج. وكيفير، م.، يوليو 2000. فلورا: تطبيق نظام DOOD فعال باستخدام محرك منطق جدولي. في المؤتمر الدولي حول المنطق الحسابي (ص 1078-1093). برلين، هايدلبرغ: سبرينغر برلين هايدلبرغ.
مصادر
مقدمة عامة
- بارال، سي.؛ جيلفوند، إم. (1994). "البرمجة المنطقية وتمثيل المعرفة" (ملف PDF) . مجلة البرمجة المنطقية . 19-20 : 73-148 . doi : 10.1016/0743-1066(94)90025-6 .
- كوالسكي، ر. أ. (1988). "السنوات الأولى لبرمجة المنطق" (ملف PDF) . مجلة اتصالات رابطة مكائن الحوسبة . 31 : 38-43 . doi : 10.1145/35043.35046 . S2CID 12259230 .
- لويد، جيه دبليو (1987). أسس البرمجة المنطقية ( الطبعة الثانية). سبرينغر-فيرلاغ.
مصادر أخرى
- جون مكارثي. "برامج ذات منطق سليم" . ندوة حول ميكنة عمليات التفكير . المختبر الفيزيائي الوطني. تيدينغتون، إنجلترا. 1958.
- ميلر، ديل؛ ناداثور، جوبالان؛ بفينينج، فرانك؛ سيدروف، أندريه (1991). "البراهين الموحدة كأساس لبرمجة المنطق" . حوليات المنطق البحت والتطبيقي . 51 ( 1-2 ): 125-157 . doi : 10.1016/0168-0072(91)90068-W .
- إيهود شابيرو (محرر). مقدمة متزامنة . مطبعة معهد ماساتشوستس للتكنولوجيا. 1987.
- جيمس سلاجل. "تجارب مع برنامج استنتاجي للإجابة على الأسئلة" . CACM. ديسمبر 1965.
- جاباي، دوف م.؛ هوجر، كريستوفر جون؛ روبنسون، جيه إيه، محرران. (1993-1998). دليل المنطق في الذكاء الاصطناعي وبرمجة المنطق . المجلدات 1-5، مطبعة جامعة أكسفورد.
للمزيد من القراءة
- كارل هيويت. " التضمين الإجرائي للمعرفة في المخطط ". المؤتمر الدولي المشترك للذكاء الاصطناعي 1971.
- كارل هيويت. " الزوال المتكرر لبرمجة المنطق ولماذا ستُبعث من جديد ". ندوة الربيع لجمعية الذكاء الاصطناعي الأمريكية: ما الخطأ الذي حدث ولماذا: دروس من أبحاث وتطبيقات الذكاء الاصطناعي 2006: 2-9.
- إيفجيني دانتسين، توماس إيتر ، جورج جوتلوب، أندريه فورونكوف: تعقيد وقدرة التعبير في البرمجة المنطقية . مجلة ACM للحوسبة 33(3): 374-425 (2001)
- أولف نيلسون ويان مالوزينسكي، المنطق والبرمجة ولغة البرولوج
روابط خارجية
- مدخل المكتبة الافتراضية لبرمجة المنطق
- مراجع حول البرمجة المنطقية، مؤرشفة بتاريخ 4 ديسمبر 2008 في أرشيف الإنترنت (Wayback Machine).
- رابطة البرمجة المنطقية (ALP)
- نظرية وممارسة البرمجة المنطقية (مجلة)
- البرمجة المنطقية بلغة C++ باستخدام Castor
- برمجة المنطق ( مؤرشفة بتاريخ 3 سبتمبر 2011 في أرشيف الإنترنت في أستراليا)
- مركز تطوير برولوج
- راكلوج: البرمجة المنطقية في راكيت
- البرمجة المنطقية
- مقدمات متعلقة بالحاسوب في عام 1972
- نماذج البرمجة
- منطق
