这个问题是在这样的情况下提出的:在使用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

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