导航↓ 相册|收藏博客|加入友情链接|给博主留言
畅享博客 > Smarthings事脉顺-业务建模的目标 > [原创]从二态布尔逻辑扩展三态逻辑的语义分析
2010/11/4 11:22:09

[原创]从二态布尔逻辑扩展三态逻辑的语义分析

问题的提出

二态逻辑(布尔逻辑)的语义是明确而且完备的。
也就是“真”、“假”数符和“与”、“或”、“非”算符的含义已经是清晰的,相互计算转换关系也是完备的了。(是不是就是一个逻辑群的概念?)
如果要以这样的二态逻辑扩展三态逻辑的话,那么,扩展的结果,必定要完全包含这样的二态逻辑的语义。也就是是说,要使布尔逻辑成为扩展的三态逻辑的特例。
在三态逻辑的基础上,做出某种语义的约束,就自然得到二态逻辑。如果得不到,就说明扩展的三态逻辑还不够理想。
这就是二态逻辑和三态逻辑的兼容性问题。
 

引入语义映射

下面看我们可以如何扩展布尔逻辑。
从真假二态扩展到三态,必定引入一个新的状态表示。
从数论上得到启示:
真,可以是对所有正实数的抽象,表示过剩的“有”,用+1代表。
假,可以是对所有负实数的抽象,表示欠缺的“有”,用-1代表。
我们自然想到“0”,表示“无”或“空”。
于是,我们得到扩展的三态:-1,0,+1。用语义词表述,可以是“假”、“空”、“真”。

现在,我们就可以来先部分检查一下这个扩展的“兼容性”了。

我们知道,二态逻辑其实可以用整数的乘、加运算来表示。就是:
把真,定义为1,假定义为0,“与”定义为“乘”,“或”定义为“加”,非定义为“1-”,就能完备表达布尔逻辑关系,如下:


1*0 = 0
1*1 = 1


1+0 = 1
1+1 = 2, >0, =1(1代表所有的正实数)


1-1 = 0
1-0 = 1

如果在三态中用-1,0,1分别表示“假”、“空”和“真”。
为了保持二态逻辑的完备性,必须将二态中“假”转换为三态中的“空”,而三态中的“假”,作为新扩展出来的“缺有”态。也就是将布尔逻辑的真假,理解为是“剩有”和“无”的语义关系。
这样,我们才能顺利过第一关:第三态逻辑扩展了新的第三态后,原来的二态逻辑可以原封不动(除了做一个语义映射之外)。

解决语义对称性问题

接下来的问题是:如何用同样语义的“与”“或”“非”运算,作用到新扩展的“假”态与原来二态的关系上?能否保持合理的语义关系?
下面转到三态进行类似的整数计算:

与(*)
-1_*0 = 0; 语义表述:假与空为空
-1_*1 = -1; 语义表述:假与真为假
-1_*(-1) = 1(注意1:≠-1,出现一个语义不对称,在二态中,有 1*1 = 1);语义表述:假与假为真(缺少了缺少就是过剩)

或(+)
-1 + 0 = -1;语义表述:假或空为假
-1 + 1 = 0;语义表述:假或真为空
-1 +(-1) = -2,<0, =-1;语义表述:假或假为假(缺少再缺少还是缺少)

非(1-)
1-(-1) = 2,>0,=1;语义表述:非假为真(用最过剩的补缺结果是过剩)。

作为新扩展态与原运算作用后,得到的结果,仍然在三态中,仍然满足群的特征。
而且,仔细审核语义关系,除了一个语义不对称之外,没有不合理的新语义出来。
可以说,这个扩展是基本成功的。经过一个语义变换(二态假变为三态空)保持了二态语义的稳定性,扩展的三态运算语义也不矛盾。

不爽的是,存在一个语义的不对称问题。
这个问题的影响是:如果要把三态的“假-空”逻辑理解为是反向的“真-空”逻辑的话,-1_*(-1) 应该还是-1,才对。
这与乘法的语义有关
在三态中对应的二态逻辑中,乘法可表示“叠加”的语义,也可以表示“扩维”的语义。解释如下:

如果是“叠加”的语义:
1表示过剩,那么,1*1 的意思就是:过剩的状态过剩了,结果依然是过剩。
-1表示欠缺,那么,-1*(-1) 的意思就是:欠缺了的欠缺的状态,结果也是过剩。

如果是“扩维”的语义,类似从直线长度到面积:
1表示过剩,那么,1*1 的意思就是:两个正交直线方向上都过剩了,结果是面积过剩。
-1表示欠缺,那么,-1*(-1) 的意思就是:两个正交直线方向上都欠缺了,结果是面积欠缺。

于是,出现一个乘法语义的选择问题。
不管乘法选择哪个语义,对二态逻辑没有影响,但对正反逻辑的对称性是有影响的。假设,选择“扩维”语义。即可解决语义对称性和兼容性的问题。

现在的问题是:“非”运算作用于“空”,语义上如何处理?
 

引入负非运算实现完美对称的三态逻辑

“非”从语义上讲,是“求补”的意思,也就是用最大可能数的减去现有的数。
在三态逻辑上,0表示空,那么非空,就是不为空,按语义,应该有2种可能的结论:要么是多出来了,要么是缺少了,都是不为空。
1 - 0 = 1的意思只是用“最多过剩可能的减空,当然结果是过剩”;
1 -(-1)= 1的意思是“用最多可能的过剩来减少已经有的缺少,就是再增加过剩,结果是过剩。
语义都是正确的。
但怎么能出现“不空(平衡),是少了”的“非”语义呢?
从语义对称性讲,应该可以“用最大可能的缺少来减已有的数”的“取非”运算。才能实现非运算的语义对称性。
也就是说:应该存在另外一种非逻辑运算,是用-1来减已有的数。可以叫“负非”运算:
-1 - 0 = -1
-1 -(-1) = 0
-1 - 1 = -1
与正非运算:
1 - 0 = 1
1 - 1 = 0
1 -(-1) = 1
正好对称,彻底实现“假-空”逻辑是反向的“真-空”逻辑,正反两个二态逻辑恰好形成三态逻辑。这样完美的结果。

小结

如果不进行“二态假对三态空”的语义变换,逻辑就不兼容。
如果不引入负非运算,并选择“扩维”语义的乘法,就不能实现语义对称。
 



查阅更多相关主题的帖子: 知识管理

评论

您还未登录,不能对文章发表评论!请先登录