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

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

3
มี CCC ที่รู้จักใด ๆ ถูกปิดภายใต้การดำเนินการโดเมนพลังงานคงที่หรือไม่?
มีความหมายเชิง Denotational ที่เป็นที่รู้จักสำหรับภาษาโปรแกรมเชิงฟังก์ชันที่มีความน่าจะเป็นสูงกว่าหรือไม่ โดยเฉพาะมีรูปแบบโดเมนของบริสุทธิ์ untypedแคลคูลัสขยายโดยการดำเนินการเลือกไบนารีสุ่มสมมาตรλλ\lambda แรงจูงใจ หมวดหมู่คาร์ทีเซียนปิดให้ความหมายกับคำสั่งที่สูงกว่า -calculi โดเมนพลังงานที่น่าจะเป็นให้ความหมายกับโปรแกรมสุ่ม CCC ที่ปิดภายใต้การดำเนินการโดเมนพลังงานที่น่าจะเป็นจะให้ความหมายกับภาษาการเขียนโปรแกรมฟังก์ชั่นการสั่งซื้อที่สูงขึ้นλλ\lambda งานที่เกี่ยวข้อง Tix, Keimel และ Plotkin (2004) [1] ให้การก่อสร้างที่ทันสมัยของการดำเนินการด้านล่าง -, ด้านบน, และนูน - powerdomain แต่ตั้งข้อสังเกตว่า มันยังคงเป็นปัญหาที่เปิดกว้างว่ามีโดเมนประเภทต่อเนื่องแบบคาร์ทีเซียนที่ปิดอย่างต่อเนื่องหรือไม่ซึ่งอยู่ภายใต้การสร้างโดเมนพลังงานความน่าจะเป็น Mislove (2013) [2,3] ให้ซีแมนทิกส์สำหรับตัวแปรสุ่มต่อเนื่องในภาษาอันดับหนึ่ง แต่พูดว่า แม้ว่าโดเมนกำลังน่าจะเป็นออกจาก CCC ของ posets สมบูรณ์กำกับ (dcpos, สั้น ๆ ) และสก็อตต์อย่างต่อเนื่องแผนที่คงที่ไม่มีหมวดหมู่ของโดเมนคาร์ทีเซียนปิด - dcpos ที่ตอบสนองสมมติฐานการประมาณปกติ - ที่เป็นที่รู้จักกันคงที่ภายใต้ โครงสร้างนี้ สิ่งที่ดีที่สุดที่เป็นที่รู้จักคือหมวดหมู่ของโดเมนที่สอดคล้องกันนั้นไม่แปรเปลี่ยนภายใต้ความน่าจะเป็นทางเลือก monad [4] …

1
Lammda แคลคูลัสเลียนแบบสามารถแก้ปัญหาทุกปัญหาใน P ได้หรือไม่?
ในหัวข้อขั้นสูงในประเภทและภาษาการเขียนโปรแกรมถูกกล่าวถึงในบทเกี่ยวกับระบบย่อยโครงสร้างว่า "แลบด้าแคลคูลัสเลียนแบบ" ที่ออกแบบมาอย่างดีเพื่อเลียนแบบแลมบ์ดาด้วย combinator แบบเรียกซ้ำสำหรับรายการสามารถพิมพ์คำที่มีพหุนามวิ่งได้ แสดงหลักฐานเนื่องจากความซับซ้อน) นี่จะน่าสนใจมากถ้าเราสามารถแก้ปัญหาทุกอย่างใน P. ฉันสามารถลองหาวิธีแก้ปัญหาแบบ P-Complete โดยใช้แคลคูลัสที่นำเสนอโดยฉันไม่แน่ใจว่านี่จะพิสูจน์อะไรได้จริง ฉันไม่ได้หมายความว่ามันสามารถ preform ลดทั้งหมดที่จำเป็นในการใช้วิธีการแก้ปัญหา P-Complete (แม้ว่ามันจะดูเหมือนว่ามีโอกาส) หากแคลคูลัสแลมบ์ดาเลียนแบบไม่ทราบว่าสามารถแก้ไขปัญหาได้อย่างแน่นอนใน P มีแคลคูลัสรู้จักใด ๆ ที่สามารถแก้ปัญหาใน P ได้หรือไม่?

1
อ้างอิงถึงความไม่แน่นอนของโมดูลัสของความต่อเนื่องของฟังก์ชันใน PCF
ใครสามารถชี้ให้ฉันดูการอ้างอิงสำหรับความไม่แน่นอนของโมดูลัสการทำงานต่อเนื่องใน PCF \newcommand{\N}{\mathbb{N}} \newcommand{\bool}{\mathsf{bool}} Andrej Bauer ได้เขียนโพสต์บล็อกที่ดีมากในการสำรวจปัญหาบางอย่างในรายละเอียดเพิ่มเติม แต่ฉันจะสรุปเพียงเล็กน้อยของโพสต์ของเขาเพื่อให้ความรู้เกี่ยวกับคำถามนี้ Baire พื้นที่BBBเป็นชุดของลำดับจำนวนธรรมชาติหรือเท่าชุดของฟังก์ชั่นจากธรรมชาติเพื่อธรรมชาติN→NN→N\N \to \N n สำหรับคำถามนี้เราจะ จำกัด ความสนใจของเราเฉพาะสตรีมที่คำนวณได้เท่านั้น ตอนนี้ฟังก์ชั่นf:B→boolf:B→boolf : B \to \boolนั้นต่อเนื่องหากทุก ๆxs∈Bxs∈Bxs \in Bค่าของf(xs)f(xs)f(xs)ขึ้นอยู่กับจำนวนที่แน่นอนขององค์ประกอบของxsxsxsและมันต่อเนื่องได้ถ้าเราสามารถคำนวณบน จำกัด จำนวนองค์ประกอบของxsxsxsที่ต้องการ ในการคำนวณบางรุ่นมันเป็นไปได้ที่จะเขียนโปรแกรม modulus:(B→bool)→B→Nmodulus:(B→bool)→B→N\mathsf{modulus} : (B \to \bool) \to B \to \Nซึ่งรับฟังก์ชั่นคำนวณบนพื้นที่ Baire และองค์ประกอบของพื้นที่ Baire และคืนขอบเขตบนจำนวนองค์ประกอบของสตรีม เคล็ดลับหนึ่งสำหรับการนำสิ่งนี้ไปใช้คือการใช้ที่จัดเก็บในตัวเครื่องเพื่อบันทึกดัชนีสูงสุดลงในสตรีมที่เห็น: let modulus f xs = let r = ref …

1
อะไรคือ“ คำถาม” ที่ทฤษฎีภาษาโปรแกรมพยายามตอบ?
ฉันสนใจในหัวข้อต่าง ๆ เช่น Combinatory Logic, แลมบ์ดาแคลคูลัส, การเขียนโปรแกรมเชิงฟังก์ชั่นอยู่พักหนึ่งและได้ศึกษามาแล้ว อย่างไรก็ตามแตกต่างจาก "ทฤษฎีการคำนวณ" ซึ่งมุ่งมั่นที่จะตอบคำถามของ "การคำนวณ" คือสิ่งที่สามารถ / ไม่สามารถคำนวณได้ด้วยข้อ จำกัด ต่าง ๆ ฉันกำลังดิ้นรนเพื่อหาอนาล็อกสำหรับ "ทฤษฎีการเขียนโปรแกรม" Wikipediaอธิบายว่าเป็น: Programming language theory (PLT) เป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบการใช้งานการวิเคราะห์การจำแนกลักษณะและการจำแนกประเภทของภาษาโปรแกรมและคุณลักษณะส่วนบุคคล นี่ก็เหมือนกับการพูดว่า "ทุกอย่าง" ซึ่งไม่เจาะจงจริงๆ ความก้าวหน้าทั่วไปของหัวข้อมักเป็นดังนี้: Combinatory Logic> แลมบ์ดาแคลคูลัส> ทฤษฎีมาร์ตินลอฟประเภท> แคลคูลัสแลมบ์ดาที่พิมพ์> (มีบางอย่างเกิดขึ้นที่นี่)> ภาษาโปรแกรมที่พัฒนาขึ้น - ซึ่งมีการเชื่อมต่อน้อยมากกับ CL /λλ\lambda ฉันสามารถดู "คณิตศาสตร์" พื้นฐานที่เกี่ยวข้องกับ CL /λλ\lambdaและบทพิสูจน์ที่น่าสนใจที่ออกมาเป็นผลรวมถึงทฤษฎีบท Church-Rosser และนั่นก็เรียบร้อย อย่างไรก็ตามฉันพยายามดิ้นรนเพื่อทำความเข้าใจกับ "เป้าหมายสุดท้าย" ของกิจการทั้งหมดนี้ใช่ไหม …

1
ทำความเข้าใจเกี่ยวกับหลักฐานการฟื้นฟูที่แข็งแกร่งของแคลคูลัสของสิ่งก่อสร้าง
ฉันมีปัญหาในการทำความเข้าใจหลักฐานของการทำให้เป็นมาตรฐานที่แข็งแกร่งสำหรับแคลคูลัสของสิ่งปลูกสร้าง ฉันพยายามติดตามหลักฐานในกระดาษของ Herman Geuvers "หลักฐานสั้นและยืดหยุ่นของการทำให้ปกติแข็งแกร่งสำหรับแคลคูลัสของการก่อสร้าง" ฉันสามารถติดตามเหตุผลหลักในการให้เหตุผลได้ดี Geuvers สร้างสำหรับแต่ละประเภทTTTการตีความอยู่บนพื้นฐานของการประเมินผลของประเภทตัวแปรบางalpha) จากนั้นเขาก็สร้างคำศัพท์ตีความตามการประเมินผลของคำศัพท์ตัวแปรและพิสูจน์ให้เห็นว่าการประเมินผลที่ถูกต้องสำหรับการยืนยันสำหรับทุกถือ[[T]]ξ[[T]]ξ[\![T]\!]_\xiξ(α)ξ(α)\xi(\alpha)(|M|)ρ(|M|)ρ(\!|M|\!)_\rhoρ(x)ρ(x)\rho(x)(|M|)ρ∈[[T]]ξ(|M|)ρ∈[[T]]ξ(\!|M|\!)_\rho \in [\![T]\!]_\xiΓ⊢M:TΓ⊢M:T\Gamma\vdash M:T ปัญหาของฉัน: สำหรับประเภทง่าย ๆ (เช่นประเภทระบบ F) การตีความประเภทเป็นชุดคำศัพท์จริงๆดังนั้นการยืนยันเข้าท่า แต่สำหรับประเภทที่ซับซ้อนกว่านี้การตีความไม่ใช่ชุดคำศัพท์ แต่เป็นชุดของฟังก์ชันของพื้นที่ฟังก์ชันที่เหมาะสม ฉันคิดว่าฉันเกือบจะเข้าใจการสร้างช่องว่างของฟังก์ชั่นอย่างไรก็ตามมันไม่สามารถกำหนดความหมายใด ๆ ให้กับสำหรับความซับซ้อนมากขึ้น ประเภทT[[T]]ξ[[T]]ξ[\![T]\!]_\xi(|M|)ρ∈[[T]]ξ(|M|)ρ∈[[T]]ξ(\!|M|\!)_\rho \in [\![T]\!]_\xi[[T]]ξ[[T]]ξ[\![T]\!]_\xi(|M|)ρ∈[[T]]ξ(|M|)ρ∈[[T]]ξ(\!|M|\!)_\rho \in [\![T]\!]_\xiTTT ใครสามารถอธิบายหรือให้ลิงก์ไปยังงานนำเสนอหลักฐานที่เข้าใจได้บ้าง? แก้ไข: ให้ฉันพยายามทำให้คำถามชัดเจนขึ้น บริบทมีการประกาศสำหรับตัวแปรประเภทและตัวแปรวัตถุ การประเมินค่าประเภทนั้นถูกต้องหากสำหรับทั้งหมดด้วยดังนั้นถูกต้อง แต่สามารถเป็นองค์ประกอบของและไม่เพียง แต่SATดังนั้นการประเมินผลระยะไม่ถูกต้องสามารถกำหนดสำหรับalpha) ต้องเป็นคำศัพท์และไม่ใช่ฟังก์ชันของพื้นที่ฟังก์ชันΓΓ\Gammaα:Aα:A\alpha:A(α:A)∈Γ(α:A)∈Γ(\alpha:A) \in \GammaΓ⊢A:□Γ⊢A:◻\Gamma\vdash A:\squareξ(α)∈ν(A)ξ(α)∈ν(A)\xi(\alpha) \in \nu(A)ν(A)ν(A)\nu(A)(SAT)∗(SAT)∗(SAT)^*SATSATSATρ(α)ρ(α)\rho(\alpha)ρ(α)ρ(α)\rho(\alpha) แก้ไข 2: ตัวอย่างที่ใช้งานไม่ได้ มาสร้างค่าที่ถูกต้องต่อไปนี้: [ ][ α : ∗ …

1
ความขัดแย้งระหว่างทฤษฎีความไม่สมบูรณ์ครั้งที่สองของGödelกับทรัพย์สินของ CIC ของ Rosser หรือไม่?
ในอีกด้านหนึ่งทฤษฎีบทความไม่สมบูรณ์ครั้งที่สองของGödelระบุว่าทฤษฎีทางการที่สอดคล้องกันใด ๆ ที่มีความแข็งแกร่งเพียงพอที่จะแสดงข้อความเกี่ยวกับคณิตศาสตร์พื้นฐานไม่สามารถพิสูจน์ความมั่นคงของตนเองได้ ในทางตรงกันข้ามทรัพย์สินของ Church-Rosser ของระบบ (การเขียนใหม่) อย่างเป็นทางการบอกเราว่ามันสอดคล้องกันในแง่ที่ว่าสมการทั้งหมดไม่สามารถทำได้ตัวอย่างเช่นK≠≠\neqฉันเนื่องจากพวกเขาไม่มีรูปแบบปกติเหมือนกัน จากนั้นแคลคูลัสของการสร้างอุปนัย (CIC) จะแสดงสถานะทั้งสองอย่างชัดเจน มันแข็งแรงพอที่จะเป็นตัวแทนของข้อเสนอเกี่ยวกับคณิตศาสตร์ (ที่จริงแล้ว,λβηλβη\lambda\beta\eta- แคลคูลัสเพียงอย่างเดียวสามารถเข้ารหัสเลขคริสตจักรและแสดงฟังก์ชั่นการเรียกซ้ำทั้งหมด) นอกจากนี้ CIC ยังมีการรวมตัวหรือทรัพย์สิน Church-Rosser แต่: CIC ไม่ควรจะพิสูจน์ความสอดคล้องของตนเองโดยทฤษฎีบทความไม่สมบูรณ์ที่สองหรือไม่? หรือเป็นเพียงแค่กล่าวว่า CIC ไม่สามารถพิสูจน์ความมั่นคงของตัวเองในระบบและคุณสมบัติการบรรจบกันเป็น meta-theorem หรือบางทีทรัพย์สินที่บรรจบกันของ CIC ไม่รับประกันความมั่นคง? ฉันจะขอขอบคุณอย่างมากถ้ามีใครบางคนสามารถทำให้เข้าใจถึงปัญหาเหล่านั้นได้! ขอบคุณ!

3
วิธีทำให้แลมบ์ดาแคลคูลัสแข็งแกร่งเป็นปกติโดยไม่มีระบบประเภท?
มีระบบใดบ้างที่คล้ายกับแคลคูลัสแลมบ์ดาที่มีความแข็งแกร่งในการทำให้กลับสู่สภาพปกติโดยไม่จำเป็นต้องเพิ่มระบบประเภทที่อยู่ด้านบนของมัน?

2
ประโยชน์ของสัญกรณ์ของ Krivine คืออะไร
ฉันเห็นบางคนใช้สัญลักษณ์ของ Krivine สำหรับแอปพลิเคชันฟังก์ชั่นเมื่อแสดงไวยากรณ์สำหรับ -calculus ตัวอย่างเช่น -term (ตามแบบแผนปกติที่ฟังก์ชันเชื่อมโยงแอปพลิเคชันไปทางซ้ายดังนั้นจริงๆแล้วหมายถึง ) เขียน (มีการประชุมที่คล้ายกันซึ่งจริงๆแล้วหมายถึง ) ฉันไม่เห็นจุดของการมีคู่ของวงเล็บอีกรอบด้านในสุดฉทำไมผู้คนถึงใช้สัญลักษณ์ของ Krivine แทนที่จะเป็นสัญลักษณ์ปกติλλ\lambdaλλ\lambdaλf.λx.λy.f x yλf.λx.λy.f x y\lambda f . \lambda x . \lambda y . f\ x\ yλf.λx.λy.((f x) y)λf.λx.λy.((f x) y)\lambda f . \lambda x . \lambda y . ((f\ x)\ y)λf.λx.λy.(f) x yλf.λx.λy.(f) x y\lambda f . …

1
หลักฐานง่าย ๆ ที่ความสามารถในการพิมพ์ได้ใน System F (
สมมติว่าเราไม่ทราบว่าผลลัพธ์ของ Joe B. Wells ในปี 1994 นั้นทั้งการพิมพ์ดีดและการตรวจสอบประเภทไม่สามารถบอกได้ใน System F (AKA λ 2λ2\lambda 2) ในแลมบ์ดาของนิวเดลีของ Barendregt ที่มีประเภท (1992) ฉันพบหลักฐานเนื่องจาก Malecki 1989 ที่การตรวจสอบชนิดนั้นแสดงถึงความสามารถในการพิมพ์ดีด นี้เป็นเพราะ ที่มีอยู่ σσ\sigma ดังนั้น M:σM:σM:\sigma เทียบเท่ากับ (λxy.y)M:(α→α)(λxy.y)M:(α→α)(\lambda xy.y)M : (\alpha\rightarrow\alpha) (นี่เป็นเพราะหากคำใดคำหนึ่งสามารถพิมพ์ได้ใน System F ดังนั้นเทอมย่อยทั้งหมดจะเป็นเช่นนั้น) มีวิธีง่ายๆในการพิสูจน์วิธีอื่น ๆ ? นั่นคือหลักฐานที่แสดงว่าการพิมพ์ดีดหมายถึงการตรวจสอบประเภทใน System F หรือไม่

2
ขั้นตอนการลดลงสองสามร้อยครั้งนั้นมากเกินไปที่จะได้รูปแบบปกติของ Y fac ⌜3⌝หรือไม่?
เมื่อฉันได้สอนพื้นฐานของ calcul-แคลคูลัสเมื่อเร็ว ๆ นี้ฉันได้ติดตั้ง evalu-แคลคูลัสธรรมดาใน Common LISP เมื่อฉันถามรูปแบบปกติของY fac 3การลดอันดับปกติมันใช้เวลา 619 ขั้นตอนซึ่งดูเหมือนจะค่อนข้างมาก แน่นอนว่าทุกครั้งที่ฉันลดกระดาษที่คล้ายกันฉันไม่เคยใช้λ-แคลคูลัสที่ไม่มีการพิมพ์ แต่เพิ่มตัวเลขและฟังก์ชั่นการใช้งาน ในกรณีนี้ fac ถูกกำหนดเช่น: fac = λfac.λn.if (= n 0) 1 (* n (fac (- n 1))) ในกรณีนี้พิจารณา=, *และ-เป็นความดีความชอบฟังก์ชั่นมันใช้เวลาเพียงประมาณ 50 ขั้นตอนที่จะได้รับไปสู่รูปแบบปกติY fac 36 แต่ในผู้ประเมินของฉันฉันใช้สิ่งต่อไปนี้: true = λx.λy.x false = λx.λy.y ⌜0⌝ = λf.λx.x succ = λn.λf.λx.f n …

1
อะไรคือบทบาทของแคลคูลัส Bicolored ของการก่อสร้าง?
โดยเฉพาะอย่างยิ่งอัลกอริทึมที่ยึดตามแคลคูลัส Bicolored ของการก่อสร้างและฉันสับสนเล็กน้อย ฉันไม่เข้าใจว่าจุดประสงค์ของCCbiCCbiCC^{bi}คือ. ดูเหมือนว่าจะเหมือนกันกับCCCCCCยกเว้นว่ามีความแตกต่างระหว่างข้อโต้แย้งโดยนัยและข้อโต้แย้งที่ชัดเจนสำหรับฟังก์ชั่น โดยเฉพาะฉันไม่เห็นว่ามันช่วยให้คุณเขียนได้อย่างไร(id0)(id0)(id\; 0) แทน (idN0)(idN0)(id\; \mathbb{N}\; 0). หากเราถือว่าระบบสำหรับคำจำกัดความสากลแล้ว id:(ΠA|Type.(Πx:A.A))id:(ΠA|Type.(Πx:A.A))id : (\Pi A\; |\; \mathsf{Type}\; . (\Pi x : A\; . A)) และ id=(λA|Type.(λx:A.x))id=(λA|Type.(λx:A.x))id = (\lambda A\; |\; \mathsf{Type}\; . (\lambda x : A . x)). ทำกฎอนุญาตจริงๆ (id0)(id0)(id\; 0)? แน่นอนว่าไวยากรณ์ทำ แต่ฉันไม่เห็นมันในความสัมพันธ์การพิมพ์ ฉันพลาดอะไรไปรึเปล่า? ฉันเข้าใจบทบาทของCCbiCCbiCC^{bi} ไม่ถูกต้อง? นอกจากนี้ทรัพย์สินที่บรรจบกันจะสูญหายไปหรือไม่ ฉันเดาว่าปัญหาของฉันคือฉันกำลังอ่านเกี่ยวกับความประณีตโดยไม่ต้องอ่านอะไรมากมายCCbiCCbiCC^{bi}ก่อนหน้านี้. กระดาษที่ดีอะไรที่แนะนำและมันคนเดียว? …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.