簡體   English   中英

Coq:證明如果 (A, B) = (C, D) 那么 A = C /\\ B = D

[英]Coq: prove that if (A, B) = (C, D) then A = C /\ B = D

正如標題,我找不到足夠的工具來解決這個微不足道的事情:

p : (A, B) = (C, D)
------------
A = C /\ B = D

我怎樣才能證明呢?

證明它的一種更原始​​的方法是injection p

看看標准庫中如何證明pair_equal_spec本身也很有趣,使用假設(a1, b1) = (a2, b2)重寫fst (a1, b1)snd (a1, b1)

Lemma pair_equal_spec :
  forall (A B : Type) (a1 a2 : A) (b1 b2 : B),
    (a1, b1) = (a2, b2) <-> a1 = a2 /\ b1 = b2.
Proof with auto.
  split; intros.
  - split.
    + replace a1 with (fst (a1, b1)); replace a2 with (fst (a2, b2))...
      rewrite H...
    + replace b1 with (snd (a1, b1)); replace b2 with (snd (a2, b2))...
      rewrite H...
  - destruct H; subst...
Qed.

剛拿到。 它是pair_equal_spec

Proof.
  intros.
  apply pair_equal_spec.
  assumption.
Qed.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM