簡體   English   中英

合金-#和Int

[英]Alloy - # and Int

我是Alloy的新手,想了解#與Int限制有關的工作方式。 對於無自環的無向圖,請考慮以下簡單模型:

sig Node {
 nearBy : set Node
} 
fact { 
  no iden & nearBy  // irreflexive
  ~nearBy in nearBy // symmetric
}
pred connected[nodes : set Node ] {
  all n: Node | Node in n.*nearBy 
}
pred ringTopology[nodes : set Node ] {
 connected[nodes]
 all n: nodes | #n.nearBy = 2
}
run { // (1)
  ringTopology[Node]
} for exactly 5 Node
run { // (2)
  ringTopology[Node]
} for exactly 5 Node, 5 Int

如果執行上面顯示的(1),則某些解決方案違反了ringTopology中的#n.nearBy = 2限制,例如 在此處輸入圖片說明 對於同一示例,在評估器中,我得到#Node4.nearby = -4(減4!)。 (2)不會發生這種情況,在這里我得到了唯一且正確的解決方案(帶有環形拓撲的10節點圖)。

謝謝,愛德華多

您正在使用哪個版本的Alloy? 由於整數溢出,您似乎正在獲得該解決方案。 最新版本的Alloy( Alloy 4.2_2015-02-22 )具有“防止溢出”選項(選項->防止溢出),可以防止這種情況的發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM