คำศัพท์แลมบ์ดาแคลคูลัสที่ลดลงไป


13

ในภารกิจต่อเนื่องของฉันเพื่อพยายามเรียนรู้แลมด้าแคลคูลัส Hindley & Seldin "แลมบ์ดา - แคลคูลัสและผู้แนะนำ Combinators" กล่าวถึงบทความต่อไปนี้(โดย Bruce Lercher)ซึ่งพิสูจน์ให้เห็นว่านิพจน์ที่สามารถลดได้ซึ่งเป็นแบบเดียวกัน คือ )(λx.xx)(λx.xx)

ในขณะที่ฉันเชื่อผลลัพธ์ฉันจะไม่ทำตามข้อโต้แย้งเลย

มันค่อนข้างสั้น (น้อยกว่าหนึ่งย่อหน้า) คำอธิบายใด ๆ ที่จะได้รับการต้อนรับมากที่สุด

ขอบคุณ

ชาร์ลี

คำตอบ:


16

ครั้งแรกที่ทราบว่าผลที่ได้ระบุว่า Redex เพียงเบต้าที่ด้านขวามือจะมีค่าเท่ากับ (โมดูโลอัลฟาแปลง) ไปทางด้านซ้ายมือเป็น ) มีคำอื่น ๆ ที่ลดตัวเองมี redex นี้ในบริบท(λx.xx)(λx.xx)

ฉันสามารถดูได้ว่างานพิสูจน์ส่วนใหญ่ของ Lercher เป็นอย่างไรแม้ว่าจะมีจุดที่ฉันไม่สามารถผ่านมาได้โดยไม่ต้องแก้ไขหลักฐานเล็กน้อย สมมติว่า (ผมใช้=สำหรับความเท่าเทียมอัลฟา) และตามการประชุมตัวแปรสมมติว่าxไม่ได้เกิดขึ้นในฟรีB(λx.A)B=[B/x]A=xB

นับจำนวนของทางด้านซ้ายและด้านขวา การลดลงเอาจาก Redex บวกบรรดาBและเพิ่มให้มากที่สุดเท่าที่มีอยู่ในBครั้งหมายเลขของเหตุการณ์ของxใน ในคำอื่น ๆ ถ้าL ( M )เป็นจำนวนของλ 's ในMและ# x ( M )เป็นหมายเลขของเหตุการณ์ฟรีxในMแล้ว1 + L ( B ) = # x (λBBxAL(M)λM#x(M)xM ) ทางออกเดียวของสมการไดโอแฟนไทน์คือ # x ( A ) = 2 (และ L ( B ) = 1แต่เราจะไม่ใช้ความจริงนั้น1+L(B)=#x(A)×L(B)#x(A)=2L(B)=1

ฉันไม่เข้าใจอาร์กิวเมนต์ของ Lercher สำหรับย่อหน้าข้างต้น เขานับจำนวนของ 's และเงื่อนไขอะตอม; ลองเขียน# ( M )นี้ สมการคือ# ( B ) + 1 = # x ( A ) × ( # ( B ) - 1 )ซึ่งมีสองวิธี: # x ( A ) = 2 , # ( B ) = 3และ# x ( Aλ#(M)#(B)+1=#x(A)×(#(B)1)#x(A)=2,#(B)=3 2 ฉันไม่เห็นวิธีที่ชัดเจนในการขจัดความเป็นไปได้ที่สอง#x(A)=3,#(B)=2

ให้เราใช้เหตุผลเดียวกันกับจำนวนเทอมเท่ากับทั้งสองข้าง การลดจะลบหนึ่งใกล้ด้านบนและเพิ่มมากที่สุดเท่าที่มีการเกิดขึ้นของxในA , คือ 2 ดังนั้นจึงเกิดขึ้นอีกBจะต้องหายไป; ตั้งแต่คนในยังคงอยู่ (เพราะBไม่มีฟรีx ) ที่เกิดขึ้นพิเศษBบนด้านซ้ายมือจะต้องλ x .BxABABxBλx.A

ฉันไม่เข้าใจว่า Lercher อนุมานได้อย่างไรว่าไม่ได้มีBเป็นคำย่อย แต่จริงๆแล้วมันไม่ได้เกี่ยวข้องกับการพิสูจน์AB

จากสมมติฐานเริ่มต้นเป็นแอปพลิเคชัน นี้ไม่สามารถเป็นกรณีที่หาก= xจึงตัวเองเป็นโปรแกรมM Nกับλ x M N = [ ( λ x . M N ) / x ] M = [ ( λ x . M N ) / x ] N[(λx.A)/x]AA=xAMNλx.MN=[(λx.MN)/x]M=[(λx.MN)/x]N. ตั้งแต่ไม่สามารถมีตัวเองเป็น subterm ที่Mไม่สามารถมีรูปแบบλ x Pดังนั้นM = x ในทำนองเดียวกันN = xMMλx.PM=xN=x


ฉันชอบการพิสูจน์ที่ไม่มีข้อโต้แย้งในการนับ สมมติว่า(λx.A)B=[B/x]A

A=x(λx.A)B=BBAA1A2λx.A=[B/x]A1B=[B/x]A2

A1=xA1=λx.[B/x]AA1=λx.(λx.A1A2)B

A2=xA2xBA2=B

A=xxBBB=λx.Aλx.xx

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