关系代数中非等价表达式的系统生成
1. 语法近似与表达式等价检查
在关系代数中,对于判断 $a \subseteq b$ 有一系列的语法近似规则,如下表所示:
|规则编号|规则内容|
| ---- | ---- |
|1|$b \sim= A, a : A$|
|2|$a \sim= b$|
|3|$b \sim= a \cup c$ 或 $b \sim= c \cup a$|
|4|$a \sim= b \cap c$ 或 $a \sim= c \cap b$|
|5|$a \sim= b \setminus c$|
|6|$a \sim= c^+, b \sim= c^ $|
|7|$a \sim= c ▷◁ c ▷◁… ▷◁ c, b \sim= c^+$ 或 $b \sim= c^ $|
|8|$a \sim= c \times c, b \sim= d^*, a$ 具有基数 1,$c$ 具有元数 1|
对于新生成的表达式 $E$ 和之前生成的表达式 $E’$,RexGen 会创建一个新的 Alloy 模型来进行等价性检查。具体步骤如下:
1. 包含 RexGen 输入中的所有签名/字段声明。
2. 添加检查命令 check { all v1: D1 |...| all vn: Dn | E = E' } ,其中 $v_1… v_n$ 是两个表达式中使用的变量(除了模型中的签名/字段),$D_1… D_n$ 是它们对应的域。
例如,如果 $E$ 是 n. ^edges ,$
超级会员免费看
订阅专栏 解锁全文

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



