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

What's the meaning of these '$show' relations?

在下面的简单模型中,一些实例包含标记为“$show_upd”的关系。似乎它们是在 'f1' 中使用 'some' 限定符时创建的。它们分别代表什么?

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

Alloy 分析器以美元符号作为前缀命名 Skolem 常量。更具体地说,Skolem 常量(或 Skolemized 约束的见证)与您正在检查的谓词(在本例中为谓词 show)以及与给定 Skolem 常量(在本例中 some upd: UpdateRow),前缀为美元符号 $.

Skolemization,以及 Alloy 分析器中描述的 Skolemized 约束的见证,在 Alloy quick guide 中简要介绍,在 5.2.2 Skolemization 在《软件抽象》一书中。