Съдържание 
 

ТЪРСЕНЕ НА ОТГОВОР С ПОМОЩТА НА НАЙ-ОБЩИ РЕЗОЛВЕНТИ

    Нека са дадени една хорнова програма P и нека за дадено хорново запитване Q съществува резолвентна редица относно P, започваща с Q и завършваща с празното запитване. Знаем, че като умножим последователно членовете на редица от субституции, асоциирана с тази резолвентна редица, получаваме отговор на Q при P. По дефиницията за резолвентна редица всеки член на споменатата резолвентна редица след началния е SLD-резолвента на предхождащия го с някоя клауза от P. Целта ни ще бъде да докажем, че съществува и такава резолвентна редица относно P, започваща с Q и завършваща с празното запитване, в която всеки неин член след началния е най-обща SLD-резолвента на предхождащия го с някоя клауза от P. С това ще бъде показано, че отговор на Q при P може да се намери и с използване само на най-общи SLD-резолвенти вместо с използването на какви да е.

    Когато едно хорново запитване и една хорнова клауза имат SLD-резолвента, те, както знаем, имат най-обща SLD-резолвента. Прости примери показват, че тя далеч не винаги е единствена. За да изкажем в малко по-силна форма формулираното по-горе твърдение, ще предположим, че сред крайните резолвентни редици относно P някои са наречени канонични и са изпълнени следните условия: 
      1. Всяка едночленна редица, на която единственият член е някое запитване, е канонична резолвентна редица относно P.
      2. Когато последният член на една канонична резолвентна редица относно P има SLD-резолвента с някоя клауза от P, то, добавяйки като нов последен член подходящо избрана тяхна най-обща SLD-резолвента, получаваме пак канонична резолвентна редица относно P.

    Най-простият начин да се удовлетворят тези две условия по начин, достатъчен за целта, формулирана в първия абзац на настоящия текст, е да се нарекат канонични всички крайни резолвентни редици относно P, в които всеки член след началния е най-обща SLD-резолвента на предхождащия го с някоя клауза от P (бихме могли допълнително да поискаме тази най-обща резолвента да се получава по начина, описан в текста Най-обща резолвента на хорново запитване и положителна хорнова клауза, при това с използване на най-общ унификатор, който има допълнителните свойства, отбелязани в текста Най-общ унификатор на две атомарни формули). С оглед пък на начина, по който би се изпълнявала програмата P при обичайните софтуерни реализации на езика Пролог, бихме могли да имаме предвид и индуктивен начин на дефиниране на множеството на каноничните резолвентни редици относно P, при който се приемат за негови елементи всички едночленни редици, на които единственият член е някое запитване, и за всяка редица от множеството, последният член на която има SLD-резолвента с някоя клауза от P, се обявява, че елемент на множеството е също и редицата, получена чрез добавяне като нов последен член на избрана по някакво фиксирано правило тяхна най-обща SLD-резолвента).

    В сила е следното твърдение: за всяка резолвентна редица относно P, започваща с Q, съществува такава канонична резолвентна редица относно P, започваща с Q и имаща същия брой членове, че всели член на първата редица е частен случай на съответния член на втората (при това положение е ясно, че ако първата редица завършва с празното запитване, то и втората ще завършва с него).

    За да докажем горното твърдение, да предположим, че (Q0, Q1, , Qk) е произволна резолвентна редица относно P, започваща с Q. Ще покажем, че за всяко естествено число j, ненадминаващо k, съществува такава канонична резолвентна редица (Q0°, Q1°, , Qj°) относно P, започваща с Q, че запитването Qi да бъде частен случай на Qi° при i=0,1,2,j (следователно такава канонична резолвентна редица съществува и при j=k). Доказателството ще извършим чрез индукция относно j. При j = 0 в качеството на такава редица вземаме едночленната редица с единствен член Q (тя е канонична резолвентна редица относно P благодарение на условието 1). Да предположим сега, че за някое естествено число j, строго по-малко от k, имаме канонична резолвентна редица (Q0°, Q1°, , Qj°) относно P с желаните свойства. Членът Qj+1 на редицата (Q0, Q1, , Qk) е SLD-резолвента на предхождащия го неин член Qj с някоя клауза C от P, т.е. Qj+1 е непосредствена SLD-резолвента на някой частен случай на Qj с някой частен случай на C. Тъй като Qj е частен случай на Qj°, всеки частен случай на Qj е частен случай и на Qj°. Следователно Qj+1 е SLD-резолвента и на Qj° с C. Щом Qj° и C имат SLD-резолвента, те (благодарение на условието 2) имат и такава най-обща резолвента Qj+1°, че редицата (Q0°, Q1°, , Qj°,Qj+1°) да бъде канонична резолвентна редица относно P. За да покажем, че и тя има желаните свойства, достатъчно е да покажем, че запитването Qj+1 е частен случай на Qj+1°, а това е така, зашото Qj+1 е една от SLD-резолвентите на Qj° и C, докато Qj+1° е тяхна най-обща резолвента.

Последно изменение: 14.05.2009 г.