Alloy 可以生成无约束关系的实例吗?
Can Alloy generate instances of unconstrained relations?
以下模型包含一个 "run" 命令,该命令指示 Alloy 分析器生成关系 to.address
的实例,其中关系被限制为一个元组。
sig Message {
to: Name
}
sig Name {
address: Address
}
sig Address {}
run {one to.address}
但我不想限制 to.address
关系。我想简单地写这个:
run {to.address}
嘿Alloy分析器,生成关系实例to.address
执行 运行 命令会导致此错误消息:{to.address} must be a formula.
有没有办法指示 Alloy 分析器生成关系 to.address
的实例而不指定对关系的约束?如果不是,为什么不呢?
我认为您误解了可视化工具的作用。 Alloy 的每次执行都会生成一个绑定所有关系的实例。 运行命令的主体是一个约束,它决定了哪些实例是有效的;它对 显示哪些 关系没有影响。为了做你想做的事,你可以写一个命名关系的约束(例如,使用存在量词)。或者,如果您想查看特定表达式的值,只需将其输入计算器即可。
以下模型包含一个 "run" 命令,该命令指示 Alloy 分析器生成关系 to.address
的实例,其中关系被限制为一个元组。
sig Message {
to: Name
}
sig Name {
address: Address
}
sig Address {}
run {one to.address}
但我不想限制 to.address
关系。我想简单地写这个:
run {to.address}
嘿Alloy分析器,生成关系实例to.address
执行 运行 命令会导致此错误消息:{to.address} must be a formula.
有没有办法指示 Alloy 分析器生成关系 to.address
的实例而不指定对关系的约束?如果不是,为什么不呢?
我认为您误解了可视化工具的作用。 Alloy 的每次执行都会生成一个绑定所有关系的实例。 运行命令的主体是一个约束,它决定了哪些实例是有效的;它对 显示哪些 关系没有影响。为了做你想做的事,你可以写一个命名关系的约束(例如,使用存在量词)。或者,如果您想查看特定表达式的值,只需将其输入计算器即可。