ScholarGate
ผู้ช่วย

การตรวจสอบอย่างเป็นทางการและผู้ช่วยพิสูจน์

การตรวจสอบอย่างเป็นทางการเป็นการยืนยันว่าซอฟต์แวร์ตรงตามข้อกำหนด โดยใช้การพิสูจน์ทางคณิตศาสตร์ที่ตรวจสอบโดยเครื่องจักรได้; ผู้ช่วยพิสูจน์คือเครื่องมือที่สร้างและตรวจสอบการพิสูจน์ดังกล่าว

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

การตรวจสอบอย่างเป็นทางการคือการสร้างการพิสูจน์ที่เข้มงวดและตรวจสอบโดยเครื่องจักรได้ว่าระบบเป็นไปตามข้อกำหนดอย่างเป็นทางการ และผู้ช่วยพิสูจน์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้พัฒนาการพิสูจน์ดังกล่าวและตรวจสอบความถูกต้องเชิงกลไก

Scope

หัวข้อนี้ครอบคลุมการตรวจสอบแบบนิรนัยและการพิสูจน์ทฤษฎีเชิงโต้ตอบ: ผู้ช่วยพิสูจน์ที่อิงตามทฤษฎีประเภท (type theory) หรือตรรกะอันดับสูง (higher-order logic) (เช่น Coq, Isabelle, Lean และ Agda), แนวทาง LCF ในการพิสูจน์ที่น่าเชื่อถือ, พื้นฐานของข้อเสนอในฐานะประเภท (propositions-as-types), การทำให้การพิสูจน์เป็นอัตโนมัติและกลยุทธ์, และสิ่งประดิษฐ์ที่ได้รับการตรวจสอบที่เป็นจุดเด่น รวมถึงคอมไพเลอร์และเคอร์เนลของระบบปฏิบัติการ

Core questions

  • จะพิสูจน์ความถูกต้องเชิงฟังก์ชันการทำงานได้อย่างสมบูรณ์และตรวจสอบด้วยเครื่องจักรได้อย่างไร?
  • เหตุใดผู้ช่วยพิสูจน์จึงน่าเชื่อถือ และฐานการประมวลผลที่เชื่อถือได้คืออะไร?
  • การติดต่อกันของ Curry-Howard เชื่อมโยงการพิสูจน์และโปรแกรมอย่างไร?
  • ต้องทำอย่างไรจึงจะตรวจสอบระบบจริง เช่น คอมไพเลอร์และเคอร์เนลได้?

Key theories

แนวทาง LCF ในการพิสูจน์ที่น่าเชื่อถือ
Edinburgh LCF ของ Gordon, Milner และ Wadsworth ได้นำเสนอเคอร์เนลการพิสูจน์ขนาดเล็กที่เชื่อถือได้ ซึ่งทฤษฎีบททั้งหมดจะต้องผ่าน เพื่อให้แม้แต่การทำงานอัตโนมัติที่ซับซ้อนก็ไม่สามารถสร้างการพิสูจน์ที่ไม่ถูกต้องได้
คอมไพเลอร์ที่ได้รับการตรวจสอบ (CompCert)
CompCert ของ Leroy เป็นคอมไพเลอร์ภาษา C ที่ได้รับการพิสูจน์ว่าถูกต้องในผู้ช่วยพิสูจน์ โดยมีทฤษฎีบทที่ตรวจสอบโดยเครื่องจักรได้ว่าโค้ดที่สร้างขึ้นนั้นปรับปรุงความหมายของโปรแกรมต้นฉบับ
เคอร์เนลระบบปฏิบัติการที่ได้รับการตรวจสอบ (seL4)
Klein และเพื่อนร่วมงานได้สร้างการพิสูจน์ความถูกต้องเชิงฟังก์ชันการทำงานที่ตรวจสอบโดยเครื่องจักรได้สำหรับไมโครเคอร์เนล seL4 ซึ่งแสดงให้เห็นถึงการตรวจสอบแบบครบวงจรของซอฟต์แวร์ระบบระดับต่ำ

Clinical relevance

การตรวจสอบด้วยเครื่องจักรให้ความมั่นใจสูงสุดสำหรับซอฟต์แวร์ที่สำคัญ โดยสร้างคอมไพเลอร์ เคอร์เนล และไลบรารีการเข้ารหัสที่มีการรับประกันที่พิสูจน์แล้ว แทนที่จะอาศัยความมั่นใจจากการทดสอบ ผู้ช่วยพิสูจน์ยังถูกนำมาใช้มากขึ้นในการทำให้คณิตศาสตร์เป็นทางการด้วยตัวมันเอง

History

การพิสูจน์ทฤษฎีเชิงโต้ตอบเริ่มต้นด้วย Edinburgh LCF ในทศวรรษ 1970 ซึ่งภาษาเมตา ML และเคอร์เนลที่เชื่อถือได้ได้กำหนดรูปแบบของระบบในภายหลัง ผู้ช่วยที่อิงตามทฤษฎีประเภท เช่น Coq และ Agda และระบบตรรกะอันดับสูง เช่น Isabelle/HOL ได้พัฒนาขึ้นในช่วงทศวรรษต่อมา ซึ่งนำไปสู่สิ่งประดิษฐ์ที่ได้รับการตรวจสอบที่เป็นจุดเด่น: คอมไพเลอร์ CompCert (2009) และเคอร์เนล seL4 (2009)

Debates

ต้นทุนของการตรวจสอบเทียบกับความมั่นใจที่ได้รับ
การสร้างการพิสูจน์ที่ตรวจสอบโดยเครื่องจักรได้สำหรับระบบขนาดใหญ่ต้องใช้ความพยายามอย่างมาก ทำให้เกิดการถกเถียงว่าการตรวจสอบอย่างสมบูรณ์นั้นสมเหตุสมผลในกรณีใด และวิธีการที่มีน้ำหนักเบากว่าเพียงพอในกรณีใด และสามารถทำให้การพิสูจน์เป็นอัตโนมัติได้มากน้อยเพียงใด

Key figures

  • Robin Milner
  • Michael Gordon
  • Xavier Leroy
  • Gerwin Klein
  • Robert Harper

Related topics

Seminal works

  • gordon1979
  • leroy2009
  • klein2009
  • harper2016

Frequently asked questions

ผู้ช่วยพิสูจน์คืออะไร?
ผู้ช่วยพิสูจน์คือซอฟต์แวร์ที่ผู้ใช้สร้างการพิสูจน์อย่างเป็นทางการแบบโต้ตอบ ในขณะที่ระบบตรวจสอบทุกขั้นตอนด้วยกลไก เพื่อให้การพิสูจน์ที่เสร็จสมบูรณ์มีความน่าเชื่อถือจนถึงเคอร์เนลขนาดเล็กที่ได้รับการตรวจสอบอย่างละเอียด
การตรวจสอบโปรแกรมแตกต่างจากการทดสอบอย่างไร?
การทดสอบจะตรวจสอบพฤติกรรมบนอินพุตที่เลือกและสามารถเปิดเผยการมีอยู่ของข้อผิดพลาดเท่านั้น ในขณะที่การตรวจสอบอย่างเป็นทางการจะพิสูจน์ความถูกต้องสำหรับอินพุตทั้งหมดที่อนุญาตโดยข้อกำหนด ซึ่งเป็นการยืนยันว่าไม่มีข้อผิดพลาดที่ระบุไว้

Methods for this concept

Related concepts