ฉันสนใจคอมไพเลอร์ที่ผ่านการตรวจสอบอย่างเป็นทางการในทฤษฎีประเภทมาร์ติน - โลฟเช่น Coq / Agda ในขณะนี้ฉันได้เขียนตัวอย่างของเล่นเล็ก ๆ ฉันสามารถพิสูจน์ได้ว่าการเพิ่มประสิทธิภาพของฉันถูกต้อง ตัวอย่างเช่นสามารถลบส่วนที่มีศูนย์ได้เช่นนิพจน์เช่น "x + 0"
มีการปรับให้เหมาะสมที่ยากที่จะดำเนินการกับคอมไพเลอร์ปกติซึ่งจะเป็นตัวอย่างที่ดีหรือไม่? เป็นไปได้หรือไม่ที่จะพิสูจน์คุณสมบัติบางอย่างของโปรแกรมที่อนุญาตการเพิ่มประสิทธิภาพที่ไม่สามารถทำได้ด้วยคอมไพเลอร์ปกติ? (เช่นไม่มีข้อสรุปที่เป็นไปได้กับนักทฤษฎีบท)
ฉันจะสนใจในความคิดหรือตัวอย่างและอ้างอิงในหัวข้อ
คำถามที่เกี่ยวข้อง: การ พิสูจน์ความถูกต้องของคอมไพเลอร์
แก้ไข: ตามที่ Tsuyoshi ใส่ไว้ในข้อคิดเห็น: ฉันกำลังมองหาเทคนิคการปรับให้เหมาะสมซึ่งยากที่จะนำไปใช้ถ้าคอมไพเลอร์เขียนด้วย (พูด) C แต่ง่ายต่อการนำไปใช้ถ้าคอมไพเลอร์เขียนด้วย (พูด) Coq เมื่อ Agda รวบรวมไปยัง C (ผ่าน Haskell) มันเป็นไปได้ที่จะทำทุกอย่างที่เป็นไปได้ใน Agda เช่นกันใน C อาจเป็นประโยชน์เพียงอย่างเดียวของผู้พิสูจน์ทฤษฎีบทเช่น Coq / Agda คือคอมไพเลอร์และการปรับให้เหมาะสมสามารถตรวจสอบได้
edit2: ตามคำแนะนำของ Vijay DI เขียนสิ่งที่ฉันอ่านมา ฉันมุ่งเน้นไปที่ Xavier Leroy และโครงการ CompCert ที่ INRIA (มีกระดาษ 80 แผ่นที่อ่านได้ดีฉันคิดว่า) ความสนใจที่สองคืองานของ Anton Setzer ในรายการแบบโต้ตอบ ฉันคิดว่าบางทีงานของเขาอาจถูกใช้เพื่อพิสูจน์คุณสมบัติเกี่ยวกับโปรแกรม IO และ bisimulation ของโปรแกรม IO ขอบคุณที่พูดถึงซีเวลล์ ฉันเคยได้ยินคำพูดของเขาที่ว่า "นิทานจากป่า" ที่ ICFP และอ่านหนังสือพิมพ์ 2-3 เรื่องของเขา แต่ฉันไม่ได้ดูงานของเขาและเพื่อนร่วมงานของเขาโดยเฉพาะ
ฉันยังไม่ทราบว่าจะเริ่มหรือหาเอกสารเกี่ยวกับการปรับแต่งคอมไพเลอร์ให้เหมาะสม เช่นการเพิ่มประสิทธิภาพที่น่าสนใจที่จะดูในการตั้งค่าคอมไพเลอร์ที่ตรวจสอบแล้ว