util/ordering 模块和有序子签名

2023-12-09

考虑以下合金模型:

open util/ordering[C]

abstract sig A {}
sig B extends A {}
sig C extends A {}

pred show {}
run show for 7

我明白为什么,当我run show for 7,该模型的所有实例都有 7 个签名 C 原子。(嗯,这并不完全正确。我明白that有序签名将始终具有范围允许的尽可能多的原子,因为 util/ordering 告诉我这一点。但这并不完全相同why.)

但为什么这个模型的实例没有任何签名 B 的原子呢?这是对 util/ordering 执行特殊处理的副作用吗? (有意?无意?) util/ordering 是否仅适用于顶级签名?

或者还有什么我想念的事情吗?

在这个模型中,这是抽象的,我真的很想为 B 和 C 的并集起一个像 A 这样的名字,我真的很希望 C 是有序的,我真的很希望 B 是无序的,非空。目前,我似乎能够实现其中任何两个目标;有没有办法同时管理这三个?

[附录:我注意到指定run show for 3 but 3 B, 3 C确实实现了我的三个目标。相比之下,run show for 2 but 3 B根本不产生任何实例。也许我需要更好地理解范围规范的语义。]


简短的回答:所报告的现象是由默认和隐含范围的规则引起的;这些规则在 B.7.6 节中讨论语言参考.

更长的答案:

最终证明我应该更仔细地研究范围规范的语义,这一怀疑是有道理的。在此显示的示例中,规则完全按照记录执行:

  • For run show for 7,签名A默认范围为7; B 和 C 也是如此。使用 util/ordering 模块强制 C 原子数为 7;这也耗尽了签名 A 的配额,从而使签名 B 的隐式范围为 0。

  • For run show for 2 but 3 B,签名 A 的默认范围为 2,B 的显式范围为 3。这使得签名 C 的隐式签名为 2 减 3,或负 1。这似乎算作不一致;范围界限预计为自然数。

  • For run show for 2 but 3 B, 3 C,签名 A 的隐式界限为 6(其子签名界限之和)。

作为更好地理解范围规则的一种方法,事实证明执行以下所有命令对该用户很有用:

run show for 3
run show for 3 but 2 C
run show for 3 but 2 B
run show for 3 but 2 B,  2 C
run show for 3 but 2 A
run show for 3 but 2 A, 2 C
run show for 3 but 2 A, 2 B
run show for 3 but 2 A, 2 B, 2 C

我将把这个问题留给其他答案,并希望它可以帮助其他一些用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

util/ordering 模块和有序子签名 的相关文章

随机推荐

  • 如何在 Eclipse RCP 应用程序中禁用快速访问文本字段

    今天 我将 Eclipse IDE 从 3 7 更改为 4 2 并且我的插件项目在 UI 的状态栏中有一个名为 QuickAccess 的新功能 但我不需要它 那么我怎样才能禁用这个功能 因为我的按钮栏的位置已经改变了 对于所有遇到同样问题
  • python: _winreg 问题

    Windows 注册表可能包含名称中嵌入空值的键 当我打电话时 winreg OpenKey key subkey string with embbeded null 我收到以下错误 TypeError OpenKey argument 2
  • 从 Selenium 和 chromedriver 下载文件

    我无法让 Selenium 和 Chrome Canary 下载文件 我正在使用 Java 和 Chrome 59 60 因为我的测试适用于 Windows 和 Linux 并且我正在尝试开始从网页下载文件 当我从 selenium 中不设
  • 为什么有时Python子进程在运行进程后无法获得正确的退出代码?

    我正在使用 Python 子进程在 Windows 7 上运行外部脚本 我正在尝试获取退出代码 在情况 1 中 我运行一个 python 脚本test1 py test1 py import sys sys exit 24 lt exit
  • HTML 电子邮件中的链接锚点

    我正在尝试制作一封时事通讯电子邮件 其索引包含指向邮件中不同锚点的链接 但到目前为止 它似乎不适用于任何客户端 这是代码 ul style list style none margin 0px padding 0px li a href a
  • iPhone 的旋转视图不占据整个屏幕

    我使用 CGAffineTransformMakeRotation 旋转了视图 iPhone 只允许在一个视图控制器上横向定位 如下图所示 图像的左侧和右侧都有白色区域 我希望图像占据整个空间并具有黑色背景 至少在一维 宽度或高度 下面是完
  • 有没有比这段代码更优雅的方法将 XML 文档转换为 Java 中的字符串?

    这是当前使用的代码 public String getStringFromDoc org w3c dom Document doc try DOMSource domSource new DOMSource doc StringWriter
  • 使用“apply”系列函数处理 data.frames 列表

    我有一个数据框 然后将其分成三个 或任意数量 的数据框 我想做的是自动处理每个数据帧中的每一列并添加现有变量的滞后版本 例如 如果每个 data frame 中有三个变量 V1 V2 V3 我想自动 无需硬编码 添加 V1 lag V2 l
  • 并排对齐两个 div [重复]

    这个问题在这里已经有答案了 我有一个小问题 我正在尝试使用 CSS 并排对齐两个 div 但是 我希望将中心 div 水平放置在页面中央 我通过使用以下方法实现了这一点 page wrap margin 0 auto 效果很好 我想将第二个
  • 我如何在 CakePHP 2.0 中测试 Add 函数

    有人告诉我 我们还必须测试 Cake 创建的功能 例如添加 删除 如果我有一个像这样的函数 如果它没有任何返回 重定向甚至视图 我该如何测试它 我使用ajax来执行它 public function add if this gt reque
  • Android - setSoTimeout 不起作用

    所以我遇到了不工作的套接字超时 我遵循了现有帖子给出的所有说明 但它仍然不起作用 我从未遇到套接字超时异常 这是我的代码 AsyncTask
  • LINQ to Entities Any() 和 Contains() 列表较小,速度较慢

    我正在使用 EF 6 从数据库获取产品 产品类别映射为产品的导航属性 数据来自 ProductCategory 数据透视表 类别就像树一样工作 即每个类别都可以有子类别 但只有最具体的产品 子类别关系存储在数据透视表中 例如 假设有这样的类
  • 安装我的 Android 应用程序时出现问题

    我不知道我的应用程序发生了什么 以前从未发生过这种情况 我看到这样的错误 2011 04 10 11 53 22 Rocket Project 安装错误 INSTALL PARSE FAILED MANIFEST MALFORMED 201
  • 如何发送 Java RESTful Web 服务的 HTTP 错误?

    我已经这样做了tutorial现在我想从此 Web 服务抛出一个错误 例如 HTTP 错误代码403 or 400 我怎样才能做到这一点 我注意到我有一个类型的接口HttpServletResponse 但我不知道如何使用它 我还需要导入其
  • 如何从 Angular 的打字稿文件中获取背景颜色并将其绑定到我的 html 页面?

    我有一个在打字稿中填充的数组 并且根据数组中的值 我想为我的 div 设置不同的背景颜色 但它不起作用 我究竟做错了什么 我尝试使用 style backgroundColor statusColor i 设置背景 statusColor
  • 使用 Facebook API 创建和管理群组

    我是 Facebook 应用程序开发新手 正在寻找一种使用 Facebook API 创建和管理群组的方法 有一个获取和获取列表调用 但我还没有找到管理组的方法 貌似API已经发布了 https developers facebook co
  • Kotlin - 如何检查 if 条件中的双精度

    我有 if 语句 我想检查我的变量是否是双精度的 这是我的代码 val doubleVal findViewId
  • C++ 扩展 Ascii 字符

    如何检测 C 字符数组中是否存在扩展 ASCII 值 128 到 255 请记住 不存在扩展 ASCII 之类的东西 ASCII 过去和现在都只定义在 0 到 127 之间 上面的所有内容要么无效 要么需要采用 ASCII 以外的已定义编码
  • URL 作为 URL 的获取参数 - “&”的问题

    有一个脚本接收另一个 url 作为 GET 参数 script php file http www google com id 123 问题是 当 url 本身有参数时 它被用作脚本的参数 而不是 url 的参数 script php fi
  • util/ordering 模块和有序子签名

    考虑以下合金模型 open util ordering C abstract sig A sig B extends A sig C extends A pred show run show for 7 我明白为什么 当我run show