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.}代码>谢谢,问题解决了。我确实是在使用证据。