موضوع مقاله: منطق جدایی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # منطق جدایی | مقدمه: منطق جدایی تعمیمی از منطق هور (Hoare logic) است که هدف اصلی ابداع آن، بررسی و وارسی ریاضی برنامه‌هایی است که داده‌ها را در حافظه تغییر می‌دهند و خانه‌های مختلف از حافظه هستند که در معرض تحول هستند. | ## بخش 1: منطق جدایی | مفاهیم کلی در برنامه‌هایی که از اشاره‌گر بهره می‌برند، استفاده از منطق‌های پیشین نظیر منطق هور ممکن نیست. علت آن است که در این‌جا، هر خانه از حافظه اهمیت دارد و باید زبان منطق مورد نظر، توانایی اشاره به قسمت‌های مختلف از حافظهٔ رایانه را داشته باشد. این احساس نیاز، منجر به تعریف عملگر شد که به صورت شهودی یعنی دو عملوند آن، در قسمت‌های مجزا از حافظهٔ پشته هستند؛ لذا، با شکل‌گیری این منطق و ابزارهای آن، وارسی الگوریتم‌ها و برنامه‌های موازی امکان‌پذیر شده‌است. اعلان‌ها منظور ما در این‌جا از حالت، وضعیت مقادیر موجود در حافظهٔ تصادفی و همچنین حافظهٔ پشته است. با تعریف استقرایی ساختار لغوی منطق جدایی، عبارت حالاتی را مشخص می‌کند که در یک قسمت از ساختار حافظهٔ تصادفی/پشته و در قسمتی کاملاً مجزا از آن درست باشد. پس تعریف استقرایی زبان منطق به این صورت است: گزارهٔ یک پشتهٔ خالی را نشان می‌دهد. عملگر دوتایی به این معنا است که اگر بتوانیم حافظه را طوری گسترش دهیم که عملگر اول برقرار باشد، عملگر دوم نیز ناگزیر برقرار است. | ## بخش 2: منطق جدایی | حال می‌توان این عملگرها را در مفاهیم منطق مرتبهٔ اول به کار برد و با آن عباراتی در مورد تأثیر یک برنامه بر حافظه گفت یا در بیان مشخصات حافظه استفاده کرد. برای مثال طبق تعریف عملگر ، داریم: تمامی قواعد استنتاج در منطق هور، در منطق جدایی هم معتبر هستند؛ و همچنین در این منطق، قاعدهٔ قاب هست که برای سه‌تایی‌های هور تعریف می‌شود. یک سه‌تایی هور، به شکل کلی است که یعنی اگر، حافظه قبل از اجرای برنامهٔ ، در حالت باشد، پس از اجرای آن به حالت می‌رود. حال طبق قاعدهٔ قاب داریم: به‌وسیلهٔ این قاعده، می‌توان استدلالات محلی در مورد حافظه را گسترش داد و در مورد بخش بزرگ‌تری از حافظه صحبت کرد. استدلال محلی برای یک برنامهٔ ، یعنی استدلال در مورد تمامی متغیرها و خانه‌های حافظه که توسط تغییر می‌یابند. او بیان می‌دارد که: «برای فهم رفتار یک برنامه، باید در مورد خانه‌هایی اطلاع کسب کنید که توسط آن برنامه تغییر می‌یابند. ارزش دیگر خانه‌ها به صورت خودبه‌خود ثابت باقی می‌ماند.» ابزارهای وارسی مدلّ‌ها و تحلیل برنامه‌ها منطق جدایی به دلیل کاربرد در درستی‌یابی برنامه‌های کامپیوتری، عملکرد وسیعی در ابزارهای مختلف وارسی مدل‌ها و همچنین کاربردهای صنعتی دارد. | ## بخش 3: منطق جدایی | به‌نحوی‌که O'Hearn که از مبدعین این منطق بوده، از سال ۲۰۱۳ در شرکت فیسبوک مشغول به کار است. به صورت کلی، ابزارهایی که از منطق جدایی استفاده می‌کنند در دسته‌های مختلف هستند: تحلیل خودکار برنامه‌ها: این دسته از ابزارها، تلاش می‌کنند تا به صورت خودکار تحلیل‌هایی را در مورد ساختار، تأثیر و معنای برنامه‌ها انجام دهند. اثبات‌ها تعاملی: در این دسته، سعی بر آن است که با استفاده از قواعد استنتاج از پیش تعیین شده به اثبات‌های ریاضی برای عبارات در منطق جدایی برسیم. در حقیقت، این ابزارها جایگزین تلاش‌های طولانی افراد برای درستی‌یابی عبارات هستند. از نمونهٔ این ابزارها، اثبات‌کنندهٔ Coq است که دستهٔ وسیعی از عبارات، از ساده تا پیچیده را در بر می‌گیرد. Coq، در حقیقت یک زبان برنامه‌نویسی است که به‌وسیلهٔ آن می‌توان اعلان‌های مختلف را بیان کرد. به این صورت که با دریافت برخی ویژگی‌ها، ویژگی‌های دیگر را می‌یابند و برای درستی آن‌ها اثبات ارائه می‌دهند. | ## جمع‌بندی | در این مسئله، به دنبال یافتن پیش‌شرط کافی برای به دست آوردن شرایط پس از اجرای یک برنامه هستیم.