簡體   English   中英

->在Coq中的傳遞性

[英]Transitivity of -> in Coq

我試圖證明Coq命題中->的可傳遞性:

Theorem implies_trans : forall P Q R : Prop,
  (P -> Q) -> (Q -> R) -> (P -> R).
Proof.

我想破壞所有主張,並以反思性來處理所有8種可能性 顯然不是那么簡單。 這是我嘗試過的:

Theorem implies_trans : forall P Q R : Prop,
  (P -> Q) -> (Q -> R) -> (P -> R).
Proof.
  intros P Q R H1 H2.
  destruct P. (** Hmmm ... this doesn't work *)
Admitted.

這就是我得到的:

1 subgoal
P, Q, R : Prop
H1 : P -> Q
H2 : Q -> R
______________________________________(1/1)
P -> R

隨后出現此錯誤:

Error: Not an inductive product.

非常感謝任何幫助,謝謝!

Coq的邏輯不是命題是對還是錯的經典邏輯。 相反,它基於類型理論,默認情況下具有直覺風格。 1在類型理論中,您應該認為P -> Q是從“ P型事物”到“ Q型事物”的函數。 2

證明P -> QP -> Q型目標的通常方式是使用introintros介紹P型假設,然后使用該假設以某種方式產生Q型元素。

例如,我們可以證明(P -> Q -> R) -> (Q -> P -> R) 在“蘊涵是一個函數”的解釋中,這可以理解為,如果我們有一個接受PQ並產生R的函數,那么我們可以定義一個接受QP並產生R的函數。 這是相同的功能,但參數已交換。

Definition ArgSwap_1 {P Q R: Prop}: (P -> Q -> R) -> (Q -> P -> R) :=
  fun f q p => f p q.

使用策略,我們可以看到各個元素的類型。

Lemma ArgSwap_2 {P Q R: Prop}: (P -> Q -> R) -> (Q -> P -> R).
Proof.
  intro f.
  intros q p.
  exact (f p q).
Qed.

intro ,我們看到f: P -> Q -> R ,所以f是我們的函數,它接受P s和Q s並產生R s。 intros (介紹了多個術語)之后,我們看到q: Qp: P 最后一行(在Qed.之前)僅將函數f應用於pq以在R得到某些值。

對於您的問題, intros介紹了命題PQR ,以及H1: P -> QH2: Q -> R 不過,我們仍然可以引入類型P另一項,因為目標是P -> R 您能看到如何使用H1H2以及P的元素來產生R的元素嗎? 提示:您將經歷Q 另外,請記住, H1H2是函數。


1您可以將排除中間定律作為公理添加,這將允許您進行所需的案例分析,但是我認為這沒有Coq的意義。

2如果您想知道, Prop的元素仍然是類型,並且行為與SetType元素非常相似。 唯一的區別是Prop是“命令性的”,它使命題可以量化所有命題。 例如,對於forall P: Prop, P -> PProp的元素,但是對於forall A: Type, A -> AType的下一個級別的元素( Type實際上是無限層次結構)。

暫無
暫無

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

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