合式公式,又称谓词公式,是一种形式语言表达式,即形式系统中按一定规则构成的表达式。按照模型论中一种通行习惯,语言F中的合式公式定义如下:1.原子公式是合式公式; 2.若φ和ψ是合式公式,则(φ∧ψ)及(ᒣφ)是合式公式; 3.若φ是合式公式,而x是变元,则(ᗄx)φ是合式公式;4.有限次地应用1—3所得到的符号序列是合式公式。合式公式有时简称公式,如果一个公式φ中的自由变元都属于集合{x1,x2,…,xe},则φ也可以记为φ(x1,x2,…,xe),不含量词、自由变元的合式公式,分别称为开公式和闭公式,后者又称语句,例如R(x,y)为开公式,ᗄxR(x)是一个语句,由原子公式及联结词∧,∨,ᗄ,∃构成语句 称为
正语句。
基本概念
定义
一阶逻辑中合式公式,被递归定义如下:
(1)原子是合式公式;
(2)若A是合式公式,则()也是合式公式;
(3)若A,B是合式公式,则也是合式公式;
(4)若A是合式公式,是A中的变量符号,则也是合式公式;
(5)只有限次地使用(1)~(4)所生成的符号串才是合式公式。
合式公式,也称
谓词公式,简称为公式,为简便起见,公式的最外层括号可以省去。对于一个
谓词,如果其中每一个变量都在一个
量词作用之下,则它就不再是命题函数,而是一个
命题了。但是,这种命题和命题逻辑中的命题还是有区别的,因为这种命题中毕竟还有变量,尽管这种变量和命题函数中的变量有所不同,因此,有必要区分这些变量。
相关知识
为了使一阶逻辑中命题符号化更准确和规范,以便正确进行谓词演算和推理,引进一阶逻辑中合式公式的概念.
在形式化中,将使用以下四类符号。
(1)常量符号:,当
论域D给出时,它可以是D中的某个元素;
(2)变量符号:,当论域D给出时,它可以是D中的任何一个元素;
(3)函数符号::,当论域D给出时,n元函数符号可以是到的任意一个映射;
(4)谓词符号:,当论域D给出时,n元谓词符号可以是到{1,0}的任意一个谓词。
定义1一阶逻辑中的项(item),被递归定义如下:
(1)常量符号是项;
(2)变量符号是项;
(3)若是n元函数符号,是项,则是项;
(4)只有有限次地使用(1)、(2)、(3)所生成的符号串才是项。
例如a,b,x,y是项,,是项,也是项。
定义2设是n元谓词,是项,则称为
原子公式,或简称原子。
约束变量和自由变量
在一个
谓词公式中,
变量的出现是约束的(bound),当且仅当它出现在使用这个变量的量词作用范围(称为作用域)之内;变量的出现是自由的(free),当且仅当它的出现不是约束的;至少有一次约束出现的变量称为
约束变量(bound variable),至少有一次自由出现的变量称为自由变量(free variable)。
例如,公式中,谓词和中的x的出现是约束的。而谓词R(x)中x的出现是自由的。另外,公式中y和z的出现也是自由,因此,x既是约束变量,又是自由变量,而y,z仅仅是自由变量。由此可知,公式中的某个变量既可以是约束变量,同时也可以是自由变量。此外,显然有
也即,一阶逻辑中命题的真值,与其约束变量的记号无关。
为了避免公式中有些变量既可以约束出现,又可自由出现的情形,我们可采用以下两条规则。
改名规则:将谓词公式中出现的约束变量改为另一个约束变量,这种改名必须在量词作用域内各处以及该量词符号中进行,并且改成的新约束变量要有别于改名区域中的所有其他变量。
代替规则:对公式中某变量的所有自由出现,用另一个与原公式中的其他变量符号均不同的变量符号去代替。
例如,对于公式,可使用改名规则,将约束出现的x改成u,得
或者使用代替规则,将自由出现的x用u代替,得
这样,对一阶逻辑中的任何公式,总可以通过改名规则或代替规则,使该公式中不出现某变量既是约束变量又是自由变量的情形。
由谓词公式的定义可知,若不对其中的常量符号、变量符号、函数符号和谓词符号给以具体解释,则公式是没有实在意义的。
公式解释
定义 在一阶逻辑中,公式G的一个解释,是由非空论域D和对G中常量符号、函数符号、谓词符号按下列规则进行一组指定所组成:
(1)对每个常量符号,指定D中的一个元素;
(2)对每个n元函数符号,指定一个函数,即指定一个到D的
映射;
(3)对每个n元谓词符号,指定一个谓词,即指定一个到{0,1}上的一个映射。
为统一起见,对所讨论的公式作如下规定:公式中无自由变量,或者将自由变量看作常量。于是,每个公式在任何具体解释下总表示一个命题。
公式分类
设G是一个谓词公式,
(1)如果存在解释,使在下为真(简称满足),则称是可满足的;
(2)如果所有解释均不满足,(简称弄假),则称为恒假的,或不可满足的;
(3)如果的所有解释都满足,则称为恒真的。
如果一阶逻辑中的恒真(恒假)公式,要求所有解释均满足(弄假)该公式,而解释依赖一个非空个体集合D,又集合D可以是无穷集合,而集合D的“数目”也可以有无穷多个,因此,所谓公式的“所有”解释,实际上是很难考虑的,这就使得一阶逻辑中公式的恒真、恒假性的判定异常困难。Church和Turing分别于1936年独立地证明了:对于一阶逻辑,判定问题是不可解的,即不存在一个统一的算法A,该算法与谓词公式无关,使得对一阶逻辑中的任何谓词公式G,A能够在有限步内判定公式G的类型。
但是,一阶逻辑是半可判定的,即如果谓词公式G是恒真的,有算法在有限步内检验出G的恒真性。