توليف البرامج
في علم الحاسوب ، تُعد عملية توليف البرامج مهمة بناء برنامج يمكن إثباتهيُلبي مواصفات رسمية عالية المستوى مُعطاة . على عكس التحقق من البرامج ، يتم إنشاء البرنامج بدلاً من تقديمه؛ ومع ذلك، يستخدم كلا المجالين تقنيات الإثبات الرسمي ، ويتضمن كلاهما مناهج بدرجات متفاوتة من الأتمتة. على عكس تقنيات البرمجة الآلية ، فإن المواصفات في توليف البرامج عادةً ما تكون عبارات غير خوارزمية في حساب منطقي مناسب . [ 1 ]
يتمثل التطبيق الأساسي لتوليف البرامج في تخفيف عبء كتابة التعليمات البرمجية الصحيحة والفعالة التي تلبي المواصفات عن المبرمج. ومع ذلك، فإن لتوليف البرامج تطبيقات في التحسين الفائق واستنتاج ثوابت الحلقات . [ 2 ]
أصل
خلال المعهد الصيفي للمنطق الرمزي في جامعة كورنيل عام ١٩٥٧، حدد ألونسو تشيرش مشكلة توليف الدوائر الكهربائية انطلاقًا من المتطلبات الرياضية. [ ٣ ] ورغم أن هذا العمل يقتصر على الدوائر الكهربائية دون البرامج، إلا أنه يُعد من أوائل الدراسات التي تناولت توليف البرامج، ويُطلق عليه بعض الباحثين اسم "مشكلة تشيرش". وفي ستينيات القرن العشرين، استكشف باحثون في مجال الذكاء الاصطناعي فكرة مماثلة لـ"مبرمج آلي".
منذ ذلك الحين، تناولت العديد من الأوساط البحثية مشكلة توليف البرامج. ومن أبرز الأعمال في هذا المجال، النهج النظري القائم على الأوتوماتا الذي قدمه بوشي ولاندويبر عام 1969 ، [4] وأعمال مانا ووالدينجر ( حوالي عام 1980 ) . ويمكن أيضاً فهم تطوير لغات البرمجة الحديثة عالية المستوى كشكل من أشكال توليف البرامج.
تطورات القرن الحادي والعشرين
شهدت بداية القرن الحادي والعشرين اهتماماً عملياً متزايداً بفكرة توليف البرامج في مجتمع التحقق الرسمي والمجالات ذات الصلة. وقد أظهر أرماندو سولار-ليزاما أنه من الممكن ترميز مشاكل توليف البرامج باستخدام المنطق البولياني ، واستخدام خوارزميات مشكلة الإرضاء البولياني لإيجاد البرامج تلقائياً. [ 5 ]
التركيب الموجه بالبنية النحوية
في عام ٢٠١٣، اقترح باحثون من جامعة بنسلفانيا ، وجامعة كاليفورنيا في بيركلي ، ومعهد ماساتشوستس للتكنولوجيا إطار عمل موحدًا لمشاكل توليف البرامج يُسمى التوليف الموجه بالبنية (SyGuS). [ ٦ ] تتكون مدخلات خوارزمية SyGuS من مواصفات منطقية بالإضافة إلى قواعد نحوية خالية من السياق للتعبيرات التي تقيد بنية الحلول الصحيحة. [ ٧ ] على سبيل المثال، لتوليف دالة f تُرجع أكبر عدد صحيح من عددين، قد تبدو المواصفات المنطقية كما يلي:
( f ( x , y ) = x ∨ f ( 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 | ||||
| 52 | ||||
| 53 | s | |||
| 54 | ت | |||
| 55 | Resolve(51,52) | |||
| 56 | s | Resolve(52,53) | ||
| 57 | s | Resolve(53,52) | ||
| 58 | ص ؟ س : ت | Resolve(53,54) |
يبدأ إطار عمل مانا ووالدينجر ، المنشور عام 1980، [ 12 ] [ 13 ] من صيغة مواصفات من الدرجة الأولى يحددها المستخدم . ويتم بناء برهان لهذه الصيغة، مما يؤدي أيضًا إلى توليف برنامج وظيفي من عمليات استبدال موحدة .
يُعرض الإطار في شكل جدول، وتحتوي الأعمدة على ما يلي:
- رقم السطر ("Nr") لأغراض مرجعية
- الصيغ التي تم تحديدها بالفعل، بما في ذلك البديهيات والشروط المسبقة، ("الادعاءات").
- لا تزال الصيغ بحاجة إلى إثبات، بما في ذلك الشروط اللاحقة، ("الأهداف")، [ ملاحظة 1 ]
- المصطلحات التي تدل على قيمة إخراج صالحة ("البرنامج") [ ملاحظة 2 ]
- تبرير للسطر الحالي ("الأصل")
في البداية، تُدخل المعلومات الأساسية والشروط المسبقة واللاحقة في الجدول. بعد ذلك، تُطبق قواعد البرهان المناسبة يدويًا. صُمم هذا الإطار لتعزيز سهولة قراءة الصيغ الوسيطة: على عكس الاستدلال الكلاسيكي ، فهو لا يتطلب صيغة شرطية عادية ، بل يسمح بالاستدلال باستخدام صيغ ذات بنية عشوائية وتحتوي على أي روابط (" استدلال غير شرطي "). يكتمل البرهان عندماتم اشتقاقها في عمود الأهداف ، أو ما يعادلها،في عمود التأكيدات . البرامج التي يتم الحصول عليها بهذه الطريقة مضمونة لتلبية صيغة المواصفات التي تم البدء منها؛ وبهذا المعنى فهي صحيحة بحكم تصميمها . [ 14 ] يتم دعم لغة برمجة وظيفية بحتة، بسيطة ولكنها كاملة تورينج ، [ 15 ] تتكون من عوامل شرطية، وتكرارية، وحسابية، وغيرها من العوامل [ ملاحظة 3 ] . وقد قامت دراسات الحالة التي أُجريت ضمن هذا الإطار بتوليف خوارزميات لحساب، على سبيل المثال، القسمة ، والباقي ، [ 16 ] والجذر التربيعي ، [ 17 ] وتوحيد الحدود ، [ 18 ] وإجابات استعلامات قواعد البيانات العلائقية ، [ 19 ] والعديد من خوارزميات الفرز . [ 20 ] [ 21 ]
قواعد الإثبات
تشمل قواعد الإثبات ما يلي:
- حل غير شرطي (انظر الجدول).
- على سبيل المثال، يتم الحصول على السطر 55 عن طريق حل صيغ التأكيد.من 51 ومن 52 والتي تشترك كلتاهما في بعض الصيغ الفرعية المشتركةيتشكل المُحلِّل نتيجةً لانفصال، معتم استبدالها بـ، و، معتم استبدالها بـوينتج هذا الحل منطقياً من اقترانووبشكل عام،ولا يلزم سوى صيغتين فرعيتين موحدتينوعلى التوالي؛ ثم يتم تكوين المذيب الخاص بهما منوكما كان من قبل، حيثوهو العامل الأكثر عمومية لتوحيدوتعمم هذه القاعدة حل البنود . [ 22 ]
- يتم دمج حدود البرنامج للصيغ الأصلية كما هو موضح في السطر 58 لتشكيل مخرجات المُحلِّل. في الحالة العامة،وينطبق ذلك على الأخير أيضاً. بما أن الصيغة الفرعيةيظهر في المخرجات، ويجب توخي الحذر لحل الصيغ الفرعية فقط التي تتوافق مع الخصائص القابلة للحساب .
- التحويلات المنطقية.
- على سبيل المثال،يمكن تحويلها إلى) في التأكيدات وكذلك في الأهداف، لأن كليهما متكافئان.
- فصل التأكيدات الاقترانية والأهداف الانفصالية.
- يظهر مثال على ذلك في الأسطر من 11 إلى 13 من مثال اللعبة أدناه.
- تسمح هذه القاعدة بتوليف الدوال التكرارية . لشرط مسبق وشرط لاحق معينين "معطىبحيث، يجدبحيث"، وترتيب مناسب يُمنح للمستخدممن نطاقمن الجيد دائمًا إضافة تأكيد.[ 23 ] يمكن أن يؤدي الحل باستخدام هذا التأكيد إلى استدعاء متكرر لـفي الفصل الدراسي للبرنامج.
- يُقدّم مثال على ذلك في كتاب مانا، والدينجر (1980)، الصفحات 108-111، حيث تمّ توليف خوارزمية لحساب ناتج قسمة وباقي قسمة عددين صحيحين معطيين، باستخدام الترتيب الجيد.محدد بواسطة(ص 110).
أثبت موراي أن هذه القواعد كاملة لمنطق الرتبة الأولى . [ 24 ] في عام 1986، أضاف مانا ووالدينجر قواعد الاستدلال المعممة E وقواعد التعديل البارامتري للتعامل مع المساواة أيضًا؛ [ 25 ] لاحقًا، تبين أن هذه القواعد غير كاملة (لكنها مع ذلك سليمة ). [ 26 ]
مثال
| رقم | التأكيدات | الأهداف | برنامج | أصل |
|---|---|---|---|---|
| 1 | بديهية | |||
| 2 | بديهية | |||
| 3 | بديهية | |||
| 10 | م | مواصفة | ||
| 11 | م | Distr(10) | ||
| 12 | م | Split(11) | ||
| 13 | م | Split(11) | ||
| 14 | x | Resolve(12,1) | ||
| 15 | x | Resolve(14,2) | ||
| 16 | x | Resolve(15,3) | ||
| 17 | y | Resolve(13,1) | ||
| 18 | y | Resolve(17,2) | ||
| 19 | x<y ? y : x | Resolve(18,16) |
كمثال توضيحي، برنامج وظيفي لحساب القيمة القصوىمن رقمينويمكن اشتقاقها على النحو التالي.
انطلاقًا من وصف المتطلبات " الحد الأقصى أكبر من أو يساوي أي عدد معطى، وهو أحد الأعداد المعطاة "، صيغة الدرجة الأولىيتم الحصول على هذه الصيغة كترجمة رسمية. يجب إثبات هذه الصيغة. وباستخدام عملية سكوليم العكسية ، [ ملاحظة 4 ] نحصل على الصيغة في السطر 10، حيث يشير الحرف الكبير إلى متغير، بينما يشير الحرف الصغير إلى ثابت سكوليم .
بعد تطبيق قاعدة التحويل لقانون التوزيع في السطر 11، يكون هدف البرهان هو الفصل، وبالتالي يمكن تقسيمه إلى حالتين، وهما السطران 12 و 13.
بالانتقال إلى الحالة الأولى، فإن حل السطر 12 باستخدام البديهية الواردة في السطر 1 يؤدي إلى إنشاء متغير البرنامجفي السطر 14. وبشكل بديهي، يحدد الجزء الأخير من السطر 12 القيمة التييجب أخذ ذلك في هذه الحالة. رسميًا، يتم تطبيق قاعدة الحل غير الشرطية الموضحة في السطر 57 أعلاه على السطرين 12 و1، مع
- p هو المثال المشترك x=x لـ A=A و x=M ، والذي تم الحصول عليه من خلال توحيد الصيغ الأخيرةنحويًا
- F[ p ] صحيحة ∧ x=x ، تم الحصول عليها من السطر 1 المُنشأ (مع إضافة حشو مناسب لجعل سياق F[⋅] حول p مرئيًا )، و
- G[ p ] حيث x ≤ x ∧ y ≤ x ∧ x = x ، تم الحصول عليها من السطر 12 المُنشأ،
الاستسلام صحيح ∧ خطأ ) ∧ ( x ≤ x ∧ y ≤ x ∧ صحيح، وهو ما يتبسط إلى.
وبالمثل، ينتج عن السطر 14 السطر 15 ثم السطر 16 بالتحليل. وكذلك في الحالة الثانية،في السطر 13، يتم التعامل معها بشكل مماثل، مما يؤدي في النهاية إلى السطر 18.
في الخطوة الأخيرة، يتم دمج الحالتين (أي السطرين 16 و18) باستخدام قاعدة الحل من السطر 58؛ ولجعل هذه القاعدة قابلة للتطبيق، كانت الخطوة التحضيرية 15 ← 16 ضرورية. وبشكل بديهي، يمكن قراءة السطر 18 على أنه "في حالةالناتجصحيح (بالنسبة للمواصفات الأصلية)، بينما يقول السطر 15 "في حالةالناتجصحيح؛ أثبتت الخطوة 15 ← 16 أن الحالتين 16 و18 متكاملتان. [ ملاحظة 5 ] بما أن السطرين 16 و18 يحتويان على مصطلح برمجي، فإن التعبير الشرطي ينتج في عمود البرنامج. بما أن صيغة الهدفتم التوصل إلى النتيجة، وتم إثباتها، وعمود البرنامج في "يحتوي السطر على البرنامج.
انظر أيضاً
ملحوظات
- ↑ إن التمييز بين "الادعاءات" و"الأهداف" هو للتسهيل فقط؛ فباتباع نموذج البرهان بالتناقض ، فإن الهدفيعادل ذلك تأكيداً..
- ↑ متىوإذا كانت صيغة الهدف ومصطلح البرنامج في سطر واحد، على التوالي، ففي جميع الحالات التييحمل،يُعدّ هذا الناتج صحيحًا للبرنامج المراد توليده. ويحافظ على هذا الشرط جميع قواعد البرهان. وعادةً لا ترتبط صيغة التأكيد بمصطلح البرنامج.
- ↑ يُدعم عامل الشرط ( ? :) فقط في البداية. ومع ذلك، يمكن إضافة عوامل وعلاقات جديدة بشكل تعسفي من خلال توفير خصائصها كمسلمات. في المثال التوضيحي أدناه، تُدعم فقط خصائصوتم وضع البديهيات اللازمة في البرهان، في الأسطر من 1 إلى 3.
- ↑ بينما يحافظ السكولمية العادية على قابلية الإرضاء، فإن السكولمية العكسية، أي استبدال المتغيرات الكمية بشكل عالمي بالوظائف، تحافظ على الصلاحية.
- ↑ كان من الضروري وجود البديهية الثالثة لذلك؛ في الواقع، إذالم يكن ترتيبًا كليًا ، ولم يكن من الممكن حساب الحد الأقصى للمدخلات غير القابلة للمقارنة.
مراجع
- ↑ باسين، د.؛ ديفيل، ي.؛ فلينر، ب.؛ هامفلت، أ.؛ فيشر نيلسون، ج. (2004). "توليف البرامج في المنطق الحسابي". في م. بروينوغ وك.-ك. لاو (محرران). تطوير البرامج في المنطق الحسابي . سلسلة محاضرات في علوم الحاسوب. المجلد 3049. سبرينغر. الصفحات 30-65 . CiteSeerX 10.1.1.62.4976 .
- ↑ ( Alur, Singh & Fisman ) خطأ في harv: لا يوجد هدف: CITEREFAlurSinghFisman ( مساعدة )
- ↑ ألونزو تشيرش (1957). "تطبيقات الحساب التكراري على مشكلة توليف الدوائر". ملخصات المعهد الصيفي للمنطق الرمزي . 1 : 3-50 .
- ↑ ريتشارد بوشي، لورانس لاندويبر (أبريل 1969). "حل الشروط المتسلسلة باستخدام استراتيجيات الحالة المحدودة" . معاملات الجمعية الرياضية الأمريكية . 138 : 295-311 . doi : 10.2307/1994916 . JSTOR 1994916 .
- ↑ ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
- ↑ ألور، راجيف؛ وآخرون (2013). "التوليف الموجه بالبنية النحوية". وقائع الأساليب الرسمية في التصميم بمساعدة الحاسوب . معهد مهندسي الكهرباء والإلكترونيات. ص 8.
- ↑ ( ديفيد وكرونينج ) خطأ في الحصاد: لا يوجد هدف: CITEREFDavidKroening ( مساعدة )
- ↑ مسابقة SyGuS-Comp (مسابقة التركيب الموجه بالبنية النحوية)
- ↑ ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
- ↑ ( ديفيد وكرونينج ) خطأ في الحصاد: لا يوجد هدف: CITEREFDavidKroening ( مساعدة )
- ↑ ( Solar-Lezama ) خطأ في نظام harv: لا يوجد هدف: CITEREFSolar-Lezama ( مساعدة )
- ↑ زوهار مانا، ريتشارد والدينجر (يناير 1980). "مقاربة استنتاجية لتوليف البرامج". معاملات ACM في لغات البرمجة والأنظمة . 2 : 90-121 . doi : 10.1145/357084.357090 . S2CID 14770735 .
- ↑ زوهار مانا وريتشارد والدينجر (ديسمبر 1978). منهج استنتاجي لتوليف البرامج (ملف PDF) (مذكرة فنية). معهد ستانفورد للأبحاث الدولية. مؤرشف (ملف PDF) من الأصل في 27 يناير 2021.
- ↑ انظر مانا، والدينجر (1980)، ص 100 للتحقق من صحة قواعد القرار.
- ↑ بوير، روبرت س.؛ مور، ج. ستروثر (مايو 1983). برهان ميكانيكي على اكتمال تورينج للغة ليسب النقية (ملف PDF) (تقرير فني). معهد علوم الحاسوب، جامعة تكساس في أوستن. 37. مؤرشف (ملف PDF) من الأصل في 22 سبتمبر 2017.
- ↑ مانا، والدينجر (1980)، ص 108-111
- ↑ زوهار مانا وريتشارد والدينجر (أغسطس 1987). "أصل نموذج البحث الثنائي". علم برمجة الحاسوب . 9 (1): 37-83 . doi : 10.1016/0167-6423(87)90025-6 .
- ↑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.
- ↑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.
- ↑Jonathan Traugott (1986). "Deductive Synthesis of Sorting Programs". Proceedings of the International Conference on Automated Deduction. LNCS. Vol. 230. Springer. pp. 641–660.
- ↑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.
- ↑Manna, Waldinger (1980), p.99
- ↑Manna, Waldinger (1980), p.104
- ↑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.
- ↑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.
- ↑Zohar Manna, Richard Waldinger (1992). "The Special-Relations Rules are Incomplete". Proc. CADE 11. LNCS. Vol. 607. Springer. pp. 492–506.
- David, Cristina; Kroening, Daniel (2017-10-13). "Program synthesis: challenges and opportunities". Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences. 375 (2104) 20150403. Bibcode:2017RSPTA.37550403D. doi:10.1098/rsta.2015.0403. ISSN 1364-503X. PMC 5597726. PMID 28871052.
- ألور، راجيف؛ سينغ، ريشاب؛ فيسمان، دانا؛ سولار-ليزاما، أرماندو (2018-11-20). "توليف البرامج القائم على البحث". مجلة اتصالات رابطة مكائن الحوسبة . 61 (12): 84-93 . doi : 10.1145/3208071 . ISSN 0001-0782 .
- زوهار مانا، ريتشارد والدينجر (1975). "المعرفة والاستدلال في توليف البرامج". الذكاء الاصطناعي . 6 (2): 175-208 . doi : 10.1016/0004-3702(75)90008-9 .
- سولار-ليزاما، أرماندو (2008). توليف البرامج عن طريق الرسم التخطيطي (ملف PDF) (أطروحة دكتوراه). جامعة كاليفورنيا، بيركلي.
- نماذج البرمجة
