以下Alloy谓词p将参数t声明为S类型的单例。调用run p
给出正确的结果,因为谓词体声明t可能包含两个不同的元素s
和{{ 1}}。但是,在第二个s'
命令中,将一组类型为run
的两个不相交元素传递给谓词S
,并且此命令提供一个实例。为什么会这样?
p
答案 0 :(得分:1)
见https://stackoverflow.com/a/43002442/1547046。我认为同样的问题。
顺便说一下,这里有一个很好的研究问题。你能为更好的参数声明定义一个连贯的语义(即更简单,更令人惊讶,并在所有上下文中定义良好)?