ความหมายของชุดย่อยขนาดใหญ่ของ OCaml เรียกว่าOCamllightเป็นกรงเล็บใน HOL โดย Owens เมื่อหลายปีก่อน เมื่อเร็ว ๆ นี้ประเภทความหมายของทฤษฎีเซตย่อยขนาดเล็กของ OCaml ได้ดำเนินการใน Nuprl โดยKreitz เฮย์เดนและ Hickey
มีการพัฒนาที่คล้ายกันใน Coq หรือไม่?
ความหมายของชุดย่อยขนาดใหญ่ของ OCaml เรียกว่าOCamllightเป็นกรงเล็บใน HOL โดย Owens เมื่อหลายปีก่อน เมื่อเร็ว ๆ นี้ประเภทความหมายของทฤษฎีเซตย่อยขนาดเล็กของ OCaml ได้ดำเนินการใน Nuprl โดยKreitz เฮย์เดนและ Hickey
มีการพัฒนาที่คล้ายกันใน Coq หรือไม่?
คำตอบ:
คุณเคยเห็นวิทยานิพนธ์ระดับปริญญาเอกของอาเธอร์ชาร์ตชอฉ้อโกง, สูตรลักษณะเฉพาะสำหรับการตรวจสอบโปรแกรมแบบมีกลไกหรือไม่?
แทนที่จะสร้างระบบประเภทและความหมายขั้นตอนเล็ก ๆ เป็นความสัมพันธ์เชิงอุปนัยเขาให้เทคนิคสำหรับการแปลงโปรแกรม Caml เป็นสูตรลักษณะเฉพาะ นี้มีพื้นทั่วไปของความหมายหม้อแปลงกริยาที่จะสนับสนุนชุดย่อยขนาดใหญ่มากของ Ocaml - Obj.magic
สะดุดตารวมทั้งบรรยากาศที่ไม่ปลอดภัยเช่น อ้างจากวิทยานิพนธ์ของเขา:
ฉันได้มุ่งเน้นไปที่ชุดย่อยของการเขียนโปรแกรม OCaml ซึ่งเป็นภาษาการเขียนโปรแกรมระดับสูงที่ต่อเนื่องตามค่าโทร การนำ CFML ไปใช้ในปัจจุบันรองรับ core calcul-แคลคูลัสซึ่งรวมถึงฟังก์ชั่นที่สูงกว่าการเรียกซ้ำการเรียกซ้ำแบบร่วมกัน มันรองรับสิ่งอันดับ, ตัวสร้างข้อมูล, การจับคู่รูปแบบ, เซลล์อ้างอิง, ระเบียนและอาร์เรย์ ฉันให้ห้องสมุด Caml เพิ่มเติมที่เพิ่มการสนับสนุนสำหรับพอยน์เตอร์พอยน์เตอร์และการอัปเดตที่รัดกุม
มันเป็นวิธีที่น่าสนใจมากหากคุณต้องการพิสูจน์ว่าโปรแกรม Caml นั้นถูกต้อง (น้อยกว่านั้นถ้าคุณสนใจ metatheory ของมัน)
คุณอาจสนใจ Jacques Garrigue ในการใช้ ML ที่ได้รับการรับรองด้วย Polymorphism แบบโครงสร้างและแบบเรียกซ้ำ (Recursive Types ) ซึ่งกำหนดความสมบูรณ์ของความหมายแบบคงที่และไดนามิกและคุณสมบัติของการอนุมานประเภทสำหรับภาษา ML ด้วย (recursion และ) polymorphism เชิงโครงสร้าง มุมที่สูงขึ้นของ OCaml (ตัวแปรหลากหลายและประเภทวัตถุ)
ที่กล่าวว่างานนี้มีวัตถุประสงค์เพื่อตรวจสอบความสมบูรณ์ของส่วนที่สูงขึ้นของระบบประเภทมากกว่าที่ครอบคลุมชุดคุณลักษณะของโปรแกรม OCaml ที่มีอยู่ ฉันคิดว่าในแง่ของการพยายามพิสูจน์ความถูกต้องของโปรแกรม OCaml ที่มีอยู่ CFML จะเป็นตัวเลือกที่ดีกว่า