Coq 联合收割机上的验证过程繁忙

Coq 联合收割机上的验证过程繁忙,coq,proof-general,Coq,Proof General,我在做软件基础练习和组合分割练习,当我试图证明一个辅助引理时,我遇到了麻烦 当在断言中应用自反性时,证明过程就挂在那里,尽管等式是(x,y)=(x,y),这显然是正确的 下面是实现 Theorem combine_split : forall X Y (l : list (X * Y)) l1 l2, split l = (l1, l2) -> combine l1 l2 = l. Proof. intros X Y. intros l. induction l as

我在做软件基础练习和组合分割练习,当我试图证明一个辅助引理时,我遇到了麻烦

当在
断言中应用
自反性
时,证明过程就挂在那里,尽管等式是
(x,y)=(x,y)
,这显然是正确的

下面是实现

Theorem combine_split : forall X Y (l : list (X * Y)) l1 l2,
  split l = (l1, l2) ->
  combine l1 l2 = l.
Proof.
  intros X Y.
  intros l.
  induction l as [| n l' IHl'].
  - simpl. intros l1 l2 H. injection H as H1 H2. rewrite <- H1, <-H2. reflexivity.
  - destruct n as [n1 n2]. simpl. destruct (split l'). 
    intros l1 l2 H. injection H as H1 H2.
    rewrite <- H1, <- H2. simpl. 
    assert ( Hc : combine x y = l'). { apply IHl'. reflexivity.} 
    apply Hc.
Qed.
定理组合\u分割:对于所有xy(l:list(X*Y))l1l2,
拆分l=(l1,l2)->
组合l1 l2=l。
证明。
简介xy。
简介l。
归纳法l为[|n l'IHl']。

-简单。简介l1 l2 H。注射H为H1 H2。rewrite在句子拆分方面,在一般情况下看起来像一个解析错误。它似乎在根据突出显示将
自反性。}
发送到Coq,而您希望将其拆分为
自反性。
然后将
}
作为单独的命令。在任何情况下,
coqc
都不会根据需要对此进行调整,将
}
解释为单个(未知)标记。(我真的很困惑,如果它发送的是
自反性。}
你就不会得到这个词法错误。)


您可以通过添加空格来解决此问题:
reflectivity.}

谢谢,问题解决了。我确实是在使用证据。