从 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
中的正常相等。
给定 (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
中的正常相等。