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

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

5
ทฤษฎีประเภทพึ่งพาได้ง่ายที่สุดที่ฉันสามารถเรียนรู้คืออะไร?
ฉันสนใจที่จะเข้าใจอย่างถ่องแท้เกี่ยวกับการพิมพ์แบบพึ่งพา ฉันได้อ่านมากที่สุดของ TaPL และอ่าน (ถ้าไม่ดูดซึมได้อย่างเต็มที่) 'ขึ้นอยู่กับประเภทในATTaPL ฉันยังอ่านและอ่านบทความต่าง ๆ ที่เกี่ยวข้อง การอภิปรายเชิงทฤษฎีหลายประเภทดูเหมือนว่าจะมุ่งเน้นไปที่การเพิ่มคุณสมบัติที่เพิ่มขึ้นให้กับระบบประเภทก่อนหน้านี้ไม่ใช่ "การวางนัยทั่วไปขนาดใหญ่ถัดไปคืออะไรจากระบบประเภท X" ประเภทที่อ้างถึงดูเหมือนจะเป็นลักษณะทั่วไปขนาดใหญ่ต่อไปจาก System F แต่ฉันยังไม่พบภาษาที่ใช้งานง่าย การอ้างอิงหลายอย่างเกี่ยวกับแคลคูลัสของการสร้าง (อุปนัย) ทำให้ฉันคิดว่า CoC เป็นภาษานั้น แต่คำอธิบายของภาษาที่ฉันได้เห็นดูเหมือนจะไม่ชัดเจนหรือใช้งานง่ายสำหรับฉัน ฉันคาดหวัง / คาดเดาภาษาดังกล่าวจะมีคุณสมบัติดังนี้: (และโปรดแจ้งให้เราทราบหากมีสิ่งใดที่กระโดดออกมาโดยเฉพาะอย่างยิ่งสับสนหรือไม่สมจริง) สรุปนามธรรม (สามารถมีฟังก์ชั่นจากโดเมนใด ๆ ในลำดับชั้นของประเภทเพื่ออื่น ๆ ชนิด -> คำ, คำ -> ประเภท '' 'ฯลฯ ) มีลำดับชั้นการพิมพ์ที่ไม่ จำกัด (คำ: ประเภท: ประเภท ': ประเภท' ': ... ) …

3
ทำไม Coq ถึงมี Prop?
Coq มีข้อเสนอประเภทข้อพิสูจน์ที่ไม่เกี่ยวข้องซึ่งถูกทิ้งในระหว่างการแยก อะไรคือสาเหตุของการมีสิ่งนี้หากเราใช้ Coq สำหรับการพิสูจน์เท่านั้น Prop นั้นไม่จำเป็นดังนั้น Prop: Propอย่างไรก็ตาม Coq จะ infers ดัชนีของจักรวาลโดยอัตโนมัติและเราสามารถใช้ Type (i) แทนได้ทุกที่ ดูเหมือนว่า Prop จะทำให้ทุกอย่างซับซ้อนขึ้นมาก ฉันอ่านว่ามีเหตุผลทางปรัชญาในการแยก Set และ Prop ในหนังสือของ Luo แต่ฉันไม่พบพวกเขาในหนังสือ พวกเขาคืออะไร

4
ความสัมพันธ์ระหว่างสัญญาและการพิมพ์ที่ขึ้นอยู่กับ
ฉันอ่านบทความเกี่ยวกับประเภทและสัญญาการเขียนโปรแกรม จากส่วนใหญ่ของสิ่งที่ฉันได้อ่านดูเหมือนว่าสัญญาจะถูกตรวจสอบข้อ จำกัด แบบไดนามิกและประเภทขึ้นอยู่กับการตรวจสอบแบบคงที่ มีเอกสารบางฉบับที่ทำให้ฉันคิดว่าเป็นไปได้ที่จะมีสัญญาที่ตรวจสอบบางส่วนแบบคงที่: การตรวจสอบประเภทลูกผสม (C. Flanagan - 2006) การรวมประเภทและสัญญาแบบผสมผสาน (J. Gronski, C. Flanagan - 2007) ด้วยสิ่งนี้ดูเหมือนว่าจะมีการทับซ้อนจำนวนมากและการจัดประเภทสัญญาของฉันกับประเภทที่ขึ้นต่อกันเริ่มหายไป มีบางอย่างที่ลึกซึ้งยิ่งขึ้นในแนวคิดที่ฉันขาดหายไปหรือไม่? หรือเป็นเพียงหมวดหมู่คลุมเครือจริง ๆ ของการแสดงแนวคิดพื้นฐานเดียวกันหรือไม่

2
ADT, GADTs และอุปนัยประเภทต่างกันอย่างไร
ใคร ๆ ก็สามารถอธิบายความแตกต่างระหว่าง: ประเภทข้อมูลพีชคณิต (ซึ่งฉันคุ้นเคยกับ) ประเภทข้อมูลพีชคณิตทั่วไป (สิ่งที่ทำให้พวกเขา generalized?) ประเภทอุปนัย (เช่น Coq) (โดยเฉพาะอย่างยิ่งอุปนัยประเภท) ขอบคุณ

2
ทำไมลำดับชั้นประเภทไม่สิ้นสุด?
Coq, Agda และ Idris มีลำดับชั้นชนิดไม่ จำกัด (ประเภท 1: ประเภท 2: ประเภท 3: ... ) แต่ทำไมไม่ทำอย่างนั้นแทนλCระบบในแลมบ์ดาคิวบ์ที่อยู่ใกล้กับแคลคูลัสของสิ่งก่อสร้างซึ่งมีเพียงสองประเภทและ◽และกฎเหล่านี้?∗∗*◽◽◽ ∅⊢∗:◽∅⊢∗:◽\frac {} {∅ ⊢ * : ◽} Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)\frac {Γ ⊢ T _ 1 : s _ 1 \qquad Γ, \: x : T _ 1 ⊢ t : T _ 2} {Γ ⊢ (λ \: …

1
ทำไมมันเป็นไปไม่ได้ที่จะประกาศหลักการอุปนัยสำหรับเลขคริสตจักร
ลองนึกภาพเรากำหนดจำนวนธรรมชาติในแคลคูลัสแลมบ์ดาที่พิมพ์ขึ้นอยู่กับเลขคริสตจักร พวกมันอาจถูกกำหนดด้วยวิธีต่อไปนี้: SimpleNat = (R : Set) → R → (R → R) → R zero : SimpleNat zero = λ R z _ → z suc : SimpleNat → SimpleNat suc sn = λ R z s → s (sn R z s) SimpleNatRec : (R : Set) → …

1
พารามิเตอร์และการกำจัดโปรเจคสำหรับเร็กคอร์ดที่ต้องพึ่งพา
เป็นที่ทราบกันดีว่าใน System F คุณสามารถเข้ารหัสผลิตภัณฑ์ไบนารี่ได้ด้วยประเภท แล้วคุณสามารถกำหนดฟังก์ชั่นการฉาย\ pi_1: A \ ครั้ง B \ เป็น Aและ\ pi_2: A \ B ครั้ง \ to B× B ≜ ∀ อัลฟ่า( A → B → α ) → αA×B≜∀α.(A→B→α)→α A \times B \triangleq \forall\alpha.\; (A \to B \to \alpha) \to \alpha π 2 : A × …

1
วิธีการแสดงให้เห็นว่าประเภทในระบบที่มีชนิดที่ขึ้นต่อกันไม่ได้อาศัยอยู่ (เช่นสูตรไม่สามารถพิสูจน์ได้)
สำหรับระบบที่ไม่มีชนิดที่ขึ้นต่อกันเช่นระบบประเภท Hindley-Milner ประเภทนั้นจะสอดคล้องกับสูตรของตรรกะเชิงสัญชาตญาณ มีเรารู้ว่ารูปแบบที่มีความ Heyting จีบราส์และโดยเฉพาะอย่างยิ่งที่จะพิสูจน์สูตรเราสามารถ จำกัด เพื่อ Heyting พีชคณิตหนึ่งที่แต่ละสูตรมีตัวแทนเป็นเซตเปิดRRR\mathbb{R} ตัวอย่างเช่นถ้าเราต้องการที่จะแสดงให้เห็นว่าไม่ได้อาศัยอยู่ที่เราสร้างแผนที่φจากสูตรย่อยเปิดRโดยกำหนด: φ ( α )∀ อัลฟ่า อัลฟ่า∨ ( อัลฟ่า→การ⊥ )∀α.α∨(α→⊥)\forall\alpha.\alpha\lor(\alpha\rightarrow\bot)φφ\phiRR\mathbb{R} จากนั้น ϕ ( α → ⊥ )ϕ ( α )= ( - - ∞ , 0 )φ(α)=(-∞,0)\begin{align} \phi(\alpha) &= (-\infty, 0) \end{align} นี่แสดงให้เห็นว่าสูตรดั้งเดิมไม่สามารถพิสูจน์ได้เนื่องจากเรามีแบบจำลองที่ไม่เป็นความจริงหรือเทียบเท่า (โดย Curry-Howard isomorphism) ชนิดนี้ไม่สามารถอาศัยอยู่ได้φ ( α → …

2
ในหนังสือ Hott รูปแบบตัวพิมพ์ส่วนใหญ่ซ้ำซ้อนกันหรือไม่ และถ้าเป็นเช่นนั้นทำไม
ในบทที่ 1 และภาคผนวก A ของหนังสือ Hottจะมีการนำเสนอตระกูลดั้งเดิมหลายประเภท (ประเภทจักรวาล, ประเภทของฟังก์ชันที่ต้องพึ่งพา, ชนิดคู่ที่ขึ้นต่อกัน, ประเภทของ Coproduct, ประเภทที่ว่างเปล่า, ประเภทหน่วย, ชนิดของธรรมชาติ, และชนิดเอกลักษณ์) สำหรับทฤษฎีประเภท Homotopy อย่างไรก็ตามดูเหมือนว่าจะมีประเภทจักรวาลและประเภทฟังก์ชั่นที่พึ่งพาคุณสามารถสร้างประเภท "ดั้งเดิม" อื่น ๆ เหล่านี้ทั้งหมด ตัวอย่างเช่นประเภท Empty สามารถกำหนดแทน ΠT:U.T ฉันคิดว่าประเภทอื่น ๆ ก็สามารถสร้างได้คล้ายกับที่พวกเขาอยู่ในCC บริสุทธิ์ (เช่นเพิ่งได้รับประเภทจากส่วนอุปนัยของคำนิยาม) หลายประเภทเหล่านี้มีการทำซ้ำซ้อนอย่างชัดเจนโดยประเภทอุปนัย / W ที่ได้รับการแนะนำในบทที่ 5 และ 6 แต่ประเภทอุปนัย / W ดูเหมือนจะเป็นส่วนหนึ่งของทฤษฎีเนื่องจากมีคำถามเปิดเกี่ยวกับวิธีที่พวกเขาโต้ตอบกับ HoTT (ที่ อย่างน้อยตอนที่หนังสือออกมา) ดังนั้นฉันจึงสับสนมากเกี่ยวกับสาเหตุที่แสดงประเภทเพิ่มเติมเหล่านี้เป็นแบบดั้งเดิม ปรีชาญาณของฉันคือทฤษฎีพื้นฐานควรมีน้อยที่สุดเท่าที่จะเป็นไปได้และการนิยามประเภท Empty ที่ซ้ำซ้อนเป็นแบบดั้งเดิมในทฤษฎีดูเหมือนว่าจะเป็นกฎเกณฑ์มาก เป็นตัวเลือกนี้ทำ …

3
ผลกระทบเชิงลบของการขยาย CIC กับสัจพจน์คืออะไร?
มันเป็นความจริงหรือไม่ที่การเพิ่มสัจพจน์ใน CIC อาจมีอิทธิพลทางลบในเนื้อหาการคำนวณของคำจำกัดความและทฤษฎีบท? ผมเข้าใจว่าในพฤติกรรมปกติของทฤษฎีใด ๆ ระยะปิดจะลดลงในฟอร์มปกติที่ยอมรับเช่นถ้าเป็นจริงแล้วnต้องลดระยะของรูปแบบ( s ยูคค. . . ( s U คค( 0 ) ) ) แต่เมื่อกล่าวถึงสัจพจน์ - พูดถึงความจริงของฟังก์ชันส่วนขยาย- เราเพียงแค่เพิ่มค่าคงที่ใหม่ให้กับระบบn:Nn:Nn : \mathbb{N}nnn(succ...(succ(0)))(succ...(succ(0)))(succ ... (succ (0)))funext funext:Πx:Af(x)=g(x)→f=gfunext:Πx:Af(x)=g(x)→f=g funext : \Pi_{x : A} f (x) = g (x) \to f = g นั่นจะเป็นเพียง "วิเศษ" สร้างหลักฐานของจากการพิสูจน์ของΠ x : A f ( …

2
คุณสมบัติ Church-Rosser สำหรับแคลคูลัสแลมบ์ดา
มันเป็นที่รู้จักกันดีว่าคริสตจักรร็อคุณสมบัติถือสำหรับ -reduction ในเพียงแค่พิมพ์แลมบ์ดาแคลคูลัส นี่ก็หมายความว่าแคลคูลัสนั้นสอดคล้องกันในแง่ที่ว่าไม่ใช่ทุกสมการที่เกี่ยวข้องกับλ -terms เป็นอนุพันธ์: ตัวอย่างเช่นK ≠ Iเนื่องจากพวกเขาไม่ได้ใช้รูปแบบปกติร่วมกันβηβη\beta \etaλλ\lambda≠≠\neq เป็นที่รู้จักกันว่าหนึ่งสามารถขยายผลให้คู่ที่สอดคล้องกับประเภทผลิตภัณฑ์ แต่ฉันสงสัยว่าถ้าใครสามารถขยายผลสำหรับแคลคูลัสแลมบ์ดาที่พิมพ์ได้อย่างน่าเชื่อถือ (อาจ) ด้วยโพลีมอร์ฟิคประเภทเช่นแคลคูลัสของสิ่งก่อสร้าง? การอ้างอิงใด ๆ ก็จะดีมาก! ขอบคุณ

4
แบบจำลองวัตถุ (OOP) ในทฤษฎีประเภทขึ้นอยู่กับ
ฉันสนใจในการสร้างแบบจำลองวัตถุจากการเขียนโปรแกรมเชิงวัตถุในทฤษฎีประเภทขึ้นอยู่กับ ในฐานะที่เป็นแอพพลิเคชั่นที่เป็นไปได้ฉันต้องการมีแบบจำลองที่ฉันสามารถอธิบายคุณสมบัติที่แตกต่างของภาษาการเขียนโปรแกรมที่จำเป็น ฉันสามารถหาเอกสารเกี่ยวกับการสร้างแบบจำลองวัตถุในทฤษฎีประเภทพึ่งพาซึ่งก็คือ: การเขียนโปรแกรมเชิงวัตถุในทฤษฎีชนิดพึ่งพาโดย A. Setzer (2006) มีการอ้างอิงเพิ่มเติมในหัวข้อที่ฉันพลาดไปหรืออาจจะมีการอ้างอิงล่าสุดหรือไม่ อาจมีการดำเนินการ (เช่นหลักฐาน) สำหรับนักทฤษฎีบทเช่น Coq หรือ Agda หรือไม่?

2
คอมไพเลอร์สำหรับประเภทที่ขึ้นต่อกันนั้นหนักกว่าผู้บุกรุกหรือไม่?
ฉันได้เรียนรู้บางอย่างเกี่ยวกับการใช้งานประเภทที่ขึ้นต่อกันเช่นแบบฝึกหัดนี้แต่ส่วนใหญ่ของพวกเขากำลังใช้ล่าม คำถามของฉันคือดูเหมือนว่าการใช้คอมไพเลอร์สำหรับชนิดพึ่งพานั้นยากกว่าคอมไพเลอร์มากเพราะคุณสามารถประเมินอาร์กิวเมนต์ชนิดพึ่งพาได้สำหรับการตรวจสอบชนิด ดังนั้น ความไร้เดียงสาของฉันถูกไหม หากถูกต้องตัวอย่าง / แหล่งข้อมูลเกี่ยวกับการใช้ภาษาที่ตรวจสอบแบบสแตติกสนับสนุนประเภทที่ขึ้นกับอะไรบ้าง

1
ประเภทที่ขึ้นอยู่กับประเภทที่เข้ารหัสของคริสตจักรใน PTS / CoC
ฉันกำลังทดลองกับระบบที่บริสุทธิ์ในก้อนแลมบ์ดาของ Barendregt โดยเฉพาะกับแคลคูลัสออฟคอนสตรัคชั่นที่ทรงพลังที่สุด ระบบนี้มีทุกประเภทและ* BOXสำหรับบันทึกด้านล่างฉันใช้ไวยากรณ์ที่เป็นรูปธรรมของMorteเครื่องมือhttps://github.com/Gabriel439/Haskell-Morte-Libraryซึ่งอยู่ใกล้กับแคลคูลัสแลมบ์ดาคลาสสิก ฉันเห็นว่าเราสามารถเลียนแบบประเภทอุปนัยโดยการเข้ารหัสเหมือนคริสตจักรบางอย่าง (aka Boehm-Berarducci isomorphism สำหรับประเภทข้อมูลพีชคณิต) สำหรับชนิดเช่นฉันใช้งานง่ายBool = ∀(t : *) -> t -> t -> tด้วยการก่อสร้างงานและTrue = λ(t : *) -> λ(x : t) -> λ(y : t) -> xFalse = λ(t : *) -> λ(x : t) -> λ(y : t) -> y ฉันเห็นว่าประเภทของฟังก์ชั่นระดับคำBool …

2
สัญชาตญาณเบื้องหลังความเข้มงวดอย่างเข้มงวด?
ฉันสงสัยว่าใครบางคนสามารถให้สัญชาตญาณให้ฉันได้ว่าทำไม positivity ที่เข้มงวดของประเภทข้อมูลอุปนัยรับประกันการฟื้นฟูที่แข็งแกร่ง เพื่อความชัดเจนฉันเห็นว่าการเกิดเหตุการณ์ด้านลบทำให้เกิดความแตกต่างคือการกำหนด: data X where Intro : (X->X) -> X เราสามารถเขียนฟังก์ชันที่แตกต่าง แต่ฉันสงสัยว่าเราจะพิสูจน์ได้อย่างไรว่าประเภทอุปนัยเชิงบวกอย่างเคร่งครัดไม่อนุญาตให้มีความแตกต่าง? นั่นคือมีมาตรการการเหนี่ยวนำบางอย่างที่ช่วยให้เราสามารถสร้างหลักฐานของการทำให้เป็นมาตรฐานที่แข็งแกร่ง (ใช้ความสัมพันธ์เชิงตรรกะหรือคล้ายกัน)? และข้อพิสูจน์ดังกล่าวแตกหักไปที่ไหนสำหรับเหตุการณ์เชิงลบ? มีการอ้างอิงที่ดีที่แสดงการฟื้นฟูที่แข็งแกร่งสำหรับภาษาที่มีประเภทอุปนัยหรือไม่?

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