แนะนำการตรวจสอบลอจิกลำดับแรก


9

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

พอยน์เตอร์ใด ๆ สำหรับหนังสือหรือบทความสำหรับผู้เริ่มต้นในเรื่องนี้ชื่นชมมาก


2
ก่อนอื่นยินดีต้อนรับสู่ CS: SE ในขณะที่ฉันไม่ได้เป็นผู้เชี่ยวชาญในเรื่องนี้คุณดูเหมือนจะโลดแล่นในหลายหัวข้อพร้อมกัน ไม่ต้องกังวล ฉันทำมันตลอดเวลา ดูการตรวจสอบซอฟท์แวร์จากนั้นทำการตรวจสอบอย่างเป็นทางการจากนั้นตรวจสอบโมเดลและตรวจสอบซอฟต์แวร์อย่างเป็นทางการ: การตรวจสอบโมเดลและทฤษฎีการพิสูจน์
Guy Coder

คำตอบ:


9

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

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

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


10

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

ดูการตรวจสอบซอฟท์แวร์จากนั้นตรวจสอบอย่างเป็นทางการจากนั้นตรวจสอบโมเดลและตรวจสอบซอฟต์แวร์อย่างเป็นทางการ: ตรวจสอบโมเดลและพิสูจน์ทฤษฎีบท

เดฟให้คำตอบที่ดีซึ่งฉันไม่สามารถทำสิ่งที่ยุติธรรมกว่าในส่วนแรกของคำถามได้มากกว่าที่เดฟเคยทำมาตั้งแต่ฉันยังใหม่กับสิ่งนี้

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

เกี่ยวกับ:

พอยน์เตอร์ใด ๆ สำหรับหนังสือหรือบทความสำหรับผู้เริ่มต้นในเรื่องนี้ชื่นชมมาก

หนังสือที่ฉันอยากจะแนะนำและใช้คือ:

ในปัจจุบันฉันไม่สามารถขยายทฤษฎีการพิสูจน์ได้มากขึ้นเพราะฉันยังคงเรียนรู้ข้อดีข้อเสียและความแตกต่างของแต่ละคน แต่สิ่งที่ฉันมุ่งเน้นคือ

  • HOL Lightเพราะหนังสือของ John Harrison
  • Coqเพราะมันขึ้นอยู่กับแคลคูลัสของการก่อสร้าง
  • อิสซาเบลเพราะมันขึ้นอยู่กับการรวมลำดับที่สูงขึ้น

    ผู้ช่วยพิสูจน์เหล่านี้มักจะมีหนังสือเป็นปัจจุบันเป็นที่นิยมเป็นโอเพ่นซอร์สดูแลรักษาและมีชุมชนสนับสนุนที่ใช้งานอยู่

หมายเหตุ: ฉันใช้ worldcat.org เพื่ออ้างอิงหนังสือ แต่คุณสามารถตรวจสอบได้โดยใช้คุณสมบัติการมองของ Amazon


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

ขอบคุณมากสำหรับคำตอบอย่างละเอียดและละเอียดของคุณ สำหรับการเพิ่มความคิดเห็นของคุณเกี่ยวกับหนังสือและให้ลิงก์ไปยังหนังสือฟรี อีกครั้งฉันไม่สามารถขอบคุณได้มากพอ :-)
FELIPE N.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.