คำถามติดแท็ก lambda-calculus

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

7
แลมบ์ดาแคลคูลัสมีส่วนช่วยอะไรในด้านทฤษฎีการคำนวณ?
ฉันแค่อ่านแคลคูลัสแลมบ์ดาเพื่อ "ทำความรู้จัก" ฉันเห็นว่าเป็นรูปแบบอื่นของการคำนวณซึ่งต่างจาก Turing Machine มันเป็นวิธีที่น่าสนใจในการทำสิ่งต่าง ๆ ด้วยฟังก์ชั่น / การลด (การพูดหยาบ) บางคำถามที่จู้จี้มาที่ฉันว่า: แคลคูลัสแลมบ์ดาคืออะไร? เหตุใดจึงต้องผ่านฟังก์ชั่น / การลดค่าเหล่านี้ทั้งหมด จุดประสงค์คืออะไร? ด้วยเหตุนี้ฉันจึงสงสัยว่า: แลมด้าแคลคูลัสทำอะไรเพื่อพัฒนาทฤษฎีของ CS? มีส่วนร่วมอะไรบ้างที่จะทำให้ฉันมีช่วงเวลา "aha" ที่เข้าใจความต้องการการมีอยู่ของมัน ทำไมแคลคูลัสแลมบ์ดาไม่ครอบคลุมในตำราเกี่ยวกับทฤษฎีออโตมาตะ? เส้นทางทั่วไปคือการผ่านออโตมาตาไวยากรณ์เครื่องทัวริงและคลาสที่ซับซ้อนมากมาย แลมบ์ดาแคลคูลัสจะรวมอยู่ในหลักสูตรสำหรับหลักสูตรสไตล์ SICP เท่านั้น (อาจไม่ใช่?) แต่ฉันไม่ค่อยเห็นว่ามันเป็นส่วนหนึ่งของหลักสูตรแกนกลางของ CS นี่แปลว่ามันมีค่าทั้งหมดใช่ไหม อาจจะไม่และฉันอาจจะหายไปบางสิ่งบางอย่างที่นี่? ฉันรู้ว่าภาษาการเขียนโปรแกรมการทำงานนั้นใช้แคลคูลัสแลมบ์ดา แต่ฉันไม่คิดว่ามันเป็นสิ่งที่ถูกต้องเนื่องจากมันถูกสร้างขึ้นมากก่อนที่เราจะมีภาษาการเขียนโปรแกรม ดังนั้นจุดประสงค์ของการรู้ / ทำความเข้าใจแลมบ์ดาลัสคืออะไร


2
ทฤษฎี Realizability: ความแตกต่างของพลังระหว่างแคลคูลัสแลมบ์ดาและทัวริงเครื่องจักร
ฉันมีสามคำถามย่อยที่เกี่ยวข้องซึ่งถูกเน้นด้วยสัญลักษณ์แสดงหัวข้อย่อยด้านล่าง (ไม่พวกเขาไม่สามารถแยกได้ถ้าคุณสงสัย) Andrej Bauer เขียนที่นี่ว่าฟังก์ชั่นบางอย่างสามารถทำได้ผ่านเครื่องทัวริง แต่ไม่ใช่ผ่านแลมบ์ดาแคลคูลัส ขั้นตอนสำคัญในการให้เหตุผลของเขาคือ: อย่างไรก็ตามถ้าเราใช้แคลคูลัสแลมบ์ดา [โปรแกรม] c ควรคำนวณตัวเลขที่แสดงถึงเครื่องทัวริงจากเทอมแลมบ์ดาซึ่งเป็นฟังก์ชัน f สิ่งนี้ไม่สามารถทำได้ (ฉันสามารถอธิบายได้ว่าทำไมหากคุณถามเป็นคำถามแยกต่างหาก) ฉันต้องการดูคำอธิบาย / หลักฐานที่ไม่เป็นทางการ ฉันไม่เห็นวิธีการใช้ทฤษฎีบทของไรซ์ที่นี่ มันจะนำไปใช้กับปัญหา "เครื่องจักรทัวริง T นี้และ L- คำศัพท์เทียบเท่า L lda นี้หรือไม่" เพราะการใช้คำกริยานี้กับคำที่เทียบเท่าจะให้ผลลัพธ์ที่เหมือนกัน อย่างไรก็ตามฟังก์ชั่นที่ต้องการอาจคำนวณต่างกัน แต่เทียบเท่า TM สำหรับเงื่อนไขแลมบ์ดาที่ต่างกัน แต่เทียบเท่า ยิ่งกว่านั้นถ้าปัญหาเกิดขึ้นจากการวิปัสสนาของแลมบ์ดาฉันคิดว่าการผ่านการเข้ารหัสเทอมของแลมบ์ดาจะต้องเป็นที่ยอมรับเช่นกันใช่ไหม? ในอีกด้านหนึ่งเนื่องจากตัวอย่างของเขาเกี่ยวข้องกับการคำนวณในแลมบ์ดาแคลคูลัสจำนวนขั้นตอนที่ Turing Machine ต้องการเพื่อให้งานเสร็จสมบูรณ์ฉันไม่แปลกใจมาก แต่เนื่องจากแลมบ์ดาแคลคูลัสไม่สามารถแก้ปัญหาที่เกี่ยวข้องกับทัวริงได้ฉันสงสัยว่าใครสามารถกำหนดปัญหาที่คล้ายกันสำหรับแลมบ์ดาแคลคูลัสและพิสูจน์ว่ามันไม่สามารถแก้ไขได้สำหรับเครื่องจักรทัวริง เครื่องจักรทัวริง (ซึ่งจะทำให้ฉันประหลาดใจ)

7
การใช้แลมบ์ดาแคลคูลัสเพื่อหาเวลาที่ซับซ้อน?
มีประโยชน์ใด ๆ ในการคำนวณความซับซ้อนของเวลาของอัลกอริทึมโดยใช้แลมบ์ดาแคลคูลัสหรือไม่? หรือมีระบบอื่นที่ออกแบบมาเพื่อการนี้? การอ้างอิงใด ๆ จะได้รับการชื่นชม

3
คำอธิบายคลาส P และ NP ผ่านแลมบ์ดาแคลคูลัส
ในการแนะนำและคำอธิบาย P และ NP ระดับความซับซ้อนมักจะได้รับผ่านเครื่องทัวริง หนึ่งในรูปแบบของการคำนวณคือแลมบ์ดา - แคลคูลัส ฉันเข้าใจว่าการคำนวณทุกรูปแบบมีค่าเท่ากัน (และถ้าเราสามารถแนะนำอะไรก็ได้ในแง่ของเครื่องจักรทัวริงเราสามารถแนะนำสิ่งนี้ในรูปแบบของการคำนวณใด ๆ ) แต่ฉันไม่เคยเห็นแนวคิดคำอธิบาย P และ NP . ทุกคนสามารถอธิบายพัฒนาการความซับซ้อนของคลาส P และ NP ได้โดยไม่ต้องใช้เครื่องจักรทัวริงและมีแคลคูลัสแลมบ์ดาเป็นรูปแบบการคำนวณเท่านั้น

4
มีรูปแบบการคำนวณที่ไม่สมบูรณ์ของทัวริงซึ่งมีปัญหาการหยุดชะงักหรือไม่ตัดสินใจไม่ได้?
ฉันไม่สามารถนึกถึงรูปแบบใด ๆ บางทีรูปแบบแคลคูลัสแลมบ์ดาบางรูปแบบ? หุ่นยนต์มือถือระดับประถม? นี้จะเกือบหักล้างวุลแฟรมของ "หลักการของการคำนวณความเท่าเทียม": กระบวนการเกือบทั้งหมดที่ไม่ง่ายอย่างเห็นได้ชัดสามารถถูกมองว่าเป็นการคำนวณที่มีความซับซ้อนเทียบเท่ากัน

2
แคลคูลัสแลมบ์ด้าและตรรกะการรวมกันเป็นแบบเดียวกันหรือไม่?
ฉันกำลังอ่าน " แลมบ์ดาแคลคูลัสและเครื่องผสม " โดย Hindley และ Seldin ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ได้สนใจแคลคูลัสแลมบ์ดาเสมอเนื่องจากการมีส่วนร่วมกับการเขียนโปรแกรมการทำงาน (เริ่มจาก Lisp และ SICP และตอนนี้กับ R และ Haskell) ใน " ไบนารีแลมบ์ดาแคลคูลัสและ Combinatory Logic" , John Trompกล่าวว่า: CL อาจถูกมองว่าเป็นส่วนย่อยของแคลคูลัสแลมบ์ดา ... ทฤษฎีส่วนใหญ่เหมือนกันกลายเป็นสิ่งที่เท่าเทียมกันเมื่อมีกฎการขยาย ภายใต้เงื่อนไขว่าใครจะใช้ตรรกะ combinatoryแทนแลมบ์ดาแคลคูลัส ? การอ้างอิงใด ๆ จะได้รับการชื่นชม

2
อะไรคือเจตนาดั้งเดิมของการสร้างแคลคูลัสแลมบ์ดา?
ฉันได้อ่านว่าตอนแรกคริสตจักรเสนอ -calculus เป็นส่วนหนึ่งของPostulate of Logic paper ของเขา(ซึ่งเป็นการอ่านที่หนาแน่น) แต่ Kleene ได้พิสูจน์ว่า "ระบบ" ของเขาไม่สอดคล้องกันหลังจากนั้นคริสตจักรได้แยกสิ่งต่าง ๆ ที่เกี่ยวข้องสำหรับงานของเขาใน "การคำนวณที่มีประสิทธิภาพ" และละทิ้งงานก่อนหน้าของเขาในตรรกะλλ\lambda ดังนั้นที่ผมเข้าใจมัน -System และสัญลักษณ์ของมันเอารูปแบบเป็นส่วนหนึ่งของสิ่งที่จะทำอย่างไรกับตรรกะ ตอนแรกศาสนจักรพยายามทำอะไรเพื่อให้บรรลุว่าเขาแยกออกจากกันในภายหลัง อะไรคือเหตุผลเบื้องต้นในการสร้าง -calculus?λλ\lambdaλλ\lambda

2
คุณจะได้รับแคลคูลัสของสิ่งก่อสร้างจากจุดอื่น ๆ ในแลมบ์ดาคิวบ์ได้อย่างไร
CoC กล่าวกันว่าเป็นสุดยอดของทั้งสามมิติของแลมบ์ดาคิวบ์ สิ่งนี้ไม่ชัดเจนสำหรับฉันเลย ฉันคิดว่าฉันเข้าใจมิติของแต่ละบุคคลและการรวมกันของสองใด ๆ ที่ดูเหมือนจะส่งผลให้มีการรวมกันค่อนข้างตรงไปตรงมา (บางทีฉันอาจจะขาดอะไรบางอย่าง?) แต่เมื่อฉันดู CoC แทนที่จะมองเหมือนการรวมกันของทั้งสามดูเหมือนว่าสิ่งที่แตกต่างอย่างสิ้นเชิง มิติข้อมูลประเภทใดชนิดหนึ่ง Prop และขนาดเล็ก / ขนาดใหญ่มาจากไหน ผลิตภัณฑ์ที่ขึ้นต่อกันหายไปที่ไหน และทำไมจึงให้ความสำคัญกับข้อเสนอและบทพิสูจน์แทนประเภทและโปรแกรม มีสิ่งที่เทียบเท่าที่เน้นประเภทและโปรแกรมหรือไม่ แก้ไข: ในกรณีที่ไม่ชัดเจนฉันขอคำอธิบายว่า CoC เทียบเท่ากับการรวมกลุ่มของแลมบ์ดาคิวบ์อย่างตรงไปตรงมาได้อย่างไร และมีสหภาพที่แท้จริงของทั้งสามออกจากที่นั่นฉันสามารถเรียน (ที่เป็นในรูปแบบของโปรแกรมและประเภทไม่ใช่หลักฐานและข้อเสนอ)? นี่คือการตอบสนองต่อความคิดเห็นในคำถามไม่ใช่คำตอบปัจจุบัน

3
แลมบ์ดาแคลคูลัสสามารถพิมพ์อัลกอริธึม * all * ด้านล่างความซับซ้อนที่กำหนดได้หรือไม่?
ฉันรู้ว่าความซับซ้อนของแลมบ์ดาชนิดที่มีการพิมพ์ส่วนใหญ่โดยไม่มีแบบดั้งเดิม combinator Y ถูก จำกัด ขอบเขตนั่นคือสามารถแสดงเฉพาะฟังก์ชันของความซับซ้อนที่มีขอบเขต จำกัด ด้วยขอบเขตที่ใหญ่ขึ้นเมื่อการแสดงออกของระบบประเภทเติบโตขึ้น ฉันจำได้ว่าเช่นแคลคูลัสของสิ่งก่อสร้างสามารถแสดงความซับซ้อนที่ทวีคูณมากที่สุดเป็นสองเท่า คำถามของฉันเกี่ยวข้องกับแลมบ์ดาที่พิมพ์ได้สามารถแสดงอัลกอริทึมทั้งหมดด้านล่างความซับซ้อนที่ถูกผูกไว้หรือมีเพียงบางส่วนเท่านั้น? ยกตัวอย่างเช่นมีอัลกอริธึมแบบเอกซ์โปเนนเชียลไทม์ที่ไม่สามารถแสดงออกได้อย่างเป็นทางการในแลมบ์ดาคิวบ์หรือไม่? "รูปร่าง" ของพื้นที่ความซับซ้อนซึ่งครอบคลุมโดยจุดยอดต่าง ๆ ของ Cube คืออะไร

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

1
แลมบ์ดาสุ่มของสกอตต์
เมื่อเร็ว ๆ นี้ Dana Scott ได้เสนอแคลคูลัสแลมบ์ดาซึ่งเป็นความพยายามที่จะแนะนำองค์ประกอบที่น่าจะเป็นลงในแคลคูลัสแลมบ์ดา (ไม่ได้พิมพ์) ขึ้นอยู่กับความหมายที่เรียกว่าแบบจำลองกราฟ คุณสามารถหาสไลด์ของเขาในบรรทัดได้ที่นี่และบทความของเขาในJournal of Applied Logic , vol. 12 (2014) แต่ด้วยการค้นหาอย่างรวดเร็วบนเว็บที่ผมพบว่างานวิจัยก่อนหน้าคล้ายกันเช่นว่าสำหรับระบบการพิมพ์ Hindley-มิลเนอร์ วิธีที่พวกเขาแนะนำความหมายที่น่าจะเป็นคล้ายกับของสก็อตต์ (ในอดีตพวกเขาใช้พระในขณะที่สก็อตต์หลังใช้สไตล์การส่งต่อเนื่อง) งานของสก็อตต์แตกต่างจากงานก่อนหน้านี้ในแง่ของทฤษฎีหรือแอปพลิเคชันที่เป็นไปได้ในแง่ใด

1
แลมบ์ดาแคลคูลัสสำหรับฟังก์ชั่นย้อนกลับ (คำนวณได้ r-Turing)
ฉันสนใจในแนวคิดของ "R-ทัวริงสมบูรณ์" ที่กำหนดไว้โดยAxelsen และGlück (2011) ระบบ r-Turing เสร็จสมบูรณ์ถ้ามันสามารถคำนวณฟังก์ชันชุดเดียวกันกับเครื่องทัวริงแบบย้อนกลับได้โดยไม่สร้างข้อมูล "ขยะ" ใด ๆ นี่คือความสามารถในการคำนวณทุกฟังก์ชั่นที่มีทั้ง (a) ที่คำนวณได้และ (b) การฉีด ฉันต้องการคำนวณพื้นที่ของฟังก์ชั่นการฉีดที่คำนวณได้ เพื่อที่จะทำสิ่งนี้ฉันกำลังมองหาภาษาการเขียนโปรแกรมแบบย้อนกลับที่ "น้อยที่สุด" --- สิ่งที่สามารถมีบทบาทที่เทียบเท่ากับการคำนวณ r-Turing ที่แลมบ์ดาแคลคูลัสเล่นเพื่อการคำนวณทัวริง ฉันรู้ว่ามีหลายภาษาที่สามารถย้อนกลับได้ซึ่งผู้คนได้พัฒนาและพิสูจน์แล้วว่าเป็นภาษาทัวริงที่สมบูรณ์ อย่างไรก็ตามสิ่งเหล่านี้ได้รับการพัฒนาโดยคำนึงถึงการใช้งานจริงดังนั้นผู้เขียนจึงมุ่งเน้นที่จะให้พวกเขามีคุณสมบัติที่น่าสนใจมากกว่าที่จะทำให้พวกเขามีน้อยที่สุด ไม่มีใครรู้ว่ามีการอธิบายภาษาที่ผันกลับได้น้อยที่สุดหรือมีการวิจัยในทิศทางดังกล่าวหรือไม่? ฉันค่อนข้างใหม่ในวรรณคดีในหัวข้อนี้ดังนั้นฉันอาจพลาดได้ง่าย อีกวิธีหนึ่งไม่มีใครเข้าใจว่าภาษาดังกล่าวสามารถสร้าง? ด้านล่างนี้เป็นบทสรุปของสิ่งที่ฉันกำลังมองหา ฉันไม่ทราบว่าสามารถสร้างได้โดยการปรับแคลคูลัสแลมบ์ดาเองหรือว่าจะต้องใช้ภาษาที่แตกต่างไปจากเดิมอย่างสิ้นเชิง r-Turing language สมบูรณ์ - คำนวณฟังก์ชั่นกลับด้านที่คำนวณได้ทั้งหมดและสามารถคำนวณฟังก์ชั่นกลับด้านได้เท่านั้น ไวยากรณ์และความหมายน้อยที่สุด (เช่นแคลคูลัสแลมบ์ดามีคำจำกัดความเฉพาะฟังก์ชั่นและแอปพลิเคชันและไม่มีอะไรอื่น) มันไม่จำเป็นสำหรับไวยากรณ์หรือความหมายที่เกี่ยวข้องกับของแลมบ์ดาแคลคูลัสแม้ว่ามันจะเป็น โปรแกรม = data นั่นคือโปรแกรมทำงานบนนิพจน์มากกว่าข้อมูลชนิดอื่น สิ่งนี้รับประกันได้ว่าผลลัพธ์ของโปรแกรมสามารถตีความได้ว่าเป็นโปรแกรม นี่อาจหมายถึงว่ามันจะต้องมีการทำงานมากกว่ารูปแบบที่จำเป็นของภาษา มีวิธีที่เป็นระบบในการแปลงโปรแกรมเป็นอินเวอร์สของโปรแกรมซึ่งไม่เกี่ยวข้องกับการคำนวณอย่างมีนัยสำคัญมากกว่าโปรแกรมที่เกี่ยวข้องกับการคำนวณอินเวอร์ส (ภาษาที่กลับด้านไม่ได้มีคุณสมบัตินี้ แต่มีบางภาษา) ฉันควรเน้นว่าแนวทางของ Axelsen และGlückในการคำนวณแบบย้อนกลับนั้นค่อนข้างแตกต่างจากวิธีการที่รู้จักกันดีเนื่องจาก …

2
มันเป็นไปได้ที่จะตัดสินใจ
ฉันรู้ว่ามันเป็นไปไม่ได้ที่จะตัดสินใจ equivalence สำหรับแคลคูลัสแลมบ์ดาที่ยังไม่พิมพ์ อ้างอิงBarendregt, HP แลมบ์ดาแคลคูลัส: ไวยากรณ์และความหมาย นอร์ทฮอลแลนด์, อัมสเตอร์ดัม (1984) :ββ\beta หาก A และ B ไม่ต่อเนื่องชุดของแลมบ์ดาที่ไม่มีเงื่อนไขซึ่งจะถูกปิดภายใต้ความเสมอภาค A และ B จะแยกกันไม่ออกซ้ำ มันเป็นไปตามนั้นหาก A เป็นชุด lambda ที่ไม่เป็นเงื่อนไขซึ่งถูกปิดภายใต้ความเท่าเทียมกันดังนั้น A จึงไม่เกิดซ้ำ ดังนั้นเราไม่สามารถตัดสินใจปัญหา "M = x" สำหรับม. ใด ๆ โดยเฉพาะเช่นกันแลมบ์ดาไม่มีโมเดลแบบเรียกซ้ำ หากเรามีระบบการทำให้เป็นมาตรฐานเช่น System F เราสามารถเลือก equivalence "จากภายนอก" โดยการลดคำที่กำหนดทั้งสองและเปรียบเทียบว่ารูปแบบปกติของพวกเขาเหมือนกันหรือไม่ อย่างไรก็ตามเราสามารถทำ "จากภายใน" ได้ไหม? มี System-F combinatorเช่นนั้นสำหรับสอง combinatorsและเรามีถ้าและมีรูปแบบปกติเหมือนกันและอย่างอื่นหรือไม่? หรือนี้สามารถทำได้อย่างน้อยสำหรับบางหรือไม่? …

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