高效生成非等价关系代数表达式的技术探索
在计算机科学的多个领域中,关系代数都扮演着至关重要的角色,它为众多模型和查询提供了语义基础。然而,在生成满足特定关系约束的非等价表达式时,传统方法往往面临效率低下的问题。本文将介绍两种相关的技术,一种是从 TLA+ 规范中提取符号转换的技术,另一种是用于生成非等价关系代数表达式的 RexGen 工具。
1. TLA+ 规范的符号转换提取技术
在有界模型检查中,通过一个示例来展示技术的应用。假设有三个进程在一个环中单向传递一个唯一的令牌,目标是计算最大的进程标识符。该技术从这个示例中提取出三个符号转换 T1、T2 和 T3,每个 Ti 都等价于 P(i) ∧ id′ = id(1 ≤ i ≤ 3)。
在有界模型检查中,使用 Fi,i+1 表示从第 i 个状态到第 (i + 1) 个状态通过动作 F 进行转换的 SMT 编码。例如,Next0,1 和 T30,1 分别编码了从状态 0 到状态 1 通过 Next 和 T3 进行的转换,而 Init0 则编码了初始状态上由 Init 施加的 SMT 约束。
在探索长度不超过 4 的执行时,有界模型检查器会构建 SMT 公式。如果只使用 Next 进行整体编码,需要在 SMT 上下文中保留所有公式;而通过增量检查 SMT 上下文的可满足性,模型检查器可以发现一些公式(如 T20,1 和 T31,2)会导致不可满足性,从而将它们从 SMT 上下文中修剪掉。这种方法在有界模型检查 C 程序时也能提高效率,因此有望在 TLA+ 规范的验证中同样有效。
2. RexGen:非等价关系代数表达式生成器
2.1 背景与动机
超级会员免费看
订阅专栏 解锁全文
17

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



