سؤال

ما أفهمه هو أن التنفيذ الرمزي يتعامل فقط مع مسارات محددة وأنماط سيئة ، في حين أن حلول السبت ، أو نظريات مودولو مرضية بشكل عام ، وتوفير تحليل أكثر قوة بكثير من البرنامج.

يمكن للشخص التحقق من صحة البيان أعلاه و (باختصار) شرح الاختلافات بين هذه المنهجيات التحقق الرسمية اثنين?

هل كانت مفيدة؟

المحلول

ليرة تركية ؛ دكتور: وهي تختلف في المدخلات والمخرجات الأساسية.سات و سمت يحلون لا يعرفون ما هي البرامج;إنها أدوات تجيب بنعم أو لا أسئلة حول الصيغ الرياضية.التنفيذ الرمزي ، من ناحية أخرى ، هو طريقة لتحليل البرامج.عادة ما يعتمد التنفيذ الرمزي على حلول سات و سمت،ولكن ليس العكس.


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

على سبيل المثال ، إدخال ممكن إلى حلالا السبت هو (a and not b) or (not a and c).أي أنها صيغة رياضية ، حيث a, b, ، و c فيما يلي ثوابت منطقية (0 أو 1).من المفترض أن يقرر حلالا السبت ما إذا كان من الممكن أن تكون الصيغة صحيحة ، عن طريق اختيار قيم a, b, ، و c.يحلون سمت متشابهة ، ولكن a, b, ، و c سيتم استبداله بصيغ أكثر تعقيدا باستخدام الأعداد الصحيحة والسلاسل والوظائف وما إلى ذلك.، على سبيل المثال x + 3 = y^2.


تنفيذ رمزي هو وسيلة نزوة لتشغيل البرنامج ، ولكن ليس كيف كان المقصود من البرنامج ليتم تشغيلها.بدلا من ذلك ، يتم تشغيل البرنامج باستخدام ما يسمى بالقيم "الرمزية" ، والتي تشبه العناصر النائبة.للحصول على مثال على ما يعنيه ذلك ، افترض أن لدي وظيفة مثل f(x) = if x > 0 then 1 else 0.الآن ، عادة ، وأود أن تشغيل البرنامج عن طريق إدخال ، ويقول, 3, ، والحصول على f(3) = 1, ، منذ 3 أكبر من 0.مع التنفيذ الرمزي ، أقوم بتشغيل البرنامج عن طريق إدخال متغير عنصر نائب, input, ، وأنا تقييم البرنامج للحصول على حالتين:إما input > 0 and answer = 1 أو input <= 0 and answer = 0.قد يبدو هذا عديم الفائدة ، لكنه ينتهي به الأمر إلى أن يكون وسيلة قوية لتحليل البرامج.


العلاقة بين الاثنين هو أن التنفيذ الرمزي غالبا ما يعتمد على حل سمت أثناء التنفيذ ، لمعرفة ما إذا كان مسار معين هو ممكن في الواقع ، أو إذا كان ينبغي تجاهلها.على سبيل المثال ، يمكن استخدام حلالا سمت لتحديد ما إذا كان input <= 0 and answer = 0 ممكن (الجواب نعم ، على سبيل المثال إذا input = 0).وبهذه الطريقة ، سمت هو نوع من" القوة الدافعة " وراء ما يجعل التنفيذ الرمزي ممكنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top