توليف البرامج

في علم الحاسوب ، تُعد عملية توليف البرامج مهمة بناء برنامج يمكن إثباتهيُلبي مواصفات رسمية عالية المستوى مُعطاة . على عكس التحقق من البرامج ، يتم إنشاء البرنامج بدلاً من تقديمه؛ ومع ذلك، يستخدم كلا المجالين تقنيات الإثبات الرسمي ، ويتضمن كلاهما مناهج بدرجات متفاوتة من الأتمتة. على عكس تقنيات البرمجة الآلية ، فإن المواصفات في توليف البرامج عادةً ما تكون عبارات غير خوارزمية في حساب منطقي مناسب . [ 1 ]

يتمثل التطبيق الأساسي لتوليف البرامج في تخفيف عبء كتابة التعليمات البرمجية الصحيحة والفعالة التي تلبي المواصفات عن المبرمج. ومع ذلك، فإن لتوليف البرامج تطبيقات في التحسين الفائق واستنتاج ثوابت الحلقات . [ 2 ]

أصل

خلال المعهد الصيفي للمنطق الرمزي في جامعة كورنيل عام ١٩٥٧، حدد ألونسو تشيرش مشكلة توليف الدوائر الكهربائية انطلاقًا من المتطلبات الرياضية. [ ٣ ] ورغم أن هذا العمل يقتصر على الدوائر الكهربائية دون البرامج، إلا أنه يُعد من أوائل الدراسات التي تناولت توليف البرامج، ويُطلق عليه بعض الباحثين اسم "مشكلة تشيرش". وفي ستينيات القرن العشرين، استكشف باحثون في مجال الذكاء الاصطناعي فكرة مماثلة لـ"مبرمج آلي".

منذ ذلك الحين، تناولت العديد من الأوساط البحثية مشكلة توليف البرامج. ومن أبرز الأعمال في هذا المجال، النهج النظري القائم على الأوتوماتا الذي قدمه بوشي ولاندويبر عام 1969 ، [4] وأعمال مانا ووالدينجر ( حوالي عام 1980 ) . ويمكن أيضاً فهم تطوير لغات البرمجة الحديثة عالية المستوى كشكل من أشكال توليف البرامج.

تطورات القرن الحادي والعشرين

شهدت بداية القرن الحادي والعشرين اهتماماً عملياً متزايداً بفكرة توليف البرامج في مجتمع التحقق الرسمي والمجالات ذات الصلة. وقد أظهر أرماندو سولار-ليزاما أنه من الممكن ترميز مشاكل توليف البرامج باستخدام المنطق البولياني ، واستخدام خوارزميات مشكلة الإرضاء البولياني لإيجاد البرامج تلقائياً. [ 5 ]

التركيب الموجه بالبنية النحوية

في عام ٢٠١٣، اقترح باحثون من جامعة بنسلفانيا ، وجامعة كاليفورنيا في بيركلي ، ومعهد ماساتشوستس للتكنولوجيا إطار عمل موحدًا لمشاكل توليف البرامج يُسمى التوليف الموجه بالبنية (SyGuS). [ ٦ ] تتكون مدخلات خوارزمية SyGuS من مواصفات منطقية بالإضافة إلى قواعد نحوية خالية من السياق للتعبيرات التي تقيد بنية الحلول الصحيحة. [ ٧ ] على سبيل المثال، لتوليف دالة f تُرجع أكبر عدد صحيح من عددين، قد تبدو المواصفات المنطقية كما يلي:

( f ( x , y ) = xf ( x , y ) = y ) ∧ f ( x , y ) ≥ x ∧ f ( x , y ) ≥ y

وقد تكون القواعد النحوية كالتالي:

<Exp> :: = x | y | 0 | 1 | <Exp> + <Exp> | ite ( <Cond> , <Exp> , <Exp> ) <Cond> :: = <Exp> < = <Exp>

حيث يرمز "ite" إلى "if-then-else". التعبير

ite(x <= y, y, x)

سيكون حلاً صحيحاً، لأنه يتوافق مع القواعد والمواصفات.

من عام ٢٠١٤ إلى عام ٢٠١٩، قارنت مسابقة توليف البرامج الموجهة بالبنية النحوية (SyGuS-Comp) السنوية بين الخوارزميات المختلفة لتوليف البرامج في حدث تنافسي. [ ٨ ] استخدمت المسابقة تنسيق إدخال موحدًا، SyGuS-IF، قائمًا على مكتبة SMT-Lib ٢. على سبيل المثال، يشفر تنسيق SyGuS-IF التالي مشكلة توليف أكبر عدد صحيح من عددين (كما هو موضح أعلاه):

(مجموعة منطق LIA) (دالة اصطناعية f ((x عدد صحيح) (y عدد صحيح)) عدد صحيح ((i عدد صحيح) (c عدد صحيح) (b منطقي)) ((i Int (cxy (+ ii) (ite bii))) (c Int (0 1)) (b Bool ((<= ii))))) (declare-var x Int) (declare-var y Int) (constraint (>= (fxy) x)) (constraint (>= (fxy) y)) (قيد (أو (= (fxy) x) (= (fxy) y))) (check-synth)

قد يُعيد برنامج حل متوافق المخرجات التالية:

((define-fun f ((x Int) (y Int)) Int (ite (<= xy) yx)))

توليف استقرائي موجه بالأمثلة المضادة

يُعدّ التوليف الاستقرائي الموجّه بالأمثلة المضادة (CEGIS) منهجًا فعالًا لبناء مُركِّبات برامج صوتية. [ 9 ] [ 10 ] يتضمن CEGIS تفاعل مُكوِّنَين: مُولِّد يُنشئ برامج مُرشَّحة، ومُدقِّق يتحقق مما إذا كانت هذه البرامج تُلبّي المواصفات.

بفرض وجود مجموعة من المدخلات I ، ومجموعة من البرامج الممكنة P ، ومواصفات S ، فإن هدف توليف البرامج هو إيجاد برنامج p في P بحيث يتحقق الشرط S ( p , i ) لجميع المدخلات i في I. يتم تحديد معلمات CEGIS بناءً على مولد ومُدقِّق.

  • يأخذ المولد مجموعة من المدخلات T ، ويخرج برنامجًا مرشحًا c يكون صحيحًا على جميع المدخلات في T ، أي مرشح بحيث يكون S ( c , t ) صحيحًا لجميع المدخلات t في T.
  • يأخذ المدقق برنامجًا مرشحًا c ويعيد القيمة true إذا كان البرنامج يفي بـ S على جميع المدخلات، وإلا فإنه يعيد مثالًا مضادًا ، أي مدخل e في I بحيث يفشل S ( c , e ).

يقوم برنامج CEGIS بتشغيل المولد والمُدقِّق في حلقة، مما يؤدي إلى تراكم الأمثلة المضادة:

خوارزمية cegis هي المدخلات : مولد البرنامج generate ، المُدقِّق يُدقِّق ، المواصفات spec ، الناتج : برنامج يفي بالمواصفات ، أو فشل المدخلات := مجموعة فارغة حلقة المرشح := توليد ( المواصفات ، المدخلات ) إذا تحقق ( المواصفات ، المرشح ) فأرجع المرشح وإلا فإن التحقق ينتج مثالًا مضادًا e أضف e إلى المدخلات نهاية إذا

تستخدم تطبيقات CEGIS عادةً محللات SMT كأدوات تحقق.

استُلهمت منهجية CEGIS من منهجية تحسين التجريد الموجهة بالأمثلة المضادة (CEGAR). [ 11 ]

إطار عمل مانا ووالدينجر

قواعد حل الجمل غير الشرطية (لم يتم عرض البدائل الموحدة)
رقمالتأكيداتالأهدافبرنامجأصل
51هـ[ص]{\displaystyle E[p]}
52F[ص]{\displaystyle F[p]}
53جي[ص]{\displaystyle G[p]}s
54ح[ص]{\displaystyle H[p]}ت
55هـ[حقيقي]F[خطأ شنيع]{\displaystyle E[{\text{true}}]\lor F[{\text{false}}]}Resolve(51,52)
56¬F[حقيقي]جي[خطأ شنيع]{\displaystyle \lnot F[{\text{true}}]\land G[{\text{false}}]}sResolve(52,53)
57¬F[خطأ شنيع]جي[حقيقي]{\displaystyle \lnot F[{\text{false}}]\land G[{\text{true}}]}sResolve(53,52)
58جي[حقيقي]ح[خطأ شنيع]{\displaystyle G[{\text{true}}]\land H[{\text{false}}]}ص ؟ س : تResolve(53,54)

يبدأ إطار عمل مانا ووالدينجر ، المنشور عام 1980، [ 12 ] [ 13 ] من صيغة مواصفات من الدرجة الأولى يحددها المستخدم . ويتم بناء برهان لهذه الصيغة، مما يؤدي أيضًا إلى توليف برنامج وظيفي من عمليات استبدال موحدة .

يُعرض الإطار في شكل جدول، وتحتوي الأعمدة على ما يلي:

  • رقم السطر ("Nr") لأغراض مرجعية
  • الصيغ التي تم تحديدها بالفعل، بما في ذلك البديهيات والشروط المسبقة، ("الادعاءات").
  • لا تزال الصيغ بحاجة إلى إثبات، بما في ذلك الشروط اللاحقة، ("الأهداف")، [ ملاحظة 1 ]
  • المصطلحات التي تدل على قيمة إخراج صالحة ("البرنامج") [ ملاحظة 2 ]
  • تبرير للسطر الحالي ("الأصل")

في البداية، تُدخل المعلومات الأساسية والشروط المسبقة واللاحقة في الجدول. بعد ذلك، تُطبق قواعد البرهان المناسبة يدويًا. صُمم هذا الإطار لتعزيز سهولة قراءة الصيغ الوسيطة: على عكس الاستدلال الكلاسيكي ، فهو لا يتطلب صيغة شرطية عادية ، بل يسمح بالاستدلال باستخدام صيغ ذات بنية عشوائية وتحتوي على أي روابط (" استدلال غير شرطي "). يكتمل البرهان عندماترuهـ{\displaystyle {\it {true}}}تم اشتقاقها في عمود الأهداف ، أو ما يعادلها،وألsهـ{\displaystyle {\it {false}}}في عمود التأكيدات . البرامج التي يتم الحصول عليها بهذه الطريقة مضمونة لتلبية صيغة المواصفات التي تم البدء منها؛ وبهذا المعنى فهي صحيحة بحكم تصميمها . [ 14 ] يتم دعم لغة برمجة وظيفية بحتة، بسيطة ولكنها كاملة تورينج ، [ 15 ] تتكون من عوامل شرطية، وتكرارية، وحسابية، وغيرها من العوامل [ ملاحظة 3 ] . وقد قامت دراسات الحالة التي أُجريت ضمن هذا الإطار بتوليف خوارزميات لحساب، على سبيل المثال، القسمة ، والباقي ، [ 16 ] والجذر التربيعي ، [ 17 ] وتوحيد الحدود ، [ 18 ] وإجابات استعلامات قواعد البيانات العلائقية ، [ 19 ] والعديد من خوارزميات الفرز . [ 20 ] [ 21 ]

قواعد الإثبات

تشمل قواعد الإثبات ما يلي:

  • حل غير شرطي (انظر الجدول).
على سبيل المثال، يتم الحصول على السطر 55 عن طريق حل صيغ التأكيد.هـ{\displaystyle E}من 51 وF{\displaystyle F}من 52 والتي تشترك كلتاهما في بعض الصيغ الفرعية المشتركةص{\displaystyle p}يتشكل المُحلِّل نتيجةً لانفصالهـ{\displaystyle E}، معص{\displaystyle p}تم استبدالها بـترuهـ{\displaystyle {\it {true}}}، وF{\displaystyle F}، معص{\displaystyle p}تم استبدالها بـوألsهـ{\displaystyle {\it {false}}}وينتج هذا الحل منطقياً من اقترانهـ{\displaystyle E}وF{\displaystyle F}وبشكل عام،هـ{\displaystyle E}وF{\displaystyle F}لا يلزم سوى صيغتين فرعيتين موحدتينص1{\displaystyle p_{1}}وص2{\displaystyle p_{2}}على التوالي؛ ثم يتم تكوين المذيب الخاص بهما منهـθ{\displaystyle E\theta }وFθ{\displaystyle F\theta }كما كان من قبل، حيثθ{\displaystyle \theta }وهو العامل الأكثر عمومية لتوحيدص1{\displaystyle p_{1}}وص2{\displaystyle p_{2}}تعمم هذه القاعدة حل البنود . [ 22 ]
يتم دمج حدود البرنامج للصيغ الأصلية كما هو موضح في السطر 58 لتشكيل مخرجات المُحلِّل. في الحالة العامة،θ{\displaystyle \theta }وينطبق ذلك على الأخير أيضاً. بما أن الصيغة الفرعيةص{\displaystyle p}يظهر في المخرجات، ويجب توخي الحذر لحل الصيغ الفرعية فقط التي تتوافق مع الخصائص القابلة للحساب .
  • التحويلات المنطقية.
على سبيل المثال،هـ(Fجي){\displaystyle E\land (F\lor G)}يمكن تحويلها إلى(هـF)(هـجي){\displaystyle (E\land F)\lor (E\land G)}) في التأكيدات وكذلك في الأهداف، لأن كليهما متكافئان.
  • فصل التأكيدات الاقترانية والأهداف الانفصالية.
يظهر مثال على ذلك في الأسطر من 11 إلى 13 من مثال اللعبة أدناه.
تسمح هذه القاعدة بتوليف الدوال التكرارية . لشرط مسبق وشرط لاحق معينين "معطىx{\displaystyle x}بحيثتحذير(x){\displaystyle {\textit {pre}}(x)}، يجدو(x)=y{\displaystyle f(x)=y}بحيثبريد(x،y){\displaystyle {\textit {post}}(x,y)}"، وترتيب مناسب يُمنح للمستخدم{\displaystyle \prec }من نطاقx{\displaystyle x}من الجيد دائمًا إضافة تأكيد.xxتحذير(x)بريد(x،و(x)){\displaystyle x'\prec x\land {\textit {pre}}(x')\implies {\textit {post}}(x',f(x'))}[ 23 ] يمكن أن يؤدي الحل باستخدام هذا التأكيد إلى استدعاء متكرر لـو{\displaystyle f}في الفصل الدراسي للبرنامج.
يُقدّم مثال على ذلك في كتاب مانا، والدينجر (1980)، الصفحات 108-111، حيث تمّ توليف خوارزمية لحساب ناتج قسمة وباقي قسمة عددين صحيحين معطيين، باستخدام الترتيب الجيد.(ن،د)(ن،د){\displaystyle (n',d')\prec (n,d)}محدد بواسطة0ن<ن{\displaystyle 0\leq n'<n}(ص 110).

أثبت موراي أن هذه القواعد كاملة لمنطق الرتبة الأولى . [ 24 ] في عام 1986، أضاف مانا ووالدينجر قواعد الاستدلال المعممة E وقواعد التعديل البارامتري للتعامل مع المساواة أيضًا؛ [ 25 ] لاحقًا، تبين أن هذه القواعد غير كاملة (لكنها مع ذلك سليمة ). [ 26 ]

مثال

مثال على توليف الدالة القصوى
رقمالتأكيداتالأهدافبرنامجأصل
1أ=أ{\displaystyle A=A}بديهية
2أأ{\displaystyle A\leq A}بديهية
3أببأ{\displaystyle A\leq B\lor B\leq A}بديهية
10xمyم(x=مy=م){\displaystyle x\leq M\land y\leq M\land (x=M\lor y=M)}ممواصفة
11(xمyمx=م)(xمyمy=م){\displaystyle (x\leq M\land y\leq M\land x=M)\lor (x\leq M\land y\leq M\land y=M)}مDistr(10)
12xمyمx=م{\displaystyle x\leq M\land y\leq M\land x=M}مSplit(11)
13xمyمy=م{\displaystyle x\leq M\land y\leq M\land y=M}مSplit(11)
14xxyx{\displaystyle x\leq x\land y\leq x}xResolve(12,1)
15yx{\displaystyle y\leq x}xResolve(14,2)
16¬(xy){\displaystyle \lnot (x\leq y)}xResolve(15,3)
17xyyy{\displaystyle x\leq y\land y\leq y}yResolve(13,1)
18xy{\displaystyle x\leq y}yResolve(17,2)
19حقيقي{\displaystyle {\textit {true}}}x<y ? y : xResolve(18,16)

كمثال توضيحي، برنامج وظيفي لحساب القيمة القصوىم{\displaystyle M}من رقمينx{\displaystyle x}وy{\displaystyle y}يمكن اشتقاقها على النحو التالي.

انطلاقًا من وصف المتطلبات " الحد الأقصى أكبر من أو يساوي أي عدد معطى، وهو أحد الأعداد المعطاة "، صيغة الدرجة الأولىXYم:XمYم(X=مY=م){\displaystyle \forall X\forall Y\exists M:X\leq M\land Y\leq M\land (X=M\lor Y=M)}يتم الحصول على هذه الصيغة كترجمة رسمية. يجب إثبات هذه الصيغة. وباستخدام عملية سكوليم العكسية ، [ ملاحظة 4 ] نحصل على الصيغة في السطر 10، حيث يشير الحرف الكبير إلى متغير، بينما يشير الحرف الصغير إلى ثابت سكوليم .

بعد تطبيق قاعدة التحويل لقانون التوزيع في السطر 11، يكون هدف البرهان هو الفصل، وبالتالي يمكن تقسيمه إلى حالتين، وهما السطران 12 و 13.

بالانتقال إلى الحالة الأولى، فإن حل السطر 12 باستخدام البديهية الواردة في السطر 1 يؤدي إلى إنشاء متغير البرنامجم{\displaystyle M}في السطر 14. وبشكل بديهي، يحدد الجزء الأخير من السطر 12 القيمة التيم{\displaystyle M}يجب أخذ ذلك في هذه الحالة. رسميًا، يتم تطبيق قاعدة الحل غير الشرطية الموضحة في السطر 57 أعلاه على السطرين 12 و1، مع

الاستسلام ¬({\displaystyle \lnot (}صحيحخطأ ) ∧ ( x ≤ x ∧ y ≤ x ∧ صحيح){\displaystyle )}، وهو ما يتبسط إلىxxyx{\displaystyle x\leq x\land y\leq x}.

وبالمثل، ينتج عن السطر 14 السطر 15 ثم السطر 16 بالتحليل. وكذلك في الحالة الثانية،xمyمy=م{\displaystyle x\leq M\land y\leq M\land y=M}في السطر 13، يتم التعامل معها بشكل مماثل، مما يؤدي في النهاية إلى السطر 18.

في الخطوة الأخيرة، يتم دمج الحالتين (أي السطرين 16 و18) باستخدام قاعدة الحل من السطر 58؛ ولجعل هذه القاعدة قابلة للتطبيق، كانت الخطوة التحضيرية 15 16 ضرورية. وبشكل بديهي، يمكن قراءة السطر 18 على أنه "في حالةxy{\displaystyle x\leq y}الناتجy{\displaystyle y}صحيح (بالنسبة للمواصفات الأصلية)، بينما يقول السطر 15 "في حالةyx{\displaystyle y\leq x}الناتجx{\displaystyle x}صحيح؛ أثبتت الخطوة 15 16 أن الحالتين 16 و18 متكاملتان. [ ملاحظة 5 ] بما أن السطرين 16 و18 يحتويان على مصطلح برمجي، فإن التعبير الشرطي ينتج في عمود البرنامج. بما أن صيغة الهدفحقيقي{\displaystyle {\textit {true}}}تم التوصل إلى النتيجة، وتم إثباتها، وعمود البرنامج في "حقيقي{\displaystyle {\textit {true}}}يحتوي السطر على البرنامج.

انظر أيضاً

ملحوظات

  1. إن التمييز بين "الادعاءات" و"الأهداف" هو للتسهيل فقط؛ فباتباع نموذج البرهان بالتناقض ، فإن الهدفF{\displaystyle F}يعادل ذلك تأكيداً.¬F{\displaystyle \lnot F}.
  2. متىF{\displaystyle F}وs{\displaystyle s}إذا كانت صيغة الهدف ومصطلح البرنامج في سطر واحد، على التوالي، ففي جميع الحالات التيF{\displaystyle F}يحمل،s{\displaystyle s}يُعدّ هذا الناتج صحيحًا للبرنامج المراد توليده. ويحافظ على هذا الشرط جميع قواعد البرهان. وعادةً لا ترتبط صيغة التأكيد بمصطلح البرنامج.
  3. يُدعم عامل الشرط ( ? :) فقط في البداية. ومع ذلك، يمكن إضافة عوامل وعلاقات جديدة بشكل تعسفي من خلال توفير خصائصها كمسلمات. في المثال التوضيحي أدناه، تُدعم فقط خصائص={\displaystyle =}و{\displaystyle \leq }تم وضع البديهيات اللازمة في البرهان، في الأسطر من 1 إلى 3.
  4. بينما يحافظ السكولمية العادية على قابلية الإرضاء، فإن السكولمية العكسية، أي استبدال المتغيرات الكمية بشكل عالمي بالوظائف، تحافظ على الصلاحية.
  5. كان من الضروري وجود البديهية الثالثة لذلك؛ في الواقع، إذا{\displaystyle \leq }لم يكن ترتيبًا كليًا ، ولم يكن من الممكن حساب الحد الأقصى للمدخلات غير القابلة للمقارنةx،y{\displaystyle x,y}.

مراجع

  1. باسين، د.؛ ديفيل، ي.؛ فلينر، ب.؛ هامفلت، أ.؛ فيشر نيلسون، ج. (2004). "توليف البرامج في المنطق الحسابي". في م. بروينوغ وك.-ك. لاو (محرران). تطوير البرامج في المنطق الحسابي . سلسلة محاضرات في علوم الحاسوب. المجلد  3049. سبرينغر. الصفحات 30-65 . CiteSeerX 10.1.1.62.4976 .  
  2. ( Alur, Singh & Fisman ) خطأ في harv: لا يوجد هدف: CITEREFAlurSinghFisman ( مساعدة )
  3. ألونزو تشيرش (1957). "تطبيقات الحساب التكراري على مشكلة توليف الدوائر". ملخصات المعهد الصيفي للمنطق الرمزي . 1 : 3-50 .
  4. ريتشارد بوشي، لورانس لاندويبر (أبريل 1969). "حل الشروط المتسلسلة باستخدام استراتيجيات الحالة المحدودة" . معاملات الجمعية الرياضية الأمريكية . 138 : 295-311 . doi : 10.2307/1994916 . JSTOR 1994916 . 
  5. ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
  6. ألور، راجيف؛ وآخرون (2013). "التوليف الموجه بالبنية النحوية". وقائع الأساليب الرسمية في التصميم بمساعدة الحاسوب . معهد مهندسي الكهرباء والإلكترونيات. ص 8. 
  7. ( ديفيد وكرونينج ) خطأ في الحصاد: لا يوجد هدف: CITEREFDavidKroening ( مساعدة )
  8. مسابقة SyGuS-Comp (مسابقة التركيب الموجه بالبنية النحوية)
  9. ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
  10. ( ديفيد وكرونينج ) خطأ في الحصاد: لا يوجد هدف: CITEREFDavidKroening ( مساعدة )
  11. ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
  12. زوهار مانا، ريتشارد والدينجر (يناير 1980). "مقاربة استنتاجية لتوليف البرامج". معاملات ACM في لغات البرمجة والأنظمة . 2 : 90-121 . doi : 10.1145/357084.357090 . S2CID 14770735 . 
  13. زوهار مانا وريتشارد والدينجر (ديسمبر 1978). منهج استنتاجي لتوليف البرامج (ملف PDF) (مذكرة فنية). معهد ستانفورد للأبحاث الدولية. مؤرشف (ملف PDF) من الأصل في 27 يناير 2021.
  14. انظر مانا، والدينجر (1980)، ص 100 للتحقق من صحة قواعد القرار.
  15. بوير، روبرت س.؛ مور، ج. ستروثر (مايو 1983). برهان ميكانيكي على اكتمال تورينج للغة ليسب النقية (ملف PDF) (تقرير فني). معهد علوم الحاسوب، جامعة تكساس في أوستن. 37. مؤرشف (ملف PDF) من الأصل في 22 سبتمبر 2017.
  16. مانا، والدينجر (1980)، ص 108-111
  17. زوهار مانا وريتشارد والدينجر (أغسطس 1987). "أصل نموذج البحث الثنائي". علم برمجة الحاسوب . 9 (1): 37-83 . doi : 10.1016/0167-6423(87)90025-6 .
  18. Daniele Nardi (1989). "Formal Synthesis of a Unification Algorithm by the Deductive-Tableau Method". Journal of Logic Programming. 7: 1–43. doi:10.1016/0743-1066(89)90008-3.
  19. Daniele Nardi and Riccardo Rosati (1992). "Deductive Synthesis of Programs for Query Answering". In Kung-Kiu Lau and Tim Clement (ed.). International Workshop on Logic Program Synthesis and Transformation (LOPSTR). Workshops in Computing. Springer. pp. 15–29. doi:10.1007/978-1-4471-3560-9_2. ISBN 978-3-540-19806-2.
  20. Jonathan Traugott (1986). "Deductive Synthesis of Sorting Programs". Proceedings of the International Conference on Automated Deduction. LNCS. Vol. 230. Springer. pp. 641–660.
  21. Jonathan Traugott (Jun 1989). "Deductive Synthesis of Sorting Programs". Journal of Symbolic Computation. 7 (6): 533–572. doi:10.1016/S0747-7171(89)80040-9.
  22. Manna, Waldinger (1980), p.99
  23. Manna, Waldinger (1980), p.104
  24. Manna, Waldinger (1980), p.103, referring to: Neil V. Murray (Feb 1979). A Proof Procedure for Quantifier-Free Non-Clausal First Order Logic (Technical report). Syracuse Univ. 2-79.
  25. Zohar Manna, Richard Waldinger (Jan 1986). "Special Relations in Automated Deduction". Journal of the ACM. 33: 1–59. doi:10.1145/4904.4905. S2CID 15140138.
  26. Zohar Manna, Richard Waldinger (1992). "The Special-Relations Rules are Incomplete". Proc. CADE 11. LNCS. Vol. 607. Springer. pp. 492–506.