逻辑程序确定性推理的深度解析
1. 成功模式分析
在逻辑程序的分析中,成功模式分析是重要的一环。以快速排序程序为例,通过深度 - k 分析来展示不同于参数大小分析的成功模式分析。以下是快速排序程序的代码:
(1) sort(X,Y) :- L = [], qsort(X,Y,L).
(2) qsort(X,S,T) :- X = [], S = T.
(3) qsort(X,S,T) :- X = [Y|X1], M1 = [Y|M],
part(X1,Y,L,G), qsort(L,S,M1), qsort(G,M,T).
(4) part(X,M,L,G) :- Xs = [], L = [], G = [].
(5) part(X,M,L,G) :-
X = [Y|X1], L = [Y|L1], Y ≤M, part(X1,M,L1,G).
(6) part(X,M,L,G) :-
X = [Y|X1], G = [Y|G1], Y > M, part(X1,M,L,G1).
在深度 - k 分析的背景下,成功模式是一个原子与 Herbrand 或线性约束的配对,其中约束中出现的项的深度不超过有限边界 k。以下是谓词和子句的成功模式:
| 谓词/子句 | 成功模式 |
| — | — |
| sort(x1, x2) | true |
| qsort(x1, x2, x3) | true |
| part(x1, x2, x3, x4) | true |
| sort(x1, x2) | true |
| qsort(