คำถามติดแท็ก dependent-types

คุณลักษณะที่ทับซ้อนกันของทฤษฎีประเภทและระบบประเภท

3
ประเภทที่อ้างถึงเทียบกับประเภทการปรับแต่ง
มีใครอธิบายความแตกต่างระหว่างชนิดพึ่งพาและประเภทการปรับแต่งได้หรือไม่ ตามที่ฉันเข้าใจประเภทการปรับแต่งจะมีค่าทั้งหมดของชนิดที่ทำให้ภาคแสดง มีคุณสมบัติของชนิดพึ่งพาซึ่งแยกแยะพวกเขาหรือไม่ ถ้ามันช่วยได้ฉันเจอประเภทการกลั่นผ่านโครงการ Liquid Haskell และประเภทที่ต้องพึ่งพาผ่าน Coq และ Agda ที่กล่าวว่าฉันกำลังมองหาคำอธิบายว่าทฤษฎีแตกต่างกันอย่างไร

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

2
ไอดริสไม่สามารถทำอะไรได้โดยยอมแพ้ทัวริงครบถ้วน
ฉันรู้ว่าไอดริสมีประเภทตาม แต่ไม่สมบูรณ์ สิ่งใดที่ไม่สามารถทำได้โดยการยกเลิกความสมบูรณ์ของทัวริงและสิ่งนี้เกี่ยวข้องกับการมีประเภทตาม ฉันเดาว่านี่เป็นคำถามที่เฉพาะเจาะจง แต่ฉันไม่ทราบจำนวนมากเกี่ยวกับประเภทพึ่งพาและระบบประเภทที่เกี่ยวข้อง

1
อะไรคือระบบพิมพ์ที่แข็งแกร่งที่รู้จักกันดีที่สุดซึ่งอนุมานได้?
เป็นที่ทราบกันดีว่าการอนุมานของ Hindley-Milner (การพิมพ์ -calculus พร้อม polymorphism) นั้นมีการอนุมานประเภทที่สามารถตัดสินใจได้: คุณสามารถสร้างชนิดหลักการสำหรับโปรแกรมใด ๆ โดยไม่มีคำอธิบายประกอบใด ๆλλ\lambda การเพิ่มประเภทของสไตล์ Haskell ดูเหมือนจะรักษาความสามารถในการถอดรหัสได้ แต่การเพิ่มเติมเพิ่มเติมทำให้การอนุมานโดยไม่มีการเพิ่มความคิดเห็นไม่สามารถอธิบายได้ (ตระกูลตระกูล, GADTs, ชนิดพึ่งพา, ประเภท Rank, N, Systemเป็นต้น)ωω\omega ฉันสงสัยว่า: อะไรคือระบบพิมพ์ที่แข็งแกร่งที่สุดที่มีการอนุมานได้อย่างสมบูรณ์? มันจะอยู่ที่ไหนสักแห่งระหว่าง Hindley-Milner (decidable อย่างสมบูรณ์) และ dependent-types (undecidable สมบูรณ์) มีแง่มุมของ DT ที่สามารถเพิ่มซึ่งรักษาความสามารถในการตัดสินใจอนุมานได้หรือไม่? มีงานวิจัยใดที่ทำเพื่อดูว่าสามารถผลักดันสิ่งนี้ได้ไกลแค่ไหน? ฉันรู้ว่าไม่มีระบบที่แข็งแกร่งที่สุดเพียงระบบเดียวที่มีความเป็นไปได้ที่จะเกิดการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ที่ไม่สิ้นสุดและเพิ่มขึ้นซึ่งสามารถเพิ่มเข้าไปในการอนุมาน HM แต่มีแนวโน้มว่าผู้สมัครที่ใช้งานได้ไม่กี่คนของระบบที่ถูกค้นพบ แก้ไข: เนื่องจากไม่มีระบบที่ "แข็งแกร่งที่สุด" ฉันจะยอมรับคำตอบที่แสดงถึงระบบที่น่าทึ่งซึ่งขยาย Hindley Milner ด้วยการอนุมานที่แน่นอน …

1
หาก (λ x. xx) มีประเภทระบบประเภทนั้นจะไม่สอดคล้องกันหรือไม่?
หากระบบประเภทสามารถกำหนดประเภทให้กับλ x . x xหรือไม่ยุติ(λx . x x) (λ x . x x)ระบบนั้นจะไม่สอดคล้องกันเป็นผลหรือไม่ ทุกประเภทอยู่ภายใต้ระบบนั้นหรือไม่ คุณสามารถพิสูจน์ได้ว่าเป็นเท็จ?

1
ความแตกต่างระหว่างชนิดที่อ้างอิง, ประเภทการปรับแต่งและ Hoare Logic
ฉันรู้ทฤษฎีประเภทพึ่งพาน้อย จากวิกิพีเดีย: ชนิดที่ขึ้นต่อกันคือชนิดที่คำจำกัดความขึ้นอยู่กับค่า และจากหลักสูตรทฤษฎีของฉันฉันจำได้ว่าประเภทที่พึ่งพาคือ: ตระกูลของชนิดที่จัดทำดัชนีตามประเภท แต่ฉันมีความสับสนเกี่ยวกับประเภทพึ่งพาและประเภทการปรับแต่งและตรรกะ hoare เนื่องจากจากประเภทDepeneent vs Refinement ประเภทการปรับแต่งดูเหมือนว่าตรรกะของ Hoare มีประเภทการปรับแต่งพลังงานเพิ่มเติมอะไรอีกนอกเหนือจากการอนุญาตให้แจ้งล่วงหน้าว่าจะต้องได้รับความพึงพอใจ (ซึ่งคล้ายกับ Hoare Logic) มีอะไรเพิ่มเติมที่ประเภทการพึ่งพาให้เปรียบเทียบกับประเภทการปรับแต่ง และประเภท Dependent นั้นมีประสิทธิภาพมากกว่าประเภทการปรับแต่ง + ตัวแก้ Sat / Constraint ทุกคนสามารถล้างอากาศด้วยตัวอย่าง

2
ทฤษฎีประเภทสัญชาตญาณ "น้อยที่สุด"?
ฉันประหลาดใจที่ผู้คนเพิ่มประเภทใหม่ ๆ ในทฤษฎีประเภท แต่ไม่มีใครพูดถึงทฤษฎีขั้นต่ำสุด (หรือฉันไม่สามารถหามันได้) ฉันคิดว่านักคณิตศาสตร์ชอบสิ่งที่น้อยที่สุดใช่ไหม? ถ้าฉันเข้าใจอย่างถูกต้องในทฤษฎีประเภทที่มีการคาดคะเนProp, λ-abstraction และΠ-types เพียงพอ โดยการพูดอย่างพอเพียงฉันหมายความว่ามันสามารถใช้เป็นตรรกะปรีชาญาณ ประเภทอื่น ๆ สามารถกำหนดได้ดังต่อไปนี้: ⊥=defΠα:Prop.α¬A=defA→⊥A∧B=defΠC:Prop.(A→B→C)→CA∨B=defΠC:Prop.(A→C)→(B→C)→C∃x:S(P(x))=defΠα:Prop.(Πx:S.Px→α)→α⊥=defΠα:Prop.α¬A=defA→⊥A∧B=defΠC:Prop.(A→B→C)→CA∨B=defΠC:Proพี.(A→ค)→(B→ค)→ค∃x:S(P(x))=dอีฉΠα:PRโอพี.(Πx:S.Px→α)→α \bot \stackrel{def}{=} \Pi \alpha: Prop. \alpha \\ \neg A \stackrel{def}{=} A \to \bot \\ A \land B \stackrel{def}{=} \Pi C: Prop. (A \to B \to C) \to C \\ A \lor B \stackrel{def}{=} \Pi C: …

3
เส้นทางการเหนี่ยวนำที่สร้างสรรค์?
ฉันกำลังอ่านหนังสือ HoTTและฉันมีช่วงเวลายากลำบากในการบอกทาง เมื่อฉันดูประเภทในส่วน1.12.1 : ผมไม่มีปัญหาการทำความเข้าใจสิ่งที่หมายถึง (ผมเพิ่งได้เขียนประเภทจากหน่วยความจำเพื่อตรวจสอบว่า)ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),\text{ind}_{=_A}:\prod_{C:\prod\limits_{x,y:A}(x=_Ay)\to \mathcal{U}} \left( \left(\prod_{x:A}C(x,x,\text{refl}_x)\right) \to \prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p) \right), สิ่งที่ฉันมีปัญหาคือคำสั่งถัดไปมาก: ความประทับใจครั้งแรกของฉันคือการแสดงออกครั้งสุดท้ายนี้ไม่ได้กำหนดฟังก์ชั่นผลลัพธ์ f : ∏ x , y : A ∏ p : x = A y C ( x , y , p ) ,with the equalityind=A(C,c,x,x,reflx):≡c(x)with the equalityind=A(C,c,x,x,reflx):≡c(x)\text{with the equality}\quad \text{ind}_{=_A}(C,c,x,x,\text{refl}_x):\equiv c(x)f:∏x,y:A∏p:x=AyC(x,y,p),f:∏x,y:A∏p:x=AyC(x,y,p),f:\prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p), แต่เพียงระบุคุณสมบัติของมัน นั่นคือตรงกันข้ามกับตัวอย่างก่อนหน้าของหลักการการเหนี่ยวนำ …

2
ฉันสามารถมี "ประเภท coproduct ที่พึ่งพา"
ฉันกำลังอ่านหนังสือ HoTTและฉันมีคำถาม (อาจไร้เดียงสามาก) เกี่ยวกับเนื้อหาในบทที่หนึ่ง แนะนำบทประเภทฟังก์ชั่น แล้วเอามันโดยการทำBขึ้นอยู่กับx : B : → U ,f:A→Bf:A→B f:A\to B BBBx:Ax:Ax:A และที่เรียกว่าประเภทฟังก์ชั่นขึ้นอยู่กับB:A→U,g:∏x:AB(x)B:A→U,g:∏x:AB(x)B:A\to\mathcal{U},\qquad g:\prod_{x:A}B(x) ย้ายบทที่แล้วแนะนำประเภทของผลิตภัณฑ์ แล้วเอามันโดยการทำBขึ้นอยู่กับx : B : → U ,f:A×Bf:A×B f:A\times BBBBx:Ax:Ax:A และที่เรียกว่าประเภทคู่ขึ้นB:A→U,g:∑x:AB(x)B:A→U,g:∑x:AB(x)B:A\to\mathcal{U},\qquad g:\sum_{x:A}B(x) ฉันเห็นรูปแบบที่นี่แน่นอน บทต่อไปจะแนะนำประเภท coproduct และ ... combobreaker ... ไม่มีการพูดถึงรุ่นที่ขึ้นต่อกันของประเภทนี้f:A+Bf:A+B f:A+B มีข้อ จำกัด พื้นฐานบางประการหรือไม่เกี่ยวข้องกับหัวข้อของหนังสือเล่มนี้หรือไม่? ในกรณีใด ๆ บางคนสามารถช่วยฉันด้วยสัญชาตญาณว่าทำไมฟังก์ชั่นและประเภทผลิตภัณฑ์? อะไรที่ทำให้ทั้งสองมีความพิเศษเพื่อที่พวกเขาจะได้รับการวางนัยให้เป็นประเภทที่ขึ้นต่อกันแล้วใช้ในการสร้างทุกอย่างขึ้นมา?

1
อะไรคือความแตกต่างระหว่างชุดและประเภทใน Coq [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Computer Science Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ประเภท AFAIU สามารถเป็นSetองค์ประกอบที่มีโปรแกรมหรือpropositionองค์ประกอบที่มีการพิสูจน์ ดังนั้นตามความเข้าใจนี้: Inductive prod (X Y: Type) : Set := | pair: X -> Y -> prod X Y. รหัสต่อไปนี้ควรรวบรวม แต่มันไม่ได้เกิดจากข้อผิดพลาดดังต่อไปนี้ ถ้าฉันเปลี่ยนSetด้วยTypeหรืออื่น ๆTypeด้วยSetมันรวบรวมดี ใครสามารถช่วยฉันเข้าใจว่าข้อผิดพลาดต่อไปนี้หมายถึงอะไร ฉันพยายามสอนตัวเอง Coq โดยใช้หนังสือ Software Foundations ข้อผิดพลาด: Error: Large non-propositional inductive types must be …

2
การลดผลิตภัณฑ์ใน HoTT ไปยังการเข้ารหัสของโบสถ์ / สกอตต์
ดังนั้นฉันกำลังจะไปถึงแม้ว่าหนังสือ HoTT กับบางคน ฉันอ้างว่าประเภทอุปนัยส่วนใหญ่ที่เราเห็นจะสามารถลดลงเป็นประเภทที่มีเพียงประเภทของฟังก์ชันและจักรวาลที่ขึ้นอยู่กับชนิดของ recuror เป็นแรงบันดาลใจสำหรับประเภทที่เทียบเท่า ฉันเริ่มวาดภาพว่าฉันคิดว่าสิ่งนี้จะได้ผลอย่างไรและหลังจากสะดุดฉันก็มาถึงสิ่งที่ฉันคิดว่าเป็นคำตอบ ( ⋅ , ⋅ ) ≡ λ : λ ข: B λ C : U λ กรัม: → B → C g ( a ) ( b ) ฉันn d⋅×⋅≡∏A,B,C:U(A→B→C)→C⋅×⋅≡∏A,B,C:U(A→B→C)→C\cdot \times \cdot \equiv \prod_{A, B, C : \mathcal{U}} (A \to B \to C) …

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

1
คืออะไรในแคลคูลัสของการก่อสร้างหรือไม่
ฉันกำลังมองหาที่แคลคูลัสของการก่อสร้างและสถานที่ในแลมบ์ดา Cube ถ้าผมเข้าใจอย่างถูกต้องแกนของลูกบาศก์แต่ละคนสามารถจะคิดว่าเป็นการเพิ่มการดำเนินการอื่นที่เกี่ยวข้องกับประเภทที่จะแคลคูลัสเพียงแค่พิมพ์, \แกนแรกจะเพิ่มตัวดำเนินการชนิดต่อคำ, ตัวดำเนินการชนิดต่อชนิดที่สองและตัวพิมพ์ที่สามที่ขึ้นอยู่กับหรือตัวดำเนินการแบบระยะต่อชนิด CoC มีทั้งหมดสามอย่างλ→λ→\lambda_\to อย่างไรก็ตาม CoC แนะนำคำว่าและระบุว่าตามกฎการอนุมานแต่ไม่ได้ใช้ ฉันเข้าใจว่ามันมีไว้สำหรับข้อเสนอที่บาร์นี้ แต่ข้อเสนอเชิงตรรกะไม่ได้กำหนดไว้ในแง่ของมันPropPropPropProp:TypeProp:TypeProp : Type คุณช่วยอธิบายให้ฉันฟังได้ว่าสำหรับอะไรที่ไหน / เมื่อไหร่และอธิบายในแง่ของแกนของลูกบาศก์ (ถ้าเป็นไปได้ที่จะทำเช่นนั้น)PropPropProp

2
จักรวาลในทฤษฎีชนิดพึ่งพา
ฉันกำลังอ่านเกี่ยวกับทฤษฎีประเภทพึ่งพาในหนังสือออนไลน์ทฤษฎีประเภทโฮโมโทรป ในส่วนที่ 1.3 ของทฤษฎีประเภทบทจะแนะนำแนวคิดของลำดับชั้นของจักรวาล :โดยที่U0:U1:U2:⋯U0:U1:U2:⋯\mathcal{U}_0 : \mathcal{U}_1 : \mathcal{U}_2 : \cdots ทุกจักรวาลเป็นองค์ประกอบของจักรวาลถัดไป1} ยิ่งกว่านั้นเราคิดว่าเอกภพของเราสะสมนั่นคือองค์ประกอบทั้งหมดของจักรวาลเป็นองค์ประกอบของจักรวาลU ฉัน+ 1ฉันทีเอช (ฉัน+1 ) ทีเอชUiUi\mathcal{U}_iUi+1Ui+1\mathcal{U}_{i+1}ithithi^{\mathrm{th}}(i+1)th(i+1)th(i+1)^{\mathrm{th}} แต่เมื่อฉันดูกฎการก่อตัวของประเภทต่าง ๆ ในภาคผนวก A ในแวบแรกถ้าจักรวาลปรากฏขึ้นเหนือแถบเป็นหลักฐานจักรวาลเดียวกันจะปรากฏขึ้นด้านล่าง ตัวอย่างเช่นกฎการสร้างประเภท coproduct: Γ⊢A:UiΓ⊢B:UiΓ⊢A+B:Ui(+-FORM)Γ⊢A:UiΓ⊢B:UiΓ⊢A+B:Ui(+-FORM)\dfrac{\Gamma \vdash A : \mathcal{U}_i \quad \Gamma \vdash B : \mathcal{U}i}{\Gamma \vdash A + B : \mathcal{U}_i}(+\mbox{-}FORM) ดังนั้นคำถามของฉันคือทำไมลำดับชั้นจึงจำเป็น? ภายใต้สถานการณ์ใดบ้างที่คุณต้องกระโดดจากเอกภพไปยังลำดับที่สูงกว่า มันเป็นเรื่องที่ไม่ชัดเจนกับผมว่าได้รับการรวมกันของใด ๆคุณสามารถจบลงด้วยประเภทที่เป็นไม่ได้ใน\ในรายละเอียดเพิ่มเติม: กฎการก่อตัวในส่วนของภาคผนวก A.2.4, A.2.5, A.2.6, …

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.