คำถามติดแท็ก curry-howard

2
ผู้ประสานงาน Y ขัดแย้งกับจดหมายโต้ตอบ Curry-Howard หรือไม่?
อ Y Combinator มีชนิดโดย Curry-Howard Correspondence เพราะประเภทเป็นที่อยู่อาศัยมันจะต้องสอดคล้องกับทฤษฎีบทที่แท้จริง อย่างไรก็ตามเป็นจริงเสมอดังนั้นมันจึงดูเหมือนว่าชนิดของ combinator Y นั้นสอดคล้องกับทฤษฎีบทซึ่งไม่จริงเสมอไป สิ่งนี้จะเป็นอย่างไร( → ) → →( a → a ) → a(a→a)→a(a \rightarrow a) \rightarrow a( a → a ) → a(a→a)→a(a \rightarrow a) \rightarrow aa → aa→aa \rightarrow aaaa

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

1
มีทฤษฎีมอร์ฟ (isomorphism) ระหว่างหมวดหมู่ย่อยกับพีชคณิตเชิงสัมพันธ์หรือไม่?
มันมาจากมุมมองข้อมูลขนาดใหญ่ โดยทั่วไปเฟรมเวิร์กจำนวนมาก (เช่น Apache Spark) "ชดเชย" ขาดการดำเนินการเชิงสัมพันธ์ด้วยการจัดหาอินเทอร์เฟซเหมือน Functor / Monad และมีการเคลื่อนไหวที่คล้ายกันต่อการแปลง cat-to-SQL (Slick in Scala) ตัวอย่างเช่นเราต้องการการเข้าร่วมที่เป็นธรรมชาติ (สมมติว่าไม่มีการซ้ำซ้อนกับดัชนี) สำหรับการคูณเวกเตอร์องค์ประกอบที่ชาญฉลาดจากมุมมอง SQL ซึ่งอาจถือได้ว่าเป็นzip + map(multiply) (Spark's MLib แต่มีอยู่แล้วElementwiseProduct)ในแอปพลิเคชันของทฤษฎีหมวดหมู่ เพียงแค่พูด (ตัวอย่างต่อไปนี้อยู่ใน Scala): subcase อ้างอิงของเข้าร่วมอาจจะคิดว่าเป็น functor applicative (คอลเลกชันเรียงมากกว่า) ซึ่งในทางกลับกันมันจะช่วยให้เราzip: ->List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b)) (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2)ยิ่งไปกว่านั้นเราสามารถชักจูงให้ผู้อื่นเข้าร่วมโดยสมมติว่ามีgroupByการดำเนินการล่วงหน้า การเข้าร่วมและการเลือกอื่น …

1
ระบบประเภทสามารถทำหน้าที่เป็นผู้ช่วยที่พิสูจน์สำหรับฟังก์ชั่นต่างประเทศได้หรือไม่?
ระบุว่า: ภาษาที่มีระบบการพิมพ์ที่แสดงออกมาก (เช่นIdris ) สามารถมีกลไกการหลบหนีเช่นอินเตอร์เฟสของฟังก์ชันต่างประเทศ / unsafePerformIO มีผู้ช่วยที่พิสูจน์ได้ซึ่งสามารถใช้เพื่อพิสูจน์คุณสมบัติบางอย่างของโปรแกรมที่เขียนในภาษาที่ไม่มีระบบชนิดที่สามารถแสดงคุณสมบัติเหล่านั้นได้ การโต้ตอบของ Curry – Howard แสดงให้เห็นว่าการใช้งานการตรวจสอบประเภทของฟังก์ชันที่มีประเภทที่กำหนดสำเร็จนั้นเป็นเครื่องพิสูจน์ว่าประเภทนั้นแสดงออกมาอย่างไร หนึ่งสามารถแสดงหลักฐานที่ไม่น่าสนใจของคุณสมบัติของรหัสภาษาต่างประเทศในระบบชนิดของภาษาพื้นเมือง? ตัวอย่างเช่นสมมติว่าฉันมีฟังก์ชั่น C ที่เรียกว่า stable_qsort ที่เรียงลำดับตัวเลขในวิธีที่ชาญฉลาดและมีประสิทธิภาพมากในขณะที่รักษาลำดับขององค์ประกอบที่เท่ากันอยู่แล้วและโปรแกรม Idris ที่เรียก stable_qsort ผ่าน FFI ของมัน ฟังก์ชั่น C ฉันสามารถพิสูจน์ได้ว่าฟังก์ชั่นไม่ได้เรียงลำดับองค์ประกอบที่เท่ากันสำหรับอินพุตทั้งหมดในรหัส Idris ของฉันแทนที่จะใช้ตัวช่วยพิสูจน์แยกต่างหากหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.