กลับไปหน้าบทความ

อ่าน 25 นาที

การรวม (วิทยาการคอมพิวเตอร์)

เปลี่ยนเส้นทางไปยังส่วนต่างๆ

ในตรรกศาสตร์และวิทยาศาสตร์คอมพิวเตอร์โดยเฉพาะอย่างยิ่งในการให้เหตุผลอัตโนมัติ การ รวมกัน ( unification)เป็นกระบวนการเชิงอัลกอริทึมในการแก้สมการระหว่างนิพจน์ เชิงสัญลักษณ์...

การรวม (วิทยาการคอมพิวเตอร์)

ในตรรกศาสตร์และวิทยาศาสตร์คอมพิวเตอร์โดยเฉพาะอย่างยิ่งในการให้เหตุผลอัตโนมัติ การ รวมกัน ( unification)เป็นกระบวนการเชิงอัลกอริทึมในการแก้สมการระหว่างนิพจน์ เชิงสัญลักษณ์ ซึ่งแต่ละนิพจน์มีรูปแบบด้านซ้าย = ด้านขวาตัวอย่างเช่น เมื่อใช้x , y , zเป็นตัวแปร และให้fเป็นฟังก์ชันที่ไม่มีการ ตีความ ชุด สมการ เดี่ยว { f (1, y ) = f ( x ,2) } เป็นปัญหาการรวมกันลำดับที่หนึ่งเชิงไวยากรณ์ ซึ่งมีการแทนที่ { x 1, y ↦ 2 } เป็นคำตอบเดียว

ข้อตกลงต่างๆ แตกต่างกันไปในเรื่องค่าที่ตัวแปรอาจมีได้และนิพจน์ใดที่ถือว่าเทียบเท่ากัน ในการรวมเชิงไวยากรณ์ลำดับที่หนึ่ง ตัวแปรจะครอบคลุมเทอมลำดับที่หนึ่งและความเทียบเท่าเป็นไปตามไวยากรณ์ การรวมแบบนี้มีคำตอบ "ที่ดีที่สุด" เพียงหนึ่งเดียว และใช้ในการเขียนโปรแกรมเชิงตรรกะและ การใช้งาน ระบบประเภท ของภาษาโปรแกรม โดยเฉพาะอย่างยิ่งใน อัลกอริธึม การอนุมานประเภทตามHindley–Milnerในการรวมลำดับที่สูงกว่า ซึ่งอาจจำกัดเฉพาะการรวมรูปแบบลำดับที่สูงกว่า เทอมอาจรวมถึงนิพจน์แลมบ์ดา และความเทียบเท่าขึ้นอยู่กับการลดเบต้า การรวมแบบนี้ใช้ในตัวช่วยพิสูจน์และการเขียนโปรแกรมเชิงตรรกะลำดับที่สูงกว่า เช่นIsabelle , TwelfและlambdaPrologสุดท้าย ในการรวมเชิงความหมายหรือ E-unification ความเท่าเทียมกันขึ้นอยู่กับความรู้พื้นฐานและตัวแปรจะครอบคลุมโดเมนที่หลากหลาย การรวมแบบนี้ใช้ในตัวแก้ปัญหา SMT อัลกอริ ธึ มการเขียนเทอมใหม่และการวิเคราะห์โปรโตคอลการเข้ารหัสลับ

คำจำกัดความอย่างเป็นทางการ

ปัญหาการรวมเป็นเซตจำกัดE ={ l r , ..., l r }ของสมการที่ต้องแก้ โดยที่l , r อยู่ในเซตนี้ที{\displaystyle T}ของพจน์หรือนิพจน์ขึ้นอยู่กับว่านิพจน์หรือพจน์ใดที่อนุญาตให้ปรากฏในชุดสมการหรือปัญหาการรวม และนิพจน์ใดที่ถือว่าเท่ากัน จึงมีการแบ่งกรอบการรวมออกเป็นหลายแบบ หากอนุญาตให้ใช้ตัวแปรลำดับสูงกว่า นั่นคือตัวแปรที่แทนฟังก์ชันกระบวนการนี้เรียกว่าการรวมลำดับสูงกว่ามิฉะนั้น เรียกว่า การรวมลำดับแรกหากต้องการคำตอบที่ทำให้ทั้งสองข้างของแต่ละสมการเท่ากันอย่างแท้จริง กระบวนการนี้เรียกว่า การรวมเชิงไวยากรณ์ หรือการรวมแบบอิสระมิฉะนั้น เรียกว่าการรวม เชิงความ หมาย หรือการรวมเชิงสมการหรือการรวมแบบ Eหรือการรวมโมดูลทฤษฎี

ถ้าด้านขวาของแต่ละสมการปิด (ไม่มีตัวแปรอิสระ) ปัญหาจะเรียกว่าการจับคู่ (รูปแบบ) ด้านซ้าย (ที่มีตัวแปร) ของแต่ละสมการเรียกว่ารูปแบบ[ 1 ]

ข้อกำหนดเบื้องต้น

ในทางทฤษฎีแล้ว แนวทางการรวมเป็นหนึ่งเดียวตั้งอยู่บนพื้นฐานของสิ่งต่อไปนี้

  • เซตอนันต์วี{\displaystyle V}ของตัวแปรสำหรับการรวมลำดับที่สูงขึ้น การเลือกตัวแปรที่สะดวกกว่านั้นจึงเหมาะสมกว่าวี{\displaystyle V}แยกออกจากเซตของตัวแปรที่ผูกกับเทอมแลมบ์ดา
  • ชุดหนึ่งที{\displaystyle T}ของเงื่อนไขต่างๆ เช่นนั้นวีที{\displaystyle V\subseteq T}สำหรับการรวมลำดับที่หนึ่งที{\displaystyle T}โดยทั่วไปคือเซตของพจน์อันดับแรก (พจน์ที่สร้างขึ้นจากสัญลักษณ์ตัวแปรและฟังก์ชัน) สำหรับการรวมพจน์อันดับสูงกว่าที{\displaystyle T}ประกอบด้วยพจน์อันดับแรกและพจน์แลมบ์ดา (พจน์ที่มีตัวแปรอันดับสูงกว่าบางตัว)
  • การทำแผนที่ตัวแปร:ที{\displaystyle {\text{vars}}\colon T\rightarrow }พี{\displaystyle \mathbb {P} }(วี){\displaystyle (V)}โดยกำหนดให้กับแต่ละเทอมที{\displaystyle t}ชุดตัวแปร(ที)วี{\displaystyle {\text{vars}}(t)\subsetneq V}ของตัวแปรอิสระที่เกิดขึ้นในที{\displaystyle t}.
  • ทฤษฎีหรือความสัมพันธ์สมมูล{\displaystyle \equiv }บนที{\displaystyle T}ซึ่งบ่งชี้ว่าเงื่อนไขใดบ้างที่ถือว่าเท่าเทียมกัน สำหรับการรวม E ลำดับที่หนึ่ง{\displaystyle \equiv }สะท้อนให้เห็นถึงความรู้พื้นฐานเกี่ยวกับสัญลักษณ์ฟังก์ชันบางอย่าง ตัวอย่างเช่น ถ้า{\displaystyle \oplus }ถือว่าเป็นสมบัติสลับที่ได้ทีคุณ{\displaystyle t\equiv u}ถ้าคุณ{\displaystyle u}ผลลัพธ์จากที{\displaystyle t}โดยการสลับอาร์กิวเมนต์ของ{\displaystyle \oplus }ในบางกรณี (อาจจะทุกกรณี) [หมายเหตุ 1 ]ในกรณีทั่วไปที่ไม่มีความรู้พื้นฐานเลย เฉพาะคำที่เหมือนกันตามตัวอักษรหรือตามไวยากรณ์เท่านั้นที่จะถือว่าเท่ากัน ในกรณีนี้ ≡ เรียกว่าทฤษฎีอิสระ (เพราะเป็นวัตถุอิสระ ) ทฤษฎีว่างเปล่า (เพราะเซตของประโยค สมการ หรือความรู้พื้นฐานว่างเปล่า) ทฤษฎีของฟังก์ชันที่ไม่ได้ตีความ (เพราะการรวมทำบนคำ ที่ไม่ได้ตีความ ) หรือทฤษฎีของตัวสร้าง (เพราะสัญลักษณ์ฟังก์ชันทั้งหมดสร้างคำข้อมูลขึ้นมาแทนที่จะดำเนินการกับคำเหล่านั้น) สำหรับการรวมลำดับที่สูงกว่า โดยปกติแล้วทีคุณ{\displaystyle t\equiv u}ถ้าที{\displaystyle t}และคุณ{\displaystyle u}มีค่าเทียบเท่าอัลฟา

ตัวอย่างเช่น ปัญหาการรวมลำดับที่หนึ่งทางไวยากรณ์ { y = cons (2, y ) } ไม่มีคำตอบบนเซตของ เทอม จำกัดอย่างไรก็ตาม มันมีคำตอบเดียว { ycons (2, cons (2, cons (2,...))) } บนเซตของ เทอม ต้นไม้อนันต์ ในทำนองเดียวกัน ปัญหาการรวมลำดับที่หนึ่งทางความหมาย { ax = xa } มีการแทนที่แต่ละแบบในรูปแบบ { xa ⋅...⋅ a } เป็นคำตอบในเซมิกรุป กล่าว คือ ถ้า (⋅) ถือว่า มีคุณสมบัติ การสลับที่ แต่ปัญหาเดียวกันนี้ เมื่อมองในกลุ่มอาเบเลียนซึ่ง (⋅) ถือว่า มีคุณสมบัติ การสลับที่ เช่นกัน การแทนที่ใดๆ ก็ตามจะเป็นคำตอบได้

ตัวอย่างหนึ่งของการรวมลำดับที่สูงกว่าคือ เซตที่มีสมาชิกเดียว { a = y ( x ) } ซึ่งเป็นปัญหาการรวมลำดับที่สองเชิงไวยากรณ์ เนื่องจากyเป็นตัวแปรฟังก์ชัน วิธีแก้ปัญหาหนึ่งคือ { xa , y ↦ ( ฟังก์ชันเอกลักษณ์ ) }; อีกวิธีหนึ่งคือ { y ↦ ( ฟังก์ชันคงที่ที่แมปแต่ละค่าไปยังa ), x(ค่าใดๆ) }

การทดแทน

การแทนที่คือการจับคู่σ:วีที{\displaystyle \sigma :V\rightarrow T}จากตัวแปรไปสู่เทอม; สัญลักษณ์{x1ที1,...,xเคทีเค}{\displaystyle \{x_{1}\mapsto t_{1},...,x_{k}\mapsto t_{k}\}}หมายถึงการแมปการแทนที่ของแต่ละตัวแปรxฉัน{\displaystyle x_{i}}ถึงระยะเวลาทีฉัน{\displaystyle t_{i}}, สำหรับฉัน=1,...,เค{\displaystyle i=1,...,k}และตัวแปรอื่นๆ ทุกตัวก็เช่นกัน;xฉัน{\displaystyle x_{i}}ต้องแตกต่างกันเป็นคู่ๆการนำการแทนที่นั้นไปใช้กับเทอมหนึ่งที{\displaystyle t}เขียนในรูปแบบสัญกรณ์แบบโพสต์ฟิกซ์ดังนี้ที{x1ที1,...,xเคทีเค}{\displaystyle t\{x_{1}\mapsto t_{1},...,x_{k}\mapsto t_{k}\}}นั่นหมายถึงการแทนที่ตัวแปรทุกตัวในทุกๆ ตำแหน่งพร้อมกันxฉัน{\displaystyle x_{i}}ในแง่ของที{\displaystyle t}โดยทีฉัน{\displaystyle t_{i}}ผลลัพธ์ทีτ{\displaystyle t\tau }ของการใช้การทดแทนτ{\displaystyle \tau }ถึงระยะเวลาหนึ่งที{\displaystyle t}เรียกว่าเป็นตัวอย่างของคำนั้นที{\displaystyle t}ตัวอย่างลำดับแรกคือ การใช้การแทนที่{ xh ( a , y ), zb }กับเทอม

เอฟ({\displaystyle f(}x{\displaystyle {\textbf {x}}},เอ,จี({\displaystyle ,a,g(}z{\displaystyle {\textbf {z}}}),y){\displaystyle ),y)}
ผลผลิต 
เอฟ({\displaystyle f(}ชม.(เอ,y){\displaystyle {\textbf {h}}({\textbf {a}},{\textbf {y}})},เอ,จี({\displaystyle ,a,g(}{\displaystyle {\textbf {b}}}),y).{\displaystyle ),y).}

การสรุปโดยทั่วไป การเฉพาะเจาะจง

หากเป็นเงื่อนไขที{\displaystyle t}มีอินสแตนซ์ที่เทียบเท่ากับเทอมคุณ{\displaystyle u}นั่นคือ ถ้าทีσคุณ{\displaystyle t\sigma \equiv u}สำหรับการทดแทนบางอย่างσ{\displaystyle \sigma }, แล้วที{\displaystyle t}เรียกว่าทั่วไปมากกว่าคุณ{\displaystyle u}, และคุณ{\displaystyle u}เรียกว่ามีความพิเศษมากกว่าหรือถูกรวมเข้ากับที{\displaystyle t}. ตัวอย่างเช่น,xเอ{\displaystyle x\oplus a}ทั่วไปกว่าเอ{\displaystyle a\oplus b}ถ้า ⊕ เป็นสมบัติการสลับที่ได้เนื่องจากแล้ว(xเอ){x}=เอเอ{\displaystyle (x\oplus a)\{x\mapsto b\}=b\oplus a\equiv a\oplus b}.

ถ้า ≡ คือความเหมือนกันทางไวยากรณ์ (literal identity) ของคำศัพท์ คำศัพท์หนึ่งอาจมีความทั่วไปและเฉพาะเจาะจงกว่าอีกคำศัพท์หนึ่งได้ก็ต่อเมื่อคำศัพท์ทั้งสองแตกต่างกันเพียงแค่ชื่อตัวแปรเท่านั้น ไม่ใช่โครงสร้างทางไวยากรณ์ คำศัพท์ดังกล่าวเรียกว่าตัวแปรหรือการเปลี่ยนชื่อของกันและกัน ตัวอย่างเช่น เอฟ(x1,เอ,จี(z1),y1){\displaystyle f(x_{1},a,g(z_{1}),y_{1})} เป็นรูปแบบหนึ่งของ เอฟ(x2,เอ,จี(z2),y2){\displaystyle f(x_{2},a,g(z_{2}),y_{2})}, เนื่องจาก เอฟ(x1,เอ,จี(z1),y1){x1x2,y1y2,z1z2}=เอฟ(x2,เอ,จี(z2),y2){\displaystyle f(x_{1},a,g(z_{1}),y_{1})\{x_{1}\mapsto x_{2},y_{1}\mapsto y_{2},z_{1}\mapsto z_{2}\}=f(x_{2},a,g(z_{2}),y_{2})} และ เอฟ(x2,เอ,จี(z2),y2){x2x1,y2y1,z2z1}=เอฟ(x1,เอ,จี(z1),y1).{\displaystyle f(x_{2},a,g(z_{2}),y_{2})\{x_{2}\mapsto x_{1},y_{2}\mapsto y_{1},z_{2}\mapsto z_{1}\}=f(x_{1},a,g(z_{1}),y_{1}).} อย่างไรก็ตาม,เอฟ(x1,เอ,จี(z1),y1){\displaystyle f(x_{1},a,g(z_{1}),y_{1})}ไม่ใช่ รูปแบบ หนึ่งของ เอฟ(x2,เอ,จี(x2),x2){\displaystyle f(x_{2},a,g(x_{2}),x_{2})}เนื่องจากไม่มีการแทนที่ใดที่จะเปลี่ยนพจน์หลังให้เป็นพจน์แรกได้ ดังนั้นพจน์หลังจึงมีความพิเศษกว่าพจน์แรกอย่างแท้จริง

สำหรับค่าใดๆ ก็ตาม{\displaystyle \equiv }คำศัพท์หนึ่งอาจมีความทั่วไปและเฉพาะเจาะจงมากกว่าคำศัพท์ที่มีโครงสร้างแตกต่างกัน ตัวอย่างเช่น ถ้า ⊕ เป็นอิเดมโพเทนต์นั่นคือ ถ้า ⊕ เป็นจริงเสมอxxx{\displaystyle x\oplus x\equiv x}แล้วจึงใช้คำนั้นxy{\displaystyle x\oplus y}ทั่วไปกว่าz{\displaystyle z}[ หมายเหตุ 2 ]และในทางกลับกัน[ หมายเหตุ 3 ]แม้ว่าxy{\displaystyle x\oplus y}และz{\displaystyle z}มีโครงสร้างที่แตกต่างกัน

การทดแทนσ{\displaystyle \sigma }มีความพิเศษมากกว่าหรือถูกรวมเข้ากับการทดแทนτ{\displaystyle \tau }ถ้าทีσ{\displaystyle t\sigma }ถูกรวมเข้าไว้ด้วยกันทีτ{\displaystyle t\tau }สำหรับแต่ละเทอมที{\displaystyle t}เรายังกล่าวอีกว่าτ{\displaystyle \tau }ทั่วไปกว่าσ{\displaystyle \sigma }กล่าวอย่างเป็นทางการมากขึ้น ให้พิจารณาเซตอนันต์ที่ไม่ว่างเปล่าวี{\displaystyle V}ของตัวแปรเสริมในลักษณะที่ไม่มีสมการฉันฉัน{\displaystyle l_{i}\doteq r_{i}}ในปัญหาการรวมนั้นมีตัวแปรจากวี{\displaystyle V}จากนั้นจึงทำการแทนที่σ{\displaystyle \sigma }ถูกรวมเข้ากับการทดแทนอื่นτ{\displaystyle \tau }หากมีการเปลี่ยนตัวθ{\displaystyle \theta }โดยที่สำหรับทุกเงื่อนไขXวี{\displaystyle X\notin V},XσXτθ{\displaystyle X\sigma \equiv X\tau \theta }[ 2 ] ตัวอย่าง เช่น{xเอ,yเอ}{\displaystyle \{x\mapsto a,y\mapsto a\}}ถูกรวมเข้าไว้ด้วยกันτ={xy}{\displaystyle \tau =\{x\mapsto y\}}, โดยใช้θ={yเอ}{\displaystyle \theta =\{y\mapsto a\}}, แต่ σ={xเอ}{\displaystyle \sigma =\{x\mapsto a\}}ไม่ได้ถูกรวมโดยτ={xy}{\displaystyle \tau =\{x\mapsto y\}}, เช่นเอฟ(x,y)σ=เอฟ(เอ,y){\displaystyle f(x,y)\sigma =f(a,y)}ไม่ใช่ตัวอย่างของ เอฟ(x,y)τ=เอฟ(y,y){\displaystyle f(x,y)\tau =f(y,y)}[ 3 ]

ชุดโซลูชัน

การแทนที่ σ เป็นคำตอบของปัญหาการรวมEถ้าl σ ≡ r σสำหรับฉัน=1,...,n{\displaystyle i=1,...,n}การแทนที่แบบนี้เรียกว่าตัวรวมของEตัวอย่างเช่น ถ้า ⊕ มีคุณสมบัติการสลับที่ ปัญหาการรวม { xaax } จะมีคำตอบเป็น { xa }, { xaa }, { xaaa } เป็นต้น ในขณะที่ปัญหา { xaa } ไม่มีคำตอบ

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

เซตSเรียกว่าเซตขั้นต่ำหากไม่มีสมาชิกใดในเซตนั้นที่รวมสมาชิกอื่นเข้าไป ขึ้นอยู่กับกรอบงาน เซตการแทนที่ที่สมบูรณ์และขั้นต่ำอาจมีสมาชิกเป็นศูนย์ หนึ่ง จำนวนจำกัด หรือจำนวนอนันต์ หรืออาจไม่มีอยู่เลยเนื่องจากสายโซ่สมาชิกที่ซ้ำซ้อนเป็นอนันต์[ 4 ]ดังนั้น โดยทั่วไปแล้ว อัลกอริทึมการรวมจะคำนวณค่าประมาณที่จำกัดของเซตที่สมบูรณ์ ซึ่งอาจเป็นหรือไม่เป็นเซตขั้นต่ำก็ได้ แม้ว่าอัลกอริทึมส่วนใหญ่จะหลีกเลี่ยงตัวรวมที่ซ้ำซ้อนเมื่อเป็นไปได้[ 2 ]สำหรับการรวมไวยากรณ์ลำดับแรก Martelli และ Montanari [ 5 ]ได้นำเสนออัลกอริทึมที่รายงานความไม่สามารถแก้ไขได้หรือคำนวณตัวรวมตัวเดียวที่สร้างเซตการแทนที่ที่สมบูรณ์และขั้นต่ำด้วยตัวมันเอง เรียกว่าตัวรวมทั่วไปที่สุด

การรวมเชิงไวยากรณ์ของคำศัพท์ลำดับที่หนึ่ง

แผนภาพสามเหลี่ยมแสดงการรวมคำศัพท์t และt ทางไวยากรณ์ โดยการแทนที่ σ

การรวมเชิงไวยากรณ์ของพจน์ลำดับที่หนึ่งเป็นกรอบการรวมที่ใช้กันอย่างแพร่หลายที่สุด โดยอิงจากTที่เป็นเซตของพจน์ลำดับที่หนึ่ง (เหนือเซตVของตัวแปรที่กำหนด, Cของค่าคงที่ และF ของ สัญลักษณ์ฟังก์ชัน n -ary) และ ≡ ที่เป็นความเท่าเทียมกันเชิงไวยากรณ์ในกรอบนี้ ปัญหาการรวมที่แก้ได้แต่ละปัญหา{ l r , ..., l r } มี เซตคำตอบเดี่ยวที่สมบูรณ์และเห็นได้ชัดว่าน้อยที่สุด{ σ }สมาชิกσ ของเซตนี้ เรียกว่าตัวรวมทั่วไปที่สุด ( mgu ) ของปัญหา พจน์ทางด้านซ้ายและด้านขวามือของสมการที่เป็นไปได้แต่ละสมการจะเท่ากันเชิงไวยากรณ์เมื่อใช้ mgu กล่าวคือl σ = r σ ∧ ... ∧ l σ = r σตัวรวมใดๆ ของปัญหาจะถูกรวมไว้[หมายเหตุ 4 ]โดยmgu σ mgu มีเอกลักษณ์เฉพาะตัวจนถึงรูปแบบต่างๆ: ถ้าS และS เป็นเซตคำตอบที่สมบูรณ์และน้อยที่สุดของปัญหาการรวมไวยากรณ์เดียวกันแล้วS = { σ } และS = { σ σ และσ บางอย่างและเป็นรูปแบบหนึ่งของสำหรับตัวแปรx แต่ละตัว ที่ปรากฏในปัญหา

ตัวอย่างเช่น ปัญหาการรวม { xz , yf ( x ) } มีตัวรวม { xz , yf ( z ) } เพราะว่า

x{ xz , yf ( z ) }=z=z{ xz , yf ( z ) }, และ
y{ xz , yf ( z ) }=เอฟ ( z )=เอฟ ( x ){ xz , yf ( z ) }.

นี่คือตัวรวมที่ครอบคลุมที่สุด ตัวรวมอื่นๆ สำหรับปัญหาเดียวกัน ได้แก่ เช่น { xf ( x ), yf ( f ( x )), zf ( x ) }, { xf ( f ( x )), yf ( f ( f ( x ))), zf ( f ( x )) } และอื่นๆ อีกมากมาย มีตัวรวมที่คล้ายกันอยู่นับไม่ถ้วน

ตัวอย่างเช่น ปัญหาg ( x , x ) ≐ f ( y ) ไม่มีคำตอบในส่วนที่ ≡ เป็นเอกลักษณ์ตามตัวอักษร เนื่องจากหากมีการแทนที่ใดๆ ทางด้านซ้ายและด้านขวา จะยังคงรักษาgและf ที่อยู่ด้านนอกสุด ไว้ และเทอมที่มีสัญลักษณ์ฟังก์ชันที่อยู่ด้านนอกสุดต่างกันจะมีความแตกต่างกันทางไวยากรณ์

อัลกอริทึมการรวม

อัลกอริทึมการรวมของโรบินสันในปี 1965

สัญลักษณ์จะถูกจัดเรียงโดยให้ตัวแปรอยู่ก่อนสัญลักษณ์ฟังก์ชัน เทอมจะถูกจัดเรียงตามความยาวที่เขียนเพิ่มขึ้น เทอมที่มีความยาวเท่ากันจะถูกจัดเรียงตามลำดับตัวอักษร [ 6 ] สำหรับเซตTของเทอม เส้นทางความไม่ลงรอยp ของเซตนี้ คือเส้นทางที่สั้นที่สุดตามลำดับตัวอักษรซึ่งเทอมสมาชิกสองเทอมของTแตกต่างกัน เซตความไม่ลงรอยของเซตนี้คือเซตของเทอมย่อยที่เริ่มต้นที่pอย่างเป็นทางการ: { t |   : t T } [ 7 ]

อัลกอริทึม: [ 8 ]

กำหนดให้เซตTของพจน์ที่ต้องการรวมเข้าด้วยกัน ให้σเริ่มต้นเป็นการแทนที่เอกลักษณ์ ทำตลอดไป   ถ้าT σเป็นเซตที่มีสมาชิกเพียงตัวเดียวให้ คืนค่าσ fi ให้Dเป็นเซตที่ไม่สอดคล้องกันของT σให้sและtเป็นสองคำที่เรียงตามลำดับตัวอักษรน้อยที่สุดในDถ้าsไม่ใช่ตัวแปร หรือsปรากฏในtให้ คืนค่า "NONUNIFIABLE" fi                     σ:=σ{ที}{\displaystyle \sigma :=\sigma \{s\mapsto t\}} เสร็จแล้ว 

Jacques Herbrandได้อภิปรายแนวคิดพื้นฐานของการรวมและร่างอัลกอริทึมในปี 1930 [ 9 ] [ 10 ] [ 11 ] แต่ผู้เขียนส่วนใหญ่ยกให้ John Alan Robinsonเป็นผู้คิดค้นอัลกอริทึมการรวมตัวแรก(ดูในกรอบ) [ 12 ] [ 13 ] [หมายเหตุ 5 ]อัลกอริทึมของ Robinson มีพฤติกรรมแบบเลขชี้กำลังในกรณีที่เลวร้ายที่สุดทั้งในด้านเวลาและพื้นที่[ 11 ] [ 15 ]ผู้เขียนจำนวนมากได้เสนออัลกอริทึมการรวมที่มีประสิทธิภาพมากขึ้น[ 16 ]อัลกอริทึมที่มีพฤติกรรมเชิงเส้นในกรณีที่เลวร้ายที่สุดถูกค้นพบโดยอิสระโดยMartelli & Montanari (1976)และPaterson & Wegman (1976) [หมายเหตุ 6 ] Baader & Snyder (2001)ใช้เทคนิคที่คล้ายกับ Paterson-Wegman ดังนั้นจึงเป็นเชิงเส้น[ 17 ]แต่เช่นเดียวกับอัลกอริทึมการรวมเชิงเส้นส่วนใหญ่ จะช้ากว่าเวอร์ชัน Robinson สำหรับอินพุตขนาดเล็กเนื่องจากค่าใช้จ่ายในการประมวลผลล่วงหน้าของอินพุตและการประมวลผลภายหลังของเอาต์พุต เช่น การสร้างการแสดงDAG de Champeaux (2022)ก็มีความซับซ้อนเชิงเส้นในขนาดของอินพุตเช่นกัน แต่สามารถแข่งขันกับอัลกอริทึม Robinson ได้สำหรับอินพุตขนาดเล็ก ความเร็วที่เพิ่มขึ้นได้มาจากการใช้ การแสดงแคลคูลัส เชิงวัตถุที่หลีกเลี่ยงความจำเป็นในการประมวลผลล่วงหน้าและภายหลัง แต่ทำให้วัตถุตัวแปรรับผิดชอบในการสร้างการแทนที่และการจัดการกับนามแฝง เดอ ชองโปซ์ อ้างว่าความสามารถในการเพิ่มฟังก์ชันการทำงานให้กับแคลคูลัสเชิงเงื่อนไขที่แสดงเป็นวัตถุ โปรแกรมมิ่งนั้น เปิดโอกาสให้สามารถปรับปรุงการดำเนินการตรรกะอื่นๆ ได้เช่นกัน[ 15 ]

อัลกอริทึมต่อไปนี้มักถูกนำเสนอและมีที่มาจากMartelli & Montanari (1982) [ หมายเหตุ 7 ]กำหนดให้เซตจำกัดจี={1ที1,...,nทีn}{\displaystyle G=\{s_{1}\doteq t_{1},...,s_{n}\doteq t_{n}\}}สำหรับสมการที่เป็นไปได้หลายสมการ อัลกอริทึมจะใช้กฎในการแปลงให้เป็นชุดสมการที่เทียบเท่ากันในรูปแบบ { x u , ..., x u } โดยที่x , ..., x เป็นตัวแปรที่แตกต่างกัน และu , ..., u เป็นพจน์ที่ไม่มีx อยู่เลย ชุดสมการในรูปแบบนี้สามารถอ่านได้ว่าเป็นการแทนที่ หากไม่มีคำตอบ อัลกอริทึมจะสิ้นสุดด้วย ⊥; ผู้เขียนคนอื่นใช้ "Ω" หรือ " fail " ในกรณีนั้น การดำเนินการแทนที่ตัวแปรx ทั้งหมด ในปัญหาGด้วยพจน์tจะถูกเขียนแทนด้วยG { xt } เพื่อความง่าย สัญลักษณ์คงที่ถือเป็นสัญลักษณ์ฟังก์ชันที่มีอาร์กิวเมนต์เป็นศูนย์

จี{ทีที}{\displaystyle G\cup \{t\doteq t\}}{\displaystyle \Rightarrow }จี{\displaystyle G} ลบ
จี{เอฟ(0,...,เค)เอฟ(ที0,...,ทีเค)}{\displaystyle G\cup \{f(s_{0},...,s_{k})\doteq f(t_{0},...,t_{k})\}}{\displaystyle \Rightarrow }จี{0ที0,...,เคทีเค}{\displaystyle G\cup \{s_{0}\doteq t_{0},...,s_{k}\doteq t_{k}\}} สลายตัว
จี{เอฟ(0,,เค)จี(ที0,...,ที)}{\displaystyle G\cup \{f(s_{0},\ldots ,s_{k})\doteq g(t_{0},...,t_{m})\}}{\displaystyle \Rightarrow }{\displaystyle \bot }ถ้าเอฟจี{\displaystyle f\neq g}หรือเค{\displaystyle k\neq m} ขัดแย้ง
จี{เอฟ(0,...,เค)x}{\displaystyle G\cup \{f(s_{0},...,s_{k})\doteq x\}}{\displaystyle \Rightarrow }จี{xเอฟ(0,...,เค)}{\displaystyle G\cup \{x\doteq f(s_{0},...,s_{k})\}} แลกเปลี่ยน
จี{xที}{\displaystyle G\cup \{x\doteq t\}}{\displaystyle \Rightarrow }จี{xที}{xที}{\displaystyle G\{x\mapsto t\}\cup \{x\doteq t\}}ถ้าxตัวแปร(ที){\displaystyle x\not \in {\text{vars}}(t)}และxตัวแปร(จี){\displaystyle x\in {\text{vars}}(G)} กำจัด[หมายเหตุ 8 ]
จี{xเอฟ(0,...,เค)}{\displaystyle G\cup \{x\doteq f(s_{0},...,s_{k})\}}{\displaystyle \Rightarrow }{\displaystyle \bot }ถ้าxตัวแปร(เอฟ(0,...,เค)){\displaystyle x\in {\text{vars}}(f(s_{0},...,s_{k}))} ตรวจสอบ

การตรวจสอบที่เกิดขึ้น

ความพยายามที่จะรวมตัวแปรxกับเทอมที่มีxเป็นเทอมย่อยที่เข้มงวดxf (..., x , ...) จะนำไปสู่เทอมอนันต์เป็นคำตอบสำหรับxเนื่องจากxจะปรากฏเป็นเทอมย่อยของตัวมันเอง ในเซตของเทอมอันดับแรก (จำกัด) ตามที่กำหนดไว้ข้างต้น สมการxf (..., x , ...) ไม่มีคำตอบ ดังนั้น กฎ การกำจัดจึงสามารถใช้ได้เฉพาะเมื่อxvars ( t ) เท่านั้น เนื่องจากการตรวจสอบเพิ่มเติมนี้ ซึ่งเรียกว่าการตรวจสอบการเกิดขึ้นทำให้ขั้นตอนวิธีช้าลง จึงถูกละเว้น เช่น ในระบบ Prolog ส่วนใหญ่ จากมุมมองทางทฤษฎี การละเว้นการตรวจสอบนี้เทียบเท่ากับการแก้สมการบนต้นไม้อนันต์ ดู#การรวมเทอมอนันต์ด้านล่าง

หลักฐานการเลิกจ้าง

สำหรับการพิสูจน์การสิ้นสุดของอัลกอริทึม ให้พิจารณาสามสิ่งต่อไปนี้nวีเอ,nชม.,nอีqn{\displaystyle \langle n_{var},n_{lhs},n_{eqn}\rangle } โดยที่nvar จำนวนตัวแปรที่ปรากฏมากกว่าหนึ่งครั้งในชุดสมการnlhs จำนวนสัญลักษณ์ฟังก์ชันและค่าคงที่ทางด้านซ้ายของสมการที่เป็นไปได้ และคือจำนวนสมการ เมื่อใช้ กฎ eliminate nvarจะลดลง เนื่องจากxถูกกำจัดออกจากGและเก็บไว้เฉพาะใน { t }การใช้กฎอื่นใดจะไม่สามารถเพิ่มได้อีก เมื่อใช้ กฎ decompose , conflictหรือswap nlhs จะลดลง เนื่องจากอย่างน้อย ที่อยู่นอกสุดทางด้านซ้ายมือจะหายไป การใช้กฎdeleteหรือcheck ที่เหลือ จะไม่เพิ่มnlhsแต่จะลดลงneqn การใช้กฎใดๆ ก็ตามจะทำให้ค่าสามตัวนี้ลดnวีเอ,nชม.,nอีqn{\displaystyle \langle n_{var},n_{lhs},n_{eqn}\rangle }โดยคำนึงถึงลำดับตามพจนานุกรมซึ่งเป็นไปได้เพียงจำนวนจำกัดเท่านั้น

Conor McBrideสังเกต[ 18 ]ว่า "โดยการแสดงโครงสร้างที่การรวมใช้ประโยชน์" ใน ภาษา ที่มีประเภทขึ้นอยู่กับเช่นEpigramอัลกอริทึมการรวมของ Robinsonสามารถทำให้เป็นแบบเรียกซ้ำตามจำนวนตัวแปรได้ ซึ่งในกรณีนี้การพิสูจน์การสิ้นสุดแยกต่างหากจึงไม่จำเป็น

ตัวอย่างของการรวมเชิงไวยากรณ์ของคำศัพท์ลำดับที่หนึ่ง

ตามหลักไวยากรณ์ของ Prolog สัญลักษณ์ที่ขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่คือชื่อตัวแปร สัญลักษณ์ที่ขึ้นต้นด้วยตัวอักษรพิมพ์เล็กคือสัญลักษณ์ฟังก์ชัน และเครื่องหมายจุลภาคใช้เป็นตัวดำเนินการตรรกะ "และ" สำหรับสัญลักษณ์ทางคณิตศาสตร์ x , y, zใช้เป็นตัวแปรf, gใช้เป็นสัญลักษณ์ฟังก์ชัน และa, bใช้เป็นค่าคงที่

สัญกรณ์โปรล็อกสัญกรณ์ทางคณิตศาสตร์การทดแทนแบบรวมคำอธิบาย
a = a { a = a }{}สำเร็จ ( ตรรกบท )
a = b { a = b }aและbไม่ตรงกัน
X = X { x = x }{}สำเร็จ ( ตรรกบท )
a = X { a = x }{ xa }xถูกรวมเข้ากับค่าคงที่a
X = Y { x = y }{ xy }xและyเป็นค่าที่ซ้ำกัน
f(a,X) = f(a,b) { f ( a , x ) = f ( a , b ) }{ xb }สัญลักษณ์ฟังก์ชันและค่าคงที่ตรงกันxถูกรวมเข้ากับค่าคงที่b
f(a) = g(a) { f ( a ) = g ( a ) }fและgไม่ตรงกัน
f(X) = f(Y) { f ( x ) = f ( y ) }{ xy }xและyเป็นค่าที่ซ้ำกัน
f(X) = g(Y) { f ( x ) = g ( y ) }fและgไม่ตรงกัน
f(X) = f(Y,Z) { f ( x ) = f ( y , z ) }ล้มเหลว สัญลักษณ์ของฟังก์ชัน fมีจำนวนอาร์กิวเมนต์ต่างกัน
f(g(X)) = f(Y) { f ( g ( x )) = f ( y ) }{ yg ( x ) }รวมyเข้ากับเทอมจี(x){\displaystyle g(x)}
f(g(X),X) = f(Y,a) { f ( g ( x ), x ) = f ( y , a ) }{ xa , yg ( a ) }รวมxกับค่าคงที่aและyกับเทอมจี(เอ){\displaystyle g(a)}
X = f(X) { x = f ( x ) }ควรจะเป็น ⊥ส่งคืนค่า ⊥ ในตรรกะลำดับที่หนึ่งและภาษา Prolog สมัยใหม่หลายภาษา (บังคับใช้โดยการตรวจสอบ occurs )

ใช้งานได้ผลดีใน Prolog แบบดั้งเดิมและใน Prolog II โดยการรวมxx=f(f(f(f(...)))) เข้ากับ เทอมอนันต์

X = Y, Y = a { x = y , y = a }{ xa , ya }ทั้งxและyมีค่าคงที่เท่ากับa
a = Y, X = Y { a = y , x = y }{ xa , ya }ตามที่กล่าวมาข้างต้น (ลำดับของสมการในชุดไม่สำคัญ)
X = a, b = X { x = a , b = x }ล้มเหลวaและbไม่ตรงกัน ดังนั้นxจึงไม่สามารถรวมกับทั้งสองได้
สองเทอมที่มีโครงสร้างต้นไม้ขนาดใหญ่ขึ้นแบบทวีคูณสำหรับกรณีที่พบได้น้อยที่สุด การแสดงผล แบบ DAG (ส่วนสีส้มทางขวาสุด) ยังคงมีขนาดเชิงเส้น

ตัวรวมทั่วไปที่สุดของปัญหาการรวมลำดับที่หนึ่งเชิงไวยากรณ์ที่มีขนาดnอาจมีขนาด2n ตัวอย่างเช่น ปัญหา(((เอ*z)*y)*x)**(x*(y*(z*เอ))){\displaystyle (((a*z)*y)*x)*w\doteq w*(x*(y*(z*a)))}มี ตัวรวม ที่ครอบคลุมที่สุด{zเอ,yเอ*เอ,x(เอ*เอ)*(เอ*เอ),((เอ*เอ)*(เอ*เอ))*((เอ*เอ)*(เอ*เอ))}{\displaystyle \{z\mapsto a,y\mapsto a*a,x\mapsto (a*a)*(a*a),w\mapsto ((a*a)*(a*a))*((a*a)*(a*a))\}} , cf. picture. เพื่อหลีกเลี่ยงความซับซ้อนของเวลาแบบเลขชี้กำลังที่เกิดจากการระเบิดดังกล่าว อัลกอริทึมการรวมขั้นสูงจึงทำงานบนกราฟแบบไม่มีวงจรทิศทาง (DAGS) แทนที่จะเป็นต้นไม้ [ 19 ]

การประยุกต์ใช้: การรวมเป็นหนึ่งเดียวในการเขียนโปรแกรมเชิงตรรกะ

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

ในบทนำ:

  1. ตัวแปรสามารถรวมเข้ากับค่าคงที่ เทอม หรือตัวแปรอื่นได้ ซึ่งจะทำให้ตัวแปรนั้นกลายเป็นชื่อเรียกแทนของตัวแปรคงที่นั้นโดยปริยาย ในภาษาโปรล็อกสมัยใหม่หลายภาษาและในตรรกศาสตร์ลำดับที่หนึ่งตัวแปรไม่สามารถรวมเข้ากับเทอมที่มีตัวแปรนั้นอยู่ได้ นี่คือสิ่งที่เรียกว่าการตรวจสอบการเกิดขึ้น (occes check )
  2. ค่าคงที่สองค่าจะสามารถรวมกันได้ก็ต่อเมื่อค่าคงที่ทั้งสองนั้นเหมือนกันทุกประการ
  3. ในทำนองเดียวกัน เทอมหนึ่งสามารถรวมเข้ากับเทอมอื่นได้ หากสัญลักษณ์ฟังก์ชันสูงสุดและจำนวนพารามิเตอร์ของเทอมนั้นเหมือนกัน และหากพารามิเตอร์สามารถรวมเข้าด้วยกันได้พร้อมกัน โปรดทราบว่านี่เป็นพฤติกรรมแบบเรียกซ้ำ
  4. การดำเนินการส่วนใหญ่ รวมถึง+, -, *, /, ไม่ได้รับการประเมินโดย=ดังนั้น ตัวอย่างเช่น1+2 = 3จึงไม่สามารถหาคำตอบได้เนื่องจากมีความแตกต่างกันทางไวยากรณ์ การใช้ข้อจำกัดทางเลขคณิตจำนวนเต็ม#=ทำให้เกิดรูปแบบหนึ่งของการรวม E ซึ่งการดำเนินการเหล่านี้ได้รับการตีความและประเมิน[ 20 ]

การประยุกต์ใช้: การอนุมานประเภท

โดยทั่วไปแล้วอัลกอริธึม การอนุมานประเภทจะใช้หลักการรวมประเภท โดยเฉพาะอย่างยิ่ง การอนุมานประเภทแบบ Hindley-Milnerซึ่งใช้ในภาษาโปรแกรมเชิงฟังก์ชันอย่าง HaskellและMLตัวอย่างเช่น เมื่อพยายามอนุมานประเภทของนิพจน์ Haskell คอมไพเลอร์จะใช้ประเภทของฟังก์ชันการสร้างลิสต์ประเภทของอาร์กิวเมนต์ตัวแรกและประเภทของอาร์กิวเมนต์ตัวที่สองตัวแปรประเภทโพลีมอร์ฟิกจะถูกรวมเข้ากับและอาร์กิวเมนต์ตัวที่สองจะถูกรวมเข้ากับไม่สามารถเป็นทั้งและในเวลาเดียวกันได้ ดังนั้นนิพจน์นี้จึงไม่มีประเภทที่ถูกต้องTrue : ['x']a -> [a] -> [a](:)BoolTrue[Char]['x']aBool[a][Char]aBoolChar

เช่นเดียวกับ Prolog สามารถกำหนดอัลกอริธึมสำหรับการอนุมานประเภทได้ดังนี้:

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

การประยุกต์ใช้: การรวมโครงสร้างคุณลักษณะ

การรวมเป็นหนึ่งเดียวถูกนำมาใช้ในสาขาวิจัยต่างๆ ของภาษาศาสตร์เชิงคำนวณ[ 21 ] [ 22 ]

การรวมตามลำดับ

ตรรกะที่เรียงลำดับตามค่าช่วยให้สามารถกำหนดประเภทหรือชนิดให้กับแต่ละเทอม และประกาศประเภท s1เป็นประเภทย่อยของประเภทโดยทั่วไปเขียนว่าตัวอย่าง เช่น เมื่อให้เหตุผลเกี่ยวกับสิ่งมีชีวิตทางชีววิทยา การประกาศให้ประเภท dogเป็นประเภทย่อยของประเภท animal นั้นมีประโยชน์ต้องการเทอมที่มีประเภท s ใดๆ ก็สามารถใช้เทอมที่มีประเภทย่อยใดๆ ของ sแทนได้ ตัวอย่างเช่น สมมติว่ามีการประกาศฟังก์ชัน mother : animal animalและการประกาศค่าคงที่ lassie : dogเทอม mother ( lassie ) นั้นถูกต้องและมีประเภท animalเพื่อให้ได้ข้อมูลว่าแม่ของ dog เป็น dog อีกที ก็อาจมีการประกาศ mother : dog dog อีกครั้ง ซึ่งเรียกว่าการโอเวอร์โหลดฟังก์ชันคล้ายกับการโอเวอร์โหลดในภาษาโปรแกรม

Waltherได้เสนออัลกอริทึมการรวมสำหรับเงื่อนไขในตรรกะเรียงลำดับ โดยกำหนดให้สำหรับประเภทที่ประกาศไว้สองประเภทใดๆs , s จะต้องประกาศส่วนร่วมของพวกมันs s x และx เป็นตัวแปรประเภทs และs ตามลำดับ สมการx x จะมีคำตอบ { x = x , x = x } โดยที่x : s s [ 23 ] หลังจากรวมอัลกอริทึมนี้เข้ากับตัวพิสูจน์ทฤษฎีบทอัตโนมัติแบบอิงตามข้อความ เขาสามารถแก้ปัญหามาตรฐานได้โดยการแปลเป็นตรรกะเรียงลำดับ ซึ่ง ทำให้ ลดขนาดลงไปหนึ่งลำดับ เนื่องจากตัวบ่งชี้เอกภาคจำนวนมากกลายเป็นประเภท

Smolka ได้วางแนวทางทั่วไปของตรรกะเรียงลำดับเพื่อให้สามารถใช้โพลีมอร์ฟิซึมแบบพารามิเตอร์ได้ [ 24 ] ใน กรอบงานของเขา การประกาศการเรียงลำดับย่อยจะถูกส่งต่อไปยังนิพจน์ประเภทที่ซับซ้อน ตัวอย่างเช่น รายการเรียงลำดับแบบพารามิเตอร์( X )อาจถูกประกาศ (โดยที่Xเป็นพารามิเตอร์ประเภทเช่นเดียวกับในเทมเพลต C++ ) และจากการประกาศการเรียงลำดับย่อยintfloatความสัมพันธ์list ( int ) ⊆ list ( float ) จะถูกอนุมานโดยอัตโนมัติ ซึ่งหมายความว่าแต่ละรายการของจำนวนเต็มก็เป็นรายการของจำนวนทศนิยมด้วย

Schmidt-Schauß ได้ขยายตรรกะเรียงลำดับทั่วไปเพื่อให้สามารถประกาศเทอมได้ [ 25 ] ตัวอย่างเช่น สมมติว่ามีการประกาศซับซอร์ตevenintและoddintการประกาศเทอมเช่น ∀ i  : int . ( i + i )  : evenอนุญาตให้ประกาศคุณสมบัติของการบวกจำนวนเต็มที่ไม่สามารถแสดงได้ด้วยการโอเวอร์โหลดแบบปกติ

การรวมพจน์อนันต์

ข้อมูลเบื้องต้นเกี่ยวกับต้นไม้อนันต์:

  • B. Courcelle (1983). "คุณสมบัติพื้นฐานของต้นไม้อนันต์" . Theoret. Comput. Sci . 25 (2): 95– 169. doi : 10.1016/0304-3975(83)90059-2 .
  • Michael J. Maher (กรกฎาคม 1988). "การกำหนดสัจพจน์ที่สมบูรณ์ของพีชคณิตของต้นไม้จำกัด ต้นไม้ตรรกยะ และต้นไม้อนันต์". รายงานการประชุมสัมมนาประจำปีครั้งที่ 3 ของ IEEE ว่าด้วยตรรกศาสตร์ในวิทยาการคอมพิวเตอร์ เอดินบะระหน้า348–357 . 
  • Joxan Jaffar; Peter J. Stuckey (1986). "ความหมายของการเขียนโปรแกรมตรรกะต้นไม้อนันต์" . วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี . 46 : 141– 158. doi : 10.1016/0304-3975(86)90027-7 .

อัลกอริทึมการรวม, Prolog II:

  • A. Colmerauer (1982). KL Clark; S.-A. Tarnlund (บรรณาธิการ). Prolog และ Infinite Trees . Academic Press.
  • Alain Colmerauer (1984). "สมการและอสมการบนต้นไม้จำกัดและต้นไม้อนันต์" ใน ICOT (บรรณาธิการ). รายงานการประชุมนานาชาติว่าด้วยระบบคอมพิวเตอร์ยุคที่ห้าหน้า85–99 

การใช้งาน:

  • Francis Giannesini; Jacques Cohen (1984). "การสร้างตัวแยกวิเคราะห์และการจัดการไวยากรณ์โดยใช้ต้นไม้อนันต์ของ Prolog"วารสารการเขียนโปรแกรมเชิงตรรกะ 1 ( 3): 253– 265. doi : 10.1016/0743-1066(84)90013-X .

การรวมระบบอิเล็กทรอนิกส์

การรวมสมการ ( E-unification)คือปัญหาของการหาคำตอบสำหรับชุดสมการ ที่กำหนด โดยคำนึงถึงความรู้พื้นฐานเกี่ยวกับสมการEซึ่งกำหนดไว้ในรูปของชุดความเท่าเทียม กันสากล สำหรับชุด E บางชุด ได้มีการคิดค้น อัลกอริทึมแก้สมการ(หรือที่เรียกว่าอัลกอริทึมการรวมสมการ E ) ขึ้นมาแล้ว แต่สำหรับ ชุดอื่นๆ นั้น ได้มีการพิสูจน์แล้วว่าไม่มีอัลกอริทึมดังกล่าวอยู่จริง

ตัวอย่างเช่น ถ้าaและbเป็นค่าคงที่ที่แตกต่างกันสมการx*เอy*{\displaystyle x*a\doteq y*b}ไม่มีวิธีแก้ปัญหาใด ๆ ที่เกี่ยวข้องกับการรวมไวยากรณ์ อย่างแท้จริง เนื่องจากไม่ทราบข้อมูลใด ๆ เกี่ยวกับตัวดำเนินการ*{\displaystyle *}อย่างไรก็ตามหาก*{\displaystyle *}เนื่องจากทราบว่าการสลับที่กันได้ดังนั้นการแทนที่ { xb , ya }จะแก้สมการข้างต้นได้ เนื่องจาก

x*เอ{\displaystyle x*a}{ xb , ya }
=*เอ{\displaystyle b*a}โดยการยื่นคำร้องขอเปลี่ยนตัว
=เอ*{\displaystyle a*b}โดยสมบัติการสลับที่ของ*{\displaystyle *}
=y*{\displaystyle y*b}{ xb , ya }โดยการประยุกต์ใช้การแทนที่ (แบบผกผัน)

ความรู้พื้นฐานEสามารถระบุคุณสมบัติการสลับที่ของ⁠ ได้*{\displaystyle *}ด้วยความเสมอภาคสากลคุณ*วี=วี*คุณ{\displaystyle u*v=v*u}สำหรับทุก u , v ".

ความรู้พื้นฐานเฉพาะด้านต่างๆ เช่น E

หลักเกณฑ์การตั้งชื่อที่ใช้
u , v , w :คุณ*(วี*){\displaystyle u*(v*w)}=(คุณ*วี)*{\displaystyle (u*v)*w}เอความสัมพันธ์เชิงสมาคมของ*{\displaystyle *}
u , v :คุณ*วี{\displaystyle u*v}=วี*คุณ{\displaystyle v*u}ซีคุณสมบัติการสลับที่ของ*{\displaystyle *}
u , v , w :คุณ*(วี+){\displaystyle u*(v+w)}=คุณ*วี+คุณ*{\displaystyle u*v+u*w}ดีการกระจายตัวทางซ้ายของ*{\displaystyle *}เกินไป+{\displaystyle +}
u , v , w :(วี+)*คุณ{\displaystyle (v+w)*u}=วี*คุณ+*คุณ{\displaystyle v*u+w*u}ดรการกระจายสิทธิ์ของ*{\displaystyle *}เกินไป+{\displaystyle +}
u :คุณ*คุณ{\displaystyle u*u}=คุณฉันภาวะไร้สมรรถภาพทางเพศของ*{\displaystyle *}
u :n*คุณ{\displaystyle n*u}=คุณเอ็นแอองค์ประกอบกลางด้านซ้ายnเมื่อเทียบกับ*{\displaystyle *}
u :คุณ*n{\displaystyle u*n}=คุณ  น.ร.  องค์ประกอบที่เป็นกลางทางขวาnเมื่อเทียบกับ*{\displaystyle *}

กล่าวกันว่าการรวมทฤษฎีสามารถตัดสินได้หากมีการคิดค้นอัลกอริทึมการรวมที่สามารถยุติการทำงานได้สำหรับ ปัญหาอินพุต ใดๆและกล่าวกันว่าการรวม ทฤษฎี สามารถตัดสินได้บางส่วนหากมีการคิดค้นอัลกอริทึมการรวมที่สามารถยุติการทำงานได้สำหรับ ปัญหาอินพุต ที่สามารถแก้ไขได้แต่Hอาจค้นหาคำตอบของปัญหาอินพุตที่ไม่สามารถแก้ไขได้ต่อไปเรื่อยๆ

สามารถสรุปผลการรวมทฤษฎีได้สำหรับทฤษฎีต่อไปนี้:

การรวมเป็นหนึ่งเดียวสามารถตัดสินได้บางส่วนสำหรับทฤษฎีต่อไปนี้:

การปรับพารามิเตอร์ด้านเดียว

หากมีระบบการเขียนใหม่เทอมบรรจบRสำหรับEอัลกอริทึมพาราโมดูเลชันด้านเดียว[ 37 ] สามารถใช้เพื่อแจงนับโซลูชันทั้งหมดของสมการที่กำหนด

กฎพาราโมดูเลชันด้านเดียว
G ∪ { f ( s ,..., s ) ≐ f ( t ,..., t ) }; ส.G ∪ { s t , ..., s t }; ส.  สลายตัว
G ∪ { xt }; ส.G { xt }; S { xt } ∪ { xt }ถ้าตัวแปรxไม่ปรากฏในt  กำจัด
G ∪ { f ( s ,..., s ) ≐ t }; ส.G ∪ { s ≐ u , ..., s ≐ u , rt }; ส.  ถ้าf ( u ,..., u ) → rเป็นกฎจากR  กลายพันธุ์
G ∪ { f ( s ,..., s ) ≐ y }; ส.G ∪ { s y , ..., s y , yf ( y ,..., y ) }; ส.ถ้าy ,..., y เป็นตัวแปรใหม่  เลียนแบบ

เริ่มต้นด้วยGซึ่งเป็นปัญหาการรวมที่ต้องแก้ไข และSเป็นการแทนที่เอกลักษณ์ กฎต่างๆ จะถูกนำมาใช้แบบไม่แน่นอนจนกว่าเซตว่างจะปรากฏเป็นG ที่แท้จริง ในกรณีนี้S ที่แท้จริง จะเป็นการแทนที่แบบรวม ขึ้นอยู่กับลำดับที่กฎการปรับพารามิเตอร์ถูกนำมาใช้ การเลือกสมการที่แท้จริงจากGและการเลือก กฎ ของ Rในmutateเส้นทางการคำนวณที่แตกต่างกันจึงเป็นไปได้ บางเส้นทางเท่านั้นที่นำไปสู่คำตอบ ในขณะที่บางเส้นทางสิ้นสุดที่G ≠ {} ซึ่งไม่มีกฎใดใช้ได้อีกต่อไป (เช่นG = { f (...) ≐ g (...) })

ตัวอย่างคำศัพท์ระบบการเขียนใหม่R
1แอป ( nil , z )z
2  แอป ( x . y , z )x . app ( y , z )

ตัวอย่างเช่น ระบบการเขียนใหม่ของเทอมRถูกใช้เพื่อกำหนด ตัวดำเนินการ ต่อท้ายของรายการที่สร้างจากconsและnilโดยที่cons ( x , y ) ถูกเขียนในรูปแบบอินฟิกซ์เป็นx . yเพื่อความกระชับ เช่นapp ( a . b . nil , c . d . nil ) → a . app ( b . nil , c . d . nil ) → a . b . app ( nil , c . d . nil ) → a . b . c . d . nilแสดงให้เห็นถึงการต่อกันของรายการa . b . nilและc . d . nilโดยใช้กฎการเขียนใหม่ 2, 2 และ 1 ทฤษฎีสมการEที่สอดคล้องกับRคือการปิดความสอดคล้องของRซึ่งทั้งสองอย่างถูกมองว่าเป็นความสัมพันธ์ทวิภาคบนเทอม ตัวอย่างเช่นapp ( a . b . nil , c . d . nil ) ≡ a . b . c . d . nilapp ( a . b . c . d . nil , nil ) อัลกอริทึมพาราโมดูเลชันจะแจงนับคำตอบของสมการโดยสัมพันธ์กับEเมื่อป้อนตัวอย่างRเข้าไป

ตัวอย่างเส้นทางการคำนวณที่ประสบความสำเร็จสำหรับปัญหาการรวม { app ( x , app ( y , x )) ≐ a . a . nil } แสดงอยู่ด้านล่าง เพื่อหลีกเลี่ยงการชนกันของชื่อตัวแปร กฎการเขียนใหม่จะถูกเปลี่ยนชื่ออย่างสม่ำเสมอทุกครั้งก่อนใช้งานโดยกฎmutate ; v , v , ... เป็นชื่อตัวแปรที่สร้างโดยคอมพิวเตอร์เพื่อจุดประสงค์นี้ ในแต่ละบรรทัด สมการที่เลือกจากGจะถูกไฮไลต์ด้วยสีแดง ทุกครั้ง ที่ใช้กฎ mutateกฎการเขียนใหม่ที่เลือก ( 1หรือ2 ) จะถูกระบุไว้ในวงเล็บ จากบรรทัดสุดท้ายสามารถหา การแทนที่แบบรวม S = { ynil , xa . nil } ได้ ในความเป็นจริง app ( x , app ( y , x )) { ynil , xa . nil } = app ( a . nil , app ( nil , a . nil )) ≡ app ( a . nil , a . nil ) ≡ a . app ( nil , a . nil ) ≡ a . a . nilแก้ปัญหาที่กำหนดได้ เส้นทางการคำนวณที่ประสบความสำเร็จอีกเส้นทางหนึ่ง ซึ่งได้มาจากการเลือก "mutate(1), mutate(2), mutate(2), mutate(1)" นำไปสู่การแทนที่S = { ya . a . nil , xnil }; ซึ่งไม่ได้แสดงไว้ในที่นี้ ไม่มีเส้นทางอื่นใดที่นำไปสู่ความสำเร็จ

ตัวอย่างการคำนวณตัวรวม
กฎที่ใช้จีเอส
{ app ( x , app ( y , x )) ≐ a . a . nil }{}
กลายพันธุ์(2){ xโวลต์ . v , แอป ( y , x )v , v แอพ ( v , v ) . ไม่มี }{}
สลายตัว{ xโวลต์ . v , แอพ ( y , x ) ≐ v , v a , แอพ ( v , v ) ≐ a ไม่มี }{}
กำจัด{ แอป ( y , v . v ) ≐ v , v a , แอป ( v , v ) ≐ a . ไม่มี }{ xv . v }
กำจัด{ แอป ( y , a . v ) ≐ v , แอป ( v , v ) ≐ a . ไม่มี }{ xa . v }
กลายพันธุ์(1){ yไม่มี , a . v v , v v , แอป ( v , v ) ≐ . ไม่มี }{ xa . v }
กำจัด{ yไม่มี , a . v v , แอป ( v , v ) ≐ ไม่มี }{ xa . v }
กำจัด{ . v v , แอป ( v , v ) ไม่มี }{ ynil , xa . v }
กลายพันธุ์(1){ . ข้อข้อ , ข้อไม่มี , ข้อข้อ , ข้อ . ไม่มี }{ ynil , xa . v }
กำจัด{ . ข้อข้อ , ข้อไม่มี , ข้อไม่มี }{ ynil , xa . v }
กำจัด{ . ไม่มีโวลต์ , โวลต์ไม่มี }{ ynil , xa . nil }
กำจัด{ a . nila . nil }{ ynil , xa . nil }
สลายตัว{ aa , nilnil }{ ynil , xa . nil }
สลายตัว{ nilnil }{ ynil , xa . nil }
สลายตัว    {}{ ynil , xa . nil }

การแคบลง

แผนภาพสามเหลี่ยมแสดงขั้นตอนการแคบลงstที่ตำแหน่งpในเทอมsโดยใช้การแทนที่แบบรวม σ (แถวล่าง) และใช้กฎการเขียนใหม่lr (แถวบน)

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

  • การเลือกพจน์ย่อยที่ไม่เปลี่ยนแปลงของพจน์ปัจจุบัน
  • โดยการรวมไวยากรณ์เข้ากับด้านซ้ายของกฎจากRและ
  • แทนที่ด้านขวามือของกฎที่สร้างขึ้นลงในเทอมที่สร้างขึ้น

ตามหลักการแล้ว ถ้าlrเป็นสำเนาที่เปลี่ยนชื่อของกฎการเขียนใหม่จากRโดยไม่มีตัวแปรใดที่เหมือนกันกับเทอมsและเทอมย่อยs | ไม่ใช่ตัวแปรและสามารถรวมเป็นหนึ่งเดียวกับl ได้ ผ่านทางmgu σแล้วsสามารถลดทอนให้แคบลงเหลือเทอมt = [ ] นั่นคือเหลือเทอมโดยที่เทอมย่อยที่p ถูกแทนที่ด้วยสถานการณ์ที่sสามารถลดทอนให้แคบลงเหลือtมักจะใช้สัญลักษณ์stโดยสัญชาตญาณแล้ว ลำดับขั้นตอนการลดทอนt t ↝ ... ↝ t สามารถคิดได้ว่าเป็นลำดับขั้นตอนการเขียนใหม่t t → ... → t แต่เทอมเริ่มต้นt จะถูกสร้างขึ้นเรื่อยๆ ตามความจำเป็นเพื่อให้กฎแต่ละข้อที่ใช้สามารถนำไปใช้ได้

การคำนวณพาราโมดูเลชัน ตัวอย่างข้างต้นสอดคล้องกับลำดับการลดขนาดดังต่อไปนี้ ("↓" แสดงถึงการสร้างอินสแตนซ์ในที่นี้):

แอป (xแอ ( y ,x))
xv . v
แอป ( . แอ ( y , . ))v . app ( v , app (y, v . v ))
yไม่มี
v . app ( v , app (ไม่มี, v . v ))เวอร์ชันแอป(, v .)
v ไม่มี
เวอร์ชันแอป(ไม่มี, v .ไม่มี)v . v . nil

เทอมสุดท้ายv . v . nilสามารถรวมเข้ากับเทอมด้านขวาเดิมa . a . nilได้ ทางไวยากรณ์

บทพิสูจน์การจำกัดขอบเขต[ 38 ]รับประกันว่าเมื่อใดก็ตามที่อินสแตนซ์ของเทอมsสามารถเขียนใหม่เป็นเทอมtโดยระบบการเขียนเทอมใหม่แบบลู่เข้าsและtก็สามารถจำกัดขอบเขตและเขียนใหม่เป็นเทอมs และt ตามลำดับ โดยที่t เป็นอินสแตนซ์ของs

กล่าวอย่างเป็นทางการคือ เมื่อใดก็ตามที่ tเป็นจริงสำหรับการแทนที่ σ บางอย่าง จะมีเทอมs , t อยู่ ซึ่งs s และt t และs τ = t สำหรับการแทนที่ τ บางอย่าง

การรวมกันในลำดับที่สูงขึ้น

ใน การลดปัญหาที่ 10 ของ Hilbertของ Goldfarb [ 39 ]ไปสู่ความสม่ำเสมออันดับสอง สมการX1*X2=X3{\displaystyle X_{1}*X_{2}=X_{3}}สอดคล้องกับปัญหาการรวมที่แสดงไว้ โดยมีตัวแปรฟังก์ชันเอฟฉัน{\displaystyle F_{i}}สอดคล้องกับXฉัน{\displaystyle X_{i}}และจี{\displaystyle G}สด .

แอปพลิเคชันจำนวนมากต้องการให้พิจารณาการรวมเทอมแลมบ์ดาแบบมีประเภทแทนที่จะเป็นเทอมลำดับแรก การรวมดังกล่าวมักเรียกว่าการรวมลำดับสูงการรวมลำดับสูงไม่สามารถตัดสินได้ [ 39 ] [ 40 ] [ 41 ]และปัญหาการรวมดังกล่าวไม่มีตัวรวมทั่วไปส่วนใหญ่ ตัวอย่างเช่น ปัญหาการรวม { f ( a , b , a ) ≐ d ( b , a , c ) } โดยที่ตัวแปรเดียวคือfมีคำตอบ { f ↦ λ xyz . d ( y , x , c ) }, { f ↦ λ xyz . d ( y , z , c ) }, { f ↦ λ xyz . d ( y , a , c ) }, { f ↦ λ xyz . d ( b , x , c ) }, { f ↦ λ xyz . d ( b , z , c ) } และ { f ↦ λ xyz . d ( b , a , c ) } สาขาหนึ่งของการรวมลำดับสูงที่ได้รับการศึกษาอย่างดีคือปัญหาของการรวมเทอมแลมบ์ดาที่มีประเภทง่ายๆ โมดูลัสความเท่าเทียมกันที่กำหนดโดยการแปลง αβη Gérard Huetได้นำเสนออัลกอริทึมการรวม (ก่อน) ที่สามารถตัดสินได้บางส่วน[ 42 ]ซึ่งอนุญาตให้ค้นหาพื้นที่ของตัวรวมอย่างเป็นระบบ (โดยขยายอัลกอริทึมการรวมของ Martelli-Montanari [ 5 ]ด้วยกฎสำหรับเทอมที่มีตัวแปรลำดับสูงกว่า) ซึ่งดูเหมือนว่าจะใช้งานได้ดีพอสมควรในทางปฏิบัติ Huet [ 43 ]และ Gilles Dowek [ 44 ]ได้เขียนบทความสำรวจหัวข้อนี้ไว้แล้ว

เซตย่อยหลายเซตของการรวมลำดับสูงมีพฤติกรรมที่ดี กล่าวคือ เซตย่อยเหล่านี้สามารถตัดสินได้และมีตัวรวมทั่วไปที่สุดสำหรับปัญหาที่แก้ไขได้ เซตย่อยหนึ่งดังกล่าวคือเทอมลำดับแรกที่อธิบายไว้ก่อนหน้านี้การรวมรูปแบบลำดับสูงซึ่งพัฒนาโดย Dale Miller [ 45 ]เป็นเซตย่อยอีกเซตหนึ่งเช่นกัน ภาษาการเขียนโปรแกรมตรรกะลำดับสูงλPrologและTwelfได้เปลี่ยนจากการรวมลำดับสูงแบบเต็มรูปแบบไปเป็นการใช้งานเฉพาะส่วนของรูปแบบเท่านั้น น่าประหลาดใจที่การรวมรูปแบบนั้นเพียงพอสำหรับโปรแกรมเกือบทั้งหมด หากปัญหาการรวมรูปแบบที่ไม่ใช่ปัญหาหนึ่งๆ ถูกระงับไว้จนกว่าการแทนที่ในภายหลังจะทำให้การรวมเข้าไปอยู่ในส่วนของรูปแบบ เซตย่อยของการรวมรูปแบบที่เรียกว่าการรวมฟังก์ชันในฐานะตัวสร้างก็มีพฤติกรรมที่ดีเช่นกัน[ 46 ]ตัวพิสูจน์ทฤษฎีบท Zipperposition มีอัลกอริทึมที่รวมเซตย่อยที่มีพฤติกรรมที่ดีเหล่านี้เข้ากับอัลกอริทึมการรวมลำดับสูงแบบเต็มรูปแบบ[ 2 ]

ในภาษาศาสตร์เชิงคำนวณ หนึ่งในทฤษฎีที่มีอิทธิพลมากที่สุดของการสร้างแบบวงรีคือ วงรีจะถูกแทนด้วยตัวแปรอิสระซึ่งค่าของตัวแปรเหล่านั้นจะถูกกำหนดโดยใช้การรวมลำดับที่สูงกว่า ตัวอย่างเช่น การแสดงความหมายของ "จอนชอบแมรี่และปีเตอร์ก็ชอบด้วย" คือ like( j , m ) R( p )และค่าของ R (การแสดงความหมายของวงรี) จะถูกกำหนดโดยสมการlike( j , m ) = R( j ) กระบวนการแก้สมการดังกล่าวเรียกว่าการรวมลำดับที่สูงกว่า[ 47 ]

Wayne Snyderได้ให้การวางนัยทั่วไปของการรวมลำดับที่สูงกว่าและการรวม E กล่าวคือ อัลกอริทึมในการรวมเทอมแลมบ์ดาโมดูลทฤษฎีสมการ[ 48 ]

ดูเพิ่มเติม

หมายเหตุ

  1. เช่น a ⊕ ( b f ( x )) ≡ a ⊕ ( f ( x ) ⊕ b ) ≡ ( b f ( x )) ⊕ a ≡ ( f ( x ) ⊕ b ) ⊕ a
  2. ตั้งแต่(xy){xz,yz}=zzz{\displaystyle (x\oplus y)\{x\mapsto z,y\mapsto z\}=z\oplus z\equiv z}
  3. เนื่องจาก z { zxy } = xy
  4. อย่างเป็นทางการ: แต่ละ unifier τ เป็นไปตามx : = ( ) ρสำหรับการทดแทนบางส่วน ρ
  5. โรบินสันใช้การรวมไวยากรณ์ลำดับแรกเป็นส่วนประกอบพื้นฐานของขั้น ตอน การแก้ปัญหาสำหรับตรรกะลำดับแรก ซึ่งเป็นก้าวสำคัญใน เทคโนโลยี การให้เหตุผลอัตโนมัติเนื่องจากช่วยขจัดแหล่งที่มาของการระเบิดเชิงการจัดเรียง หนึ่งแหล่ง ได้แก่ การค้นหาการแทนค่าของเทอม [ 14 ]
  6. การค้นพบอิสระระบุไว้ใน Martelli & Montanari (1982)ส่วนที่ 1 หน้า 259 สำนักพิมพ์วารสารได้รับ Paterson & Wegman (1978)ในเดือนกันยายน พ.ศ. 2519
  7. Alg.1, หน้า 261 กฎของพวกเขา (a)สอดคล้องกับการสลับ กฎ ที่นี่ (b)เพื่อลบ(c)เพื่อแยกส่วนและขัดแย้งและ ( d)เพื่อกำจัดและตรวจสอบ
  8. แม้ว่ากฎจะทำให้ x tใน G คงที่ แต่ก็ไม่สามารถวนซ้ำได้ตลอดไป เนื่องจากเงื่อนไขเบื้องต้น x vars ( G ) จะถูกทำให้เป็นโมฆะโดยการนำไปใช้ครั้งแรก โดยทั่วไปแล้ว อัลกอริทึมนี้รับประกันว่าจะสิ้นสุดเสมอ ดูด้านล่าง
  9. 1 2ในกรณีที่มีความเท่าเทียมกัน Cความเท่าเทียมกัน N และ N จะเท่ากัน และเช่นเดียวกันสำหรับ D และ D

อ่านเพิ่มเติม

  • Franz BaaderและWayne Snyder (2001). "ทฤษฎีการรวมเป็นหนึ่งเดียว"ในJohn Alan RobinsonและAndrei Voronkovบรรณาธิการ, Handbook of Automated Reasoningเล่มที่ 1 หน้า 447–533. สำนักพิมพ์ Elsevier Science Publishers.
  • Gilles Dowek (2001). "Higher-order Unification and Matching" เก็บถาวรเมื่อ 2019-05-15 ที่Wayback MachineในHandbook of Automated Reasoning
  • Franz Baader และTobias Nipkow (1998). การเขียนคำศัพท์ใหม่และเรื่องอื่นๆ . สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์
  • Franz Baader และJörg H. Siekmann (1993). "ทฤษฎีการรวมเป็นหนึ่งเดียว" ในคู่มือตรรกศาสตร์ในปัญญาประดิษฐ์และการเขียนโปรแกรมเชิงตรรกะ
  • Jean-Pierre Jouannaud และClaude Kirchner (1991). "การแก้สมการในพีชคณิตนามธรรม: การสำรวจการรวมเป็นหนึ่งเดียวโดยใช้กฎเกณฑ์" ในตรรกศาสตร์เชิงคำนวณ: บทความเพื่อเป็นเกียรติแก่ Alan Robinson
  • Nachum DershowitzและJean-Pierre Jouannaud , Rewrite Systems , ใน: Jan van Leeuwen (บรรณาธิการ), Handbook of Theoretical Computer Science , เล่ม B Formal Models and Semantics , Elsevier, 1990, หน้า 243–320
  • Jörg H. Siekmann (1990). "ทฤษฎีการรวมเป็นหนึ่ง". ในClaude Kirchner (บรรณาธิการ) การรวมเป็นหนึ่ง . สำนักพิมพ์ Academic Press.
  • เควิน ไนท์ (มีนาคม 1989). "การรวมเป็นหนึ่งเดียว: การสำรวจแบบสหวิทยาการ" (PDF) . ACM Computing Surveys . 21 (1): 93– 124. CiteSeerX 10.1.1.64.8967 . doi : 10.1145/62029.62030 . S2CID 14619034 .  
  • เจราร์ด ฮิวเอตและดีเร็ก ซี. ออปเพน (1980) "สมการและกฎการเขียนใหม่: แบบสำรวจ" . รายงานทางเทคนิค มหาวิทยาลัยสแตนฟอร์ด.
  • Raulefs, Peter; Siekmann, Jörg; Szabó, P.; Unvericht, E. (1979). "การสำรวจสั้นๆ เกี่ยวกับสถานะของศิลปะในปัญหาการจับคู่และการรวม" ACM SIGSAM Bulletin . 13 (2): 14– 20. doi : 10.1145/1089208.1089210 . S2CID 17033087 . 
  • Claude Kirchner และ Hélène Kirchner. การเขียนใหม่ การแก้ปัญหา การพิสูจน์ . อยู่ระหว่างการจัดทำ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Unification_(computer_science)&oldid=1361108224#Unification_algorithms "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การรวม (วิทยาการคอมพิวเตอร์)

ในตรรกศาสตร์และวิทยาศาสตร์คอมพิวเตอร์โดยเฉพาะอย่างยิ่งในการให้เหตุผลอัตโนมัติ การ รวมกัน ( unification)เป็นกระบวนการเชิงอัลกอริทึมในการแก้สมการระหว่างนิพจน์ เชิงสัญลักษณ์...

คำจำกัดความอย่างเป็นทางการ

ปัญหา การรวมเป็น เซตจำกัด E ={ l ≐ r , ..., l ≐ r } ของสมการที่ต้องแก้ โดยที่ l , r อยู่ในเซตนี้ ที {\displaystyle T} ของ พจน์ หรือ นิพจน์ ขึ้นอยู่กับว่านิพจน์หรือพจน์ใดที่อนุญาตให้ปรากฏในชุดสมการหรือปัญหาการรวม และนิพจน์ใดที่ถือว่าเท่ากัน...

ข้อกำหนดเบื้องต้น

ในทางทฤษฎีแล้ว แนวทางการรวมเป็นหนึ่งเดียวตั้งอยู่บนพื้นฐานของสิ่งต่อไปนี้

การทดแทน

การ แทนที่ คือการจับคู่ σ : วี → ที {\displaystyle \sigma :V\rightarrow T} จากตัวแปรไปสู่เทอม; สัญลักษณ์ { x 1 ↦ ที 1 , . . . , x เค ↦ ที เค } {\displaystyle \{x_{1}\mapsto t_{1},...