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