'ยุทธวิธี' ทำงานอย่างไรในผู้ช่วยที่ได้รับการพิสูจน์


44

คำถาม: 'ยุทธวิธี' ทำงานอย่างไรในผู้ช่วยที่พิสูจน์ได้? พวกเขาดูเหมือนจะเป็นวิธีในการระบุวิธีการเขียนคำใหม่ให้เป็นคำที่เทียบเท่า (สำหรับคำจำกัดความของ 'ที่เทียบเท่า') สันนิษฐานว่ามีกฎอย่างเป็นทางการสำหรับเรื่องนี้ฉันจะเรียนรู้สิ่งที่พวกเขาและพวกเขาทำงานอย่างไร พวกเขามีส่วนร่วมมากกว่าทางเลือกในการลด Beta หรือไม่

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


1
นี่คือโฆษณาที่ไร้ยางอายสำหรับบทเรียนวิดีโอ Coq ของฉันmath.andrej.com/2011/02/22/ …
Andrej Bauer

คำตอบ:


36

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

  • D. Delahaye ภาษาชั้นเชิงสำหรับระบบ Coq ในการดำเนินการตามตรรกะสำหรับการเขียนโปรแกรมและการใช้เหตุผลอัตโนมัติ (LPAR), เกาะเรอูนียง, เล่มที่ 1955 ของบันทึกการบรรยายในวิทยาการคอมพิวเตอร์, หน้า 85–95 Springer-Verlag, พฤศจิกายน 2000

กฎระเบียบอย่างเป็นทางการซึ่งรูปแบบสาระสำคัญของกลยุทธ์พื้นฐานที่กำหนดไว้ในคู่มือผู้ใช้ Coq นี่หรือในบทที่ 4 ของไฟล์ PDF

เอกสารที่ให้คำแนะนำในการใช้กลยุทธ์และยุทธวิธี (โดยพื้นฐานแล้วกลยุทธ์ที่ใช้กลยุทธ์อื่นเป็นข้อโต้แย้ง) คือ:

ภาษาแทคติกของ Coq มีข้อ จำกัด ว่าบทพิสูจน์ที่เขียนโดยใช้มันแทบจะไม่คล้ายกับบทพิสูจน์ที่ทำด้วยมือ มีการพยายามหลายครั้งเพื่อเปิดใช้งานการพิสูจน์ที่ชัดเจนยิ่งขึ้น เหล่านี้รวมถึงIsar (สำหรับ Isabelle / HOL) และภาษาพิสูจน์Mizar

นอกเหนือจาก นี้คุณทราบหรือไม่ว่าภาษาการเขียนโปรแกรมMLได้รับการออกแบบมาเพื่อใช้กลยุทธ์สำหรับการพิสูจน์ทฤษฎีบทLCF แนวคิดมากมายที่พัฒนาขึ้นสำหรับ ML เช่นการอนุมานประเภทมีอิทธิพลต่อภาษาการเขียนโปรแกรมสมัยใหม่


3
คำตอบที่ดี การเขียนโปรแกรมที่ผ่านการรับรองของ Adam Chlipala พร้อมประเภทการพึ่งพา ( adam.chlipala.net/cpdt ) เป็นอีกแหล่งข้อมูลที่ดีในการใช้กลยุทธ์ใน Coq
jbapple

16

LCF เป็นพ่อที่แท้จริงของระบบเหล่านี้ทั้งหมด: Coq, Isabelle, HOLs รวมถึงภาษาการเขียนโปรแกรม ML (ซึ่งเราเห็นในวันนี้ว่า OCaml, SML และ F #) ใช่ฉันกำลังรวม Coq ในฐานะสมาชิกของครอบครัว LCF ที่ยิ่งใหญ่กว่า เมื่อเทียบกับผู้ช่วยของสหรัฐอเมริกันหลักฐาน (สะดุดตา ACL2) หรือที่ไม่เกี่ยวข้องกันโดยสิ้นเชิง Mizar, Coq เป็นวัฒนธรรมค่อนข้างใกล้เคียงกับอิสซาเบลและ HOLS ส่วนใหญ่เนื่องจากความคิดร่วมกันของกลยุทธ์

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

หลักการฝังรากลึกหลักที่นี่มาจาก LCF ของ Milner:

  • การอนุมานหลัก (การให้เหตุผลไปข้างหน้า) ไม่ว่าจะเป็นประเภทข้อมูลนามธรรมthmในแนวทาง LCF ดั้งเดิมหรือด้วยการตรวจสอบเงื่อนไขการพิสูจน์แยกในสาขาประเภททฤษฎีของตระกูล (Coq, Matita) สิ่งนี้ช่วยให้คุณมีพื้นฐานทางตรรกะที่แน่นอนสำหรับผลลัพธ์ที่ผู้พิจารณาเห็นว่าเป็นทฤษฎีบท ดังนั้นคุณอาจมีการอนุมานแบบดั้งเดิมที่ใช้⊢ A และ⊢ B และให้คุณ⊢ A ∧ B การอนุมานดั้งเดิมอื่นสามารถให้คุณ⊢ t = u โดยที่คุณคือรูปแบบเบต้าปกติของ t ไม่มีกลไกใดที่เป็นกลยุทธ์แม้ว่าจะเป็นกฎการอนุมานเหมือนในตรรกะมาตรฐาน

  • หลักฐานการกำหนดเป้าหมาย (ให้เหตุผลย้อนหลัง) แนวคิดคือคุณทำงานบนแนวคิดของ "สถานะเป้าหมาย" โดยการปรับแต่งแยกมันออกเป็นเป้าหมายย่อยมากขึ้นปิดเป้าหมายย่อยจนกว่ามันจะได้รับการแก้ไขทั้งหมด สำเร็จสถานะเป้าหมายจะทำให้ทฤษฎีบทบางอย่างโผล่ออกมาจากกระบวนการ LCF ได้แนะนำโครงสร้างพื้นฐานเชิงตรรกะพิเศษบางอย่างสำหรับเป้าหมายซึ่งยังคงอยู่ใน HOLs: ชั้นเชิงคือฟังก์ชัน ML บางอย่างที่ปรับเป้าหมายและสร้างเหตุผลสำหรับการปรับแต่ง ในตอนท้ายของการพิสูจน์ justfications จะเล่นซ้ำในลำดับย้อนกลับเพื่อสร้างการพิสูจน์ในลักษณะไปข้างหน้าตามการอนุมานดั้งเดิมที่ร่างข้างต้น

Coq และ Matita ยังค่อนข้างใกล้เคียงกับหลักการ LCF นี้ อิซาเบลแตกต่างกันที่นี่: ตั้งแต่ปี 1989 แลร์รี่พอลสันกลับเนื้อกลับตัวแนวคิดเกี่ยวกับเป้าหมายและยุทธวิธีเพื่อให้พวกเขาใกล้ชิดกับตรรกะซึ่งเป็นกรอบตรรกะที่ "บริสุทธิ์" ของอิสซาเบลที่นี่ Isabelle / Pure ให้ตรรกะการสั่งซื้อที่สูงขึ้นน้อยที่สุดพร้อมความหมาย ==> และตัวระบุปริมาณ !! ซึ่งระบุทั้งโครงสร้างของกฎการหักตามธรรมชาติและสถานะเป้าหมาย

ตัวอย่างเช่น⊢ A ==> B ==> A ∧ B เป็นกฎการแนะนำตัวร่วม (ของตรรกะวัตถุ) เป็นทฤษฎีบทของกรอบตรรกะ

สถานะเป้าหมายเป็นเพียงทฤษฎีบทเช่นกันเริ่มต้นด้วย⊢ C ==> C สำหรับการเรียกร้องเริ่มต้นของคุณ C ซึ่งได้รับการปรับให้เป็น⊢ X ==> Y ==> Z ==> C ในสถานะสื่อกลางที่ X, Y, Z คือเป้าหมายย่อยปัจจุบันและกระบวนการสิ้นสุดด้วย⊢ C (ไม่มีเป้าหมายย่อย)

ตอนนี้กลับไปที่กลยุทธ์ซึ่งมีความเหมือนกันมากขึ้นสำหรับผู้พิสูจน์เหล่านี้ทั้งหมด: เนื่องจากแนวคิดของสถานะเป้าหมาย (เช่น Isabelle one ด้านบน) ชั้นเชิงเป็นฟังก์ชันที่แมปสถานะเป้าหมายไปที่ (0, 1 หรือมากกว่า) สถานะเป้าหมาย ยิ่งไปกว่านั้นยุทธวิธีคือการรวมตัวกันของฟังก์ชั่นชั้นเชิงเช่นเพื่อแสดงองค์ประกอบเรียงลำดับทางเลือกการทำซ้ำ ฯลฯ ในความเป็นจริงภาษาของยุทธวิธีและยุทธวิธีมีความสัมพันธ์กับ "รายการความสำเร็จ" ของผู้วิเคราะห์คำ

กลยุทธ์อนุญาตให้อธิบายกลยุทธ์บางอย่างของการปรับแต่งเป้าหมายอย่างเป็นระบบ พวกเขาประสบความสำเร็จค่อนข้างมากตั้งแต่การประดิษฐ์ LCF ในปี 1970/80-I แต่พวกเขาสร้างสคริปต์พิสูจน์ที่ไม่สามารถอ่านได้อย่างฉาวโฉ่

ภาพรวมล่าสุดของแง่มุมบางส่วนของภาษาชั้นเชิงให้ไว้ในรายงานโดย A. Asperti et al, PLMMS 2009 ดูการประชุมเชิงปฏิบัติการหน้า 22

Mizar และ Isabelle / Isar ได้รับการกล่าวถึงว่าเป็นแนวทางทางเลือกในการให้เหตุผลเชิงโครงสร้างที่มนุษย์อ่านได้และพวกเขาไม่ได้ใช้กลยุทธ์ในแง่นั้น Mizar นั้นไม่เกี่ยวข้องกับตระกูล LCF ดังนั้นจึงไม่ทราบคำศัพท์เชิงกลยุทธ์นั้น Isabelle / Isar ได้รวมเอาประเพณีทางยุทธวิธีไว้บ้าง แต่ความคิดของวิธีการพิสูจน์นั้นมีโครงสร้างมากกว่าเล็กน้อย (ด้วยบริบทการพิสูจน์ของ Isar ที่ชัดเจนการบ่งชี้ที่ชัดเจนของข้อเท็จจริงที่ถูกล่ามโซ่และการหลีกเลี่ยงการแฮ็คเป้าหมายภายใน

การปฏิรูปและการพิจารณาอีกครั้งของภาษาชั้นเชิงได้เกิดขึ้นในทศวรรษที่ผ่านมา ตัวอย่างเช่นสาขาล่าสุดของชุมชน Coq โปรดปราน SSReflect (โดย G. Gonthier) แทน Ltac แบบดั้งเดิม


12

'ยุทธวิธี' ทำงานอย่างไรในผู้ช่วยที่ได้รับการพิสูจน์

ฉันสงสัยว่าคำตอบนี้จะเป็นบิตของการเดินเล่น

อันดับแรกมันไม่เพียงพอที่จะถามว่า "วิธีการทำงานของยุทธวิธีในผู้ช่วยพิสูจน์" เพราะพวกเขาทำงานต่างกันในผู้ช่วยพิสูจน์ที่แตกต่างกัน มีผู้ช่วยสองประเภทหลักที่ใช้ในปัจจุบัน: ผู้ที่ได้มาจาก LCF ดั้งเดิมเช่น Isabelle, HOL และ HOL light และผู้ช่วยในการพิสูจน์ตามทฤษฎีประเภทเช่น Coq และ Matita ในชั้นเรียนที่แตกต่างกันทั้งสองของผู้ช่วยพิสูจน์กลยุทธ์การทำงานในรูปแบบที่แตกต่างกันสะท้อนให้เห็นว่าสิ่งที่เกิดขึ้นภายใต้ฝากระโปรงในเช่น Isabelle ค่อนข้างแตกต่างกับสิ่งที่เกิดขึ้นภายใต้ฝากระโปรงในเช่น Matita

ถามตัวเองว่าเกิดอะไรขึ้นเมื่อเราพยายามพิสูจน์ข้อเสนอ P ใน Matita เราแนะนำ metavariable X ด้วยประเภท P จากนั้นเราเล่นเกมเพื่อที่เราจะปรับแต่ง X เพิ่มโครงสร้างมากขึ้นในเทอมที่ไม่สมบูรณ์จนกว่าเราจะได้คำศัพท์แลมบ์ดาสมบูรณ์ (เช่นไม่มี metavariables เพิ่มเติม) เมื่อเราครอบครองแลมบ์ดาครบกำหนดแล้วเราพิมพ์ตรวจสอบกับ P เพื่อให้แน่ใจว่ามันอยู่ในประเภทที่ต้องการ จากนั้นเราจะเห็นว่าใน Coq และ Matita ชั้นเชิงเป็นเพียงฟังก์ชั่นจากข้อกำหนดการพิสูจน์ที่ไม่สมบูรณ์ไปจนถึงข้อกำหนดการพิสูจน์ที่ไม่สมบูรณ์ซึ่งหวังว่าจะเพิ่มโครงสร้างเล็กน้อยให้กับคำหลังจากการประยุกต์ใช้ (การสังเกตนี้ทำให้เกิดแรงบันดาลใจ , Pientka และอื่น ๆ )

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

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

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

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

หลักฐานประกอบไปด้วยชุดของการใช้งานของกลยุทธ์พื้นฐานเหล่านี้ (หรือซับซ้อนมากขึ้นกลยุทธ์ที่ใหญ่กว่าซึ่งจะทำอีกครั้งโดยการคบด้วยกันกลยุทธ์ที่ง่ายขึ้นโดยใช้ฟังก์ชั่นการสั่งซื้อที่สูงขึ้น --- ในอิสซาเบล จะเห็นที่นี่ ) แตกต่างจากผู้ช่วยพิสูจน์ตามทฤษฎีประเภทไม่มีความจำเป็นในผู้ช่วยสไตล์ LCF เพื่อให้พยานคำพยานที่ชัดเจนอยู่รอบ ๆ ความถูกต้องของการพิสูจน์นั้นรับประกันโดยการก่อสร้างและเราเชื่อมั่นในวินัยการพิมพ์ของ ML (ผู้ช่วยหลายคนเช่น Isabelle ทำอย่างไรสร้างเงื่อนไขการพิสูจน์สำหรับการพิสูจน์)

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