簡體   English   中英

我怎么說服coq(A / \\ B)/ \\ C == A / \\ B / \\ C?

[英]How do I convince coq that (A/\B)/\C == A /\ B /\ C?

在我的證明中,我偶然發現了我的假設中存在A /\\ B /\\ C問題,我需要證明(A /\\ B) /\\ C 這些在邏輯上完全相同,但是coq不能用assumption.解決這些問題assumption.

我一直在通過應用公理來解決這些問題,但是有更優雅(和正確)的方法來處理這個問題嗎?

所以我的方式是通過定義我的引理,

Lemma conj_assoc : forall A B C, A /\ (B /\ C) <-> (A /\ B) /\ C.

這是另一個意味着另一個。

intros. split. 然后將這分為兩個目標。

  1. A /\\ (B /\\ C) -> (A /\\ B) /\\ C
  2. (A /\\ B) /\\ C -> A /\\ (B /\\ C)

證明這些中的每一個大致相同。 對於(1),

  • intro Habc. 從左手大小得到假設。
  • destruct Habc as [Ha Hbc]. destruct Hbc as [Hb Hc]. 得到個人的假設。
  • auto使用這些假設。

我留給你研究(2),但它非常相似。

然后是Qed.

如果您有A /\\ B /\\ C作為假設,並且您的目標是(A /\\ B) /\\ C ,則可以使用戰術tauto 這種策略解決了命題演算中的所有重言式。 還有一個策略firstorder可以firstorder解決一些公式。

如果你有A /\\ B /\\ C並且想要將(A /\\ B) /\\ C作為參數傳遞給引理,那么你需要多做一些工作。 一種方法是將(A /\\ B) /\\ C為中間目標並證明:

assert ((A /\ B) /\ C). tauto.

如果ABC是大表達式,你可以使用復合策略匹配假設H : A /\\ B /\\ C並將tauto策略應用於它。 這是一種嚴厲的方法,在這種情況下過度殺傷,但在更復雜的情況下非常有用,在這種情況下,您希望自動化具有許多類似情況的證明。

match type of H with ?x /\ ?y /\ ?z =>
  assert (x /\ (y /\ z)); [tauto | clear H]
end.

有一種更簡單的方法,即應用執行轉換的已知引理。

apply and_assoc in H.

您可以通過瀏覽庫文檔找到該引理。 你也可以搜索它。 這不是最容易搜索的因素,因為它是等價的,搜索工具適用於影響和平等。 您可以使用SearchPattern (_ /\\ _ /\\ _). 尋找forall x1 … xn, ?A /\\ ?B /\\ ?C形式的forall x1 … xn, ?A /\\ ?B /\\ ?C (其中?A?B?C可以是任何表達式)。 您可以使用SearchRewrite (_ /\\ _ /\\ _)來查找forall x1 … xn, (?A /\\ ?B /\\ ?C) = ?D形式的forall x1 … xn, (?A /\\ ?B /\\ ?C) = ?D 不幸的是,這並沒有找到我們所追求的東西,這是forall x1 … xn, (?A /\\ ?B /\\ ?C) <-> ?D形式的引理forall x1 … xn, (?A /\\ ?B /\\ ?C) <-> ?D 工作是什么

Coq < SearchPattern (_ <-> (_ /\ _ /\ _))
and_assoc: forall A B C : Prop, (A /\ B) /\ C <-> A /\ B /\ C

作為一般提示,如果你有類似的東西,你懷疑是顯而易見的,請檢查標准庫。 方法如下: Locate "/\\". 產生一個響應,為我們解決Notation

Notation            Scope     
"A /\ B" := and A B  : type_scope
                      (default interpretation)

現在我們可以發出命令SearchAbout and. 看看范圍是什么,並發現and_assoc見證了你感興趣的含義。事實上,你可以從intuition中得到啟示: intuition策略可以利用這個含義本身。

Lemma conj_example : forall A B C D,
  (A /\ B) /\ C -> (A /\ (B /\ C) -> D) -> D.
Proof. intuition. Qed.

暫無
暫無

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

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