从 Lean 中的正整数恢复 nat

Recovering nat from a positive integer in Lean

给定 (a : Z)(a >= 0),我希望 (n : N) 满足 n = a。这当然有点麻烦,因为n = a是异构相等。

我发现 nat_abs 可以做类似的事情,除了它还处理我有负整数的情况,我知道我没有。

在精益中如何处理这种情况?

n = a 不是异构等式,因为您(希望)无法证明 N = Z。你能希望的最好的是 int.of_nat n = a,你应该能够从 a >= 0 证明 int.of_nat (nat_abs a) = a.

请注意,您可以写入 a = n,它会键入检查,因为 Lean 会将 n 强制转换为 int.of_nat n。这不是异构相等,而是 Z 中的正常相等。