如何应用a=B-形式的Coq假设>;C=D到形式a=B的子目标

如何应用a=B-形式的Coq假设>;C=D到形式a=B的子目标,coq,Coq,我正在做一个证明,我现在被困在这里。我有一个假设如下: T1E : tree1 = EmptyTree -> isEmpty (leftChild (Node tree1 tree2)) = true 我还有一个假设: H2 : isEmpty (leftChild (Node tree1 tree2)) = true 我目前的次级目标是 tree1 = EmptyTree 看来我应该能做到 rewrite <- T1E 但当我尝试时,科克说 Error: Found no

我正在做一个证明,我现在被困在这里。我有一个假设如下:

T1E : tree1 = EmptyTree -> isEmpty (leftChild (Node tree1 tree2)) = true
我还有一个假设:

H2 : isEmpty (leftChild (Node tree1 tree2)) = true
我目前的次级目标是

tree1 = EmptyTree
看来我应该能做到

rewrite <- T1E
但当我尝试时,科克说

Error: Found no subterm matching "true" in the current goal.

如何使用T1E和H2证明我当前的子目标

您可能无法使用
T1E
证明您的目标。本质上,您试图证明
A
知道“如果
A
为真,那么
B
为真”


然而,从你的上下文来看,在我看来,你应该能够在
H2
中进行简化,并在
tree1
中获得矛盾或更多信息,这在任何情况下都会产生你想要的结果。

我肯定没有仔细考虑这个问题。出于某种原因,我倾向于认为coq中的p->Q是rew如果tree1=EmptyTree是另一个假设,那么写规则而不是暗示是可行的,但是如果它是一个目标,那么显然不起作用。
Error: Found no subterm matching "true" in the current goal.