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

โครงสร้างชนิดเป็นวินัยเชิงประโยคสำหรับการบังคับใช้ระดับของสิ่งที่เป็นนามธรรม

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

2
มีลำดับชั้นการแสดงออกสำหรับระบบพิมพ์หรือไม่
แรงบันดาลใจจากลำดับชั้นที่กว้างขวางนำเสนอในทฤษฎีความซับซ้อนฉันสงสัยว่าลำดับชั้นดังกล่าวยังถูกนำเสนอสำหรับระบบประเภท อย่างไรก็ตามตัวอย่างสองตัวอย่างที่ฉันพบว่ามีทั้งแบบรายการตรวจสอบ (ที่มีคุณสมบัติมุมฉาก) มากกว่าลำดับชั้น (ด้วยระบบประเภทที่แสดงออกอย่างต่อเนื่องมากขึ้น) สองตัวอย่างที่ฉันได้พบเป็นก้อนแลมบ์ดาและแนวคิดของK-การจัดอันดับความแตกต่าง รายการแรกคือรายการตรวจสอบที่มีสามตัวเลือกส่วนที่สองคือลำดับชั้นที่แท้จริง (แม้ว่าอันดับ k สำหรับค่าเฉพาะของ k นั้นเป็นเรื่องแปลกที่ฉันเชื่อ) คุณสมบัติระบบประเภทอื่น ๆ ทั้งหมดที่ฉันรู้จักส่วนใหญ่จะเป็นแบบมุมฉาก ฉันสนใจแนวคิดเหล่านี้เพราะฉันออกแบบภาษาของตัวเองและฉันสงสัยมากว่ามันจัดอยู่ในประเภทระบบที่มีอยู่ในปัจจุบัน (ระบบประเภทของฉันค่อนข้างแปลกใหม่เท่าที่ฉันรู้) ฉันตระหนักว่าแนวคิดของ 'การแสดงออก' อาจจะคลุมเครือเล็กน้อยซึ่งอาจอธิบายได้ว่าทำไมระบบประเภทจึงดูเหมือนรายการตรวจสอบให้ฉัน

1
สิ่งที่เป็นปัญหาในทางปฏิบัติกับทางแยกและสหภาพประเภทคืออะไร?
ฉันกำลังออกแบบภาษาการเขียนโปรแกรมฟังก์ชั่นแบบเรียบง่ายที่พิมพ์ได้ง่ายเป็นประสบการณ์การเรียนรู้ ดูเหมือนว่าระบบประเภทที่ฉันได้นำไปใช้จนถึงตอนนี้ (มีงานเพิ่มเติมเล็กน้อย) รวมประเภทการแยกและสหภาพเข้าด้วยกันเช่นคุณอาจมี: <Union String Integer> <Union Integer Foo> จุดตัดของทั้งสองประเภทด้านบนจะเป็นที่ราบ Integer สหภาพของทั้งสองประเภทจะเป็น <Union String Integer Foo> ความจริงที่ว่านี่เป็นไปได้แน่นอนไม่จำเป็นต้องหมายความว่ามันเป็นแนวคิดการออกแบบที่ดี โดยเฉพาะอย่างยิ่งฉันค่อนข้างกังวลเกี่ยวกับความยากลำบากในการใช้งานของการรักษาประเภทไม่ปะติดปะต่อและ / หรือการจัดการการทับซ้อน ข้อดี / ข้อเสียของการรวมคุณสมบัติดังกล่าวในระบบพิมพ์คืออะไร?

1
อะไรคือความแตกต่างระหว่างลูกศรและวัตถุชี้แจงในหมวดหมู่ปิดคาร์ทีเซียน?
ในคาร์ทีเซียนปิดหมวดหมู่ ( CCC ) ที่มีอยู่ที่เรียกว่าวัตถุชี้แจงเป็นลายลักษณ์อักษรBABAB^Aเมื่อ CCC ถือเป็นรูปแบบของการให้เพียงแค่พิมพ์λλ\lambdaแคลคูลัสวัตถุชี้แจงเช่นBABAB^Aลักษณะพื้นที่ฟังก์ชั่นจากประเภทประเภทB แนะนำให้ใช้ลูกศรชี้แจงแทนวัตถุที่เรียกว่าc u r r y : ( A × B → C ) → ( A → C BAAABBBและกำจัดโดยลูกศรที่เรียกว่าพีพีลิตรY : C B × B → C (ซึ่งน่าเสียดายที่เรียกว่าอีโวลิตรในตำรามากที่สุดในหมวดหมู่ทฤษฎี) คำถามของฉันที่นี่คือ: มีความแตกต่างระหว่างวัตถุเลขชี้กำลัง C Bและลูกศร B → Cหรือไม่curry:(A×B→C)→(A→CB)curry:(A×B→C)→(A→CB)curry : (A \times B \rightarrow C) \rightarrow (A \rightarrow …

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

2
แคลคูลัสแลมบ์ดาที่พิมพ์ออกมามีความสอดคล้องกันและทัวริงสมบูรณ์หรือไม่
มีแคลคูลัสแลมบ์ดาที่พิมพ์แล้วหรือไม่ซึ่งตรรกะที่สอดคล้องกันภายใต้การติดต่อของแกงกะหรี่ - ฮาวเวิร์ดนั้นสอดคล้องกันและมีการแสดงออกแลมบ์ดาที่พิมพ์ได้สำหรับฟังก์ชั่นคำนวณทั้งหมด นี่เป็นคำถามที่ไม่ถูกต้องยอมรับว่าไม่มีคำจำกัดความที่แม่นยำของ "แคลคูลัสแลมบ์ดาที่พิมพ์" ฉันเป็นพื้นสงสัยว่ามีทั้ง (a) ตัวอย่างที่รู้จักกันนี้หรือ (b) พิสูจน์พิสูจน์ความเป็นไปไม่ได้สำหรับบางสิ่งในพื้นที่นี้ แก้ไข: @cody ให้คำถามนี้กับรุ่นที่แม่นยำในคำตอบของเขาด้านล่าง: มีระบบประเภท pure แบบตรรกะ (LPTS) ที่สอดคล้องและทัวริงสมบูรณ์ (ในแง่ที่กำหนดไว้ด้านล่าง) หรือไม่

3
ทำไมลำไส้ใหญ่ถึงแสดงว่าค่าเป็นของประเภท?
Pierce (2002) แนะนำความสัมพันธ์การพิมพ์ในหน้า 92 ด้วยการเขียน: ความสัมพันธ์การพิมพ์สำหรับนิพจน์ทางคณิตศาสตร์ที่เขียน "t: T" ถูกกำหนดโดยชุดของกฎการอนุมานที่กำหนดประเภทให้กับคำศัพท์ และเชิงอรรถระบุว่าสัญลักษณ์มักใช้แทน:. คำถามของฉันคือเหตุผลที่นักทฤษฎีประเภทต้องการใช้: มากกว่า ? ถ้า typeเป็นชุดของค่าดังนั้นจึงเหมาะสมอย่างยิ่งที่จะเขียนไม่ต้องมีสัญลักษณ์ใหม่∈∈\in∈∈\inTTTt ∈ Tt∈Tt \in T มันคล้ายกับที่นักเขียน cs บางคนชอบถึงแม้จะคิดว่ามันเป็นการละเมิดสัญกรณ์และควรเขียน ?3 n2= O ( n2)3n2=O(n2)3n^2 = O(n^2)3 n2∈ O ( n2)3n2∈O(n2)3n^2 \in O(n^2)

3
funsplit และขั้วของ Pi-types
ในหัวข้อที่ผ่านมาใน AGDA รายชื่อที่ส่งคำถามของกฎหมายโผล่ขึ้นมาซึ่งในปีเตอร์แฮนค็อกทำกระตุ้นความคิดคำพูดηη\eta ความเข้าใจของฉันคือกฎหมายมาพร้อมกับประเภทติดลบเช่น การเชื่อมต่อซึ่งกฎการแนะนำจะย้อนกลับได้ หากต้องการปิดใช้งานสำหรับฟังก์ชั่นแฮงค์แนะนำให้ใช้ตัวกำจัดแบบกำหนดเอง, funsplitแทนกฎแอปพลิเคชันทั่วไป ฉันต้องการที่จะเข้าใจคำพูดของแฮงค์ในแง่ของขั้วηη\etaηη\eta ตัวอย่างเช่นมีสองงานนำเสนอ -type มีตัวแยกแยก Martin-Löfแบบดั้งเดิมในลักษณะบวก:ΣΣ\Sigma แกมมา⊢ ฉ: ( a : A ) ( b : Ba ) → C( a , b )แกมมา⊢ P : Σ : Bแกมมา⊢ s พีลิตรฉันทีฉหน้า: CพีΓ⊢ฉ:(a:A)(ข:Ba)→ค(a,ข)Γ⊢พี:Σa:A.BΓ⊢sพีล.ผมเสื้อฉพี:คพี \begin{array}{l} \Gamma \vdash f : (a : A)(b : B\: a) \to …

3
การจำแนกประเภทของแลมบ์ดาประเภทที่พิมพ์ / ไม่พิมพ์
ทุกคนสามารถอธิบายสั้น ๆ (ถ้าเป็นไปได้!) หรือแนะนำให้ฉันอ้างอิง, สรุปความแตกต่างระหว่างแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์และแลมบ์ดาที่พิมพ์ร่วมกันมากขึ้น? ฉันกำลังมองหางบของพลังการแสดงออกของพวกเขาโดยเฉพาะอย่างยิ่งเทียบเท่ากับระบบตรรกะ / คณิตศาสตร์หรือวิธีการคำนวณและคล้ายคลึงกับภาษาการเขียนโปรแกรมถ้ามี ในขณะที่ฉันตั้งใจจะอ่านบางอย่างเช่นตารางอ้างอิงที่สรุปค่าแคลคูลัสและการเทียบ / ความแตกต่าง / สถานที่ในลำดับชั้นจะเป็นการอ้างอิงขนาดใหญ่เพื่อช่วยฉันเรียงลำดับออก ไม่ได้บอกว่าด้านล่างถูกต้องเพียงแค่พยายามวาดภาพความประทับใจบางอย่างที่ฉันต้องดูด้วยว่าอย่างน้อยพวกเขาก็เป็นจุดเริ่มต้น (หรือบางอย่างที่ถูกต้อง!) แคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ - eq เป็นลอจิกลำดับแรก - ทำ X ไม่ได้ เพียงพิมพ์แลมบ์ดาแคลคูลัส - eq ถึง ... ตรรกะเกี่ยวข้องกับ Lisp หรือไม่ 'Polymorphic' แลมบ์ดาแล็บ - ฯลฯ แคลคูลัสของการก่อสร้าง - ตรรกะ intutionist? Combinatory Logic - เปรียบได้กับ ??? พิมพ์แลมบ์ดาแคลคูลัสเกี่ยวข้องกับภาษา APL / J หากสิ่งนี้เชื่อมโยงกับแลมบ์ดาคิวบ์และสามแกนนั้นดีกว่าทั้งหมด ในขณะที่ฉันคุ้นเคยกับพื้นฐานของแคลคูลัสแลมบ์ดาและการเขียนโปรแกรมด้วยภาษาที่ใช้งานได้ฉันไม่เคยคาดไม่ถึงหรอกหรือเชื่อมต่อกับระบบประเภทที่เกี่ยวข้องและรสชาติของแลมบ์ดา …

1
พิสูจน์การไม่เกี่ยวข้องใน Coq?
มีวิธีการพิสูจน์ทฤษฎีบทต่อไปนี้ใน Coq หรือไม่? Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2. แก้ไข : ความพยายามที่จะให้คำอธิบายสั้น ๆ สำหรับ "สิ่งที่ไม่เกี่ยวข้องพิสูจน์หลักฐาน" (แก้ไขฉันบางคนถ้าฉันผิดหรือไม่ถูกต้อง) แนวคิดพื้นฐานคือในโลกของข้อเสนอ (หรือPropเรียงลำดับใน Coq) สิ่งที่คุณ (และคุณควร) สนใจจริงๆคือการพิสูจน์ข้อเสนอไม่ใช่ข้อพิสูจน์ของมันอาจมีจำนวนมาก (หรือไม่มี) ในกรณีที่คุณมีการพิสูจน์หลายจากจุด provability ในมุมมองของพวกเขามีความเท่าเทียมกันในแง่ที่ว่าพวกเขาพิสูจน์เรื่องเดียวกัน ดังนั้นความแตกต่างของพวกเขาจึงไม่เกี่ยวข้อง สิ่งนี้แตกต่างจากมุมมองการคำนวณที่คุณสนใจจริง ๆ ถึงความแตกต่างของคำสองคำเช่นโดยทั่วไปคุณไม่ต้องการให้ผู้อยู่อาศัยทั้งสองboolประเภท (หรือSetในคำพูดของ Coq) คือtrueและfalseเท่าเทียมกัน แต่ถ้าคุณใส่ไว้ในPropนั้นพวกเขาจะได้รับการปฏิบัติที่เท่าเทียมกัน

2
โดยนัยกับการพิมพ์ย่อยที่ชัดเจน
หน้านี้อ้างว่า หลายภาษาไม่ได้ใช้การพิมพ์ย่อยโดยนัย (ความเท่าเทียมกันเชิงโครงสร้าง), การเลือกพิมพ์ย่อยที่ชัดเจน / ประกาศ (การประกาศความเท่าเทียมกัน) ผมเคยใช้ส่วนใหญ่เป็นภาษาโปรแกรมที่ใช้อย่างชัดเจนsubtyping อะไรคือข้อดีของการพิมพ์ย่อยโดยนัยตามที่อธิบายไว้ในหมายเหตุข้างต้น

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
ความหมายเชิงเด็ดขาดของการพิมพ์ย่อยคืออะไร?
เริ่มต้นจาก Curry-Howard-Lambek มีทรินิตี้ที่ดีของทฤษฎีประเภท logics และหมวดหมู่ ฉันอยากรู้ว่าคุณมีความหมายเชิงหมวดหมู่อย่างไรเมื่อคุณเพิ่ม subtyping (บีบบังคับ) ให้กับทฤษฎีประเภท - ดูเหมือนว่านี่จะไม่ได้รับการสำรวจมากนักหากเลย โดยทั่วไปการเพิ่ม subtyping ที่บีบบังคับให้กับทฤษฎีประเภทนั้นไม่ได้ทำลายคุณสมบัติ meta-theoretic เช่นการฟื้นฟูที่ปกติดังนั้นความหมายเชิงหมวดหมู่ของมันน่าจะเป็นสิ่งที่น่าสนใจจริงๆ

1
ค้นหากระดาษ LCF ดั้งเดิมของ Scott
บทความต่อไปนี้เผยแพร่สู่สาธารณะหรือไม่ ดาน่าสกอตต์ 1969 ทฤษฎีของฟังก์ชันคำนวณจากประเภทที่สูงขึ้น เอกสารสัมมนาไม่ได้เผยแพร่ 7 หน้า University of Oxford มีการอภิปรายของบทความนี้ในหัวข้อ 8.1.2 ประเภทตามที่กำหนดไว้ใน Cardone & Hindley, 2006 ประวัติศาสตร์แลมบ์ดา - แคลคูลัสและ Combinatory Logic ; นอกจากนี้ในส่วนที่ 10.1 ทฤษฎีโดเมนร่องรอยกลับไปที่ต้นฉบับนี้มีข้อมูลเชิงลึกเชิงทฤษฎีที่สำคัญบางประการ

3
อะไรคือบทบาทของ predicativity ในคำจำกัดความอุปนัยในทฤษฎีประเภท?
บ่อยครั้งที่เราต้องการกำหนดวัตถุตามกฎการอนุมาน กฎเหล่านั้นแสดงถึงฟังก์ชั่นการสร้างFซึ่งเมื่อมันเป็นเนื่องถัวเฉลี่ยจุดอย่างน้อยคงμ F เราใช้: = μ Fจะเป็น "นิยามอุปนัย" ของ ยิ่งกว่านั้น monotonicity ของFทำให้เราสามารถให้เหตุผลกับ "หลักการของการเหนี่ยวนำ" เพื่อกำหนดว่าเมื่อใดที่เซตประกอบด้วยA (เช่นเมื่อสมบัติครอบคลุมทั่วA )A∈UA∈ยูA \in UFFFμFμF\mu FA:=μFA=μFA := \mu FAAAFFFAAAAAA ใน Coq ตรงนี้เพื่อเขียนนิยามของกับคำแนะนำอย่างชัดเจน ในขณะที่คำจำกัดความนี้หมายถึงฟังก์ชั่นเฉพาะF , ฟังก์ชั่นนั้นไม่จำเป็นต้องเป็นแบบโมโนโทนิก Coq จึงใช้การตรวจสอบวากยสัมพันธ์บางอย่างเพื่อรับประกัน "ความมีรูปแบบที่ดี" ของคำจำกัดความ สำหรับการประมาณค่าบางอย่างมันจะปฏิเสธการเกิดขึ้นของAในตำแหน่งลบในประเภทของคำแนะนำInductiveผมndยูคเสื้อผมโวลต์อี\mathtt{Inductive}AAAFFFAAA (หากความเข้าใจของฉันถึงจุดนี้มีข้อบกพร่องโปรดแก้ไขฉัน!) ก่อนคำถามบางคำถามในบริบทของ Coq: 1) ไม่ตรวจสอบประโยคใน Coq เพียงทำหน้าที่เพื่อให้มั่นใจว่านิยามของเป็นกริยา ? (ถ้าเป็นเช่นนั้นการไม่แสดงอารมณ์นั้นเป็นวิธีเดียวที่นิยามจะไม่ถูกต้องหรือไม่) หรือมันกำลังตรวจสอบความน่าเบื่อหน่ายหรือไม่? (ตามลําดับคือสิ่งที่ไม่สามารถพูดซ้ำได้สิ่งที่อาจฆ่ามัน)AAA 2) ไม่เช่นที่เกิดขึ้นในเชิงลบของจำเป็นต้องหมายความว่าความหมายก็คือ impredicative / ไม่ใช่ต่อเนื่อง? หรือ …

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