coq - 在 Coq 中处理多个整数库?
问题描述
我经常得到以下形式的证明条款:
Lemma of_nat_gt_0: forall (n: nat),
(Z.of_nat n >=? Int32.unsigned (Int32.repr 0)) = true.
该定理显然是正确的(自然的 Z 将始终为>= 0
。同样,unsigned
arepr
的 a0
将屈服0
。
但是,它们很烦人,因为我需要处理
Int32
从CompCert.Integers
模块Z.of_nat
转换。
通常,我也有术语Pos
和N
定义。
这些证明涉及多次手动重写以适应某种标准形式,然后是omega
调用。
有没有办法将所有这些“规范化”为一个统一的表示?
我知道这隐含地涉及在不同环之间转移(例如Int32
is Z/(2^32 - 1)
)。如果有某种方法可以解决这个问题,那就太好了,因为这些证明会变得非常长。
解决方案
推荐阅读
- python - 用均匀间隔的时间戳替换 x-ticks
- python - Pandas 将字符串系列转换为字符串列表系列(大小为 1)以进行编码
- r - 使用 plotROC 绘制多条 roc 曲线(相同颜色)时设置线 alpha
- reactjs - TypeError: this.setState 不是函数,在 Redux Actions 文件中
- codeigniter - Codeigniter:使用查询字符串的分页无法正常工作
- css - 如何从导航菜单的底部边框到横幅图像的末尾水平和垂直居中文本框?
- ruby-on-rails - 什么是每次请求都调用 API 的替代方法
- go - 在自定义范围内生成随机数
- groovy - Jmeter 如果控制器不使用 Groovy 执行
- node.js - 在 mac 中运行(npm install -g @angular/cli)时出错