Alloy有很多逻辑连词,如 and
和 or
和 implies
. 但我找不到 true
和 false
. 他们失踪了吗?目前我一直在使用 1=1
和 1=0
,但这是相当hacky(并提供编译器警告) .
顺便说一下,我想要真假的原因是我正在写一些产生.als文件的东西 . 我的顶级.als文件期望我的自动生成的.als文件定义一个格式良好的谓词和一个错误的谓词 . 有时候这些谓词很复杂,但有时候我只是希望良好的[...]返回true,而错误的[...]返回false . 这就是我在Alloy语言中想要真假的原因 .
3 回答
它们并非有充分理由内置:请参阅软件抽象的第137页常见问题解答(Daniel Jackson,麻省理工学院出版社,2012年) . 简而言之,如果它们是内置的,你必须能够声明一个关于布尔值的关系,然后因为布尔表达式可以计算为{}和{T,F},所以连词必须是定义了这些值,这似乎是一个非常糟糕的主意 .
由于空谓词是真的,我最喜欢的true和false实现是:
似乎工作;但是内置这些内容会很不错 .