คำถามติดแท็ก inductive-datatypes

1
คุณสมบัติเช่นการใช้หน่วยความจำของฟังก์ชันสามารถแสดงเป็นภาษาที่พิมพ์ได้หรือไม่?
สมมติว่าเราต้องการเหตุผลเกี่ยวกับคุณสมบัติของรหัสนอกเหนือจากสิ่งต่าง ๆ เช่นจำนวนทั้งสิ้นและความบริสุทธิ์ในการใช้งาน - เรายังใส่ใจเกี่ยวกับการใช้หน่วยความจำหรือความซับซ้อนของอัลกอริทึมของฟังก์ชัน สามารถทำได้ผ่านระบบการพิมพ์และเอฟเฟกต์แบบพึ่งพาหรือไม่

1
การอนุมานแบบอิงข้อ จำกัด พร้อมข้อมูลพีชคณิต
ฉันกำลังทำงานกับภาษาที่ใช้แสดงออกของลำดับวงศ์ตระกูล ML ดังนั้นจึงจำเป็นต้องมีการอนุมานแบบตามธรรมชาติ> :) ตอนนี้ฉันกำลังพยายามที่จะขยายการแก้ปัญหาตามข้อ จำกัด ไปสู่ปัญหาประเภทอนุมานตามการใช้งานง่าย ๆ ใน EOPL (Friedman และ Wand) แต่พวกเขามีประเภทข้อมูลพีชคณิตขั้นตอนที่สวยงาม สิ่งที่ฉันมีจนถึงตอนนี้ทำงานได้อย่างราบรื่น; ถ้าการแสดงออกeคือa + b, e : Int, และa : Int b : Intถ้าeเป็นการแข่งขัน match n with | 0 -> 1 | n' -> n' * fac(n - 1)`, ฉันถูกต้องสามารถอนุมานได้ว่าt(e) = t(the whole match expression), t(n) = …

1
อุปนัยเหนี่ยวนำคืออะไร?
อะไรคือสิ่งที่เหนี่ยวนำเหนี่ยวนำ ? ทรัพยากรที่ฉันพบคือ: หนังสือ HoTTในตอนท้ายของบทที่ 5.7 บทความของ nLab กระดาษที่เรียกว่าคำจำกัดความอุปนัย - อุปนัย โพสต์บล็อกนี้ยังกล่าวถึงประเภทอุปนัย - อุปนัย การอ้างอิงสองรายการแรกสั้นเกินไปสำหรับฉันและการอ้างอิงสองรายการหลังเกินไปทางเทคนิค มีใครอธิบายได้บ้างในเทอมของคนธรรมดา? มันจะดีกว่าถ้ามีรหัส Agda

2
วิธีการรับตัวกำจัดที่พิมพ์ได้อย่างพึ่งพา?
ในการโปรแกรมแบบพิมพ์อย่างพึ่งพามีสองวิธีหลักในการย่อยสลายข้อมูลและดำเนินการเรียกซ้ำ: การจับคู่รูปแบบขึ้นอยู่กับ : คำจำกัดความของฟังก์ชั่นจะได้รับเป็นคำสั่งหลาย ๆ การรวมทำให้แน่ใจว่าทุกกรณีที่ถูกละเว้นนั้นเป็นไปไม่ได้และตัวแก้ไขภายนอกช่วยให้มั่นใจว่าการเรียกซ้ำนั้นได้รับการพิสูจน์แล้ว กำจัด : ประเภทข้อมูลอุปนัยแต่ละมีค่าคงที่เกี่ยวข้องE Dซึ่งทำหน้าที่เป็นหลักการเหนี่ยวนำและเป็นฟังก์ชันเวียนที่สลายตัวค่าประเภทD สิ่งเหล่านี้มีความละเอียดมากกว่า แต่มีความได้เปรียบในการรวม (ทุกกรณีถูกปกคลุมด้วยE D ) และยกเลิกโดยการก่อสร้างDDDEDEDE_DDDDEDEDE_D ผมเคยเห็นกำจัดสำหรับประเภทข้อมูลทั่วไปเช่นที่กำจัดเป็นพื้นอุปนัยทางคณิตศาสตร์หรือL ฉันs Tที่กำจัดเป็นพื้นพับยังไม่มีข้อความทียังไม่มีข้อความaเสื้อNatL ฉันs TLผมsเสื้อList ฉันได้อ่านเอกสารหลายฉบับเกี่ยวกับการจับคู่รูปแบบขึ้นอยู่กับและหลายคนอ้างถึงทฤษฎีประเภทที่สามารถกำหนดประเภทข้อมูลและทฤษฎีกำจัด ยกตัวอย่างเช่นการขจัดรูปแบบการจับคู่ขึ้นอยู่กับอธิบายวิธี UTT จะขึ้นอยู่กับเครื่องกำจัดและวิธีการจับคู่รูปแบบสามารถแปลงไปกำจัดในการปรากฏตัวของความจริงKความเข้าใจของฉันคือว่าเมื่อมีการกำหนดประเภทข้อมูลทฤษฎีให้ตัวกำจัดKKK สิ่งที่ฉันไม่พบ (หรืออย่างน้อยไม่รู้จักถ้าฉันเห็นมัน) เป็นคำอธิบายที่ดีว่าใครจะได้รับผู้กำจัดทั้งประเภทและความหมายของพวกเขา ใครบางคนสามารถชี้ให้ฉันอ้างอิงถึงวิธีการที่จะได้รับตัวกำจัดจากคำจำกัดความของประเภทข้อมูลหรือไม่?

2
positivity ที่เข้มงวด
จากการอ้างอิงนี้: positivity ที่เข้มงวด เงื่อนไข positivity ที่เข้มงวดออกกฎการประกาศเช่น data Bad : Set where bad : (Bad → Bad) → Bad A B C -- A is in a negative position, B and C are OK ทำไม A ถึงเป็นลบ ยังอนุญาตให้ใช้ B ทำไม ฉันเข้าใจว่าทำไมอนุญาตให้ C

1
ประเภทตนเองทำให้แคลคูลัสของการสร้างอุปนัยล้าสมัยหรือไม่?
ประเภทตัวเองเป็นส่วนขยายของแคลคูลัสของการก่อสร้าง [1] ที่อนุญาตให้ภาษาในการแสดงประเภทข้อมูลเกี่ยวกับพีชคณิตเข้ารหัสผ่านการเข้ารหัสสก็อต Scott Encoding ให้ความสามารถในการจับคู่รูปแบบO(1)ซึ่งเป็นหนึ่งในแรงจูงใจหลักสำหรับการรวมคำจำกัดความอุปนัยไว้ใน CC แต่ประเภทของตัวเองถูกสร้างขึ้นมาเพื่อทฤษฎีพื้นฐานที่เรียบง่ายและสง่างามมากและดูเหมือนจะไม่ทรงพลังเลย ประเภทตนเองภายใต้มุมมองทางทฤษฎีทำให้ CIC ล้าสมัยหรือยังมีแง่มุมใดบ้างที่ CIC นั้นเป็นที่ชื่นชอบในความสัมพันธ์กับ Self Tyes? [1] http://staff.computing.dundee.ac.uk/pengfu/document/talks/mvd-2012.pdf

3
ความหลากหลายและประเภทข้อมูลอุปนัย
ฉันอยากรู้. ฉันได้ทำงานกับประเภทข้อมูลนี้ในOCaml : type 'a exptree = | Epsilon | Delta of 'a exptree * 'a exptree | Omicron of 'a | Iota of 'a exptree exptree ซึ่งสามารถจัดการได้โดยใช้ฟังก์ชั่นวนซ้ำอย่างชัดเจน (คุณลักษณะที่ถูกเพิ่มเข้ามาเมื่อไม่นานมานี้) ตัวอย่าง: let rec map : 'a 'b. ('a -> 'b) -> 'a exptree -> 'b exptree = fun f -> begin …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.