隐藏运算符以避免 AST 中出现歧义

2024-01-31

我正在尝试伊莎贝尔官方教程中的列表示例。我更换了# with :@ with ++具有与 Haskell 相同的语法。现在我收到有关 AST 中含糊之处的警告。我知道我可以隐藏功能hide_const但这对于中缀表示法的运算符不起作用。如何在伊莎贝尔中隐藏操作员?

确切的警告消息是:

Ambiguous input⌂ produces 2 parse trees:
  ("\<^const>HOL.Trueprop"
    ("\<^const>HOL.eq" ("\<^const>Map.map_add" ("/<^const>toylist.list.Nil") ("_position" ys))
      ("_position" ys)))
  ("\<^const>HOL.Trueprop"
    ("\<^const>HOL.eq" ("\<^fixed>app" ("\<^const>toylist.list.Nil") ("_position" ys)) ("_position" ys)))
Fortunately, only one parse tree is well-formed and type-correct,
but you may still want to disambiguate your grammar or your input.

隐藏运算符不会删除其符号。有一个单独的命令no_notation删除现有的注释。在伊莎贝尔/HOL,++一定会map_add从歧义警告可以看出。您可以按如下方式删除它。

no_notation map_add (infixl "++" 100)

Note that you must repeat the exact precedence parameters with which the notation to be deleted has been declared. There is no easy way to find the notation declaration for a constant, but it is good style to declare notation close to the declaration of the constant; Ctrl-clicking on a constant takes you to its declaration.

关于:,默认情况下绑定到Set.member。您可以使用以下命令删除它no_notation Set.member ("(_/ : _)" [51, 51] 50).

除非出于演示或探索目的,否则我建议不要过多更改 Isabelle 的默认语法。否则,其他 Isabelle 用户会发现很难阅读您的代码,并且您的理论将与其他人不兼容。原因是当导入不同的理论时,符号会相加地合并。因此,如果删除该符号++ for map_add理论上A和理论B导入理论A以及其他一些理论源自Main但不是A,那么模糊度为++回到理论上B.

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

隐藏运算符以避免 AST 中出现歧义 的相关文章

  • 如何在 Isabelle/jEdit 中启用“跟踪”

    I m a vim风扇 但仅emacs有这个 Isabelle HOL 环境 jEdit很棒 但我不能使用 using simp trace true like in emacs 如何启用 跟踪 jEdit 你确实可以使用simp trac
  • 使用单射函数的反值

    我试图证明这个引理 lemma assumes x inv f y and inj f and x undefined shows y range f using assms try 但 Nitpick 告诉我这个说法并不正确 Trying
  • 在《伊莎贝尔》中证明关于 THE 的直观陈述

    我想证明伊莎贝尔中类似的引理 lemma assumes y THE x P x shows P THE x P x 我想这个假设意味着THE x P x存在并且定义明确 所以这个引理也应该是正确的 lemma assumes y THE
  • 简化自然色的漂亮印刷

    假设我编写了一个用于反转列表的函数 我想用value命令 只是为了向自己保证我可能做对了 但输出看起来很糟糕 value reverse 1 8 3 gt 1 1 1 1 1 1 1 1 1 1 1 1 a list 如果我告诉伊莎贝尔将这
  • 在 Isabelle 等中定义不同类型的不相交并集

    我问了一系列问题 直到我可以在 Isabelle 中定义以下简单模型 但我仍然坚持得到我想要的东西 我尝试用一 个例子来非常简短地描述这个问题 Example 假设我有两节课Person and Car Person owns汽车还有dri
  • Isabelle/HOL 中的对象级含义

    我发现 Isabelle HOL 中的许多定理更喜欢元级蕴涵 gt 代替 gt 对象逻辑级别 即高阶逻辑含义 伊莎贝尔维基说粗略地说 应该使用元级别含义将规则语句中的假设与结论分开 除此之外 关于对象和元级别含义的使用我应该了解什么 我发现
  • 尝试像集合和子集一样对待类型类和子类型

    这个问题与我之前的SO问题有关类型类 我问这个问题是为了设置一个有关语言环境的未来问题 我不认为类型类适合我想要做的事情 但是类型类的工作方式让我了解了我想要从语言环境中得到什么 下面 当我使用大括号表示法时 0 0 它不代表普通的 HOL
  • 使用不同大小的函数进行自动终止证明

    我写了一个自定义尺寸的函数size2对于我的数据类型 使用此函数 我可以手动证明函数的终止 termination apply relation measure a b c size2 c apply auto done 有没有办法制作fu
  • Isabelle:向量中的最大值

    我想找到自然数向量中的最大值 然而 向量 即 vec 是与集合或列表不同的类型 我考虑了几个行不通的想法 比如调平或提升 vec 的类型或递归函数的定义 您建议采用什么解决方案来获得向量中的最大值 IMPORTS src HOL Algeb
  • 伊莎贝尔语中的“arith”和“presburger”有什么区别?

    到目前为止 我在伊莎贝尔遇到的每一个目标都可以通过使用来解决arith也可以通过以下方式解决presburger反之亦然 例如 lemma odd n nat Suc 2 n div 2 n by presburger or arith 这
  • 伊莎贝尔:setprod 的问题

    以下等式在伊莎贝尔中是否成立 setprod f UNIV n finite set setprod x x f UNIV n finite set 如果是 我该如何证明 tested with Isabelle2013 2 theory
  • Isabelle函数定义实例分析

    想象一下我有一个包含三种情况的函数定义 function f where eq1 if cond1 eq2 if cond2 eq3 if cond3 我怎样才能证明一些方程 f x y f y x 使用左侧的案例分析 仅编写 apply
  • 伊莎贝尔和斯卡拉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑创建 Eclipse PDE 并且需要与 Isabelle 进行通信 我确实发现一些出版物声
  • Isabelle/HOL 中的 primrec 和 fun 有什么区别?

    我正在阅读 Isabelle 教程 并试图澄清我对 primrec 和 fun 的使用的概念 到目前为止我搜索过的内容 包括答案here https lists cam ac uk mailman htdig cl isabelle use
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

    当我使用value为了找出返回自然数的函数的某个值 我总是以 0 的迭代后继函数的形式获得答案 即Suc Suc 0 有时可能很难阅读 有没有办法直接输出Isabelle返回的数字 这是我不久前想修复的问题 但显然我忘记了 卡西吉奈特的猜测
  • 伊莎贝尔中的“real_of_int”和“real”?

    什么是real of int real and int在伊莎贝尔 它们听起来有点像类型 但通常类型的写法类似于x real这些写法就像real x 我无法证明以下陈述 S n x x S n x C x C n x S x 我注意到伊莎贝尔
  • 如何让 typedef 类型从类型类的母类型继承运算符

    发布答案后续问题 Brian 提供了答案 并建议使用提升和转移的解决方案 然而 我找不到足够的关于举重和转移的教程信息 无法知道如何调整他的答案来完成我需要做的事情 在这里 我在黑暗中工作 并使用给出的答案作为即插即用模板来提出这个后续问题
  • 法新社的“find_theorems”

    我怎样才能使用find theorems搜索整个正式证据档案馆 AFP 的机制 我已将存档下载到我的计算机上 并且可以从中导入理论 例如 如果我写imports Kleene Algebra Kleene Algebra Models那么该
  • Subst refl 关闭重复的子目标。这是怎么回事?

    In this https stackoverflow com questions 15608399 how do i remove duplicate subgoals in isabelle线程马蒂厄证明了subst refl关闭重复的
  • 类型类实例化中的现有常量(例如构造函数)

    考虑这个伊莎贝尔代码 theory Scratch imports Main begin datatype Expr Const nat Plus Expr Expr 实例化是相当合理的plus输入 class 以获得良好的语法Plus构造

随机推荐

  • 新的Google Play控制台:在哪里上传mapping.txt?

    我不知道在新的 Google Play 管理中心中将mapping txt 上传到哪里 要上传反混淆 打开 Play 管理中心 选择一个应用程序 在左侧菜单中 选择 发布 gt 应用程序包资源管理器 选择 下载 选项卡 然后向下滚动到 资产
  • 将单元格中的值范围转换为逗号分隔列表

    我可以在单元格 B1 中使用一个公式来查看 A1 并创建一个基于逗号的列表吗 所以下面我可以输入 A1 B1是一个公式 这可能吗 我会让 A1 始终遵循与 XXX XXX 范围相同的格式 TABLE A Input B Result 1 1
  • 网站图标-MVC3 ASP.NET

    favicon ico 需要什么 我正在尝试使用 MVC 错误处理 但它抱怨文件丢失 如何摆脱此错误 Thanks 前往RegisterRoutes的方法全局 asax cs文件 并将其添加为第一行之一 routes IgnoreRoute
  • MATLAB脚本代码和函数代码在同一个文件中? [复制]

    这个问题在这里已经有答案了 可能的重复 在 MATLAB 中 我可以在同一个文件中包含脚本和函数定义吗 https stackoverflow com questions 5363397 in matlab can i have a scr
  • 通过网络(FTP、HTTP、RSync 等)传输文件的最快方法是什么[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我试图找出通过网络在两个系统之间传输大量数据的最佳方法 我目前正在研究 FTP HTTP 或 RSync 我想知道哪一个最快 我在网上寻找
  • 获取 SQLalchemy Instrumentedattribute 的值

    我怎样才能获取a的值InstrumentedAttributeSQLalchemy 中的对象 Pdb ResultLine item reference 1
  • 如何删除所有神秘的“index on”和“WIP on”提交?

    我刚刚被要求修复我的应用程序中的一个错误 我收藏了我当前的工作并查看了我的最新版本标签 我立即注意到这是一个错误 因为 Git 消息告诉我我的提交不会被保存 所以我检查了master反而 但在我这样做之前 我已经打开了我的藏品 重新藏起来的
  • 在一个事务 SQL 中删除和插入

    我只是想问封装到事务时是否总是第一个查询被执行 例如我有50万条记录要删除 50万条记录要插入 是否有可能锁定 实际上我已经测试了这个查询并且它工作正常 但我想确定我的假设是否正确 注意 这将删除并插入相同的记录 并可能更新其他列 BEGI
  • 下拉选择控件 - Windows 8 Metro - XAML

    我想要如下图所示的下拉菜单 我不知道如何得到它们 我想这些是某种组合框 但我不确定 任何人都可以帮助我并提供 xaml 代码吗 谢谢 我想你正在寻找组合框 Windows 8 商店控件列表 MSDN http msdn microsoft
  • ng-click 在 MVC 部分视图中不起作用

    我有一个使用 angular js 和 MVC 的单页面应用程序 该页面调用两个部分视图 Menu Accounts 菜单加载良好 当用户单击菜单项时 我使用角度 ng click 调用另一个部分视图 并将部分视图结果注入主页中 问题是我的
  • LAMP 显示 php 错误

    我已经安装了开发人员的 LAMP 服务器并在 php ini 上进行了更改 显示错误打开 显示启动错误打开 但它没有显示任何错误 甚至没有一点警告 问题出在哪里 出了什么问题 请记住 大多数系统都有两个 php ini 文件 一个用于网络服
  • 在 matplotlib 中绘制黑白二值图

    我使用 python 来模拟一些自动化模型 并在 matplotlib 的帮助下生成如下所示的图 我目前正在使用以下命令进行绘图 ax imshow self g cmap map interpolation nearest where s
  • 使用maven scm插件提交多个文件

    我想使用 maven scm 插件 v1 9 4 在不同的文件夹中 git 提交两个文件 例如 abc p json and xyz p json 我不想提交任何其他文件 例如other p json 根据文档 http maven apa
  • Ninject:将多种类型绑定到同一个单例实例

    interface IService
  • 将 JSON 数组发布到 Android 中的 Web 服务

    我在执行一项相当简单的任务时遇到了一些问题 我只需要一个 JSON 数组 其中包含一个 JSON 对象即可发布到我的 Web 服务 整个 URL 请求的格式需要如下所示 http www myserver com myservice php
  • Instagram 用户对象中每个个人简介的空字符串

    我已经尝试过 通过 Python 中的 API 库以及 Instagram 和 apigee com 提供的 API 控制台 我使用请求 GET tags tag name media recent 我试过ferrari tag 所有结果都
  • 奇怪的 lxml 行为

    我手动创建 xml 然后尝试使用 xsd 方案验证它 验证一开始没有通过 但如果我将 xml 转换为字符串并返回 那么新的 xml 将通过验证 from lxml import etree xsd etree fromstring
  • 如何合并TypeScript中没有导出接口的命名空间

    我在 TypeScript 中使用队列 lib Bull 它的定义是 node modules types bull index d ts declare const Bull queueName string opts Bull Queu
  • 如何更改 Sublime Text 3 for MacOS 中的首选编码

    我想在 Yosemite 上的 Sublime Text 3 中将首选编码从 US ASCII 更改为 UTF 8 bash 中的首选编码设置为 UTF 8 因此当 python 在终端中运行时 import locale print lo
  • 隐藏运算符以避免 AST 中出现歧义

    我正在尝试伊莎贝尔官方教程中的列表示例 我更换了 with 和 with 具有与 Haskell 相同的语法 现在我收到有关 AST 中含糊之处的警告 我知道我可以隐藏功能hide const但这对于中缀表示法的运算符不起作用 如何在伊莎贝