Model(Structure、结构、模型)

用途

Model 的主要作用是可以在给定一个 Model 的情况下,给一个谓词逻辑表达式求值。

前置定义

函数符号(function symbol)

A logical symbol that may be applied to an object term to produce another object term.

按我理解来说就是一个可以应用在某个 term1 上生成另一个 term 的一个逻辑符号。

函数符号是一个符号,他可以代表,但并不等同于某一个具体函数。

谓词符号(predicate symbol)

A notation for some concrete predicate or relation.

就是代表 predicate 的符号

定义

设有函数符号集合 $F$ 和谓词符号集合 $P$,一个 Model $M$ 包含:

  • 一个包含了所有具体值的集合,称为 $A$
  • 对 $F$ 中每个函数符号,一个(每个参数的)定义域和值域均是 $A$ 的具体函数2
  • 对 $P$ 中每个谓词符号,$A$ 上的一个具体谓词(或者说由这个谓词定义的关系)

这里有一个函数符号集合 $F_symbols = \{ i: () \rightarrow Value \}$,

一个谓词符号集合 $P = \{ R: (Value, Value) \rightarrow bool, F: (Value) \rightarrow bool\}$

可以利用以上两个集合,加上一个状态集合 $A$,来建立状态机的 model,比如:

stateDiagram-v2 [*] --> a a --> a a --> b b --> c a --> c c --> c b --> [*] c --> [*]

对以上这一个状态机,对应的模型 M 就是:

$$ \displaylines { M.A = \{a, b, c\} \\ M.i = a \\ M.R = \{(a, a), (a, b), (b, c), (a, c), (c, c)\} \\ M.F = \{b, c\} \\ } $$

我们来给以下表达式求值:

$$ \forall x \exists y R(x, y) $$

这个表达式意思是从某个状态出去一定能到达其他状态,显然是对的。

1

表示论域内元素的正规表达式。

2

这帮子数学家老喜欢把无参函数和值等价起来,所以书里面这条对有参和无参函数是分开的……我不觉得这么搞很好,函数就是函数,所以就揉在一起了。当然也可以完全分开,即有常量符号但没有无参函数。