简单模式逻辑程序的语义与终止性
1. 基本概念
- 谓词模式 :对于一个 $n$ 元谓词符号 $p$,其模式是一个从 ${1, \ldots, n}$ 到 ${\text{In}, \text{Out}}$ 的函数 $m_p$。若 $m_p(i) = \text{In}$(或 $\text{Out}$),则称 $i$ 是 $p$ 的输入(或输出)位置。用 $\text{In}(Q)$(或 $\text{Out}(Q)$)表示填充 $Q$ 中谓词输入(或输出)位置的项序列。当把一个原子写成 $p(s, t)$ 时,$s$ 是填充输入位置的项序列,$t$ 是填充输出位置的项序列。
- 简单模式程序 :一个子句 $p(t_0, s_{n + 1}) \leftarrow p_1(s_1, t_1), \ldots, p_n(s_n, t_n)$ 是简单模式的,当且仅当 $t_1, \ldots, t_n$ 是变量的线性向量,并且对于所有 $i \in [1, n]$,有 $\text{Var}(t_i) \cap \text{Var}(t_0) = \varnothing$ 且 $\text{Var}(t_i) \cap \bigcup_{j = 1}^{i} \text{Var}(s_j) = \varnothing$。一个查询 $B$ 是简单模式的,当且仅当子句 $q \leftarrow B$ 是简单模式的($q$ 是任意无变量原子)。一个程序是简单模式的,当且仅当它的所有子句都是简单模式的。例如,程序 APPEND 和 IN ORDER 相对于模式 $\text{append}(\text{In}, \text{
超级会员免费看
订阅专栏 解锁全文
45

被折叠的 条评论
为什么被折叠?



