Coq错误:无法用“ is_true0 <a-b-3”统一“ true”

问题描述

不知道我在做什么错,但是我认为reflexivity应该在下面起作用,但是不能。

a,b : nat
H : (1 <=? a - b - 3) = true
______________________________________(1/7)
is_true (0 < a - b - 3)

我也尝试apply leb_complete in H.导致:

a,b : nat
H : (1 <= a - b - 3)%coq_nat
______________________________________(1/7)
is_true (0 < a - b - 3)

但是在两种情况下,Coq都会给我一个错误,提示Unable to unify "true" with "is_true (0 < a - b - 3)"

它不应该那么复杂,对吧?我在这里想念东西吗?

解决方法

首先,“不应该复杂”是一个错误的问题。

var sum = 0 sum = Number('97' + '3') //result 937 是一种从不使用假设的策略,它试图以一种非常特定的方式证明目标。对于“简单”的纯数字目标p,可以使用lia。

它只能证明目标可转换为形状var sum = 0 sum = Number('97') + '3' //result "973" ,其中R是自反关系(如相等),而a1和a2是可转换的。如果将两个术语简化为正常形式,它们可以转换为“相同”结果(对eta展开进行一些复杂处理,则可以转换)。

例如,反射性可以证明2 + 2 + 0 = 4或0 + n = n。但这不能证明n + 0 = n(可以由lia证明),因为n + 0是正常形式。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...