首页 文章

合金中的真伪

提问于
浏览
1

Alloy有很多逻辑连词,如 andorimplies . 但我找不到 truefalse . 他们失踪了吗?目前我一直在使用 1=11=0 ,但这是相当hacky(并提供编译器警告) .

顺便说一下,我想要真假的原因是我正在写一些产生.als文件的东西 . 我的顶级.als文件期望我的自动生成的.als文件定义一个格式良好的谓词和一个错误的谓词 . 有时候这些谓词很复杂,但有时候我只是希望良好的[...]返回true,而错误的[...]返回false . 这就是我在Alloy语言中想要真假的原因 .

3 回答

  • 1

    它们并非有充分理由内置:请参阅软件抽象的第137页常见问题解答(Daniel Jackson,麻省理工学院出版社,2012年) . 简而言之,如果它们是内置的,你必须能够声明一个关于布尔值的关系,然后因为布尔表达式可以计算为{}和{T,F},所以连词必须是定义了这些值,这似乎是一个非常糟糕的主意 .

  • 3

    由于空谓词是真的,我最喜欢的true和false实现是:

    pred true {}
    pred false { not true }
    
  • 3
    pred true {no none}
    pred false {some none}
    

    似乎工作;但是内置这些内容会很不错 .

相关问题