gpt4 book ai didi

coq - 战术: stuck in eqb_trans

转载 作者:行者123 更新时间:2023-12-03 06:02:26 27 4
gpt4 key购买 nike

尝试解决 eqb_trans 我陷入困境:

Theorem eqb_trans : forall n m p,
n =? m = true ->
m =? p = true ->
n =? p = true.

显然,我们应该使用eqb_true来解决它:

Theorem eqb_true : forall n m,
n =? m = true -> n = m.
--------------------------------------------
Proof.
intros n m p H1 H2. apply eqb_true in H1.
apply eqb_true with (n:=m)(m:=p) in H2.

此时我们有:

n, m, p : nat
H1 : n = m
H2 : m = p
============================
(n =? p) = true

现在我想在目标上使用 eqb_true :

apply eqb_true with (m:=p).

但是这里我们得到一个错误:

Unable to unify "?M1056 = p" with "(n =? p) = true".

为什么不起作用?如何修复?

最佳答案

当您将引理应用于目标时,引理的结论必须与目标而不是其前提相统一。该引理的结论采用 _ = _ 的形式,而您的目标是 (_ =? _) = true。这两者不能统一,从而导致您看到的错误。

要证明eqb_trans,需要eqb_true的逆,即

forall n m, n = m -> (n =? m) = true,

经过一些简化后,相当于

forall n, (n =? n) = true.

关于coq - 战术: stuck in eqb_trans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55763440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com