关联Kleene代数与伪一致模
1. 引言
在计算机科学领域,运用代数结构和技术来对程序进行建模和推理有着悠久的历史,这也是诸如进程代数和抽象数据类型规范等核心支柱的基础。其中,源于正则语言和自动机理论的程序代数,被广泛认为是为算法分析提供严谨语义以及设计和开发复杂系统的合适框架。而Kleene代数则是这一领域的基础概念,如今已被公认为计算系统的标准抽象。
Kleene代数有诸多实例,例如重写理论中用于连贯合流证明的代数框架、正则语言代数、程序轨迹代数以及将程序状态转换建模为状态集上二元关系的关系代数等。以图1所示的转换系统中的原子程序为例,我们可以采用二元关系的Kleene代数来解释组合程序。比如,顺序组合 $A\pi; A\pi′$ (即先在 $A\pi$ 中执行一个计算步骤,然后在 $A\pi′$ 中执行另一个计算步骤)可以通过标准的关系组合来解释,如图2所示。此外,非确定性选择 $+$ 和迭代闭包 $∗$ 这两个用于编码任何命令式程序的操作,也由上述Kleene代数提供。
然而,随着新的计算范式和场景(如模糊编程和概率编程)的出现,不仅需要定义新的Kleene代数模型,还需要对其进行一些变体和推广。例如,为了处理转换权重精确值未给出的情况(如无理数的机器表示所导致的问题),我们开展了关于将“区间作为程序”的Kleene代数研究。
本文基于定义在偏序上的伪一致模,对Kleene代数进行了新颖的代数研究。我们知道,通过将操作 $⋆$ 定义为常数函数 $x⋆ = ⊺$(其中 $⊺$ 是代数的顶元素),可以从任何布尔代数轻松获得Kleene代数。受此启发,我们将下确界操作抽象为定义在偏序上的伪一致模,以构建用于模糊程序的代数。正如预期的那样,这些新代数是标准情
超级会员免费看
订阅专栏 解锁全文
56

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



