我想证明Z型值小于Int.max_unsigned。
引理测试:10%Z< Int.max_unsigned。 证明。 ?? 如何证明上述测试引理?
答案 0 :(得分:5)
CompCert的Int.max_unsigned
是根据许多其他概念定义的,例如Int.modulus
,Int.wordsize
和two_power_nat
函数,用于计算n
的一些unfold Int.max_unsigned.
(* 10 < Int.modulus - 1 *)
unfold Int.modulus.
(* 10 < two_power_nat Int.wordsize - 1 *)
unfold Int.wordsize.
(* 10 < two_power_nat Wordsize_32.wordsize - 1 *)
通过逐个展开每个定义并观察发生的事情来理解事物的组织方式是有益的:
compute
但这很无聊。一个更简单的证据就是使用Int.max_unsigned
策略来评估Lemma test: 10%Z < Int.max_unsigned.
Proof.
compute.
(* The goal is now simply [Lt = Lt]. *)
auto.
Qed.
以及与10的比较:
import json
data = {}
with open('thefile.txt') as fobj:
for raw_line in fobj:
line = raw_line.strip()
if line and not line.startswith('#'):
try:
key, values = line.split('=', 1)
except ValueError:
print('skipping invalid line:')
print(line)
try:
data[key.strip()] = json.loads(values)
except json.JSONDecodeError
print('skipping invalid line (no JSON):')
print(line)
答案 1 :(得分:0)
这些简单的定理可以通过auto
策略来证明。例如:
Require Import ZArith.
Open Scope Z_scope.
Lemma test: 10 < 111.
Proof.
auto with zarith.
Qed.