这个问题出现在Isabelle与正式软件开发一起使用的背景下,而不是纯粹的数学理论(以及独立的开发人员的上下文)。
似乎充其量,从Isabelle理论生成的SML程序使用SML的IntInf.int
,而不是本地整数类型,即Int.int
;即使使用Code_Target_Int
,Code_Binary_Nat
或Code_Target_Nat
也是如此。对这些理论来源的调查似乎证实了它能够做到的一切。原始平台整数可能由于多种原因而需要,包括效率和SML命令式程序可选地转换为命令式语言子集(例如C或Ada)的情况,当理论依赖于{{1}时,这是相关的。理论。 Isabelle发行版附带的Imperative_HOL
文档对此没有帮助,除了建议下面的第一个选项。
选项可能是:
codegen.pdf
和int
并从头开始重新创建新的数字类型,然后使用nat
命令(code_printing
和type_constructor
})给它原生平台的表示和操作(意味着在理论中以某种方式包含范围限制):由于正式的环境,我希望不可能出现容易出错的错误。请注意,对于Isabelle自己的constant
和int
来说这似乎是可行的......这会使代码生成失败,并且没有任何内容告诉nat
命令中缺少哪些常量。code_printing
结构调整SML环境:可能不安全或不可行,并且仍需要将范围限制嵌入到理论,所以以前的选择可能最终比这个更好。IntInf
更改为IntInf
:简单,但是安全吗? (至少,Int
实现与IntInf
相同的签名,因此可能是安全的)。如上所述,需要以某种方式指定理论中的界限,这是可以的。Int
理论,但根据一些读物,它似乎不适合这个目的。这些未列出的其他已知选项吗?他们是否对列出的选项发表评论?
如果没有现成的解决方案(我觉得当时没有),那么哪些提示或曲目最为人所知? (例如,文件链接,概念提及)。
列表的第2点和第3点,只有存在单个整数类型时才可以(如果确实存在)。如果程序使用的不止一个,则不适用。
答案 0 :(得分:1)
直接从Isabelle int
生成本地单词会不合理,因为您的形式化不会考虑现实中存在的溢出。
看起来AFP条目Native_Word
可以满足您的需求,但是:
http://afp.sourceforge.net/entries/Native_Word.shtml