เครื่อง Combinator Y ทำตัวเป็นตัวอย่างว่า“ แลมบ์ดาแคลคูลัสไม่สอดคล้องกันอย่างไร”?


44

ในหน้าวิกิพีเดียสำหรับผู้แก้ไขจุดรวมคงที่เขียนข้อความที่ค่อนข้างลึกลับ

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

ฉันเคยเข้าร่วมนวนิยายสายลับบ้างไหม? อะไรในโลกที่มีความหมายโดยแถลงการณ์ที่ -calculus นั้น"ไม่สอดคล้อง"และมันควรจะ"ถูกมองด้วยความสงสัย" ?λ


3
FWIW ว่าวรรคได้รับในบทความวิกิพีเดียตั้งแต่เดือนมกราคมปี 2014 เมื่อมันถูกนำมาใช้ในการเขียนใหญ่นี้เกือบบทความทั้งหมด
Ilmari Karonen

คำตอบ:


51

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

ความสอดคล้องมีความหมายที่แม่นยำในตรรกะ: ทฤษฎีที่สอดคล้องกันเป็นสิ่งที่ไม่สามารถพิสูจน์ได้ทั้งหมด ในตรรกะคลาสสิกนี้จะเทียบเท่ากับการขาดของความขัดแย้งคือทฤษฎีที่ไม่สอดคล้องกันและถ้าหากมีคำสั่งดังกล่าวว่าทฤษฎีที่พิสูจน์ให้เห็นทั้งและปฏิเสธAA¬A

แล้วนี่หมายความว่าอย่างไรกับแคลคูลัสแลมบ์ดา? ไม่มีอะไร แคลคูลัสแลมบ์ดาเป็นระบบการเขียนใหม่ไม่ใช่ทฤษฎีเชิงตรรกะ

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

อย่างไรก็ตามวิธีนี้ใช้ได้เฉพาะเมื่อการพิสูจน์แบบมีเงื่อนไขรวมกับการพิสูจน์สมมติฐานที่ถูกต้อง หากคุณมีหลักฐานที่มีเงื่อนไขซึ่งถือว่าและคุณมีหลักฐานของคุณจะไม่สามารถรวมเข้าด้วยกัน หากคุณต้องการให้การตีความของแคลคูลัสแลมบ์ดานี้คุณต้องเพิ่มข้อ จำกัด ที่มีเพียงบทพิสูจน์ของสมมติฐานที่ถูกต้องเท่านั้นที่จะนำไปใช้กับการพิสูจน์ตามเงื่อนไข สิ่งนี้เรียกว่าระบบชนิดและข้อ จำกัด คือกฎการพิมพ์ที่ระบุว่าเมื่อคุณส่งอาร์กิวเมนต์ไปยังฟังก์ชันประเภทของอาร์กิวเมนต์จะต้องตรงกับประเภทพารามิเตอร์ของฟังก์ชันn=3n=2

การติดต่อกันของCurry-Howardนั้นขนานกันระหว่างแคลคูลัสที่พิมพ์และระบบพิสูจน์

  • ประเภทที่สอดคล้องกับงบตรรกะ;
  • ข้อตกลงสอดคล้องกับหลักฐาน;
  • ประเภทที่อยู่อาศัย (เช่นประเภทที่มีเงื่อนไขประเภทนั้น) สอดคล้องกับข้อความจริง (เช่นข้อความที่มีหลักฐานการยืนยันข้อความนั้น)
  • การประเมินผลโปรแกรม (เช่นกฎเช่นเบต้า) สอดคล้องกับการเปลี่ยนแปลงของบทพิสูจน์ (ซึ่งมีการเปลี่ยนการพิสูจน์ที่ถูกต้องให้เป็นบทพิสูจน์ที่ถูกต้อง)

แคลคูลัสที่พิมพ์ที่มี combinator จุดคงที่เช่นอนุญาตให้สร้างคำศัพท์ประเภทใดก็ได้ (ลองประเมิน ) ดังนั้นหากคุณใช้การตีความเชิงตรรกะผ่านการโต้ตอบของ Curry-Howard คุณจะได้รับทฤษฎีที่ไม่สอดคล้องกัน เห็นผู้ประสานงาน Y ขัดแย้งกับจดหมายโต้ตอบ Curry-Howard หรือไม่? สำหรับรายละเอียดเพิ่มเติมYY(λx.x)

สิ่งนี้ไม่มีความหมายสำหรับแคลคูลัสแลมบ์ดาบริสุทธิ์นั่นคือสำหรับแคลคูลัสแลมบ์ดาที่ไม่มีประเภท

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

สรุปแล้ว:

  • แคลคูลัสแลมบ์ดาไม่“ ไม่สอดคล้องกัน” แนวคิดนั้นใช้ไม่ได้
  • พิมพ์แลมบ์ดาแคลคูลัสที่กำหนดประเภทระยะแลมบ์ดาทุกจะไม่สอดคล้องกัน แคลคูลัสแลมบ์ดาที่พิมพ์ออกมาบางคนเป็นเช่นนั้นคนอื่น ๆ ทำให้บางคำไม่สามารถพิมพ์ได้และมีความสอดคล้องกัน
  • แลมบ์ดาแคลคูลัสที่พิมพ์ออกมานั้นไม่ใช่raison d'ratreแต่เพียงผู้เดียวสำหรับแคลคูลัสแลมบ์ดาและแลมบ์ดาแคลคูลัสที่พิมพ์ไม่สอดคล้องกันนั้นเป็นเครื่องมือที่มีประโยชน์มาก - เพื่อพิสูจน์สิ่งต่าง ๆ

2
ว้าวมีมากสำหรับฉันที่จะแกะที่นี่ ขอบคุณสำหรับคำอธิบายโดยละเอียด มันจะต้องใช้เวลาพอสมควรที่จะลองทำทุกอย่าง
Ben I.

4
ในทางเทคนิคการดู untyped ตามที่ฉันพิมพ์คุณสามารถสร้างจดหมายโต้ตอบระหว่างแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์และตรรกะ มันเป็นเพียงตรรกะที่น่าเบื่อมากและไม่สอดคล้องกัน ผู้ช่วยพิสูจน์เช่น NuPRL โคลนน้ำเล็กน้อย ภาษาวัตถุของ NuPRL มีแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ออกมาและคุณสามารถกำหนด Y combinator ได้อย่างง่ายดาย NuPRL แยกสิ่งต่างออกไปเล็กน้อยดังนั้นมันจึงมีระบบการปรับแต่งแบบแบบพิมพ์มากกว่าแบบระบบแบบฝึกหัดไม่ใช่แบบฝึกหัดที่พิมพ์ได้ดี แต่เป็นการพิมพ์แบบดั้งเดิม
Derek Elkins

มันเป็นแค่ฉันหรือมันแปลกที่จะกำหนด "ข้อเสนอเป็นประเภท" กระบวนทัศน์บนแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์? ผมเคยเห็นคนมักจะพูดคุยเกี่ยวกับตรรกะในแคลคูลัสแลมบ์ดา untyped โดยการนำวัตถุที่เฉพาะเจาะจงเพื่อเป็นค่าบูลีนtrueและfalseและข้อเสนอเป็นสิ่งที่มีการส่งออกมูลค่าบูล (และได้รับการพิจารณาข้อเสนอในโดเมนของสิ่งที่มันจะส่งออกค่าบูลีน)

เล็กน้อย (พิสูจน์ทุกคำสั่ง) และมีความขัดแย้งเป็นคุณสมบัติที่แตกต่างกันสองแบบ ในขณะที่พวกเขามีความเท่าเทียมกันในตรรกะคลาสสิกสำหรับ logics paraconsistent ระบบสามารถไม่สอดคล้องกันและไม่สำคัญ
Taemyr

1
"ไม่สอดคล้องกัน" สำหรับ calcul - แคลคูลัส - ตามตรรกะหมายถึง "กำหนดทุกประเภทให้บางคำ" ไม่ใช่ "กำหนดประเภทให้ทุกคำ" (แม้ว่าอดีตดังนี้จากหลัง); มีภาษาที่ใช้แคลคูลัส correspond มากมายซึ่งสอดคล้องกับ logics ที่ไม่สอดคล้องกัน แต่ไม่มีคำว่า term-แคลคูลัสทุกคำที่พิมพ์ได้
Jonathan Cast

6

ฉันต้องการเพิ่มหนึ่งในสิ่งที่ @Giles พูด

การติดต่อกันของแกงกะหรี่ - ฮาวเวิร์ดสร้างความแตกต่างระหว่าง -terms (โดยเฉพาะประเภทของ -terms) และระบบพิสูจน์λλ

ตัวอย่างเช่นมีประเภท (โดยที่หมายถึง "ฟังก์ชั่นจากถึง ") ซึ่งสอดคล้องกับคำสั่งตรรกะก) ฟังก์ชั่นมีประเภทซึ่งสอดคล้องกับหมายถึงข) เราสามารถแปลงแลมบ์ดา - แคลคูลัสชนิดใด ๆ ให้เป็นตรรกะซ้ำซากโดยในแง่หนึ่ง "การจับคู่รูปแบบ" ในฟังก์ชั่นλx.λy.xa(ba)ababa(ba)λx.λy.xy(ab)(ab)(ab)(ab)

ปัญหาเกิดขึ้นเมื่อเราพิจารณา Combinator Y ที่กำหนดไว้(xx)) ปัญหาเกิดขึ้นเนื่องจากเราคาดหวังให้ combinator Y เป็น "ตัวแก้ไขจุด" เพื่อให้มีประเภท (เนื่องจากใช้ฟังก์ชันจากประเภทหนึ่งไปยังชนิดเดียวกันและพบว่า จุดสำหรับฟังก์ชั่นที่มีประเภทนั้น) แปลงนี้ให้อัตราผลตอบแทนงบตรรกะหมายถึง นี่คือความขัดแย้ง:λf.(λx.f(xx))(λx.f(xx))(aa)a(aa)a

(aa)aaa(¬a¬a)(¬a)¬a¬a

การยอมรับในระบบพิมพ์นำไปสู่ระบบประเภทที่ไม่สอดคล้องกัน นี่หมายความว่าเราสามารถทำได้(aa)a

  • ไม่อนุญาตประเภทเช่นในระบบประเภท (สิ่งนี้จะให้คุณพิมพ์ -calculus ) หรือ(aa)aλ
  • อยู่กับระบบพิมพ์ที่ไม่สอดคล้องกันในฐานะระบบการหักลอจิคัล

1
CH เกี่ยวข้องกับประเภทของข้อเสนอ, โปรแกรมเพื่อพิสูจน์และแม้กระทั่งการลดลงของการเปลี่ยนแปลงการพิสูจน์ มันไม่ได้เป็นเพียงเกี่ยวกับประเภท ถัดไปประเภทที่มีผู้อาศัยอยู่เท่านั้นที่สอดคล้องกับความซ้ำซาก เป็นแคลคูลัสแลมบ์ดา (polymorphic) ที่พิมพ์ได้แม้ว่าจะไม่มีเงื่อนไขใด ๆ สมมติว่าคุณหมายถึงประเภทเช่นจากนั้นการยอมรับประเภทดังกล่าวเป็นสิ่งที่ดีอย่างสมบูรณ์ปัญหาคือว่าประเภทนั้นมีผู้อยู่อาศัยหรือไม่ ในทางกลับกันเราสามารถเพิ่มคำดั้งเดิมลงใน STLC ที่จะทำให้ตรรกะที่สอดคล้องกันไม่สอดคล้องกันโดยไม่ต้องขยายระบบประเภท ( a a ) aa,b.aba.(aa)a
Derek Elkins

@DerekElkins คำศัพท์ดั้งเดิมคืออะไร นอกจากนี้หากฉันเข้าใจอย่างถูกต้องนี่เป็นเพียงการสันนิษฐาน (a -> a) -> a ซึ่งเป็นที่อยู่อาศัยที่ก่อให้เกิดความไม่สอดคล้องกันอยู่เสมอ ดังนั้นจึงไม่มีความไม่สอดคล้องกับภาษาการเขียนโปรแกรมที่ต้องมีหลักฐานการยกเลิก? หรือมีแหล่งอื่น ๆ ของความไม่สอดคล้องใน untyped หรือ Hindley ‑ Milner พิมพ์แลมบ์ดาแคลคูลัสหรือไม่
Hibou57

1
@ แง่ดั้งเดิม Hibou57 fixค่าคงที่เช่นเช่น คุณก็สามารถยืนยันได้ว่ามีความคงที่สำหรับประเภทแต่ละ ที่มีอยู่แล้วจะทำให้คุณเป็นระบบที่ไม่สอดคล้องกันเท่าที่ CH เป็นห่วงในขณะที่มันจะบ่งบอกทุกประเภทเป็นที่อยู่อาศัยแลมบ์ดา) คุณยังสามารถเพิ่ม -rules เพื่อสร้างคำนวณและนั่นจะทำให้พูด STLC ที่มีธรรมชาติเข้าไปในระบบทัวริงที่สมบูรณ์ แต่คุณไม่ต้องเพิ่มกฎการคำนวณเหล่านี้และระบบ จะยังคงไม่สอดคล้องกัน ฉันx (λx.x)δฉันxfixAAfix(λx.x)δfix
Derek Elkins
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.