如何在给定解决方案中评估在与用于生成上述解决方案的模型不同的模型中声明的谓词

2024-03-09

假设我们有两个模块A和B,(A在B中打开)

您从 A 生成一个解决方案,并在 B 中有一些参数化谓词,这些谓词仅对 A 的元素进行推理,但由于某些原因,您不能将这些谓词放入模块 A 中。

如何在 A 生成的解决方案中评估 B 中声明的谓词?

以下是我尝试实现此目标所遵循的以下步骤(未成功)

  1. 从 A 生成解决方案
  2. 使用 B 的所有可达签名读取此解决方案
  3. 解析一个表达式作为基于 A 的参数
  4. 检索 B 中声明的谓词
  5. 使用步骤 3 中定义的参数评估在步骤 2 中读取的解决方案中在步骤 4 中检索到的谓词。

IF谓词主体不包含对模块 A 元素的任何引用,则评估成功。ELSE它会产生这样的致命错误:

字段“field (Sig <: field>


我设法评估了在与用于生成解决方案的模块不同的模块中声明的谓词,但只能通过在字符串级别工作的肮脏解决方法。

以下是我遵循的步骤:

  1. 提取所有谓词的主体并将它们映射到它们的名称(通过我自己解析文件)

  2. 使用 Alloy API 提取这些谓词所采用的参数的名称(更方便,但也可以通过直接解析模块的内容来检索这些参数)

  3. 将每个主体(在步骤 1 中恢复)中出现的参数名称(在步骤 2 中恢复)替换为所需的表达式。 (您想要与参数关联的值,可以是 sig、atom 或任何其他合金表达式)

  4. 将 3 中获得的主体解析为合金表达式(使用 CompUtil.parseOneExpression_fromString)并在解决方案中对其进行评估。

肮脏...但工作...;-)

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

如何在给定解决方案中评估在与用于生成上述解决方案的模型不同的模型中声明的谓词 的相关文章

  • Vimeo 视频链接正则表达式

    有人得到了 vimeo 视频链接的正则表达式 可以从段落中提取它们以在 php 中使用吗 似乎无法找到适合最新 vimeo url 方案的合适方案 Vimeo 有 4 个不同的公共视频链接 视频IDvimeo com Video ID 渠道
  • GRPC - .IllegalArgumentException:Jetty ALPN/NPN 尚未正确配置

    我正在尝试在 pod 上的 docker 容器中启用 TLS 来启动 GRPC 服务器 但在服务器启动期间出现以下错误 我正在尝试参考https github com grpc grpc java blob master SECURITY
  • numpy沿任意轴广播加法

    我想通过简单地沿一个或多个轴执行相同的加法来添加两个不同维度的数组 非矢量化解决方案 x np array 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 shape 4 3 2 y np a
  • 为什么 http 服务返回 observables 而不是 Promise

    我对导致角度 2 的推理或讨论感到好奇http服务返回可观察的结果而不是响应的承诺 我会理解 Web 套接字连接或长轮询请求之类的逻辑 但是http服务只是创建一个XMLHttpRequest 并且在load请求的事件处理程序 在响应可观察
  • 在 PL/SQL 中创建或模拟二维数组

    您能帮助我如何在 PL SQL 中为存储过程创建二维数组吗 这些列是动态的 因此它的类型也可以增长和变化 任何帮助表示赞赏 先感谢您 我有以下代码 Type CAR TABLE ARRAY is varray 2 of varchar2 2
  • 更改 UITabBarItem 图像

    我已经使用 Storyboard 来设置我的UITabBarController及其对应的ViewControllers 每当取消选择选项卡时 它都是灰色的 选择它时 它会呈现绿色 我想要其中之一UITabBarItems始终看起来相同 即
  • Font-Face 使用绝对路径

    是否可以使用绝对路径 fontace 我有以下目录结构 HP font Monoton woff Monoton eot css font css fontface css html index html 定义字体 font face fo
  • 在 C++11 中使用零或 NULL 哪个更好?

    如今 有了C 11 推荐使用什么 Zero or NULL 第一个还是第二个如果 int p getPointer if 0 p something if NULL p something UPDATE 我忘记新的了 if nullptr
  • Entity Framework Core - 版本 5+ 与输出数据库无关

    我有一个使用 EF Core 的应用程序 最初是使用 V3 1 1 编写的 我们决定冒险更新到 v5 0 1 现在它已经不再预览了 该应用程序支持 MSSQL 和 SQLite 最初运行得很好 迁移的创建基本上与工具和文档无关here ht
  • 您的启动项目“项目”未引用 Microsoft.EntityFrameworkCore.Design

    我正在使用 EntityFrameworkCore 版本 2 2 2 构建 WPF 应用程序 然而 当我想要Add Migration它向我输出一个错误 Your startup project project doesn t refere
  • 如何配置星号即时消息

    星号支持即时消息吗 我尝试为 IM 配置星号 从这个例子 https groups google com forum msg csipsimple users stBJYGQ88fw OgLW8CLVvIkJ 但是当我尝试将 IM 发送到另

随机推荐

  • 下限 > 0 的 .Net 数组

    虽然这可能是一件奇怪的事情 但我需要在 Net 中创建一个下限 gt 0 的数组 乍一看 这似乎是可能的 使用 Array CreateInstance typeof Object new int 2 new int 9 产生所需的结果 下
  • 一个maven项目如何依赖另一个本地maven项目?

    我有两个 Maven 项目project foo pom xml and project bar pom xml 我有foo取决于bar and I want that every timefoo pom xmlcompiles it ll
  • 单元测试模拟 GCS

    我很难找到一种方法来进行单元测试read and write此类中存在的方法 我正在尝试使用模拟补丁库创建一个模拟 以避免调用 Google Storage 但我很难弄清楚如何做到这一点 from google cloud import s
  • 在c#中用0-9之间的随机数填充数组[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中用 0 9 之间的唯一随机数填充数组 https stackoverflow com questions 10688044 filling a array with uniqe random
  • 使用相关字段更新项目的示例过滤器挂钩

    我有 3 个集合 客户 经销商 和 订单 客户与经销商之间存在多对一的关系 经销商与客户之间是一对多的关系 订单与客户之间存在多对一的关系 我想使用先前配置的多对一关系根据所选客户自动设置orders reseller 字段 payload
  • img 元素上的 HTML 宽度/高度属性和 CSS 宽度/高度属性有什么区别?

    超文本标记语言 img 元素可以有width height属性 也可以有CSSwidth height特性 img src xxx img width 16 height 16 style width 16px height 16px HT
  • 我无法从数据库中检索图像

    我有一个包含电影名称 描述和封面图片的数据库 封面图片字段类型为 blob 问题是我无法从数据库中检索它 我想在他们旁边的封面图片上显示电影名称 如何做到这一点 这是我的代码 table border 1 width 100 tr td t
  • Perl 中的“字符串化”是什么?

    在 CPAN 模块的文档中DateTime http search cpan org drolsky DateTime 0 66 lib DateTime pm Formatters And Stringification我发现了以下内容
  • 在 Swift 中子类化 UINavigationBar

    我正在尝试创建一个自定义UINavigationBar类 然后使用Storyboard将其设置为我的班级UINavigationController的导航栏 这是我的代码UINavigationBar class class CustomN
  • 使用外部服务的 Shopify 自定义搜索

    我的情况 我们有一个 Shopify 商店 我们还有一个在 AWS 上实施和托管的搜索引擎 我们需要使用该搜索引擎而不是 Shopify 商店中的默认 search 理想情况下 当用户尝试搜索某些内容时 他们的查询 以及可能的其他内容 例如
  • C++ 静态变量总是在主线程上被破坏吗?

    简短的问题 C 11 静态 非线程本地 变量是否总是在主线程上分散注意力 它们是否总是仅在程序退出时被销毁 考虑到我们不手动调用它们的析构函数 UPDATE 为了简洁起见 我们假设调用了析构函数 我们没有拔掉插头 我们没有杀死 9 全局对象
  • 使用“Runtime.getRuntime().exec”从 Java 启动的进程无法访问文件系统位置

    从 Java 启动的进程Runtime getRuntime exec权限较少 我在 JavaDocs 中没有看到对此的描述以及如何管理它 如何保证启动的进程具有相同的环境和权限 更多细节 编写轻量级 Eclipse 插件maven htt
  • 安全 Rust 中的转换会导致运行时错误吗?

    我正在摆弄一点Any和铸造只是为了更深入地了解 Rust 从 C 开始 我已经习惯了强制转换可能导致运行时异常 因为在 C 中强制转换基本上意味着亲爱的编译器 相信我 我知道我在做什么 请将其转换为int32因为我知道它会起作用 但是 如果
  • R中的正态分布图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用plot命令在r中绘制正态分布 plot x dnorm x mean sd 使用我的平均值和标准差值 然而 使用这些值 y
  • 从 C# 调用 NetValidatePasswordPolicy 始终返回密码必须更改

    我们有一个使用 Active Directory 来验证用户身份的 mvc 应用程序 我们正在利用System DirectoryServices并使用PricipalContext验证 principalContext ValidateC
  • 如何在 OS 10.6 (Snow Leopard) 上解决此 PostgreSQL 错误

    我按照以下说明设置 postgresql这个网站 http www robbyonrails com articles 2010 02 08 installing ruby on rails passenger postgresql mys
  • 输入图像中的通道数无效

    我在运行程序时收到错误 我特别考虑了 OpenCV 库中的颜色操作 我正在尝试构建一个程序 从 Raspberry Pi 摄像头获取视频并对其进行分析 我想找到视频中最亮的点 并计算该点距视频源中心的距离和角度 我正在做的项目将相机指向一个
  • GTK焦点链

    Currently I m working on a pyGTK3 application for which I want to set the focus chain When using the code below simplifi
  • 将一个系列分配给 Pandas DataFrame 的几行

    我有一个用索引和列准备的 pandas DataFrame 所有值都是 NaN 现在我计算了一个结果 该结果可用于 DataFrame 的多行 并且我想一次将它们全部分配 这可以通过循环来完成 但我很确定这个分配可以一次完成 这是一个场景
  • 如何在给定解决方案中评估在与用于生成上述解决方案的模型不同的模型中声明的谓词

    假设我们有两个模块A和B A在B中打开 您从 A 生成一个解决方案 并在 B 中有一些参数化谓词 这些谓词仅对 A 的元素进行推理 但由于某些原因 您不能将这些谓词放入模块 A 中 如何在 A 生成的解决方案中评估 B 中声明的谓词 以下是