استفاده از مفسر باینری به عنوان مرجع حقیقت: راهکار جدید Basis برای اثبات صوری نرمافزار — Ship Your Interpreter
خلاصه
استارتاپ Basis روشی نوین برای تولید خودکار مشخصات رسمی زبانهای برنامهنویسی با LLM ابداع کرده است. در این روش، مفسر زبان به RISC-V کامپایل شده و مدل هوش مصنوعی در محیط Lean اثبات میکند که قواعد صوری زبان با رفتار واقعی باینری کاملاً یکسان است.
اثبات صوری نرمافزار (Formal Verification) سالهاست که به عنوان جام مقدس امنیت و قابلیت اطمینان سیستمها شناخته میشود: اینکه با اثباتهای ریاضی و کامپیوتری، بروز کل کلاسهای باگ را غیرممکن کنیم. با این حال، بزرگترین مانع در این مسیر، نبود معناشناسی صوری (Formal Semantics) برای اکثر زبانهای برنامهنویسی است. پروژههای معروفی مثل CompCert برای C یا CakeML برای ML حاصل سالها کار دستهجمعی نخبگان علوم کامپیوتر بودهاند. حالا تیم تحقیقاتی Basis رویکردی جدید با عنوان «Ship Your Interpreter» پیشنهاد داده است که این گلوگاه را حل میکند.
چالش معناشناسی: چرا تستها کافی نیستند؟
برای اثبات ریاضی هر ویژگی در یک برنامه، ابتدا باید تعریف کنیم که هر عملگر، حلقه و تابع در زبان دقیقاً از نظر ریاضی چه تغییری در وضعیت (State) ایجاد میکند. استفاده از مدلهای زبانی بزرگ (LLM) برای نوشتن این قواعد در دستیارهای اثبات مثل Lean 4 طبیعی به نظر میرسد، اما چگونه میتوان مطمئن شد که معناشناسی تولیدشده توسط مدل دچار توهم یا اشتباه نیست؟
تستنویسی متداول این مشکل را حل نمیکند. نویسندگان مقاله با مفسری ۱۸۵۵ خطی از یک زبان آزمایشی به نام WHILE (نوشتهشده به زبان C) نشان دادند که قواعد تولیدشده توسط LLM تمام تستهای موجود را پاس کرد، اما همچنان با واقعیت مغایرت داشت. ماجرا به تابعی در مفسر برمیگشت که برای تبدیل نام توابع به رشته از یک بافر ۶۴ بایتی استک همراه با snprintf استفاده میکرد:
- اگر نام تابع ۵۹ کاراکتر یا بیشتر میشد، مفسر C علامت پایانی
<را حذف میکرد و رشته ناقص میشد. - هیچ تستی برای توابعی با اسامی اینقدر طولانی وجود نداشت.
- در زبانهای داینامیک، برنامهها مکرراً به فرم رشتهای توابع وابسته هستند و همین ناهماهنگی کوچک، هرگونه اثبات امنیتی بعدی را بیاعتبار میکرد.
ایده محوری: مفسر واقعی به عنوان حقیقت محض
زبانهای فاقد مشخصات صوری، حداقل یک مفسر یا کامپایلر واقعی دارند که تعیین میکند برنامه در عمل چه میکند. ایده تیم Basis این است که مفسر موجود را به معماری RISC-V کامپایل کنند. از آنجا که معماری RISC-V خود دارای مدلسازی ریاضی و رسمی در محیط Lean است، اجرای باینری مفسر روی پردازنده، مشخصات غیرقابلانکاری از رفتار برنامه به دست میدهد.
سپس از LLM خواسته میشود قواعد سطحبالای زبان را بنویسد و در Lean قضیهای به نام endToEnd_refinement را اثبات کند؛ قضیهای که نشان میدهد برای هر برنامه فرضی، خروجی پیشبینیشده توسط قواعد معناشناسی دقیقا معادل خروجی اجرای باینری کامپایلشده مفسر روی ماشین RISC-V است.
اگر قاعدهای اشتباه باشد (مثلاً محدودیت ۶۳ بایتی بافر در نظر گرفته نشود)، فرایند اثبات در Lean گیر میکند و مدل متوجه نقص قاعده شده و آن را اصلاح میکند.
بازخوردها و اهمیت برای مهندسان
این تحقیق نشان میدهد که تمرکز از «تولید کد اثبات» در حال تغییر به سمت «مشخصاتنویسی دقیق» (Specification) است.
در بحثهای Hacker News، کاربران اشاره کردند که این تکنیک بسیار معتبرتر از ادعاهای تبلیغاتی رایج در مورد تایید کد توسط هوش مصنوعی است، زیرا برخلاف جریان کلی که تنها از LLM یک تاییدیه صوری دریافت میکنند، تیم Basis قضایای کامل و قابل ارزیابی در Lean ارائه داده است. برخی کاربران به شباهت این ایده با نقاط ثابت مفسرهای فرا-حلقهای (Meta-circular evaluators) در Lisp اشاره کردند. این دستاورد گامی کلیدی به سمت روزی است که سیستمهای حساس زیرساختی به طور خودکار و در سطح باینری از نظر امنیتی اثبات شوند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل