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

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

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

3
'ยุทธวิธี' ทำงานอย่างไรในผู้ช่วยที่ได้รับการพิสูจน์
คำถาม: 'ยุทธวิธี' ทำงานอย่างไรในผู้ช่วยที่พิสูจน์ได้? พวกเขาดูเหมือนจะเป็นวิธีในการระบุวิธีการเขียนคำใหม่ให้เป็นคำที่เทียบเท่า (สำหรับคำจำกัดความของ 'ที่เทียบเท่า') สันนิษฐานว่ามีกฎอย่างเป็นทางการสำหรับเรื่องนี้ฉันจะเรียนรู้สิ่งที่พวกเขาและพวกเขาทำงานอย่างไร พวกเขามีส่วนร่วมมากกว่าทางเลือกในการลด Beta หรือไม่ ความเป็นมาเกี่ยวกับความสนใจของฉัน: หลายเดือนที่ผ่านมาฉันตัดสินใจว่าฉันต้องการเรียนคณิตศาสตร์อย่างเป็นทางการ ฉันตัดสินใจที่จะไปกับประเภททฤษฎีเพราะจากการวิจัยเบื้องต้นดูเหมือนว่าทางที่ถูกต้องที่จะทำสิ่ง (TM) และเพราะมันดูเหมือนว่าจะเขียนโปรแกรมรวมกันและคณิตศาสตร์ซึ่งเป็นที่น่าสนใจ ฉันคิดว่าเป้าหมายในที่สุดของฉันคือการสามารถใช้และเข้าใจผู้ช่วยพิสูจน์เช่น Coq (ฉันคิดว่าโดยเฉพาะอย่างยิ่งสามารถใช้ชนิดที่ขึ้นต่อกันได้เนื่องจากฉันอยากรู้เกี่ยวกับสิ่งต่าง ๆ เช่นการแทนประเภทของเมทริกซ์) ฉันเริ่มรู้น้อยมากไม่ได้เขียนโปรแกรมฟังก์ชั่นพื้นฐาน แต่ฉันกำลังทำช้า ฉันได้อ่านและทำความเข้าใจกลุ่มของประเภทและภาษาโปรแกรม (เพียร์ซ) และได้เรียนรู้ Haskell และ ML

2
อธิบายการใช้ functor ในแง่เด็ดขาด - monoidal functors
ฉันต้องการที่จะเข้าใจApplicativeในแง่ของทฤษฎีหมวดหมู่ เอกสารสำหรับการApplicativeบอกว่ามันเป็นเรื่องที่มีความแข็งแกร่ง functor ครั้งแรกที่วิกิพีเดียหน้าเกี่ยวกับfunctors monoidalบอกว่า functor monoidal เป็นทั้งหละหลวมหรือที่แข็งแกร่ง ดังนั้นสำหรับฉันดูเหมือนว่าแหล่งใดแหล่งหนึ่งผิดหรือใช้เงื่อนไขต่างกัน มีใครอธิบายได้บ้าง ประการที่สองประเภท monoidal ซึ่งApplicativeเป็น function monoidal คืออะไร? ฉันสมมติว่า functors เป็น endo-functors ในหมวดหมู่ Haskell มาตรฐาน (object = types, morphisms = ฟังก์ชั่น) แต่ฉันไม่รู้ว่าโครงสร้าง monoidal ของหมวดนี้คืออะไร ขอบคุณที่ช่วยเหลือ.

4
ฉันจะเรียนรู้ทฤษฎีพื้นฐานของผู้ช่วยพิสูจน์ Coq ได้อย่างไร
ฉันกำลังจะไปดูรายละเอียดหลักสูตรที่CIS 500: ฐานรากซอฟต์แวร์และแบบฝึกหัดสนุกมาก ฉันเป็นแค่ชุดออกกำลังกายชุดที่สาม แต่ฉันต้องการทราบเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อฉันใช้กลยุทธ์เพื่อพิสูจน์สิ่งต่าง ๆ เช่นforall (n m : nat), n + n = m + m -> n = m.

3
พิมพ์คลาส vs วัตถุอินเตอร์เฟส
ฉันไม่คิดว่าฉันเข้าใจคลาสประเภท ฉันได้อ่านที่ไหนสักแห่งที่คิดว่า class classes เป็น "interfaces" (จาก OO) ที่การใช้งานประเภทนั้นผิดและทำให้เข้าใจผิด ปัญหาคือฉันมีปัญหาที่เห็นพวกเขาเป็นสิ่งที่แตกต่างและวิธีการที่ผิด ตัวอย่างเช่นถ้าฉันมีคลาสประเภท (ในไวยากรณ์ Haskell) class Functor f where fmap :: (a -> b) -> f a -> f b มันแตกต่างจากอินเตอร์เฟส [1] อย่างไร (ในไวยากรณ์ Java) interface Functor<A> { <B> Functor<B> fmap(Function<B, A> fn) } interface Function<Return, Argument> { Return apply(Argument arg); } …

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


1
ประเภทอุปนัยสำหรับสัญลักษณ์ลำดับที่นับได้ขนาดใหญ่
ฉันกำลังมองหาการสร้างสัญลักษณ์สำหรับกฎที่นับได้จำนวนมากใน "วิธีธรรมชาติ" โดย "วิธีธรรมชาติ" ผมหมายความว่าได้รับการอุปนัยชนิดข้อมูล X เท่าเทียมกันที่ควรจะเป็นความเท่าเทียมกันตามปกติ recursive (เดียวกับที่deriving Eqใน Haskell จะผลิต) และคำสั่งที่ควรจะเป็นปกติ recursive lexicographical สั่งซื้อ (เดียวกับที่deriving Ordใน Haskell จะผลิต ) และมีภาคแสดงที่ตัดสินใจได้ซึ่งกำหนดว่าสมาชิกของ X เป็นเครื่องหมายแสดงลำดับที่ถูกต้องหรือไม่ ตัวอย่างเช่นเลขลำดับที่น้อยกว่าcan 0สามารถแสดงได้ด้วยรายการที่มีการจัดเรียงแบบ จำกัด ทางพันธุกรรมและเป็นไปตามข้อกำหนดเหล่านี้ กำหนด X เป็นμα μβ 1 + α×β, รายการ จำกัด ทางพันธุกรรมหรือที่รู้จักกันโดยทั่วไป กําหนดisValidการตรวจสอบว่า X มีการเรียงลำดับและสมาชิกทุกคนของ X isValidเป็น สมาชิกที่ถูกต้องของ X คือเลขลำดับทั้งหมดน้อยกว่าε 0ภายใต้คำสั่งทางพจนานุกรมปกติ ผมคาดเดาว่าμα 0 . …

6
ทำไมต้องเป็นธรรมชาติแทนที่จะเป็นจำนวนเต็ม?
ฉันสนใจว่าเพราะเหตุใดจำนวนธรรมชาติจึงเป็นที่รักของผู้เขียนหนังสือเกี่ยวกับทฤษฎีการเขียนโปรแกรมภาษาและทฤษฎีการพิมพ์ (เช่น J. Mitchell, รากฐานสำหรับภาษาโปรแกรมและ B. Pierce, ประเภทและภาษาโปรแกรม) คำอธิบายของแลมบ์ดาแคลคูลัสที่พิมพ์ได้อย่างง่ายและโดยเฉพาะอย่างยิ่งภาษาการเขียนโปรแกรม PCF มักขึ้นอยู่กับแน็ตและบูล สำหรับคนที่ใช้และสอน PL อุตสาหกรรมที่ใช้งานทั่วไปมันเป็นเรื่องที่เป็นธรรมชาติมากขึ้นในการรักษาจำนวนเต็มแทนที่จะเป็นธรรมชาติ คุณช่วยพูดถึงเหตุผลที่ดีได้ไหมว่าทำไมนักทฤษฎี PL ชอบของนัท นอกจากนั้นมันมีความซับซ้อนน้อยกว่าเล็กน้อย มีเหตุผลพื้นฐานใด ๆ หรือเป็นเพียงประเพณีที่ให้เกียรติ? UPDสำหรับความคิดเห็นทั้งหมดที่เกี่ยวกับ "พื้นฐาน" ของธรรมชาติ: ฉันค่อนข้างรู้เกี่ยวกับสิ่งดีๆเหล่านั้น แต่ฉันอยากจะดูตัวอย่างเมื่อจำเป็นอย่างยิ่งที่จะต้องมีคุณสมบัติเหล่านั้นในทฤษฎีประเภทของทฤษฎีของ PL เช่นการเหนี่ยวนำที่กล่าวถึงอย่างกว้างขวาง เมื่อเรามีลอจิกประเภทใด (ซึ่งก็คือการพิมพ์ LC) เช่นเดียวกับตรรกะลำดับแรกพื้นฐานเราใช้การเหนี่ยวนำจริงๆ - แต่การเหนี่ยวนำบนต้นไม้ที่ได้มา (ซึ่งเรามีในแลมบ์ดาด้วย) โดยทั่วไปแล้วคำถามของฉันมาจากผู้คนในอุตสาหกรรมที่ต้องการได้รับทฤษฎีพื้นฐานเกี่ยวกับการเขียนโปรแกรมภาษา พวกเขาเคยมีจำนวนเต็มในโปรแกรมของพวกเขาและไม่มีข้อโต้แย้งที่เป็นรูปธรรมและการใช้งานกับทฤษฎีที่กำลังศึกษา (ทฤษฎีประเภทในกรณีของเรา) ทำไมการเรียนภาษาที่มีเพียงนัทพวกเขารู้สึกผิดหวังมาก

6
ข้อเสนอและการตัดสินต่างกันอย่างไร?
ฉันสับสนกับข้อแตกต่างเล็กน้อยระหว่างข้อเสนอและการตัดสินเมื่อสัมผัสกับทฤษฎีประเภทสัญชาตญาณ มีใครสามารถอธิบายให้ฉันฟังได้ว่าอะไรคือประเด็นของการแยกแยะพวกเขาและอะไรที่ทำให้พวกเขาแตกต่าง? โดยเฉพาะอย่างยิ่งในมุมมองของ Curry-Howard Isomorphsim

2
การดำเนินการลอการิทึมหรือรูทในประเภทพื้นที่คืออะไร?
ผมเพิ่งอ่านสอง dualities การคำนวณ: ประเภทเชิงลบและ กระดาษขยายผลรวมชนิดและสินค้าประเภทให้ความหมายไปชนิดและa - ba/b ซึ่งแตกต่างจากการเพิ่มและการคูณไม่มีหนึ่งในสองผู้ผกผันของการยกกำลังลอการิทึมและการรูท หากฟังก์ชันประเภท (a → b) เป็นการยกกำลังตามทฤษฎีประเภทให้ประเภทa → b(หรือb^a) มันมีความหมายว่ามีประเภทlogb(c)หรือประเภทa√c? มันสมเหตุสมผลไหมที่จะขยายลอการิทึมและรูทเป็นประเภทเลย? ถ้าเป็นเช่นนั้นมีงานใด ๆ ในพื้นที่นี้และมีคำแนะนำที่ดีเกี่ยวกับวิธีที่จะเข้าใจผลกระทบอย่างไรบ้าง? ฉันพยายามหาข้อมูลเกี่ยวกับเรื่องนี้ผ่านทางตรรกะโดยหวังว่าการโต้ตอบของ Curry-Howard จะช่วยฉันได้ แต่ก็ไม่มีประโยชน์

1
ความสัมพันธ์และความแตกต่างระหว่างแคลคูลัสของโครงสร้างอุปนัยกับทฤษฎีประเภทสัญชาตญาณคืออะไร?
ตามที่ระบุในชื่อฉันสงสัยว่าความสัมพันธ์และความแตกต่างระหว่าง CIC และ ITT ใครช่วยอธิบายหรือชี้ให้ฉันเห็นวรรณกรรมที่เปรียบเทียบทั้งสองระบบได้หรือไม่ ขอบคุณ

1
ข้อเสนอประเภทคืออะไร? (ประเภทใดกันแน่)
ฉันอ่านมากเกี่ยวกับระบบการพิมพ์และฉันเข้าใจว่าทำไมพวกเขาถึงได้รับการแนะนำ (เพื่อแก้ไขความขัดแย้งของรัสเซล) ฉันยังเข้าใจความเกี่ยวข้องในทางปฏิบัติในภาษาโปรแกรมและระบบพิสูจน์อย่างคร่าวๆ อย่างไรก็ตามฉันไม่มั่นใจอย่างเต็มที่ว่าแนวคิดของฉันคือสิ่งที่ถูกต้อง คำถามของฉันคือมันถูกต้องที่จะอ้างว่าประเภทเป็นข้อเสนอ กล่าวอีกนัยหนึ่งคำว่า "n คือจำนวนธรรมชาติ" สอดคล้องกับคำสั่ง "n มีประเภท 'จำนวนธรรมชาติ'" หมายถึงกฎพีชคณิตทั้งหมดที่เกี่ยวข้องกับจำนวนธรรมชาติถือสำหรับ n (กล่าวคืออีกวิธีหนึ่งกฎเกี่ยวกับพีชคณิตคือข้อความงบเหล่านั้นที่ถือเป็นจริงสำหรับตัวเลขธรรมชาติยังถือจริงสำหรับ n) นี่หมายความว่าวัตถุทางคณิตศาสตร์สามารถมีมากกว่าหนึ่งประเภทได้หรือไม่? นอกจากนี้ฉันรู้ว่าชุดนั้นไม่เทียบเท่ากับประเภทเพราะคุณไม่สามารถมีชุดทั้งหมดได้ ฉันจะเรียกร้องว่าถ้าชุดเป็นวัตถุทางคณิตศาสตร์คล้ายกับจำนวนหรือฟังก์ชั่นเป็นประเภทคือการจัดเรียงของวัตถุ meta-ทางคณิตศาสตร์และตรรกะเดียวกันเป็นชนิดเป็น meta-meta-คณิตศาสตร์วัตถุ? (ในแง่ที่ว่า "meta" ทุกตัวบ่งบอกถึงระดับที่สูงขึ้นของนามธรรม ... ) สิ่งนี้มีการเชื่อมโยงกับทฤษฎีหมวดหมู่หรือไม่?

2
บริบทไวและไวยากรณ์ที่สำคัญ
1) อะไรคือสิ่งที่ถ้ามีความสัมพันธ์ระหว่างการพิมพ์แบบคงที่และไวยากรณ์อย่างเป็นทางการคืออะไร? 2) โดยเฉพาะอย่างยิ่งมันเป็นไปได้ไหมที่หุ่นยนต์ที่มีข้อ จำกัด เชิงเส้นเพื่อตรวจสอบว่าพูดว่าโปรแกรม C ++ หรือ SML นั้นพิมพ์ได้ดีหรือไม่? ออโตเมติกแบบซ้อนกัน? 3) มีวิธีธรรมชาติในการแสดงกฎการพิมพ์แบบคงที่ในแง่ไวยากรณ์ที่เป็นทางการ?

2
ทำไม Agda และ Coq ไม่เห็นด้วยกับความเข้มงวด
ฉันพบความขัดแย้งที่สับสนระหว่าง Agda และ Coq ซึ่งไม่เกี่ยวข้องกับความแตกต่างที่รู้จักกันดีที่สุดระหว่างทฤษฎีประเภทของพวกเขา (เช่น (im) predicativity, induction-recursion, ฯลฯ ) โดยเฉพาะอย่างยิ่งคำจำกัดความต่อไปนี้ได้รับการยอมรับโดย Agda: data Ty : Set0 -> Set0 where c1 : Ty ℕ c2 : Ty (Ty ℕ) ในขณะที่คำจำกัดความ Coq ที่เท่าเทียมกันนั้นถูกปฏิเสธเนื่องจากรูปลักษณ์ของ [Ty _] เป็นดัชนีของตัวเองใน c2 นั้นถือว่าเป็นการละเมิด positivity ที่เข้มงวด Inductive Ty : Set -> Set := | c1 : Ty …
24 type-theory  coq 

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