从Alloy到B语言的翻译:原理、方法与性能评估
1. 示例代码与初步翻译挑战
以下是一个关于“SelfGrandpas”的B语言代码示例,展示了如何定义一些事实和谓词:
MACHINE
SelfGrandpas
...
DEFINITIONS
parent
== mother
\/
father
\/
(father ; wife) \/ (mother ; husband );
ownGrandpa (m) == {m} <: Man
&
({m} <: grandpas(m));
grandpas(p) == {tmp | {p} <: Person &
tmp : (parent[parent [{p}]] /\ Man)}
PROPERTIES
...
wife = husband ~ &
wife /\ (closure (( mother
\/ father)) ; mother) = {} &
husband
/\ (closure (( mother
\/
father)) ; father) = {} &
{p | {p} <: Person &
{p} <: closure1 (( mother
\/
father))[{p}]} = {} &
card(Person) <= 4
OPERATIONS
run_ownGrandpa = PRE #(m).( ownGrandpa(m)) THEN
skip
END
END
在翻译 grandpas 时,由
超级会员免费看
订阅专栏 解锁全文
751

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



