以前,我定义了两个简单的签名,以便可以知道此车轮属于哪辆车。
sig Car{
wheels: some Wheel
}
sig Wheel{
BelongCar:one Car,
}{
BelongCar=this.~@wheels
}
但是,当我将它们放入不同的模块中时,分析器将给出错误“模块导入中的循环依赖性”。那么,如何在没有模块相关性错误的情况下定义汽车与车轮之间的关系呢?
\\in C.als
module C
open W
sig Car{
wheels: some Wheel
}
\\in W.als
module W
open C
sig Wheel{
BelongCar:one Car,
}{
BelongCar=this.~@wheels
}
作为错误状态,您尝试从模块C打开模块W,而模块C依次打开模块W,这...
为避免这种情况,我可以直接查看3个解决方案,或者:
OR
在第三个模块中定义汽车和车轮之间的关系。
OR
如果您告诉我们更多有关您的要求的信息,我们可能会为您提供更好的帮助。您为什么想将这两个概念分为两个单独的模块?