alloy

    1熱度

    1回答

    我想建模一個HTTP交互,即一系列HTTPRequest/HTTPResponse,並且我試圖將其作爲一個轉換系統進行建模。 我通過使用定義的一類狀態下的排序: open util/ordering[State] 一國就是一組消息的: sig State { msgSet: set Message } 每對(HTTPRequest->類HTTPResponse)和(HTTPRe

    1熱度

    3回答

    是否有直接的方式來表示Alloy中的餘數類型,而不是必須顯式減去union all的所有子類型?例如,在: sig Test {} one sig A, B extends Test {} 我希望能夠通過速記並不需要改變每次Test獲得由新SIG延伸到指表達Test-(A+B)。雖然這隻會是語法糖,但它可以幫助我在重構模型時避免錯誤。

    0熱度

    1回答

    我可以寫這樣的事: 爲(I = 1;我< = 1000;我++) 而()

    2熱度

    1回答

    我已經定義了以下合金模型 使用單個狀態對象來指向兩棵樹的根State.a和State.b。 sig N { children: set N } fact { let p = ~children | ~p.p in iden and no iden & ^p } one sig State { a: one N, b: one

    1熱度

    1回答

    當我運行我的例子,我有以下類型的錯誤: Translation capacity exceeded. In this scope, universe contains 21 atoms and relations of arity 8 cannot be represented. Visit http://alloy.mit.edu/ for advice on refactoring.

    0熱度

    1回答

    我正在使用Alloy 4.2,並且我有使用繼承的複雜性問題。 很明顯,簽名之間的繼承不像我以前在面向對象編程中面對的那樣(或者至少如我所期待的那樣)。 顯然,當運行命令中沒有設置完全關鍵字時,即使根抽象類是抽象的,原子也會實例化爲根抽象簽名的原子。 當精確關鍵字用於指定一個命令時,原子被指定爲實例化:葉具體類。 我希望能夠搜索具有從另一個抽象繼承的可變性的解決方案。它允許我指定葉簽名中存在的抽象籤

    1熱度

    1回答

    我想知道如果在謂詞中使用約束語法,而不是在斷言中使用約束語法。 約束all disj x1,x2:X | x1 = x2在謂詞和斷言中執行時會給出不同的結果。 例如,假定下面的模型: sig A {} sig B {x: one A} assert S1 {all x1,x2: x | x1 = x2} 檢查S1 2 - 作爲反例x1和x2 assert S2 {! (all x1

    1熱度

    3回答

    我想寫一個合金問題,其中我有一組狀態和它們之間的轉換。我的目標是找到各州之間的轉換。此外,每個狀態s都有一個稱爲X(s)的值,​​可以使用其鄰居的X值來計算,並且我需要X的所有值都小於特定值。我的問題是Alloy不支持float,並且我的X值可能不是Int。所以,如果我想定義一個從狀態到某個數字類型的函數X,該類型只能是Int。你能想辦法解決這個問題嗎? 非常感謝你的幫助, 真誠, Fathiye

    2熱度

    1回答

    我最近與合金工作。 我可以這樣說: fact{ all i: Int | i >= 0 } 我想說:所有整數合金的用途應該是積極的。 合金不失敗,但也不給我實例。 問候

    4熱度

    1回答

    我在前面有一個由不同模塊(文件)組成的Alloy模型。 主模塊(包含命令的模塊)不包含任何簽名聲明,只包含命令和一些事實。 該模型強制只有一個實例可能是可滿足的,但經過分析後,找到幾個可以滿足的實例。 我調查了生成的實例之間的差異,發現Univ簽名神奇地出現(除了內置的univ簽名)。 生成的每個實例之間的差異來自屬於該神祕加法的原子數量。 向主模塊添加簽名後,Univ簽名消失。 當在包含執行的命