Coq 添加不在当前假设中的假设

Coq 添加不在当前假设中的假设,coq,Coq,我有证据,在我的假设中,我有: ... l0 : list (list (ATrs.rule (Sig a)) * boolean * option (list positiveInteger) * option cpf.dpProof) H: forall x : list (ATrs.rule (Sig a)) * bool * option (list positiveInteger) * option cp

我有证据,在我的假设中,我有:

...
l0 : list
         (list (ATrs.rule (Sig a)) * boolean * option (list positiveInteger) *
          option cpf.dpProof)
H: forall
         x : list (ATrs.rule (Sig a)) * bool * option (list positiveInteger) *
             option cpf.dpProof,
       In x l0 ->
       (let (p, o) := x in
        let (p0, _) := p in
        let (dps, b) := p0 in
        if b
        then
         match o with
         | Some pi => bool_of_result (dpProof n R dps pi)
         | None => false
         end
        else co_scc (dpg_unif_N 100 R D) dps) = true
 ci : list (ATrs.rule (Sig a))
 Hin : In ci l1
===========================
....
我被打破假设的技术卡住了
H
。如果我有参数
x:list(ATrs.rule(siga))*bool*选项(list positiveInteger)*
选项cpf.dpProof
和假设
Hx:x l0
然后我可以使用策略:
ded(Hx Hx)
获得
(让(p…)
H
部分

因此,在这种情况下,我不能使用
ded(H ci Hin)
,因为
ci
的类型与
H
中的
x
不同

我想知道如何添加我想要的假设(
x
Hx


非常感谢您的帮助。

除非您的上下文包含有关
l0
的更多信息,否则您将永远无法从
H
中推断出任何内容,因为它的一个参数在x l0中为某些
x
键入了

如果
l0
在您的上下文和目标中完全不受约束,那么它实际上可以是任何适当类型的任意列表,因此您不可能在x l0
中伪造
类型的东西,因此不可能使用
H

也许你在某个地方有矛盾,或者用另一种方式来攻击这个证据