منطق هوار
منطق هوار (المعروف أيضًا بمنطق فلويد-هوار أو قواعد هوار ) هو نظام رسمي يتضمن مجموعة من القواعد المنطقية للاستدلال بدقة حول صحة برامج الحاسوب . اقترحه عالم الحاسوب والمنطقي البريطاني توني هوار عام 1969 ، ثم قام هوار وباحثون آخرون بتطويره لاحقًا. [ 1 ] استُلهمت الأفكار الأصلية من أعمال روبرت دبليو فلويد ، الذي نشر نظامًا مشابهًا [ 2 ] للمخططات الانسيابية .
هوار الثلاثي
السمة الأساسية لمنطق هوار هي ثلاثية هوار . تصف الثلاثية كيف يُغير تنفيذ جزء من التعليمات البرمجية حالة الحساب. تأخذ ثلاثية هوار الشكل التالي:
أينوهي ادعاءات وهو أمر . [ ملاحظة 1 ]يُطلق عليه اسم الشرط المسبق والشرط اللاحق : عند تحقق الشرط المسبق، يؤدي تنفيذ الأمر إلى إثبات الشرط اللاحق. التأكيدات هي صيغ في منطق المسند .
يُقدّم منطق هوار بديهيات وقواعد استدلال لجميع مكونات لغة برمجة إجرائية بسيطة . بالإضافة إلى قواعد اللغة البسيطة الواردة في ورقة هوار الأصلية، طُوّرت قواعد لمكونات لغوية أخرى منذ ذلك الحين على يد هوار والعديد من الباحثين الآخرين. وتشمل هذه القواعد قواعد التزامن ، والإجراءات ، والقفزات ، والمؤشرات .
صحة جزئية وصحيحة كاملة
باستخدام منطق هوار القياسي، لا يمكن إثبات سوى صحة جزئية . تتطلب الصحة الكاملة أيضًا إنهاءً ، والذي يمكن إثباته بشكل منفصل أو باستخدام نسخة موسعة من قاعدة "While". [ 3 ] وبالتالي، فإن القراءة البديهية لثلاثية هوار هي: كلماممتلكات الدولة قبل تنفيذ، ثمسيُعقد بعد ذلك، أولا تنتهي. في الحالة الأخيرة، لا يوجد شيء اسمه "بعد"، لذايمكن أن تكون أي عبارة على الإطلاق. في الواقع، يمكن للمرء أن يختارأن تكون كاذباً للتعبير عن ذلكلا ينتهي.
يُقصد بمصطلح "الإنهاء" هنا وفي بقية هذا المقال المعنى الأوسع، أي أن الحساب سينتهي في نهاية المطاف، وهذا يعني عدم وجود حلقات تكرار لا نهائية؛ ولا يعني عدم وجود انتهاكات لحدود التنفيذ (مثل القسمة على صفر)، مما يؤدي إلى إيقاف البرنامج قبل الأوان. في بحثه المنشور عام 1969، استخدم هوار مفهومًا أضيق للإنهاء، والذي تضمن أيضًا عدم وجود انتهاكات لحدود التنفيذ، وأعرب عن تفضيله للمفهوم الأوسع للإنهاء لأنه يحافظ على استقلالية التأكيدات عن التنفيذ.
من أوجه القصور الأخرى في البديهيات والقواعد المذكورة أعلاه أنها لا تُقدّم أساسًا لإثبات نجاح إنهاء البرنامج. قد يعود عدم الإنهاء إلى حلقة تكرار لا نهائية، أو إلى تجاوز حدٍّ مُحدّد من قِبل النظام، مثل نطاق المعاملات العددية، أو حجم التخزين، أو حدّ زمني لنظام التشغيل. ومن هنا جاءت التسمية "ينبغي تفسير العبارة التالية على النحو التالي: "شريطة أن ينتهي البرنامج بنجاح، يتم وصف خصائص نتائجه بواسطةمن السهل نسبيًا تعديل البديهيات بحيث لا يمكن استخدامها للتنبؤ بنتائج البرامج غير المنتهية؛ لكن الاستخدام الفعلي لهذه البديهيات سيعتمد الآن على معرفة العديد من الخصائص المرتبطة بالتنفيذ، مثل حجم الحاسوب وسرعته، ونطاق الأرقام، واختيار تقنية معالجة تجاوز السعة. وبغض النظر عن براهين تجنب الحلقات اللانهائية، فمن الأفضل على الأرجح إثبات صحة البرنامج "المشروطة" والاعتماد على التنفيذ لإصدار تحذير في حال اضطراره إلى التوقف عن تنفيذ البرنامج نتيجةً لتجاوز أحد حدود التنفيذ.
— هوار 1969 ، الصفحات 578-579
قواعد
مخطط بديهية العبارة الفارغة
تنص قاعدة العبارة الفارغة على أن عبارة التخطي لا تُغير حالة البرنامج، وبالتالي فإن أي شيء صحيح قبل التخطي يظل صحيحًا بعده. [ ملاحظة 2 ]
مخطط بديهية التخصيص
تنص بديهية التخصيص على أنه بعد التخصيص، فإن أي مسند كان صحيحًا سابقًا للجانب الأيمن من التخصيص ، يصبح صحيحًا الآن للمتغير. رسميًا، ليكن P عبارة يكون فيها المتغير x حرًا . إذن:
أينيشير إلى التأكيد P الذي تم فيه استبدال كل ظهور حر لـ x بالتعبير E.
يعني مخطط بديهية التخصيص أن صحةيكافئ ذلك صحة P بعد التخصيص . وبالتالي، لوإذا كانت العبارة صحيحة قبل التخصيص، وفقًا لمسلمة التخصيص، فإن العبارة ستكون صحيحة بعد ذلك. والعكس صحيح.خطأ (أيإذا كانت P صحيحة قبل عبارة التخصيص، فيجب أن تكون خاطئة بعدها.
من أمثلة الثلاثيات الصحيحة ما يلي:
يمكن نقل جميع الشروط المسبقة التي لم يتم تعديلها بواسطة التعبير إلى الشرط اللاحق. في المثال الأول، يتم تعيينلا يغير ذلك من حقيقة أنلذا، قد يظهر كلا البيانين في الشرط اللاحق. رسميًا، يتم الحصول على هذه النتيجة بتطبيق مخطط البديهيات مع كون P (و)، مما ينتج عنهكون (و)، والتي يمكن بدورها تبسيطها إلى الشرط المسبق المحدد.
يُعادل مخطط بديهية التخصيص القول بأنه لإيجاد الشرط المسبق، يجب أولاً أخذ الشرط اللاحق واستبدال جميع حالات الطرف الأيسر من التخصيص بالطرف الأيمن منه. احذر من محاولة القيام بذلك بشكل عكسي باتباع هذه الطريقة الخاطئة في التفكير:تؤدي هذه القاعدة إلى أمثلة غير منطقية مثل:
قاعدة أخرى خاطئة تبدو مغرية للوهلة الأولى هيويؤدي ذلك إلى أمثلة غير منطقية مثل:
بينما يحدد شرط ما بعد معين P بشكل فريد الشرط المسبقأما العكس فليس صحيحاً. على سبيل المثال:
- ،
- ،
- ، و
تُعدّ هذه أمثلة صحيحة لمخطط بديهية التخصيص.
لا تنطبق بديهية التخصيص التي اقترحها هوار عندما يشير أكثر من اسم إلى نفس القيمة المخزنة. على سبيل المثال،
يكون هذا خطأً إذا كان x و y يشيران إلى نفس المتغير ( التداخل )، على الرغم من أنه مثال صحيح لمخطط بديهية التخصيص (مع كليهما).وكون).
قاعدة التأليف
| التحقق من صحة رمز التبديل بدون متغيرات مساعدة | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||
تنطبق قاعدة هوار للتركيب على البرامج التي يتم تنفيذها بالتسلسل S و T ، حيث يتم تنفيذ S قبل T ويتم كتابتها( يُطلق على Q اسم الشرط المتوسط ): [ 4 ]
على سبيل المثال، انظر إلى الحالتين التاليتين لبديهية التخصيص:
و
وبناءً على قاعدة التسلسل، نستنتج ما يلي:
يظهر مثال آخر في المربع الأيمن.
القاعدة الشرطية
تنص القاعدة الشرطية على أن الشرط اللاحق Q المشترك بين جزئي then و else هو أيضًا شرط لاحق لعبارة if...endif بأكملها . [ 5 ] في جزئي then و else ، يمكن إضافة الشرط B غير المنفي والمنفي إلى الشرط المسبق P ، على التوالي. يجب ألا يكون للشرط B أي آثار جانبية. يرد مثال على ذلك في القسم التالي .
لم تكن هذه القاعدة واردة في منشور هوار الأصلي. [ 1 ] ومع ذلك، منذ صدور بيان
له نفس تأثير بنية الحلقة لمرة واحدة
يمكن اشتقاق القاعدة الشرطية من قواعد هوار الأخرى. وبالمثل، يمكن اختزال قواعد بنيات البرامج المشتقة الأخرى، مثل حلقة for ، وحلقة do...until ، و switch ، وbreak ، و continue ، عن طريق تحويل البرنامج إلى القواعد الواردة في ورقة هوار الأصلية.
قاعدة العواقب
تسمح هذه القاعدة بتعزيز الشرط المسبقو/أو لإضعاف الشرط اللاحق. يتم استخدامه، على سبيل المثال، لتحقيق شروط لاحقة متطابقة حرفيًا لجزء then وجزء else .
على سبيل المثال، برهان على
يتطلب الأمر تطبيق القاعدة الشرطية، والتي بدورها تتطلب إثبات
- أو بشكل مبسط
بالنسبة للجزء السابق ، و
- أو بشكل مبسط
أما بالنسبة للجزء الآخر .
ومع ذلك، تتطلب قاعدة التخصيص للجزء "ثم" اختيار P كـوبالتالي فإن تطبيق القاعدة ينتج
- وهو ما يعادل منطقياً ما يلي:
- .
قاعدة العواقب ضرورية لتعزيز الشرط المسبقتم الحصول عليها من قاعدة التخصيص إلىمطلوب للقاعدة الشرطية.
وبالمثل، بالنسبة لجزء else ، فإن قاعدة التخصيص تُعطي
- أو ما يعادل ذلك
- ،
وبالتالي، يجب تطبيق قاعدة العواقب معوكونووبالتالي، لتعزيز الشرط المسبق مرة أخرى. وبشكل غير رسمي، فإن تأثير قاعدة النتيجة هو "نسيان" ذلكيتم معرفة ذلك عند إدخال جزء else ، لأن قاعدة التعيين المستخدمة لجزء else لا تحتاج إلى تلك المعلومات.
بينما القاعدة
هنا، P هو ثابت الحلقة ، والذي يجب أن يحافظ عليه جسم الحلقة S. بعد انتهاء الحلقة، يظل هذا الثابت P قائمًا، وعلاوة على ذلكلا بد أن يكون هذا قد تسبب في إنهاء الحلقة. وكما هو الحال في القاعدة الشرطية، يجب ألا يكون لـ B آثار جانبية.
على سبيل المثال، برهان على
يتطلب تطبيق قاعدة "بينما" إثبات
- أو بشكل مبسط
- ،
والذي يمكن الحصول عليه بسهولة من خلال قاعدة التخصيص. وأخيرًا، الشرط اللاحقيمكن تبسيطها إلى.
كمثال آخر، يمكن استخدام قاعدة while للتحقق رسميًا من البرنامج الغريب التالي لحساب الجذر التربيعي الدقيق x لعدد عشوائي a —حتى لو كان x متغيرًا صحيحًا و a ليس عددًا مربعًا:
بعد تطبيق قاعدة while مع كون P صحيحًا ، يبقى إثبات
- ،
وهذا ما يترتب على قاعدة التخطي وقاعدة العواقب.
في الواقع، البرنامج الغريب صحيح جزئيًا : إذا توقف، فمن المؤكد أن قيمة x قد احتوت (مصادفةً) على قيمة الجذر التربيعي لـ a . في جميع الحالات الأخرى، لن يتوقف؛ لذلك، فهو ليس صحيحًا تمامًا .
بينما القاعدة لتحقيق الصحة الكاملة
إذا استُبدلت قاعدة حلقة while العادية المذكورة أعلاه بالقاعدة التالية، يُمكن استخدام حساب هوار لإثبات صحة البرنامج بشكل كامل ، أي صحة الإنهاء، وكذلك صحته الجزئية. ويُستخدم عادةً الأقواس المربعة هنا بدلاً من الأقواس المعقوفة للدلالة على المفهوم المختلف لصحة البرنامج.
في هذه القاعدة، بالإضافة إلى الحفاظ على ثبات الحلقة، يتم إثبات الإنهاء أيضًا عن طريق تعبير t ، يُسمى متغير الحلقة ، والذي تتناقص قيمته بشكل صارم بالنسبة لعلاقة مؤسسة جيدًا < على مجموعة مجال D خلال كل تكرار. بما أن < مؤسسة جيدًا، فإن سلسلة متناقصة تمامًا من عناصر D لا يمكن أن يكون لها إلا طول محدود، لذا لا يمكن أن يستمر t في التناقص إلى الأبد. (على سبيل المثال، الترتيب المعتاد < مؤسس جيدًا على الأعداد الصحيحة الموجبة).لكن ليس على الأعداد الصحيحةولا على الأعداد الحقيقية الموجبة; جميع هذه المجموعات تعني بالمعنى الرياضي، وليس بالمعنى الحسابي، وهي جميعها لانهائية على وجه الخصوص.)
بالنظر إلى ثابت الحلقة P ، يجب أن يستلزم الشرط B أن t ليس عنصرًا أدنى في D ، وإلا فلن يتمكن الجسم S من تقليل t أكثر، أي أن فرضية القاعدة ستكون خاطئة. (هذه إحدى طرق التعبير عن الصحة الكاملة.) [ ملاحظة 3 ]
بالعودة إلى المثال الأول من القسم السابق ، للحصول على برهان صحة تامة لـ
يمكن تطبيق قاعدة "while" لضمان الصحة الكاملة، على سبيل المثال، حيث D هي الأعداد الصحيحة غير السالبة بالترتيب المعتاد، والتعبير t هو وهذا بدوره يتطلب إثبات
بصورة غير رسمية، علينا أن نثبت أن المسافةيتناقص في كل دورة تكرار، بينما يظل دائمًا غير سالب؛ لا يمكن أن تستمر هذه العملية إلا لعدد محدود من الدورات.
يمكن تبسيط هدف البرهان السابق إلى
- ،
ويمكن إثبات ذلك على النحو التالي:
- يتم الحصول عليها من خلال قاعدة التخصيص، و
- يمكن تعزيزها إلىبحسب قاعدة العواقب.
بالنسبة للمثال الثاني من القسم السابق ، بالطبع، لا يمكن العثور على تعبير t يتم إنقاصه بواسطة جسم الحلقة الفارغ، وبالتالي لا يمكن إثبات الإنهاء.
انظر أيضاً
ملحوظات
- ↑ كتب هوار في الأصل ""أفضل من"".
- ↑ تستخدم هذه المقالة أسلوب الاستدلال الطبيعي في تدوين القواعد. على سبيل المثال،يعني هذا بشكل غير رسمي "إذا تحققت كل من α و β ، فإن φ تتحقق أيضًا"؛ تُسمى α و β مقدمات القاعدة، وتُسمى φ لاحقتها. تُسمى القاعدة التي لا مقدمات لها بديهية، وتُكتب على النحو التالي:.
- ↑ لم تُقدّم ورقة هوار لعام 1969 قاعدةً للصحّة المطلقة؛ انظر مناقشته في الصفحة 579 (أعلى اليسار). على سبيل المثال، يُقدّم كتاب رينولدز [ 6 ] الصيغة التالية لقاعدة الصحّة المطلقة: عندما يكون z متغيرًا صحيحًا لا يظهر بشكل حر في P أو B أو S أو t ، ويكون t تعبيرًا صحيحًا (تمت إعادة تسمية متغيرات رينولدز لتتناسب مع إعدادات هذه المقالة).
مراجع
- 1 2 هوار 1969 .
- ↑ فلويد 1967 .
- ^ رينولدز 2009 ، طائفة. 3.4، ص. 64.
- ↑ هوث وريان 2004 .
- ↑ Apt & Olderog 2019 .
- ↑ رينولدز 2009 .
فهرس
- آبت، كريستوف ر.؛ أولديروغ، إرنست-روديغر (ديسمبر 2019). "خمسون عامًا من منطق هوار" . الجوانب الرسمية للحوسبة . 31 (6): 759. doi : 10.1007/s00165-019-00501-3 . S2CID 102351597 .
- فلويد، ر. و. (1967). "إسناد معانٍ للبرامج" (ملف PDF) . وقائع الجمعية الأمريكية للرياضيات . ندوات حول الرياضيات التطبيقية. 19 : 19-31 .
- هوار، سي. إيه. آر. (أكتوبر 1969). "أساس بديهي لبرمجة الحاسوب" . اتصالات رابطة آلات الحوسبة . 12 (10): 576-583 . doi : 10.1145/363235.363259 . S2CID 207726175 .
- هوث، مايكل؛ رايان، مارك (26 أغسطس 2004). المنطق في علوم الحاسوب: نمذجة الأنظمة والاستدلال عليها ( الطبعة الثانية). مطبعة جامعة كامبريدج . الصفحات: 14، 427. ISBN 978-0521543101.
- رينولدز، جون سي. (2009) [1998]. نظريات لغات البرمجة . مطبعة جامعة كامبريدج . ISBN 978-0521106979.
- تينانت، روبرت د. (2002). تحديد مواصفات البرمجيات . مطبعة جامعة كامبريدج . ص 12، 289. ISBN 978-0521004015كتاب
مدرسي يتضمن مقدمة لمنطق هوار
روابط خارجية
- 1969 في مجال الحوسبة
- منطق البرنامج
- تحليل البرامج الثابتة
- توني هوار
