簡體   English   中英

重構合金模型

[英]Refactoring Alloy models

在我前幾天開始在 Alloy 中繪制草圖的模型中,當我嘗試查找特定謂詞的實例時收到以下消息:

超出翻譯能力。 在這個范圍內,宇宙包含 34 個原子,無法表示 12 元的關系。 請訪問http://alloy.mit.edu/獲取有關重構的建議。

關於網站alloy.mit.edu 上哪里可以查看的任何建議? 我沒有找到任何帶有明顯標簽的東西,比如“重構超出翻譯能力的模型”。

這是根本問題。

[后記:我的問題的原因似乎是我在謂詞中使用的量化變量聲明的初始表述錯誤; 一旦我獲得了正確的聲明語法,問題就消失了。 完整的細節沒有足夠的指導意義,值得記錄,所以我放棄了對細節的原始描述。 簡短的版本是:為了引出特定具體示例的實例化,我最初編寫了以下形式的謂詞

    pred m {
      one t1 : table,
          r1, r2, r3 : row,
          c1, c2 : column,
          c11, c21 : headingcell, 
          c12, c22, c13, c23 : datacell | {

    ... // description of the example here

      }
    }

one范圍涵蓋所有十二個變量,並且 [我被告知在良好的權威] 內部翻譯成由元數 12 的關系定義的集合理解。我想說的是更像以下內容,它不會引起翻譯 -容量問題:

pred m {
   some t1 : table |
   some disj r1, r2, r3 : row |
   some disj c1, c2 : column |
   some disj c11, c21 : headingcell |
   some disj c12, c22, c13, c23 : datacell | {
     ...
   }
}

所以:修復一些引起翻譯能力錯誤消息的模型的一種方法是清理變量的量化。

然而,基本問題仍然令人感興趣:當模型引出翻譯容量錯誤消息並且量詞已經干凈正確時,是否有文檔可供閱讀?]

這種情況下所需的重構不太可能是簡單的語法重構。 相反,它在這里意味着重構模型,使其不使用如此高數量的關系。 在上面的示例中,我無法真正看到哪個關系具有 arity 12。如果您發布(或發送給我)一個自包含模型,我可以查看它,確定有問題的關系,甚至可能建議如何避免它.

暫無
暫無

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

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