[英]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 語句。
為了證明一個含義,訣竅是假設左側。 這是通過以下策略完成的:
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.