扩展Alloy语言以支持部分实例
1. 语言扩展
为了让用户能够指定部分实例,我们提议在Alloy语言中添加 inst 块。之前的示例中的部分实例仅使用了精确边界,而Kodkod和我们的语法还分别通过 in 和 includes 关键字支持下界和上界。下界是关系必须包含的元组集合,上界是关系可能包含的元组集合。
inst 块会被赋予名称,并在Alloy命令中使用。例如,用户原本可能会写 run p for 3 ,现在可以写 run p for i ,这表明谓词 p 将在部分实例 i 的上下文中进行模拟。
和 sig 块类似, inst 块也可以附加一个事实。对于 inst 块,只有当该 inst 块是正在执行的命令的一部分时,附加的事实才会被认为是真的。附加事实的目的是让指定者有机会编写提及 inst 块中引入的原子名称的约束条件,这些名称在模型的其他地方是不可用的。
1.1 语法
下面是语法规则和初步类型定义:
⟨iBlk⟩
:= ‘inst’ id (‘extends’ id)? ‘{’ ⟨iSt⟩[,⟨iSt⟩]* ‘}’
(‘{’ ⟨frml⟩‘}’)?
⟨i
超级会员免费看
订阅专栏 解锁全文
18

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



