这个问题是在这样的情况下提出的:在使用Isabelle时,考虑的是正式软件开发,而不是纯粹的数学理论化(以及来自独立开发人员的情况)。

充其量,根据Isabelle理论生成的SML程序似乎使用的是SML的IntInf.int ,而不是本机整数类型Int.int 即使使用Code_Target_IntCode_Binary_NatCode_Target_Nat 对这些理论来源的调查似乎证实了它的全部能力。 出于多种原因,可能需要本机平台整数,包括效率,以及将SML命令性程序选择性地转换为命令性语言子集(例如C或Ada)的情况,当该理论依赖于Imperative_HOL理论时,这是很重要的。 Isabelle发行版随附的codegen.pdf文档没有帮助,只是建议了以下第一个选项。

选项可能是:

  • 不使用Isabelle的intnat并从头开始重新创建一个新的数字类型,然后使用code_printing命令(及其type_constructorconstant )为其提供本机平台表示和操作(意味着在理论上以某种方式包含范围限制) ):必须是乏味的,尽管由于正式的环境,我希望不太容易出错。 请注意,使用Isabelle自己的intnat似乎确实可行…………这会使代码生成失败,并且无法告诉code_printing命令中缺少哪些常量。
  • 如果要直接编译SML程序(例如,使用MLTon),则用替换的IntInf结构调整SML环境:可能不安全或不可行,并且仍然需要在理论上嵌入范围限制,因此先前的选择可能终于比这个更好。
  • 触摸生成的程序以将IntInf更改为Int :简单,但是安全吗? (至少, IntInf实现与Int相同的签名,因此可能是安全的)。 如上所述,需要以某种方式指定理论上的界限,这样就可以了。
  • 深入研究Isabelle内部:肯定是不合理的,甚至比第二种选择更糟糕。
  • 存在Word理论,但是根据一些阅读,它似乎不适合该目的。

它们是否在此处未列出其他已知选项? 他们对所列选项有意见吗?

如果没有现成的解决方案(我觉得当时还没有),那么最能暗示哪些提示或线索? (例如,文档链接,概念提及)。

更新

仅当存在单个整数类型时,列表的第2点和第3点才可以(如果确实是这样)。 如果程序使用的不止一个,则不适用。

===============>>#1 票数:1 已采纳

从Isabelle int直接生成本机单词是不明智的,因为您的形式化将不会考虑实际存在的溢出。

看起来AFP条目Native_Word您的要求,但是: http : Native_Word

  ask by Hibou57 translate from so

未解决问题?本站智能推荐:

1回复

Isabelle中的整数幂

这是我在此邮件列表帖子之后对整数指数的幂的定义: 有没有更好的方法来定义它? 伊莎贝尔(Isabelle)中是否已有一个已经包含该理论的理论,以便我可以重用其结果? 上下文 我正在处理复杂的指数,例如考虑以下定理: 在证明了这一点之后,我意识到我不仅
1回复

Isabelle / HOL中的int理论麻烦

我正在研究一个证明,我可以将其简化为“ of_int i = 0 ==> i = 0”。 这似乎是规则“ of_int_eq_0_iff”的简单应用,但是我无法成功应用此规则。 在进一步探测中,我发现我无法证明以下引理 无论如何。 也就是说,除非我在ring_char_0上下
1回复

在Isabelle / jEdit中处理理论而不保存它

在Isabelle / jEdit中,有时我只想用一次性理论测试一些东西,而不必将其保存到磁盘中。 但是,当我创建一个新文件时(即使使用模式设置为isabelle的新in模式命令),也要等到我保存缓冲区(使用适当的文件名)后,缓冲区才会被处理。 有没有办法保存文件? 似乎这应该可行,因
3回复

使用Isabelle简化器重写非等式等价关系

我想使用简化器来替换不等于的子项。 我将通过一个例子来说明这个问题,而不是我的问题的通用定义: 假设我有一个简单的编程语言和一个Hoare逻辑。 假设我们有if,while和序列操作。 同时,我们有denotation这给程序的外延和hoare P c Q 。 以下是Isabell
1回复

Isabelle / HOL中的灵活/模糊规则应用程序

假设我有以下谓词P和规则R : 我现在想将规则应用于R以证明P 8 4 ,但是直接规则应用当然会失败: 相反,我必须在使用规则之前手动实例化等式: 以下示例更好一些。 对于带有2个参数的谓词,它只需要一个专用引理,并且需要手动指定顶级谓词名称: 我的问题:当参数
1回复

使用Isabelle / Hol中的现有定义

我是Isabelle / Hol的新用户,对于使用Isabelle中的现有定义有些困惑。 我必须在模型中定义“完整晶格”结构和“完整偏序”(CPO)结构。 我发现这些定义在HOLCF Porder.Thy和Lattice.thy中已经作为类存在。 因此,如果我想在模型中包括这些定义,应该如
2回复

使用“仅当且仅当”规则来证明“如果”陈述(在Isabelle中)

我试图使用apply方法在Isabelle中使用一组有限的规则来证明引理。 这套规则包含disj_not1 ,它是(P --> Q) = (\\<not> P \\/ Q) 。 我有子目标(P --> Q) ==> (\\<not> P \\/
1回复

Isabelle中的术语平等

Isabelle已经定义了一些术语平等关系吗? 定义最广泛的术语是什么? 为了清楚起见,我正在寻找一种关系a〜b,如果a 的 b看起来与写下的完全相同,则返回a True:a不需要知道a和b的属性来评估a〜b 。
1回复

Isabelle中的条件定义

假设您要在Isabelle中正式定义以下定义: 在这里我不想对任何选项给予任何偏爱 。 实际上,我需要证明的下一个属性是: 加法为任何输入分配至少一个值 添加定义明确 在Isabelle中应使用什么来建模此定义? 也许是部分功能? 你可以看到方程(17
2回复

我有Isabelle / HOL理论,我该如何处理它的应用?

我试图理解Isabelle / HOL理论的使用。 我写了并保存了一个理论文件: 现在我想得到一些关于这个理论的反馈 - 它是否被Isabelle接受,以某种方式编译它 - 我怎么能这样做? 在此之后 - 我想使用这个理论 - 例如写一些引理并为此调用交互式证明会话。 我怎样才能做