[英]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 nat
, d : nat
, x : 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.