2016-11-10 6 views
0

事実、署名の属性を空にする方法があるのだろうかと思っていました。私はこの方法を試してみましたが、動作しないようです:孤独な属性をアロイで空にする

sig C { 
myattribute: lone Type 
} 

SIGタイプ{ ATT1:のInt ATT2:.....など。 }

今私達ができるだけに関しては
fact { 
    all c: C| 
     (my condition) 
     <=> 
     (
      no c.myattribute 
     ) 
} 

抽象署名でこのように構造をdefingについて考える:

abstract sig GeneralType {} 
one sig Empty extends GeneralType {} 
sig NotEmpty extends GeneralType {...arguments (att1,2....} 
+0

実際には、あなたのコードがそのまま動作するはずです。たぶん、「私の状態」で予期しないことが起こっているのでしょうか? "私の状態"をテストのために "1 = 1"のようなものに置き換えてみてください。 – wmeyer

答えて

0

既存のコードが既に右my condition与え動作するはずです。 (wmeyerはそれを示唆して確かに正しいです。)

あなたが期待通りに動作していることを確認するために、制約をテストすることができます。

sig Type { } 

sig C { 
    myattribute: lone Type 
} 

fact { 
    all c: C | no c.myattribute 
} 

run { } for 5 

check { 
    all c: C | no c.myattribute 
} for 5 
関連する問題