具体语法 - 关系字段

时间:2015-11-16 20:52:14

标签: lightning-workbench f-alloy

我有以下签名:

abstract sig Node{
arc: set Node}

是否有可能在具体语法关系中将弧关系指定为连接器?

sig P extends Node{token:Int}{tokens>=0}

它也可以帮助我上面的案例,令牌字段。

最佳,

1 个答案:

答案 0 :(得分:2)

在F-Alloy中,您可以通过定义从一对签名(键入关系)到目标签名的映射来将关系映射到签名。 这意味着这对签名中的任何原子组合都将映射到由目标签名键入的新原子。

为了强制创建原子的组合成为您想要表示的关系的组合,您需要在保护谓词中编写特定的约束。

对于您的示例,您将拥有映射:

mapArc: Node -> Node -> CONNECTOR

和以下警卫:

pred guard_mapArc(n1:Node,n2:Node){
  // the image of n1 via the arc relation is n2
}

另外,不要忘记值谓词应该保留原子组合的参考。

pred value_mapArc(n1:Node,n2:Node,c:CONNECTOR){
  // state properties of c in function of the given n1 and n2
}

希望有所帮助