Я смоделировал свой проект в сплаве и хочу отделить рабочую часть от смоделированной части моего проекта. В некоторых фактах и предикатах я использую функцию добавления при сравнении мощности. Вот пример:
#relation1 = add[ #(relation2), 1]
Когда часть запуска и часть модели находятся в одном файле, все работает успешно.
Но когда я разделяю их на 2 файла, у меня возникает следующая синтаксическая ошибка:
The name "add" cannot be found.
Я подумал, что нужно открыть целочисленный модуль, где есть функция добавления, поэтому я открыл его в заголовке части модели. Но затем среда выполнения попросит меня указать область действия this/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
когда я называю это так, у меня возникает ошибка «добавление имени не может быть найдено». Когда я раскомментирую открытие целочисленного модуля, у меня возникает ошибка «Вы должны указать область для sig« this/Univ »».
Что я должен сделать, чтобы заставить его работать?