簡體   English   中英

如何在Coq的假設中實例化forall變量?

[英]How to instantiate a variable of forall in a hypothesis in Coq?

我有兩個假設

IHl: forall (lr : list nat) (d x : nat), d = x \/ In x l' -> (something else)
Head : d = x

我想在Head apply IHl ,因為它滿足apply IHl d = x \\/ In xl 我試過用一個簡單提示失敗的戰術apply with Error: Unable to unify

我應該使用哪種策略來實例化假設中的變量?

你的假設IHl有4個參數: lr : list natd : natx : nat ,和_ : d = x \\/ In x l'

你的假設Head : d = x沒有正確的類型作為第四個參數傳遞。 你需要將它從平等證明轉變為分離證明。 幸運的是,您可以使用:

or_introl
     : forall A B : Prop, A -> A \/ B

這是的兩個構造中的一個or類型。

現在您可能必須明確傳遞B Prop,除非可以通過統一在上下文中找出它。

以下是應該工作的事情:

(* To keep IHl but use its result, given lr : list nat *)
pose proof (IHl lr _ _ (or_introl Head)).

(* To transform IHl into its result, given lr : list nat *)
specialize (IHl lr _ _ (or_introl Head)).

可能有一個你可以使用的apply ,但是根據你隱含/推斷的內容,我很難告訴你它是哪一個。

暫無
暫無

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

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