Module 在模块化项目中使用add功能

Module 在模块化项目中使用add功能,module,alloy,Module,Alloy,我已经用alloy为我的项目建模,我想将运行部分与项目的建模部分分开。 在某些事实和谓词中,我在基数比较中使用add函数。 以下是一个例子: #relation1 = add[ #(relation2), 1] 当运行部件和模型部件位于同一文件中时,所有工作都成功 但当我将它们分为两个文件时,出现以下语法错误: The name "add" cannot be found. 我认为它需要打开整数模块,其中有一个add函数,所以我在模型部分的头部打开了它。 但是运行时要求我指定这个/Univ的

我已经用alloy为我的项目建模,我想将运行部分与项目的建模部分分开。 在某些事实和谓词中,我在基数比较中使用add函数。 以下是一个例子:

#relation1 = add[ #(relation2), 1]
当运行部件和模型部件位于同一文件中时,所有工作都成功

但当我将它们分为两个文件时,出现以下语法错误:

The name "add" cannot be found.
我认为它需要打开整数模块,其中有一个add函数,所以我在模型部分的头部打开了它。 但是运行时要求我指定这个/Univ的范围

You must specify a scope for sig "this/Univ"
以下是一个例子: 首先在一个模块中创建模型

module solo

open util/ordering [A] as chain
//open util/integer

sig A{ b : set B}

fact {  all a : A - chain/last | #(a.next.b) = add[ #(a.b), 2]}

sig B{}
然后在另一个模块中运行部件:

module due

open solo

run {#(solo/chain/first.b) = 2 }for 10 B, 5 A
当我这样称呼它时,我有一个“无法找到添加的名称”错误。 当我取消注释integer模块打开时,出现“您必须为sig指定一个作用域”this/Univ“”错误


我应该怎么做才能使它工作?

如果我没有弄错的话,+是联合运算符,因此不能用于执行加法

你用的是哪种合金

我认为add[Int,Int]函数是最近添加的,以前它是plus[Int,Int]

你可能想试试plus[Int,Int],看看它是否能解决你的问题。
否则,访问您的模型会很好。可能错误来自其他地方。

如果我没有弄错的话,+是联合运算符,因此不能用于执行加法

你用的是哪种合金

我认为add[Int,Int]函数是最近添加的,以前它是plus[Int,Int]

你可能想试试plus[Int,Int],看看它是否能解决你的问题。
否则,访问您的模型会很好。可能错误来自其他地方。

如果我没有弄错的话,+是联合运算符,因此不能用于执行加法

你用的是哪种合金

我认为add[Int,Int]函数是最近添加的,以前它是plus[Int,Int]

你可能想试试plus[Int,Int],看看它是否能解决你的问题。
否则,访问您的模型会很好。可能错误来自其他地方。

如果我没有弄错的话,+是联合运算符,因此不能用于执行加法

你用的是哪种合金

我认为add[Int,Int]函数是最近添加的,以前它是plus[Int,Int]

你可能想试试plus[Int,Int],看看它是否能解决你的问题。
否则,访问您的模型会很好。可能错误来自其他地方。

我使用alloy 4.2。你说得对,+是并集运算符。我错了。我尝试了加号操作符,当命令和模型在同一个文件中时,它会像add操作符一样工作。但是,当我在一个单独的文件中尝试使用该命令时,使用关键字open打开的文件似乎既不能访问add,也不能访问plus操作符。我认为,如果共享有问题的模型,则更容易诊断错误。实际上,我很难理解您所说的将运行部分与模型部分分离的意思。显式打开util/integer应该可以。“Univ”的缺失范围是一个奇怪的错误,我也想看看导致它的模型。我修改了我的问题,提出了一个带有该错误的模型。我使用alloy 4.2。你说得对,+是并集运算符。我错了。我尝试了加号操作符,当命令和模型在同一个文件中时,它会像add操作符一样工作。但是,当我在一个单独的文件中尝试使用该命令时,使用关键字open打开的文件似乎既不能访问add,也不能访问plus操作符。我认为,如果共享有问题的模型,则更容易诊断错误。实际上,我很难理解您所说的将运行部分与模型部分分离的意思。显式打开util/integer应该可以。“Univ”的缺失范围是一个奇怪的错误,我也想看看导致它的模型。我修改了我的问题,提出了一个带有该错误的模型。我使用alloy 4.2。你说得对,+是并集运算符。我错了。我尝试了加号操作符,当命令和模型在同一个文件中时,它会像add操作符一样工作。但是,当我在一个单独的文件中尝试使用该命令时,使用关键字open打开的文件似乎既不能访问add,也不能访问plus操作符。我认为,如果共享有问题的模型,则更容易诊断错误。实际上,我很难理解您所说的将运行部分与模型部分分离的意思。显式打开util/integer应该可以。“Univ”的缺失范围是一个奇怪的错误,我也想看看导致它的模型。我修改了我的问题,提出了一个带有该错误的模型。我使用alloy 4.2。你说得对,+是并集运算符。我错了。我尝试了加号操作符,当命令和模型在同一个文件中时,它会像add操作符一样工作。但是,当我在一个单独的文件中尝试使用该命令时,使用关键字open打开的文件似乎既不能访问add,也不能访问plus操作符。我认为,如果共享有问题的模型,则更容易诊断错误。实际上,我很难理解您所说的将运行部分与模型部分分离的意思。显式打开util/integer应该可以。“Univ”的缺失范围是一个奇怪的错误,我也想看看导致它的模型。我修改了我的问题,提出了一个带有该错误的模型。