如何解决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是正常形式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。