แนะนำทฤษฎีประเภทมาร์ติน - โลฟ


36

อะไรจะเป็นการแนะนำที่ดีที่สุดสำหรับแนวคิดของมาร์ติน - ลอฟเกี่ยวกับทฤษฎีการพิมพ์? ฉันได้ดูการบรรยายจากโรงเรียนภาคฤดูร้อนของ Oregon PL แต่ฉันก็ยังงงกับคำถามต่อไปนี้:

ประเภทคืออะไร

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


4
หนังสือ hott มีการแนะนำซึ่งเปรียบเทียบชนิดและชุดอาจที่จะช่วยให้ดูมาตรา 1.1 ของhomotopytypetheory.org/book แต่ที่สำคัญกว่านั้นคือคุณต้องการให้เราปลูกฝังความคิดประเภทที่ถูกต้องในหัวของคุณโดยตรงในขณะที่ชุดคุณยินดีที่จะให้พวกเขาอธิบายโดยสัจพจน์โดยไม่ต้องยืนยันว่า "สิ่งที่พวกเขาเป็นจริง" ประเภทจะอธิบายโดยกฎการอนุมานสำหรับประเภท และพวกมันมีโมเดลคอนกรีตที่ใช้งานง่ายคุณรู้ไหมเต็มไปด้วยเลโก้บล็อค สิ่งที่คุณสามารถสร้างจากพวกเขาอยู่ในประเภท
Andrej Bauer

ฉันคิดว่าการทำให้สมองของฉันห่างจากทฤษฎีเซตเป็นปัญหาที่ใหญ่ที่สุด อย่างไรก็ตามฉันไม่แน่ใจว่าการเปรียบเทียบเลโก้เป็นอย่างไร บล็อกคืออะไร ถ้า x: A และ y: A โดยทั่วไปแล้วฉันไม่สามารถสร้างอะไรจากพวกมันได้เว้นแต่ A จะเป็นลูกศรแบบเรียกซ้ำ แน่นอนฉันสามารถผสมสิ่งต่าง ๆ เพื่อสร้างสิ่งที่สาม ...
dst

4
บล็อกเลโก้เป็นตัวสร้างประเภท ดังนั้นสำหรับตัวอย่างจากและY :คุณสามารถสร้าง( x , Y )และ( x , x )และฉันn ลิตร ( x )และอาร์อีลิตร xและλ Z : x . คุณสามารถสร้างประเภทใหม่ได้เช่นฉันd ( x , y )และzx:AY:A(x,Y)(x,x)ผมnล.(x)Rอีล.xλZ:A.xผมd(x,Y)และอื่น ๆ ผู้คนมีสัญชาติญาณต่างกันเกี่ยวกับประเภท เซตเป็นหนึ่งในนั้น แต่เป็นน้ำมันดิบ ประเภทก็เหมือนช่องว่างทอพอโลยี พวกเขายังเป็นเหมือนข้อมูลที่มีโครงสร้างในการเขียนโปรแกรม พวกเขาเป็นเหมือนω-groupoids นั่นคือความงามของมันความอุดมสมบูรณ์ของความเป็นไปได้ เลือกหนึ่งความเป็นไปได้และวิ่งไปกับมัน ΣZ:Aผมd(x,Z)ω
Andrej Bauer

คำตอบ:


31

ประเภทคือคุณสมบัติของการคำนวณ นี่คือสิ่งที่คุณเขียนทางด้านขวาของลำไส้ใหญ่

ผมขออธิบายอย่างละเอียด โปรดทราบว่าคำศัพท์นั้นไม่ได้มาตรฐานอย่างสมบูรณ์: บทความหรือหนังสือบางเล่มอาจใช้คำที่แตกต่างกันสำหรับแนวคิดบางอย่าง

ระยะเป็นองค์ประกอบของไวยากรณ์นามธรรมที่มีจุดมุ่งหมายเพื่อเป็นตัวแทนของการคำนวณ โดยสังหรณ์ใจมันเป็นต้นไม้แยก อย่างเป็นทางการมันเป็นต้นไม้ที่ จำกัด ที่โหนดเป็นของตัวอักษรบางตัว untyped แคลคูลัสกำหนดไวยากรณ์สำหรับเงื่อนไข ตัวอย่างเช่นแคลคูลัสแลมบ์ดา (untyped) มีคำศัพท์ (เขียน , N , ฯลฯ ) ที่สร้างจากโหนดสามประเภท:Mยังไม่มีข้อความ

  • ตัวแปรของ arity 0 (คอลเลกชันที่นับได้ของมัน), เขียน , y , ฯลฯxY
  • แอพลิเคชันของตัวแปรของ arity 1 (คอลเลกชัน denumerable ดังกล่าวกับ bijection เพื่อตัวแปร) เขียนฯลฯλx.M
  • แอปพลิเคชันของ arity 2 เขียน .Mยังไม่มีข้อความ

คำศัพท์คือการสร้างประโยค ความหมายที่เกี่ยวข้องกับข้อตกลงในการคำนวณ มีหลายประเภทของอรรถศาสตร์ที่ใช้กันทั่วไปมากที่สุดในการปฏิบัติงาน (อธิบายว่าจะเปลี่ยนเงื่อนไขเป็นข้อตกลงอื่น ๆ ) หรือdenotational (อธิบายข้อตกลงโดยการเปลี่ยนแปลงในพื้นที่อื่นมักสร้างจากทฤษฎีเซต)

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

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

ระบบหลายประเภทอธิบายประเภทของตัวเองเป็นคำศัพท์ในประเภทแคลคูลัส ขึ้นอยู่กับระบบพิมพ์คำเหล่านี้อาจเป็นคำเดียวกันหรือคำอื่น ฉันจะใช้คำพื้นฐานวลีเพื่ออ้างถึงคำของแคลคูลัสที่อธิบายการคำนวณ ยกตัวอย่างเช่นแคลคูลัสแลมบ์ดาพิมพ์เพียงแค่ใช้แคลคูลัสต่อไปนี้ประเภท (เขียนฯลฯ ):τ

  • ประเภทฐานของ arity 0 (คอลเลกชันที่ จำกัด หรือนับได้ของมัน) เขียน , B , ฯลฯAB
  • ฟังก์ชั่นของ arity 2 เขียน 1τ0τ1

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

สำหรับแคลคูลัสแลมบ์ดาพิมพ์เพียงแค่การพิมพ์คำพิพากษา หมายความว่าMมีประเภทτในบริบทΓ ฉันไม่ได้ระบุความหมายอย่างเป็นทางการของบริบท x : τ แกมมาΓM:τMτΓ

x:τΓΓx:τ(Γ)Γ,x:τ0M:τ1Γλx.M:τ0τ1(ผม)ΓM:τ0τ1Γยังไม่มีข้อความ:τ0ΓMยังไม่มีข้อความ:τ1(E)

ตัวอย่างเช่นถ้าและBประเภทจะขึ้นอยู่แล้วλ x λ Y xABมีประเภท ( A B ) A Bในบริบทใด ๆ (จากล่างขึ้นบนนำไปใช้ ( I )สองครั้งจากนั้น ( E )และสุดท้าย ( Γ )ในแต่ละสาขา)λx.λY.xY(AB)AB(ผม)(E)(Γ)

มันเป็นไปได้ที่จะตีความประเภทของแคลคูลัสแลมบ์ดาที่พิมพ์ออกมาเป็นชุด จำนวนนี้จะให้ความหมายเชิง Denotational สำหรับประเภท ความหมายเชิง Denotational ที่ดีสำหรับคำศัพท์พื้นฐานจะกำหนดให้กับคำศัพท์พื้นฐานแต่ละคำว่าสมาชิกของการ denotation ทุกประเภท

ทฤษฎีประเภท Intuitionistic (หรือเรียกอีกอย่างว่าทฤษฎีประเภทมาร์ติน - เลิฟ) มีความซับซ้อนมากกว่าที่จะพิมพ์แลมบ์ดาแคลคูลัสเนื่องจากมันมีองค์ประกอบอีกมากมายในแคลคูลัสของประเภท (และยังเพิ่มค่าคงที่ไม่กี่คำ) แต่หลักการสำคัญเหมือนกัน คุณลักษณะที่สำคัญของทฤษฎีประเภทมาร์ติน - โลฟคือประเภทนั้นสามารถมีคำศัพท์พื้นฐานได้ (พวกมันขึ้นอยู่กับประเภท ): เอกภพของคำพื้นฐานและจักรวาลประเภทนั้นเหมือนกัน การเรียงลำดับเช่นการกำหนดประเภทให้เป็นเงื่อนไขในทฤษฎีการเขียนใหม่)

มีระบบการพิมพ์ที่ดำเนินการต่อไปและผสมผสานประเภทและคำศัพท์พื้นฐานอย่างสมบูรณ์ดังนั้นจึงไม่มีความแตกต่างระหว่างทั้งสอง ระบบการพิมพ์ดังกล่าวจะกล่าวว่าเป็นลำดับที่สูงกว่า ในนิ่วเช่นประเภทมีชนิด - ประเภทสามารถปรากฏบนด้านซ้ายมือของ:แคลคูลัสของการก่อสร้างเป็นกระบวนทัศน์ของลำดับที่สูงกว่าประเภทขึ้นอยู่กับ แลมบ์ดาก้อน (หรือเรียกว่า Barendregt ก้อน) ระบบการพิมพ์จัดประเภทในแง่ของการไม่ว่าจะอนุญาตให้ใช้คำขึ้นอยู่กับประเภท ( polymorphism - บางแง่ฐานประกอบด้วยประเภท subterms) ประเภทขึ้นอยู่กับข้อตกลง (ประเภทขึ้นอยู่) หรือประเภทขึ้นอยู่ ในประเภท ( ตัวดำเนินการประเภท - แคลคูลัสประเภทมีแนวคิดของการคำนวณ):

ระบบประเภทส่วนใหญ่ได้รับความหมายทางทฤษฎีเซตเพื่อเชื่อมโยงกับรากฐานทางคณิตศาสตร์ตามปกติ ภาษาโปรแกรมและรากฐานของคณิตศาสตร์มีความสัมพันธ์กันอย่างไร และ มุมมองเชิงความหมายและความแตกต่างของประเภทฟังก์ชั่นคืออะไร? อาจเป็นที่สนใจของที่นี่ นอกจากนี้ยังมีงานเกี่ยวกับการใช้ทฤษฎีประเภทเป็นรากฐานของคณิตศาสตร์ - ทฤษฎีเซตเป็นรากฐานทางประวัติศาสตร์ แต่ก็ไม่ใช่ทางเลือกเดียวที่เป็นไปได้ ทฤษฎีประเภท Homotopyเป็นเหตุการณ์สำคัญในทิศทางนี้: มันอธิบายความหมายของทฤษฎีประเภท intuitionistic โดยเจตนาในแง่ของทฤษฎี homotopyและสร้างทฤษฎีเซตในกรอบนี้

ผมขอแนะนำให้เบนจามินเพียร์ซของหนังสือประเภทและการเขียนโปรแกรมภาษาและความก้าวหน้าหัวข้อในประเภทและการเขียนโปรแกรมภาษา พวกเขาสามารถเข้าถึงได้ในระดับปริญญาตรีใด ๆ ที่ไม่มีข้อกำหนดเบื้องต้นอื่น ๆ นอกเหนือจากความคุ้นเคยขั้นพื้นฐานกับการให้เหตุผลทางคณิตศาสตร์อย่างเป็นทางการ TAPL อธิบายระบบหลายประเภท; ประเภทที่ขึ้นอยู่กับเป็นเรื่องของบทที่ 2 ของ ATTAPL


+1 สำหรับ TAPL ฉันสามารถสอนตัวเองได้ค่อนข้างน้อยเกี่ยวกับประเภทจากการอ่านหนังสือเล่มนั้น
Guy Coder

ฉันไม่แน่ใจว่า ATTAPL เป็นจุดเริ่มต้นที่ดีในการเรียนรู้เกี่ยวกับประเภทการพึ่งพา
Martin Berger

15

อาจเป็นคำถามที่ดีกว่าสำหรับคนที่มาจากทฤษฎีเซตและการต่อสู้กับทฤษฎีเซตและทฤษฎีประเภทมาร์ติน - โลฟแตกต่างกันอย่างไร สัญชาติญาณของคุณเกี่ยวกับทฤษฎีเซตและรากฐานของคณิตศาสตร์จะติดอยู่กับข้อสันนิษฐานเกี่ยวกับทฤษฎีเซตที่คุณไม่ได้รับอนุญาต ทฤษฎีประเภท Alas Martin-Löfไม่ได้ใช้สมมติฐานเหล่านี้

ตรงกันข้ามกับความเข้าใจทั่วไปทฤษฎีเซตเป็นทฤษฎีของ ความสัมพันธ์สองประการ : ความเท่าเทียมกันและความเป็นสมาชิกที่ตั้งไม่ใช่เพียงแค่การเป็นสมาชิก และความสัมพันธ์ทั้งสองนี้สร้างขึ้นในขั้นตอนที่แตกต่างกันอย่างมาก

  1. เราสร้างตรรกะอันดับหนึ่งขึ้นมาเป็นทฤษฎีของความเท่าเทียมกันของสิ่งต่าง ๆ ตามอำเภอใจ (ไม่ใช่แค่เซต) ตรรกะลำดับแรกใช้แนวคิดของการพิสูจน์ที่ไม่เป็นทางการ การพิสูจน์แนวคิดไม่ได้แสดงออกอย่างเป็นทางการในตรรกะลำดับแรกเพียงอย่างเดียว

  2. จากนั้นเราสร้างทฤษฎีเซตขึ้นมาจากตรรกะอันดับหนึ่งเป็นทฤษฎีเซตและกำหนดสมาชิกภาพ

  3. การเป็นสมาชิกชุดและความเท่าเทียมกันนั้นเกี่ยวข้องกับสัจพจน์ของการส่งเสริมซึ่งบอกว่าทั้งสองชุดนั้นเท่ากันเมื่อพวกเขามีสมาชิกคนเดียวกัน

  4. ในที่สุดแนวคิดทางการของการพิสูจน์จาก (1) ได้รับการหาเหตุผลเข้าข้างตนเองอดีตเป็นชุดบางอย่าง (ต้นไม้พิสูจน์)

สิ่งสำคัญคือต้องตระหนักว่าแนวคิดในการ พิสูจน์จึงเป็นพลเมืองชั้นสองในทฤษฎีเซต

การตั้งค่านี้ใช้งานได้ดีสำหรับคณิตศาสตร์ทั่วไปขนาดเล็ก / ขนาดกลาง แต่ขณะนี้เรากำลังจัดการกับข้อพิสูจน์ขนาดใหญ่เช่นการจำแนกกลุ่มที่เรียบง่ายทุกกลุ่มที่ จำกัด หรือการตรวจสอบโปรแกรมคอมพิวเตอร์ที่ไม่น่าสนใจ มันไม่ได้นำไปสู่การใช้เครื่องจักรง่าย

TT

λ


มันมีประโยชน์มาก ฉันคิดว่าประเด็นสำคัญอย่างหนึ่งของทุกคนที่เข้ามาในวิชาคณิตศาสตร์เชิงสร้างสรรค์คือการเรียนรู้สิ่งต่างๆมากมาย
dst

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

10

ฉันไม่ทราบเส้นทางที่ง่ายในทฤษฎีประเภท Martin-Löf ฉันเดาว่าสิ่งต่อไปนี้สามารถใช้เป็นการแนะนำตัวได้

  • บีสตรอม, เค Petersson, JM สมิ ธ , มาร์ตินLöfประเภททฤษฎี
  • บีสตรอม, เค Petersson, JM สมิ ธ , การเขียนโปรแกรมใน Martin-Löfประเภททฤษฎี

อย่างไรก็ตามถ้าคุณงงกับคำถาม "What is a type" ฉันขอแนะนำให้เข้าสู่ทฤษฎีของประเภทที่ง่ายกว่าก่อน ภาษาโปรแกรมที่พิมพ์ใด ๆ จะทำ แต่เช่น Ocaml, F # และ Haskell จะมีประโยชน์อย่างยิ่ง การทำให้เข้าใจง่ายขึ้นเล็กน้อยอาจกล่าวได้ว่าทฤษฎีประเภทมาร์ติน - โลฟขยายประเภทที่อยู่เบื้องหลังภาษาดังกล่าวในสองวิธี:

  1. กับประเภทขึ้นอยู่กับ คุณพบพวกเขาในรูปแบบ tamer ในภาษาการเขียนโปรแกรมต่างๆ
  2. ด้วยประเภทตัวตน นี่คือนวัตกรรมที่สำคัญของ Martin-Löfในเรื่องทฤษฎีการพึ่งพาที่ผ่านมา

แนวคิดหลักที่อยู่เบื้องหลังประเภทการพึ่งพานั้นง่ายมาก: ประเภทสามารถกำหนดพารามิเตอร์โดยโปรแกรม สิ่งนี้เป็นไปไม่ได้ (ลดความซับซ้อนของบิต) ในระบบการพิมพ์ทั่วไปเช่นที่กล่าวไว้ข้างต้น ในขณะที่เรียบง่ายผลที่ตามมาจะลึกซึ้ง: ประเภทที่ขึ้นอยู่กับการยกการติดต่อกันของ Curry-Howard กับตรรกะเชิงสร้างสรรค์อันดับหนึ่ง ประเภทบัตรประจำตัวเป็นเรื่องผิดปกติเล็กน้อย หาก / เมื่อคุณคุ้นเคยกับภาษาเช่น Haskell คุณสามารถเรียนรู้Agdaซึ่งโดยพื้นฐานแล้ว Haskell กับทฤษฎีประเภท Martin-Löf ฉันรู้สึกว่า Agda ง่ายต่อการเรียนรู้สำหรับโปรแกรมเมอร์มากกว่าการอ่านหนังสือที่กล่าวถึงข้างต้น


ฉันรู้จักแฮสเค็ลล์จริงๆ ปัญหาของฉันคือการสอนใด ๆ ที่จะบอกวิธีการกำหนดประเภท แต่ไม่เคยสิ่งที่พวกเขาเป็นจริง ดูเหมือนว่าจะมีแท็กมายากลติดอยู่กับข้อมูลทั้งหมดของคุณเพื่อให้ตัวตรวจสอบชนิดสามารถเลือกฟังก์ชัน polymorphic รุ่นที่ถูกต้องและตรวจสอบว่าสิ่งต่าง ๆ ไม่ได้ผสมกันในรูปแบบที่ไม่เข้าท่า พวกเขายังคงเปิดคำถามว่าประเภทใดอยู่ ฉันสับสนโดยเฉพาะอย่างยิ่งเนื่องจาก Voevodsky & co กำลังพยายามคำนวณทางคณิตศาสตร์ทั้งหมดเกี่ยวกับเรื่องนี้ แต่ฉันไม่เคยเห็นคำจำกัดความที่แม่นยำ
dst

2
ΓM:αMαMMΓ

ประเภทต่างๆมีการกำหนดไว้อย่างแม่นยำใน Haskell ในทฤษฎีประเภท Martin-Löfและทฤษฎีประเภท homotopy ของ Voevodsky ไม่มีความกำกวม แต่อย่างใด ตัวอย่างเช่นภาคผนวก A.2 ให้ระบบการพิสูจน์สำหรับคำศัพท์และประเภททั้งหมดของทฤษฎีประเภท homotopy หากคุณต้องการความเข้มงวดมากขึ้นคุณสามารถดูCoisหรือAgda formalisations
Martin Berger

2
บางทีคุณอาจจำเป็นต้องกลืนประเภทนั้นโดยไม่มีสาระสำคัญนอกเหนือจากที่นิยามไว้ สิ่งนี้ไม่แตกต่างกับเซตเช่นพวกเขาได้รับจากสัจพจน์ของทฤษฎีเซต (สิ่งนี้ไม่เป็นความจริง แต่มันเป็นเรื่องสำคัญที่จะต้องเข้าใจ)
Martin Berger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.