这些'$ show'关系的含义是什么?

时间:2016-06-06 15:29:48

标签: alloy

使用下面的简单模型,某些实例包含标记为“$ show_upd”的关系。看起来它们是在'f1'中使用'some'限定符时创建的。它们代表什么?enter image description here

sig Licence {}

sig UpdateRow { 
    next: lone UpdateRow, 
    licence: one Licence
}

sig UpdateChain { 
    first: one UpdateRow 
}

fact f1 {
    // every licence belongs to one or more updateRows
    all lic: Licence | some upd: UpdateRow | upd.licence = lic
}

pred show {} 
run show

1 个答案:

答案 0 :(得分:1)

Alloy Analyzer以美元符号作为前缀命名Skolem常量。更具体地说,Skolem常数(或Skolemized约束的见证人)使用您正在检查的谓词(在本例中为谓词 show )以及与给定Skolem常数相关的量词来标识(在这种情况下,某些upd:UpdateRow ),前缀为美元符号$。

软件抽象以及合金分析器中描述的Skolemized约束的见证如何在Alloy quick guide中进行简要介绍,并在软件抽象书中的 5.2.2 Skolemization 中进行了更详细的介绍。