调试合金中的链接关系声明

285

我正在使用Alloy来建模图形转换。我将变换指定为应用于图的不同部分的不同变换。所以我有一个签名:

sig Transformation {
    nodes : some Node,
    added_node : one Special_Node
}

为了应用此变换,我在签名的事实部分声明了3个关系,这些关系适用于图的不同部分。关系的左侧与输入图有关,而右侧与输出图有关:

some mapping_rel0_nodes : rel0In one -> one rel0Out|{
    C1 && C2 && C3 
}
&&
some mapping_rel1_nodes : rel1In   ->  some (rel1Out+special_Node) | {
    C1' && C2' && C3'
}
&&
some mapping_rel2_nodes : rel2In   ->  some (rel2Out+special_Node) |{
    C1'' && C2'' && C3''
} && 
 out.nodes <: connections = ~mapping_rel2_nodes.inpCnx.mapping_rel2_nodes +
                            ~mapping_rel1_nodes.inpCnx.mapping_rel1_nodes +
                            ~mapping_rel0_nodes.inpCnx.mapping_rel0_nodes

每个关系都适用于图的不相交的不同部分,但是它们之间通过连接相互连接。CX,CX'和CX''是应用于关系的约束。节点具有以下签名:

sig Node{
    connections : set Node
}{
    this !in this.@connections
}

为了获得新的连接,我将输入图中的所有连接都输入inpCnx,并使用为每个点获得的映射来获取新图中的关联连接。

我的问题是:

  • 在他的事实步骤中,仍然知道mapping_relX_nodes吗?
  • 当我在评估器中控制它们并在适当的实例上手动执行操作时,它可以工作,但表示为事实,它不返回任何实例。我读了这篇文章,我想知道是否还有其他工具来控制表达式和变量,例如debug print还是其他?
  • 这些关系具有相同的对数关系,但是rel0是双射的,其他的只是二元关系。由于rel0的双射性,这些关系的并集必须是双射的吗?
  • 根据我在评估器中的经验,当有一个元组重复时,其中一个将被删除:{A$0->b$0, A$0->B$0}变为{A$0->B$0}但是有时可能需要同时保留两者,有没有办法同时保留两者?

提前致谢。

CM Sperberg-McQueen

你问:

不要mapping_relX_nodes在他的事实步骤仍是我们知道的?

没有完整的工作模型进行测试,很难给出绝对坚定的答案。但是Alloy是纯声明性的,而mapping_rel1_nodesetc等的使用似乎不是局部变量,因此,事实第四个合相中的引用将与其他合相中的引用绑定在一起。(如果未绑定,则不绑定。)

当我在评估器中控制它们并在适当的实例上手动执行操作时,它可以工作,但表示为事实,它不返回任何实例。我读了这篇文章,我想知道是否还有其他工具来控制表达式和变量,例如debug print还是其他?

从来没听说过。以我的经验,当某些东西在评估器中似乎可以按预期工作,但我无法使它在事实或谓词中起作用时,我几乎总是无法获得事实或谓词的语义。

这些关系具有相同的对数关系,但是rel0是双射的,其他的只是二元关系。由于rel0的双射性,这些关系的并集必须是双射的吗?

不可以(除非我完全误解了您的问题)。

根据我在评估器中的经验,当有一个元组重复时,其中一个将被删除:{A $ 0-> b $ 0,A $ 0-> B $ 0}变为{A $ 0-> B $ 0}。但是有时可能需要同时保留两者,有没有办法同时保留两者?

是的; 合金搭配套装。(因此,重复项不会被“删除”-只是集合中没有重复项。)要区分两个原本相同的元组,您可以(a)向该元组添加另一个值(这样,对变成三元组,三元组变成4元组,而n元组成为Ar + 1(n + 1)的元组,或(b)为表示元组的对象定义签名。由于签名的成员具有对象身份,而不是值身份,因此它们可用于区分不同的配对出现,例如A $ 0-> B $ 0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel中的链接关系问题

来自分类Dev

Laravel 从表单创建或更新模型链接关系中的许多

来自分类Dev

无法解析超链接关系的URL

来自分类Dev

链接关系数据库中未知表的外键

来自分类Dev

Prolog:从间接关系中消除循环

来自分类Dev

Prolog:从间接关系中消除循环

来自分类Dev

测试Django Rest Framework时创建超链接关系

来自分类Dev

使用方法参数作为链接关系的占位符

来自分类Dev

django:链接关系对象的相关管理器

来自分类Dev

单击链接后如何使菜单中的链接关闭菜单?

来自分类Dev

单击链接后如何使菜单中的链接关闭菜单?

来自分类Dev

Django REST Framework url 链接 - 无法解析超链接关系的 URL

来自分类Dev

查询仅连接关系中的最后一行

来自分类Dev

合金 - 非法的关系连接

来自分类Dev

Eloquent / Laravel-将WHERE子句放在具有链接关系的引用表上

来自分类Dev

Django REST Framework:无法使用视图名称解析超链接关系的URL

来自分类Dev

Django Rest Framework-配置不正确:无法解析超链接关系的URL

来自分类Dev

无法使用视图名称“ book-detail”解析超链接关系的URL

来自分类Dev

DRF无法使用PrimaryKeyRelatedField上的视图名称解析超链接关系的URL

来自分类Dev

Django REST Framework:无法使用视图名称解析超链接关系的URL

来自分类Dev

在没有直接关系的情况下将用户链接到项目

来自分类Dev

合金和UML之间的关系?

来自分类Dev

合金和UML之间的关系?

来自分类Dev

单击链接关闭菜单

来自分类Dev

如何在mysql主表的单个查询中连接关系表中的值

来自分类Dev

在Rails中链接归属关系

来自分类Dev

当我在一个函数中声明多个连接时,如何确保连接关闭?

来自分类Dev

当节点之间没有直接关系时,向Neo4j中的csvfile中的关系添加属性

来自分类Dev

春季启动JPA:在自连接关系中以JSON视图进行递归

Related 相关文章

  1. 1

    Laravel中的链接关系问题

  2. 2

    Laravel 从表单创建或更新模型链接关系中的许多

  3. 3

    无法解析超链接关系的URL

  4. 4

    链接关系数据库中未知表的外键

  5. 5

    Prolog:从间接关系中消除循环

  6. 6

    Prolog:从间接关系中消除循环

  7. 7

    测试Django Rest Framework时创建超链接关系

  8. 8

    使用方法参数作为链接关系的占位符

  9. 9

    django:链接关系对象的相关管理器

  10. 10

    单击链接后如何使菜单中的链接关闭菜单?

  11. 11

    单击链接后如何使菜单中的链接关闭菜单?

  12. 12

    Django REST Framework url 链接 - 无法解析超链接关系的 URL

  13. 13

    查询仅连接关系中的最后一行

  14. 14

    合金 - 非法的关系连接

  15. 15

    Eloquent / Laravel-将WHERE子句放在具有链接关系的引用表上

  16. 16

    Django REST Framework:无法使用视图名称解析超链接关系的URL

  17. 17

    Django Rest Framework-配置不正确:无法解析超链接关系的URL

  18. 18

    无法使用视图名称“ book-detail”解析超链接关系的URL

  19. 19

    DRF无法使用PrimaryKeyRelatedField上的视图名称解析超链接关系的URL

  20. 20

    Django REST Framework:无法使用视图名称解析超链接关系的URL

  21. 21

    在没有直接关系的情况下将用户链接到项目

  22. 22

    合金和UML之间的关系?

  23. 23

    合金和UML之间的关系?

  24. 24

    单击链接关闭菜单

  25. 25

    如何在mysql主表的单个查询中连接关系表中的值

  26. 26

    在Rails中链接归属关系

  27. 27

    当我在一个函数中声明多个连接时,如何确保连接关闭?

  28. 28

    当节点之间没有直接关系时,向Neo4j中的csvfile中的关系添加属性

  29. 29

    春季启动JPA:在自连接关系中以JSON视图进行递归

热门标签

归档