15、基于测试赋值的 Alloy 模型求解器草图绘制

基于测试赋值的 Alloy 模型求解器草图绘制

1. 引言

在构建可靠系统时,软件模型的构建起着至关重要的作用。Alloy 是一种著名的基于关系的建模语言,已广泛应用于学术和工业领域。它拥有基于 SAT 的分析器,能在用户定义的范围内进行自动分析,找到使模型公式为真的实例,还能找出反驳感兴趣属性的反例。

然而,Alloy 公式的正确性推理需要格外小心,因为存在过度约束(排除有效赋值)和约束不足(允许无效赋值)这两种基本错误。为解决此问题,我们引入了一种新方法——使用测试赋值来绘制 Alloy 模型草图。用户无需编写完整模型,只需编写带有空洞的部分模型,并提供编码可能片段的正则表达式和作为测试用例的有效和无效赋值,草图绘制框架会根据给定片段和赋值完成部分模型。

我们的草图绘制框架 ASketch 专注于绘制 Alloy 模型的几个构造,包括关系表达式、逻辑运算符和量词。它通过将草图绘制问题转化为 Alloy 语言本身的约束求解问题,使用约束求解技术探索候选 Alloy 模型的搜索空间,最终使用 Alloy 分析器找到填充空洞的解决方案。

2. 示例

为说明 ASketch 方法,我们来看一个无环单链表的部分 Alloy 模型:

one sig List { header: lone Node }
sig Node { link: lone Node }
pred Acyclic() { \Q,q\ n: Node | n \CO,co\ \E,e\ => n \CO,co\ \E,e\ }
q := {| all|no|some|lone|one |}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值