找到实例
回答
这不是完全清楚你在找什么,至少对像我这样的读者谁认为谓词的事情评估,不事执行。
是否有可能搜索的谓词执行情况下...?
听起来好像在这里你正在寻找在2.4节“执行跟踪”和其他地方在杰克逊的软件抽象讨论之类的话(见指数“跟踪”)。的基本思想是
- 限定描述的初始状态的谓词(杰克逊的示例调用它INIT)
- 定义一组描述可能从一个状态转变到状态谓词
- 强加的总体排序上各州
定义谓词用于检查执行迹线大致需要形式
pred traces { init [first] /* 'first' is defined by util/ordering[State] */ all s : State - last | let s' = next[s] | Possible_Transition[s, s'] }
许多变化当然是可能的。
有没有办法将谓词作为参数传递给另一个谓词?
没有,是的。
否,因为Alloy使用一阶逻辑;谓词的所有参数都是延伸定义的原子集合。
是因为过程中的一个可以制作一个映射1的签名具体化谓词:1的组谓词,并通过每当周围人想传递一个谓词签名的原子。鉴于人们希望以这种方式来表达的有限数量的谓词,这总是可能的。 (请原谅我,如果这点和下面的解释是crashingly明显给你;我还记得的时候,他们没有crashingly明显,我,我希望堆栈溢出,一些读者对他们来说,他们不是很明显。)
假设我们有两个谓词P
和Q
,其中每一个取Atom
类型的原子论点a
。我们希望定义一个元谓语M
,它接受原子x
和谓词Y
并返回值Y[x]
。
// First some scaffolding
sig Atom {}
pred P [a : Atom] { ... // whatever you like }
pred Q [a : Atom] { ... // whatever ... }
// Now the heart of the matter
abstract sig reification {}
one sig p, q extends reification {}
pred M [x : Atom, Y : reification] {
(Y = p) implies P[x]
else (Y = q) implies Q[x]
else x != x
}
取决于你为什么要传递谓词作为参数,你可以振振有词地采取这样的一种方式来做到这一点,或者为什么您可能不希望做这样一个示范。如果高阶谓词是你想要考虑的重要部分,像Alloy这样的一阶系统可能不是最好的匹配。
但是像其他一阶系统一样,Alloy可以用一些谨慎和努力来支持更高阶的参数。当我们应用合金来表明给定的设计具有属性P时,我们最常见的情况是支持所有设计的正确实现都将具有属性P的声明,这种声明在Alloy中可能采取all i : Implementation | correctly_implements_design[i] implies has_property_P[i]
的形式。但是一个实现(略微简化)输入和输出之间的关系。所以关于实现的任何陈述都是二阶索赔。因此,在推广给定设计的所有实现时,我们正在制作一阶参数(以Alloy模型表示)以支持二阶索赔。
如果您对使用Alloy对二阶命题进行争论有着浓厚的兴趣,您可以参考Jackson的书中的3.2.3,5.2.2和5.3节。
- 1. PHP实例找到总数
- 2. 如何在实例化后找到log4net实例?
- 3. 查找ckeditor实例
- 4. 未找到Java实例化异常类
- 5. 找到NotesDocument实例的父文件夹
- 6. 实例变量找不到标识
- 7. 生产实例中找不到socket.io.js
- 8. 找不到符号,实例字段
- 9. 如何找到活动的QMainWindow实例?
- 10. 在Ubuntu EC2实例上找不到libdl.so
- 11. 无法找到变量的实例
- 12. Xcode的实例方法没有找到
- 13. StructureMap找不到HttpServerUtility的默认实例
- 14. 找到EC2实例失败的原因
- 15. PHP strpos(),回显找到的实例
- 16. 如何找到ITypeParameterSymbol实例的INamedTypeSymbol?
- 17. 在AWS CentOS实例上未找到hashlib.pbkdf2_hmac
- 18. 找到创建实例的用户
- 19. 实例方法alloc找不到
- 20. 找到对象实例化的地方
- 21. php实例错误,未找到
- 22. 选择器找不到实例方法
- 23. 没有找到简单的实例列表示例
- 24. 如何找到创建Java单例实例的位置?
- 25. WPF查找窗口实例
- 26. 整数关系的实现(找到实数之间的比例)
- 27. 找到加载到UIImage实例中的图像名称
- 28. 如何查找包含默认实例的SQL Server 2008实例
- 29. 当A涉及C到B时,通过特定ID查找连接到B实例的模型A的实例
- 30. 找不到实体
Mr.Sperberg-McQueen,谢谢你的回答。我觉得它非常翔实,我特别感谢你的礼貌态度。 解释为什么不能直接将谓词传递给其他谓词,以及如何在Alloy中绕过它,现在对我来说很清楚。 /由于评论长度的限制而延续/ –
关于我的第一个问题:我认为它是ProB动画师和模型检查工具,尤其是它能够呈现导致违反指定有效性条件的操作序列的能力。执行轨迹可能接近它,但我错过了要彻底研究它,部分原因是第一个印象是必须为合金定义谓词顺序,而不是合金分析仪以“魔法”方式呈现它们,就像它发现宇宙回应约束。 –