簡體   English   中英

如何證明 Coq 中邏輯的簡化(A 和 B 隱含 A)

[英]How to prove simplification of logic(A and B implies A) in Coq

我想證明

Lemma simplification (A B: Prop) : A /\ B -> A.

我怎么帶A/\\B? 那么我如何從 A /\\ B 中取出 A?

第一個答案:你要證明的定理已經存在,它叫做proj1

您可以通過鍵入以下命令來驗證我所說的內容。

Check proj1.

您只需鍵入即可使用此定理。

apply proj1.
Qed.

與語句的另一側有一個類似的定理,名為proj2 您只需鍵入以下內容即可找到這些定理:

Search hyp:(_ /\ _).

第二個答案:在您輸入作為示例的行后,您進入所謂的proof mode 系統打印出你需要證明給你看的文字,並發送通常稱為戰術的證明命令。 一些教程中描述了基本策略。 例如,我可以推薦一個我寫的教程 許多簡單的戰術只適用於自然演繹的簡單規則。 例如,當你想對 and 語句進行推理時,你可能想做兩件事。

  • 要么你想證明一個and語句
  • 或者你想使用and語句

在當前情況下,您有兩個邏輯連接詞:您要證明一個蘊涵,並且該蘊涵的左側有一個 and 語句,因此稍后您將要使用一個 and 語句。

為了證明一個含義,訣竅是假設左側。 這是通過以下策略完成的:

intros factAB.

之后,系統顯示以下目標。

 1 subgoal

  A, B : Prop
  factAB : A /\ B
  ============================
  A

子目標有兩部分,頂部包含假設存在的對象和假設成立的邏輯事實。 在這種情況下,假設A /\\ B成立,並且這個事實被命名為factAB (我們選擇了那個名字)。

現在要使用 factAB,您可以鍵入:

destruct factAB as [factA factB].

在括號之間,我們提供了兩個名稱,因為我們知道一個 and 語句包含兩個更基本的事實。

運行 destruct 命令后,您有一個名為factA的假設,它表示A成立,您必須證明A 你可以只是說,完成證明factA是證明,通過鍵入exact factA ,或者說,證據是假設中,通過鍵入assumption

暫無
暫無

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

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