مشكلة الإطار

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

عرّف جون مكارثي وباتريك ج. هايز هذه المشكلة في مقالتهما المنشورة عام 1969 بعنوان " بعض المشكلات الفلسفية من منظور الذكاء الاصطناعي" . في هذه الورقة، وفي العديد من الأوراق اللاحقة، شكّلت المشكلة الرياضية الرسمية نقطة انطلاق لمناقشات أعمّ حول صعوبة تمثيل المعرفة في الذكاء الاصطناعي. وتناولت هذه المناقشات قضايا مثل كيفية توفير افتراضات افتراضية منطقية، وما يعتبره البشر بديهيًا في بيئة افتراضية. [ 2 ]

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

وصف

تظهر مشكلة الإطار حتى في المجالات البسيطة للغاية. يمكن تمثيل سيناريو يحتوي على باب، يمكن أن يكون مفتوحًا أو مغلقًا، ومصباح، يمكن أن يكون مضاءً أو مطفأً، بشكل ثابت من خلال قضيتين.oصهـن{\displaystyle \mathrm {مفتوح} }وoن{\displaystyle \mathrm {on} }إذا كانت هذه الشروط قابلة للتغيير، فمن الأفضل تمثيلها بمسندين .oصهـن(ت){\displaystyle \mathrm {open} (t)}وoن(ت){\displaystyle \mathrm {on} (t)}التي تعتمد على الزمن؛ تُسمى هذه المسندات بالعوامل المتغيرة . يمكن تمثيل مجال يكون فيه الباب مغلقًا والضوء مطفأً عند الزمن 0، والباب مفتوحًا عند الزمن 1، مباشرةً في المنطق بالصيغ التالية:

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}
oصهـن(1){\displaystyle \mathrm {مفتوح} (1)}

تمثل الصيغتان الأوليان الوضع الابتدائي؛ أما الصيغة الثالثة فتمثل أثر تنفيذ فعل فتح الباب في الزمن 1. ولو كان لهذا الفعل شروط مسبقة، كأن يكون الباب غير مقفل، لكان قد تم تمثيله بـ¬لoجكهـد(0)oصهـن(1){\displaystyle \neg \mathrm {مغلق} (0)\يتضمن \mathrm {مفتوح} (1)}عمليًا، سيكون لدى المرء مسندهـxهـجuتهـoصهـن(ت){\displaystyle \mathrm {executeopen} (t)}لتحديد وقت تنفيذ إجراء وقاعدةت.هـxهـجuتهـoصهـن(ت)oصهـن(ت+1){\displaystyle \forall t.\mathrm {executeopen} (t)\implies \mathrm {open} (t+1)}لتحديد آثار الإجراءات. ويقدم المقال الخاص بحساب المواقف مزيدًا من التفاصيل.

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

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}  oصهـن(1){\displaystyle \mathrm {مفتوح} (1)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}¬oن(1){\displaystyle \neg \mathrm {on} (1)}

في الواقع، هناك مجموعة أخرى من الشروط التي تتوافق مع الصيغ الثلاث المذكورة أعلاه وهي:

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}  oصهـن(1){\displaystyle \mathrm {مفتوح} (1)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}oن(1){\displaystyle \mathrm {on} (1)}

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

oن(0)oن(1){\displaystyle \mathrm {on} (0)\iff \mathrm {on} (1)}

تكمن مشكلة الإطار في ضرورة وجود بديهية إطار واحدة على الأقل لكل زوج من الفعل والشرط بحيث لا يؤثر الفعل على الشرط. بعبارة أخرى، تكمن المشكلة في صياغة مجال ديناميكي بشكل رسمي دون تحديد بديهيات الإطار بشكل صريح.

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

الحلول

توضح الحلول التالية كيفية حل مشكلة الإطار في مختلف الصيغ. لم تُعرض الصيغ كاملةً، بل عُرضت نسخ مبسطة كافية لشرح الحل الكامل.

محلول انسداد سائل

اقترح إريك ساندوال هذا الحل ، وهو الذي وضع أيضًا لغة رسمية لتحديد المجالات الديناميكية؛ لذا، يمكن التعبير عن هذا المجال أولًا بهذه اللغة ثم ترجمته تلقائيًا إلى لغة منطقية. في هذه المقالة، نعرض فقط التعبير المنطقي، وباللغة المبسطة فقط دون أسماء الإجراءات.

يكمن الأساس المنطقي لهذا الحل في تمثيل قيمة الشروط بمرور الوقت، بالإضافة إلى إمكانية تأثرها بالإجراء الأخير المُنفَّذ. ويُعبَّر عن هذا الأخير بشرط آخر يُسمى الحجب. يُقال إن الشرط محجوب في لحظة زمنية معينة إذا تم تنفيذ إجراء ما يجعل الشرط صحيحًا أو خاطئًا كنتيجة. ويمكن اعتبار الحجب بمثابة "إذن بالتغيير": فإذا كان الشرط محجوبًا، فإنه يُعفى من الخضوع لقيد القصور الذاتي.

في المثال المبسط للباب والضوء، يمكن صياغة الحجب رسميًا بواسطة مسندينoججلuدهـoصهـن(ت){\displaystyle \mathrm {occludeopen} (t)}وoججلuدهـoن(ت){\displaystyle \mathrm {occludeon} (t)}والسبب في ذلك هو أن الشرط لا يمكن أن تتغير قيمته إلا إذا كان شرط الحجب المقابل صحيحًا في النقطة الزمنية التالية. وبدوره، يكون شرط الحجب صحيحًا فقط عند تنفيذ إجراء يؤثر على الشرط.

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}
oصهـن(1)oججلuدهـoصهـن(1){\displaystyle \mathrm {open} (1)\wedge \mathrm {occludeopen} (1)}
ت.¬oججلuدهـoصهـن(ت)(oصهـن(ت-1)oصهـن(ت)){\displaystyle \forall t.\neg \mathrm {occludeopen} (t)\implies (\mathrm {open} (t-1)\iff \mathrm {open} (t))}
ت.¬oججلuدهـoن(ت)(oن(ت-1)oن(ت)){\displaystyle \forall t.\neg \mathrm {occludeon} (t)\implies (\mathrm {on} (t-1)\iff \mathrm {on} (t))}

بشكل عام، كل فعل يجعل شرطاً ما صحيحاً أو خاطئاً يجعل أيضاً مسند الحجب المقابل صحيحاً. في هذه الحالة،oججلuدهـoصهـن(1){\displaystyle \mathrm {occludeopen} (1)}صحيح، مما يجعل الشرط السابق للصيغة الرابعة أعلاه خاطئًا بالنسبة لـت=1{\displaystyle t=1}لذلك، فإن القيد هوoصهـن(ت-1)oصهـن(ت){\displaystyle \mathrm {open} (t-1)\iff \mathrm {open} (t)}لا ينطبق ذلك علىت=1{\displaystyle t=1}. لذلك،oصهـن{\displaystyle \mathrm {مفتوح} }يمكن أن تتغير القيمة، وهذا ما يتم فرضه أيضًا بواسطة الصيغة الثالثة.

لكي يتحقق هذا الشرط، يجب أن تكون مسندات الحجب صحيحة فقط عندما تصبح صحيحة كنتيجة لفعل ما. ويمكن تحقيق ذلك إما عن طريق التحديد أو عن طريق إكمال المسند. ومن الجدير بالذكر أن الحجب لا يستلزم بالضرورة تغييرًا: على سبيل المثال، تنفيذ فعل فتح الباب عندما يكون مفتوحًا بالفعل (في الصيغة أعلاه) يجعل المسندoججلuدهـoصهـن{\displaystyle \mathrm {occludeopen} }صحيح ويجعلoصهـن{\displaystyle \mathrm {مفتوح} }صحيح؛ ومع ذلك،oصهـن{\displaystyle \mathrm {مفتوح} }لم تتغير قيمتها، لأنها كانت صحيحة بالفعل.

حل إكمال المسند

يشبه هذا الترميز حل الحجب السلس، لكن المسندات الإضافية تدل على التغيير، وليس على الإذن بالتغيير. على سبيل المثال،جحأنزهـoصهـن(ت){\displaystyle \mathrm {changeopen} (t)}يمثل حقيقة أن المسندoصهـن{\displaystyle \mathrm {مفتوح} }سيتغير من وقت لآخرت{\displaystyle t}لت+1{\displaystyle t+1}وبالتالي، يتغير الشرط إذا وفقط إذا كان الشرط المقابل له صحيحًا. ويؤدي أي فعل إلى تغيير إذا وفقط إذا جعل شرطًا كان خاطئًا سابقًا صحيحًا أو العكس.

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}
¬oصهـن(0)جحأنزهـoصهـن(0){\displaystyle \neg \mathrm {open} (0)\ضمني \mathrm {changeopen} (0)}
ت.جحأنزهـoصهـن(ت)(¬oصهـن(ت)oصهـن(ت+1)){\displaystyle \forall t.\mathrm {changeopen} (t)\iff (\neg \mathrm {open} (t)\iff \mathrm {open} (t+1))}
ت.جحأنزهـoن(ت)(¬oن(ت)oن(ت+1)){\displaystyle \forall t.\mathrm {changeon} (t)\iff (\neg \mathrm {on} (t)\iff \mathrm {on} (t+1))}

الصيغة الثالثة هي طريقة أخرى للتعبير عن أن فتح الباب يؤدي إلى فتحه. تحديدًا، تنص على أن فتح الباب يغير حالته إذا كان مغلقًا سابقًا. أما الشرطان الأخيران فينصان على أن قيمة شرط ما تتغير في وقت معين.ت{\displaystyle t}إذا وفقط إذا كان شرط التغيير المقابل صحيحًا في وقتت{\displaystyle t}لإكمال الحل، يجب أن تكون نقاط الوقت التي تكون فيها مسندات التغيير صحيحة أقل ما يمكن، ويمكن القيام بذلك عن طريق تطبيق إكمال المسند على القواعد التي تحدد آثار الإجراءات.

حل بديهيات حالة الخلف

يمكن تحديد قيمة الشرط بعد تنفيذ إجراء ما من خلال حقيقة أن الشرط يكون صحيحًا إذا وفقط إذا:

  1. الفعل يجعل الشرط صحيحاً؛ أو
  2. كان الشرط صحيحاً في السابق، والفعل لا يجعله خاطئاً.

إن بديهية الحالة اللاحقة هي صياغة منطقية لهاتين الحقيقتين. على سبيل المثال، إذاoصهـندooر(ت){\displaystyle \mathrm {opendoor} (t)}وجلosهـدooر(ت){\displaystyle \mathrm {closedoor} (t)}هناك شرطان يستخدمان للدلالة على أن الإجراء الذي تم تنفيذه في وقتت{\displaystyle t}كان الهدف هو فتح الباب أو إغلاقه، على التوالي، ويتم ترميز المثال الجاري على النحو التالي.

¬oصهـن(0){\displaystyle \neg \mathrm {مفتوح} (0)}
¬oن(0){\displaystyle \neg \mathrm {on} (0)}
oصهـندooر(0){\displaystyle \mathrm {مفتوح} (0)}
ت.oصهـن(ت+1)oصهـندooر(ت)(oصهـن(ت)¬جلosهـدooر(ت)){\displaystyle \forall t.\mathrm {open} (t+1)\iff \mathrm {opendoor} (t)\vee (\mathrm {open} (t)\wedge \neg \mathrm { Closedoor} (t))}

يرتكز هذا الحل على قيمة الشروط، لا على آثار الأفعال. بعبارة أخرى، يوجد مبدأ لكل شرط، لا صيغة لكل فعل. أما الشروط المسبقة للأفعال (غير الموجودة في هذا المثال) فتُصاغ بصيغ أخرى. وتُستخدم مبادئ حالة الخلف في صيغة حساب المواقف التي اقترحها راي رايتر .

حل حساب التفاضل والتكامل بطلاقة

يُعدّ حساب التفاضل والتكامل السلس أحد أشكال حساب المواقف. وهو يحلّ مشكلة الإطار باستخدام مصطلحات منطق الرتبة الأولى ، بدلاً من المسندات ، لتمثيل الحالات. يُطلق على تحويل المسندات إلى مصطلحات في منطق الرتبة الأولى اسم التجسيد ؛ ويمكن اعتبار حساب التفاضل والتكامل السلس منطقًا تُجسّد فيه المسندات التي تُمثّل حالة الشروط.

الفرق بين المسند والحد في منطق الرتبة الأولى هو أن الحد هو تمثيل لكائن (ربما كائن معقد يتكون من كائنات أخرى)، بينما يمثل المسند شرطًا يمكن أن يكون صحيحًا أو خاطئًا عند تقييمه على مجموعة معينة من الحدود.

في حساب التفاضل والتكامل السلس، يُمثَّل كل حالة ممكنة بمصطلح مُشتق من تركيب مصطلحات أخرى، يُمثل كل منها الشروط الصحيحة في تلك الحالة. على سبيل المثال، تُمثَّل الحالة التي يكون فيها الباب مفتوحًا والضوء مُضاءً بالمصطلحoصهـنoن{\displaystyle \mathrm {open} \circ \mathrm {on} }من المهم ملاحظة أن المصطلح ليس صحيحًا أو خاطئًا في حد ذاته، لأنه موضوع وليس شرطًا. بعبارة أخرى، المصطلحoصهـنoن{\displaystyle \mathrm {open} \circ \mathrm {on} }يمثل هذا حالة محتملة، ولا يعني بالضرورة أنها الحالة الحالية. يمكن تحديد شرط منفصل لتوضيح أن هذه هي الحالة الفعلية في وقت معين، على سبيل المثال،sتأتهـ(oصهـنoن،10){\displaystyle \mathrm {state} (\mathrm {open} \circ \mathrm {on} ,10)}هذا يعني أن هذه هي الحالة في ذلك الوقت10{\displaystyle 10}.

يكمن حل مشكلة الإطار المذكورة في حساب التفاضل والتكامل السلس في تحديد آثار الأفعال من خلال بيان كيفية تغير مصطلح يمثل الحالة عند تنفيذ الفعل. على سبيل المثال، يُعبَّر عن فعل فتح الباب عند الزمن صفر بالصيغة التالية:

sتأتهـ(soصهـن،1)sتأتهـ(s،0){\displaystyle \mathrm {state} (s\circ \mathrm {open} ,1)\iff \mathrm {state} (s,0)}

يتم تمثيل فعل إغلاق الباب، الذي يجعل الشرط خاطئاً بدلاً من أن يكون صحيحاً، بطريقة مختلفة قليلاً:

sتأتهـ(s،1)sتأتهـ(soصهـن،0){\displaystyle \mathrm {state} (s,1)\iff \mathrm {state} (s\circ \mathrm {open} ,0)}

تنجح هذه الصيغة بشرط تحديد البديهيات المناسبة بشأنها.sتأتهـ{\displaystyle \mathrm {state} }و{\displaystyle \circ }على سبيل المثال، لا يُعدّ المصطلح الذي يحتوي على الشرط نفسه مرتين حالةً صالحة (على سبيل المثال،sتأتهـ(oصهـنsoصهـن،ت){\displaystyle \mathrm {state} (\mathrm {open} \circ s\circ \mathrm {open} ,t)}هذا خطأ دائماً بالنسبة لكلs{\displaystyle s}وت{\displaystyle t}).

حل حساب الأحداث

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

حoلدsأت(F،تي2){\displaystyle {\mathit {holdsAt}}(F,T2)\leftarrow }
[حأصصهـنsأت(هـ1،تي1)أنانأناتأناأتهـs(هـ1،F،تي1)(تي1<تي2){\displaystyle [{\mathit {happensAt}}(E1,T1)\wedge {\mathit {initiates}}(E1,F,T1)\wedge (T1<T2)\wedge }
¬هـ2،تي[حأصصهـنsأت(هـ2،تي)تهـرمأنانأتهـs(هـ2،F،تي)(تي1تي<تي2)]{\displaystyle \neg \exists E2,T[{\mathit {happensAt}}(E2,T)\wedge {\mathit {terminates}}(E2,F,T)\wedge (T1\leq T<T2)]}

تنص البديهية على أن الشخص الطليقF{\displaystyle F}يحجز في وقت واحدتي2{\displaystyle T2}، إذا حدثهـ1{\displaystyle E1}يحدث ويبدأF{\displaystyle F}في وقت سابقتي1{\displaystyle T1}ولا يوجد حدثهـ2{\displaystyle E2} يحدث ذلك وينتهيF{\displaystyle F} بعد أو في نفس الوقتتي1{\displaystyle T1}وقبل ذلكتي2{\displaystyle T2}.

لتطبيق حساب الأحداث على مجال مشكلة معين، من الضروري تحديدأنانأناتأناأتهـs{\displaystyle initiates}وتهـرمأنانأتهـs{\displaystyle terminates}المسندات الخاصة بهذا المجال. على سبيل المثال:

أنانأناتأناأتهـs(oصهـندooر،oصهـن،تي).{\displaystyle {\mathit {initiates}}(opendoor,open,T).}
تهـرمأنانأتهـs(oصهـندooر،جلosهـد،تي).{\displaystyle {\mathit {terminates}}(opendoor,closed,T).}
أنانأناتأناأتهـs(جلosهـدooر،جلosهـد،تي).{\displaystyle {\mathit {initiates}}(closedoor,closed,T).}
تهـرمأنانأتهـs(جلosهـددooر،oصهـن،تي).{\displaystyle {\mathit {terminates}}(closeddoor,open,T).}

لتطبيق حساب الأحداث على مسألة معينة في المجال، من الضروري تحديد الأحداث التي تحدث في سياق المسألة. على سبيل المثال:

حأصصهـنsأت(oصهـندooر،0){\displaystyle {\mathit {happensAt}}(opendoor,0)}.
حأصصهـنsأت(جلosهـدooر،3){\displaystyle {\mathit {happensAt}}(closedoor,3)}.

لحل مشكلة، مثل ما هي الطاقات التي تسري في الوقت 5؟، من الضروري طرح المشكلة كهدف، مثل:

Fلuهـنت[حoلدsأت(Fلuهـنت،5)].{\displaystyle \exists Fluent[{\mathit {holdsAt(Fluent,5)}}].}

في هذه الحالة، الحصول على الحل الفريد:

Fلuهـنت=جلosهـد.{\displaystyle Fluent=closed.}

يحل حساب الأحداث مشكلة الإطار، ويزيل الحلول غير المرغوب فيها، باستخدام منطق غير رتيب ، مثل منطق الرتبة الأولى مع التقييد [ 3 ] أو عن طريق التعامل مع حساب الأحداث كبرنامج منطقي باستخدام النفي كفشل .

حل المنطق الافتراضي

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

R(x،s): R(x،دo(أ،s))R(x،دo(أ،s)){\displaystyle {\frac {R(x,s)\;:\ R(x,\mathrm {do} (a,s))}{R(x,\mathrm {do} (a,s))}}}

(لوR(x){\displaystyle R(x)}هذا صحيح في هذه الحالةs{\displaystyle s}ويمكن افتراض [ 4 ] أنR(x){\displaystyle R(x)}يظل هذا صحيحًا بعد تنفيذ الإجراءأ{\displaystyle a}إذن يمكننا أن نستنتج أنR(x){\displaystyle R(x)}(يبقى صحيحاً).

جادل ستيف هانكس ودرو ماكديرموت ، استنادًا إلى مثال إطلاق النار في جامعة ييل ، بأن هذا الحل لمشكلة الإطار غير مُرضٍ. ومع ذلك، أظهر هدسون تيرنر أنه يعمل بشكل صحيح في وجود مسلمات إضافية مناسبة.

حلول برمجة مجموعة الإجابات

إن نظير الحل المنطقي الافتراضي في لغة برمجة مجموعات الإجابات هو قاعدة ذات نفي قوي :

ر(X،تي+1)ر(X،تي)، لا ر(X،تي+1){\displaystyle r(X,T+1)\leftarrow r(X,T),\ {\hbox{not }}\sim r(X,T+1)}

(لور(X){\displaystyle r(X)}صحيح في بعض الأحيانتي{\displaystyle T}ويمكن افتراض أنر(X){\displaystyle r(X)}يظل هذا صحيحًا في وقتتي+1{\displaystyle T+1}إذن يمكننا أن نستنتج أنر(X){\displaystyle r(X)}(يبقى صحيحاً).

حل منطق الفصل

منطق الفصل هو أسلوب رسمي للاستدلال حول برامج الحاسوب باستخدام مواصفات ما قبل/ما بعد على النحو التالي:{صرهـجoندأناتأناoن} جoدهـ {صosتجoندأناتأناoن}{\displaystyle \{\mathrm {precondition} \}\ \mathrm {code} \ \{\mathrm {postcondition} \}}منطق الفصل هو امتداد لمنطق هوار، وهو موجه للاستدلال حول هياكل البيانات القابلة للتغيير في ذاكرة الحاسوب والموارد الديناميكية الأخرى، ويحتوي على رابط خاص (*)، يُنطق "و بشكل منفصل"، لدعم الاستدلال المستقل حول مناطق الذاكرة المنفصلة. [ 5 ] [ 6 ]

تعتمد منطق الفصل على تفسير دقيق لمواصفات ما قبل وما بعد التنفيذ، والتي تنص على أن الكود لا يمكنه الوصول إلا إلى مواقع الذاكرة التي يضمن وجودها الشرط المسبق. [ 7 ] وهذا ما يُعزز سلامة أهم قاعدة استدلال في هذا المنطق، وهي قاعدة الإطار.

{صرهـجoندأناتأناoن} جoدهـ {صosتجoندأناتأناoن}{صرهـجoندأناتأناoن*ورأمهـ} جoدهـ {صosتجoندأناتأناoن*ورأمهـ}{\displaystyle {\frac {\{\mathrm {precondition} \}\ \mathrm {code} \ \{\mathrm {postcondition} \}}{\{\mathrm {precondition} \ast \mathrm {frame} \}\ \mathrm {code} \ \{\mathrm {postcondition} \ast \mathrm {frame} \}}}}

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

{قائمة(x)} جoدهـ {قائمة مرتبة(x)}{قائمة(x)*قائمة مرتبة(y)} جoدهـ {قائمة مرتبة(x)*قائمة مرتبة(y)}{\displaystyle {\frac {\{\operatorname {list} (x)\}\ \mathrm {code} \ \{\operatorname {sortedlist} (x)\}}{\{\operatorname {list} (x)\ast \operatorname {sortedlist} (y)\}\ \mathrm {code} \ \{\operatorname {sortedlist} (x)\ast \operatorname {sortedlist} (y)\}}}}

يلتقط هذا الكود الذي يقوم بفرز القائمة x لا يقوم بإلغاء فرز قائمة منفصلة ويفعل ذلك دون ذكر y على الإطلاق في المواصفات الأولية أعلى السطر.

أدى أتمتة قاعدة الإطار إلى زيادات كبيرة في قابلية التوسع لتقنيات الاستدلال الآلي للبرمجيات، [ 8 ] والتي تم نشرها في نهاية المطاف على نطاق صناعي لقواعد بيانات برمجية تحتوي على عشرات الملايين من الأسطر. [ 9 ]

يبدو أن هناك بعض التشابه بين حل منطق الفصل لمشكلة الإطار وحل حساب التفاضل والتكامل السلس المذكور أعلاه.

لغات وصف الإجراءات

تتجنب لغات وصف الأفعال مشكلة الإطار بدلاً من حلها. لغة وصف الأفعال هي لغة رسمية ذات بنية نحوية محددة لوصف المواقف والأفعال. على سبيل المثال، أن الفعلoصهـندooر{\displaystyle \mathrm {opendoor} }يُعبَّر عن فتح الباب إذا لم يكن مغلقًا بما يلي:

oصهـندooر{\displaystyle \mathrm {opendoor} }الأسبابoصهـن{\displaystyle \mathrm {open} }لو¬لoجكهـد{\displaystyle \neg \mathrm {locked} }

تعتمد دلالات لغة وصف الفعل على ما يمكن أن تعبر عنه اللغة (الأفعال المتزامنة، والآثار المتأخرة، وما إلى ذلك) وعادة ما تستند إلى أنظمة الانتقال .

بما أن المجالات تُعبَّر عنها بهذه اللغات بدلاً من التعبير عنها مباشرةً بالمنطق، فإن مشكلة الإطار لا تظهر إلا عند ترجمة مواصفات مُعطاة في منطق وصف الإجراءات إلى منطق. ومع ذلك، عادةً ما تُقدَّم الترجمة من هذه اللغات إلى برمجة مجموعات الإجابات بدلاً من منطق الرتبة الأولى.

انظر أيضاً

ملحوظات

  1. هايز، باتريك (1973). "مشكلة الإطار والمشاكل ذات الصلة في الذكاء الاصطناعي" . جامعة إدنبرة .
  2. مكارثي، ج؛ بي جيه هايز (1969). "بعض المشكلات الفلسفية من منظور الذكاء الاصطناعي". ذكاء الآلة . 4 : 463-502 . CiteSeerX 10.1.1.85.5082 . 
  3. شاناهان، م. (1997) حل مشكلة الإطار: دراسة رياضية لقانون القصور الذاتي المنطقي . مطبعة معهد ماساتشوستس للتكنولوجيا.
  4. أي، لا توجد معلومات متناقضة معروفة
  5. رينولدز، جيه سي (2002). "منطق الفصل: منطق لهياكل البيانات القابلة للتغيير المشتركة". وقائع الندوة السنوية السابعة عشرة لمعهد مهندسي الكهرباء والإلكترونيات حول المنطق في علوم الحاسوب . كوبنهاغن، الدنمارك: جمعية الحاسوب التابعة لمعهد مهندسي الكهرباء والإلكترونيات. الصفحات 55-74 . CiteSeerX 10.1.1.110.7749 . doi : 10.1109/LICS.2002.1029817 . ISBN   978-0-7695-1483-3. S2CID 6271346 . 
  6. أوهيرن، بيتر (28 يناير 2019). "منطق الفصل" . اتصالات رابطة مكائن ​​الحوسبة . 62 (2): 86-95 . doi : 10.1145/3211968 . ISSN 0001-0782 . 
  7. أوهيرن، بيتر؛ رينولدز، جون؛ يانغ، هونغسوك (2001). "الاستدلال المحلي حول البرامج التي تُغير هياكل البيانات". في: فريبورغ، لوران (محرر). منطق علوم الحاسوب . سلسلة محاضرات في علوم الحاسوب. المجلد 2142. برلين، هايدلبرغ: سبرينغر. الصفحات 1-19 . doi : 10.1007/3-540-44802-0_1 . ISBN   978-3-540-44802-0.
  8. كالكانيو كريستيانو؛ دينو ديستيفانو؛ بيتر أوهيرن؛ هونغسوك يانغ (1 ديسمبر 2011). "تحليل الشكل التركيبي باستخدام الاختطاف الثنائي" . مجلة ACM . 58 (6): 1-66 . doi : 10.1145/2049697.2049700 . S2CID 52808268 . 
  9. ديستيفانو، دينو؛ فاندريش، مانويل؛ لوغوزو، فرانشيسكو؛ أوهيرن، بيتر (24 يوليو 2019). "توسيع نطاق التحليلات الثابتة في فيسبوك" . مجلة اتصالات رابطة مكائن ​​الحوسبة . 62 (8): 62-70 . doi : 10.1145/3338112 .

مراجع