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
也许你在某个地方有矛盾,或者用另一种方式来攻击这个证据