Logic 合金中完全连通图的建模

Logic 合金中完全连通图的建模,logic,alloy,model-checking,Logic,Alloy,Model Checking,我试着用Alloy(对形式逻辑来说也是相对较新的)来湿我的脚,我试着从一个完全连通的节点图开始 sig Node { adj : set Node } fact { adj = ~adj -- symmetrical no iden & adj -- no loops all n : Node | Node in n.*adj -- connected } pred ex { } run ex for exactly 3 Node 如图所示,节点0和1

我试着用Alloy(对形式逻辑来说也是相对较新的)来湿我的脚,我试着从一个完全连通的节点图开始

sig Node {
  adj : set Node
}

fact {
  adj = ~adj    -- symmetrical
  no iden & adj     -- no loops
  all n : Node | Node in n.*adj -- connected
}

pred ex { }
run ex for exactly 3 Node
如图所示,节点0和1未连接。我认为我的事实足以使它完全相连……但也许我遗漏了什么

怎么样

adj = Node -> Node - iden
这基本上是说
adj
包含所有可能的节点对,除了标识(自循环)

对于您的模型,
Node1
Node2
没有连接是可以的,这是事实的最后一条,它限制了对于每个节点,所有节点都是可传递访问的,但在我看来,您希望它们立即可访问。除了使用我上面的解决方案,您还可以更改

n.*adj中的所有n:Node|Node
到n.adj中的所有n:Node |(Node-n)

为了得到同样的效果