在Alloy中将一个孤立属性设置为空

时间:2016-11-10 12:27:57

标签: alloy

我想知道是否有一种方法,事实上,强制签名的属性是空的。我试过这种方式,但似乎不起作用:

sig C {
 myattribute: lone Type
}

sig类型{      att1:Int      att2:.....等..     }

fact {
    all c: C| 
        (my condition) 
        <=>
        (
            no c.myattribute
        )
}

至于现在,我们可以考虑以这种方式用抽象签名来定义结构:

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

1 个答案:

答案 0 :(得分: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