Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

2024-03-03

当我使用value为了找出返回自然数的函数的某个值,我总是以 0 的迭代后继函数的形式获得答案,即Suc(Suc( ... 0 ))有时可能很难阅读。 有没有办法直接输出Isabelle返回的数字?


这是我不久前想修复的问题,但显然我忘记了。卡西吉奈特的猜测是错误的;这确实是全面评估的结果。问题在于自然数是以这种笨拙的方式打印的。

您可以执行以下操作:

  1. 最简单的方法是将数字转换为整数,即代替value "foo x y z" (where foo x y z是类型的表达式nat你想评估)你写value "int (foo x y z)".

  2. 你可以加~~/src/HOL/Library/Code_Target_Numeral到您的进口。这使得 Isabelle 的代码生成器使用目标语言的任意精度整数(如果是value,即 ML 及其基于 GMP 的整数),而不是低效的后继表示法。作为副作用,这也以更好的方式打印自然数。

  3. 您可以将以下代码添加到您的理论中,这会改变value命令显示自然数:

Code:

lemma Suc_numeral_bit0: "Suc (numeral (Num.Bit0 n)) = numeral (Num.Bit1 n)"
  by (subst Suc_numeral) simp

lemma Suc_numeral_bit1: "Suc (numeral (Num.Bit1 n)) = numeral (Num.Bit0 (n + Num.One))"
  by (subst Suc_numeral) simp

lemmas [code_post] = 
  One_nat_def [symmetric] Suc_numeral_bit0 Suc_numeral_bit1 Num.Suc_1 Num.arith_simps

请注意,value命令只是诊断命令。它主要用于快速的合理性测试和代码生成设置的调试,并且让它工作有时可能很棘手。

默认情况下,value依赖于代码生成器,即 Isabelle 需要知道如何为表达式生成可执行代码,如果它不能做到这一点,value可能会失败。 (有时它也可以退回到一些其他策略,通过评估进行标准化或通过简化进行评估,但这些通常不会提供有用的输出)

我告诉你这些只是为了让你知道会发生什么value命令,不要给人留下这样的印象:这是人们一直使用的 Isabelle 的组成部分。

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

Isabelle 返回数字而不是 Suc(Suc( ... 0 )) 的相关文章

  • 什么样的类型定义在本地环境中是合法的?

    在伊莎贝尔的NEWS文件 我发现 命令 typedef 现在可以在本地理论上下文中工作 无需 引入对参数或假设的依赖 这不是 可以在 Isabelle Pure HOL 中实现 请注意 逻辑环境可能 包含本地 typedef 的多种解释 具
  • 如何在 Isabelle/jEdit 中启用“跟踪”

    I m a vim风扇 但仅emacs有这个 Isabelle HOL 环境 jEdit很棒 但我不能使用 using simp trace true like in emacs 如何启用 跟踪 jEdit 你确实可以使用simp trac
  • Isabelle/HOL 验证器核心

    Question Isabelle HOL验证器的核心算法是什么 我正在寻找方案元循环评估器级别的东西 澄清 我只对Verifier 而不是自动定理证明的策略 Context 我想从头开始实现一个简单的证明验证器 纯粹出于教育原因 而不是用
  • 使用单射函数的反值

    我试图证明这个引理 lemma assumes x inv f y and inj f and x undefined shows y range f using assms try 但 Nitpick 告诉我这个说法并不正确 Trying
  • 当证明已经完成但给出“无法完善任何待定目标”错误时,为什么我不能在 Isabelle 中明确说明我的情况?

    我正在阅读具体语义的第五章 我在处理这个玩具示例证明时遇到了一些错误 lemma shows ev Suc 0 我知道这超出了需要 因为by cases 神奇地解 决了所有问题并给出了完整的证明 但我想明确说明这些情况 我试过这个 lemm
  • 在《伊莎贝尔》中证明关于 THE 的直观陈述

    我想证明伊莎贝尔中类似的引理 lemma assumes y THE x P x shows P THE x P x 我想这个假设意味着THE x P x存在并且定义明确 所以这个引理也应该是正确的 lemma assumes y THE
  • 在 Isabelle 等中定义不同类型的不相交并集

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

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

    这个问题与我之前的SO问题有关类型类 我问这个问题是为了设置一个有关语言环境的未来问题 我不认为类型类适合我想要做的事情 但是类型类的工作方式让我了解了我想要从语言环境中得到什么 下面 当我使用大括号表示法时 0 0 它不代表普通的 HOL
  • 如何在 Isabelle 中定义偏函数?

    我尝试用以下方法定义偏函数partial function关键词 它不起作用 这是最能表达直觉的 partial function tailrec oddity nat gt nat where oddity Zero Zero oddit
  • 如何使用持久堆图像在 Isabelle/jEdit 中更快地加载理论?

    假设我有一个目录isabelle afp存储了很多理论的地方 该目录是一个库 我不打算更改其中的文件 我想加快 Isabelle jEdit 的启动时间 默认情况下 所有理论isabelle afp我当前的理论取决于重新处理 我怎样才能跳过
  • Isabelle函数定义实例分析

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

    我试图证明 Isabelle HOL 中自定义的交换律add功能 我设法证明了关联性 但我坚持这一点 的定义add fun add nat nat nat where add 0 n n add Suc m n Suc add m n 关联
  • 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返回的数字 这是我不久前想修复的问题 但显然我忘记了 卡西吉奈特的猜测
  • 伊莎贝尔的文件准备

    我想获得与相关的 LaTeX 代码这个理论 https github com rjraya Isabelle blob master curves Hales thy 以前的答案仅提供文档的链接 让我描述一下我做了什么 我去了目录Hales
  • 伊莎贝尔中的“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 我注意到伊莎贝尔
  • 法新社的“find_theorems”

    我怎样才能使用find theorems搜索整个正式证据档案馆 AFP 的机制 我已将存档下载到我的计算机上 并且可以从中导入理论 例如 如果我写imports Kleene Algebra Kleene Algebra Models那么该
  • 伊莎贝尔语中“case _ of _”是什么意思

    在读的时候这个关于商类型的答案 https stackoverflow com a 67237629 14656198 我偶然发现了这个结构 case of 经检查手册 https isabelle in tum de doc isar r
  • 添加后收集所有非未定义值

    我对伊莎贝尔有以下补充 function proj add real real bit real real bit real real bit where proj add x1 y1 l x2 y2 j add x1 y1 x2 y2 l

随机推荐

  • 获取 Android 设备的方向

    您可能会认为会有一个直接的解决方案 Android 文档指出 Android 2 2 API 级别 8 中已弃用方向传感器 我们建议不要使用来自方向传感器的原始数据 您将 getRotationMatrix 方法与 getOrientati
  • 从 Angular 2 组件中的 CDN 加载 css

    正如标题所说 我想在 Angular 2 组件中包含外部 css 我现在是这样做的 import Component OnInit from angular core Component selector app auth template
  • 将绘图保存在对象中

    In ggplot2 可以轻松地将图形保存到 R 对象中 p ggplot geom point does not display the graph p displays the graph 标准功能plot将图形生成为 void 函数并
  • Web API 在几次成功请求后突然返回 403 禁止

    我一直致力于与 ASP NET Web API 结合使用的离子应用程序 我正在使用该 API 进行所有数据传输 我遇到了一个问题 在几次成功的请求之后 API突然返回403禁止 看起来 API 有一个限制或者其他什么 因为当我在很短的时间内
  • Python + Sqlite 的字符串相似度(Levenshtein 距离/编辑距离)

    Python Sqlite 中是否有可用的字符串相似性度量 例如使用sqlite3模块 用例示例 import sqlite3 conn sqlite3 connect memory c conn cursor c execute CREA
  • 占位符在 select2 中不起作用

    我在工作Select2选择框 Problem 占位符未显示在select2 它始终显示在中选择的第一个选项select2 它会自动选择我想显示占位符而不是它的第一个选项 My Code Script
  • Zend URL 参数 - 隐藏键和显示值

    使用 Zend 的默认路由 URL 如下所示 www domain com controller action key1 value1 key2 value2 key3 value3 每个键和值都作为一对存储在返回的数组中getParams
  • ReactJS-下载pdf文件“失败-无文件”

    我编写了一个 React 组件来使用文件的锚标记下载 pdf 文件 我收到错误Failed No file import React from react const Links gt div a href https github com
  • vscode - 将一个分支合并到另一个分支

    是否可以使用 vscode 界面而不是终端将一个分支合并到另一个分支 或者是否有任何扩展可以实现这一点 使用 vscode v1 13 0提前致谢 我创建了一个扩展 其名称如下 git合并 https marketplace visuals
  • 在 OpenShift(红帽云)上每 5 分钟运行一次 CRON 作业

    我试图每 5 分钟运行一次这个脚本 在 OpenShift 上运行 CRON 作业的唯一方法似乎是使用他们的 CRON 插件 而且CRON插件只允许每分钟 每小时和每天的脚本 通过将脚本放在相应的文件夹中 我尝试每 5 分钟运行一次此脚本
  • UINT_MAX 是否将所有位设置为 1?

    这个问题以前被问过 但我仍然很困惑 我知道 unsigned int a 1 将会UINT MAX 但这并不是因为所有 1 位都已设置 C11 说 如果新类型是无符号的 则通过重复添加或来转换该值 比新类型可以表示的最大值减一 直到该值在新
  • 向每个处理程序添加响应标头,而不重复同一行

    我正在编写一个小型网站 对于每个页面 我都将服务器名称添加到其标题中 func httpSignUp rw http ResponseWriter req http Request rw Header Set Server SERVER N
  • 如何使用自定义形状的 fab 按钮制作 Bottombar?

    我想制作一个带有附加 fab 按钮的底栏 如下图所示 如果有人知道那种带有 fab 底部的不同形状按钮库 请向我推荐 下面给出的图像用这样的 fab 制作了一个底栏 这只是一个可以改进代码的想法 您可以更改形状FloatingActionB
  • 如何有条件地从 .NET 集合中删除项目

    我正在尝试在 NET 中编写一个扩展方法 它将对通用集合进行操作 并从集合中删除与给定条件匹配的所有项目 这是我的第一次尝试 public static void RemoveWhere
  • 如何用 C 语言为 PIC24 编写与硬件无关的函数

    我正在编写一些实现各种功能的代码 例如 PID 控制器 信号发生器等 我的硬件提供各种输入和输出 刚才我有大量 SWITCH 语句来确定计算的源和目的地 例如 对于 PID 控制器 每 100ms 有一个开关命令 决定将哪个输入传递给 pi
  • 如何通过 PHP 发布到 Google Plus? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否已经有一个浮动的非官方 PHP 库或类 我可以使用它来发布到用户的 Google Plus
  • 如果不存在则删除表空间

    我已经编写了 pl sql 脚本 可以工作 但看起来不太好 DECLARE v exists NUMBER BEGIN SELECT count INTO v exists FROM dba tablespaces WHERE tables
  • 将结果集从 SQL 数组转换为字符串数组

    我正在查询information schema columns我的 PostgreSQL 数据库中的表 使用表名 结果集查找所有列名 类型以及是否可为空 主键 id 除外 这是正在使用的查询 SELECT column name is nu
  • C# Lambda 表达式:为什么应该使用它们?

    我很快读完了微软 Lambda 表达式 http msdn microsoft com en us library bb397687 aspx文档 不过 这种例子帮助我更好地理解 delegate int del int i del myD
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

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