代码之家  ›  专栏  ›  技术社区  ›  Siddharth Bhat

在Coq中处理多个整数库?

  •  1
  • Siddharth Bhat  · 技术社区  · 8 年前

    我经常收到表格中的证明条款:

    Lemma of_nat_gt_0: forall (n: nat),
    (Z.of_nat n >=? Int32.unsigned (Int32.repr 0)) = true.
    

    这个定理显然是正确的(自然曲线的Z总是正确的) >= 0 .同样, unsigned 一个 repr 一个 0 会让步的 0 .

    然而,他们只是 直截了当的恼人 ,因为我需要处理

    1. Int32 从 CompCert.Integers 单元
    2. Z.of_nat 转换。

    通常,我也有来自 Pos 和 N 定义。

    这些证明涉及多次手动重写,以变为某种标准形式,然后 omega 呼叫

    有没有办法将所有这些“规范化”为一个统一的表示?

    我知道这隐含着在不同的环之间转移(例如, Int32 是 Z/(2^32 - 1) ).如果有办法解决这个问题那就太好了,因为这些证据太长了。

    0 回复  |  直到 8 年前