我有证据,在我的假设中我有:
...
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 (Sig a)) * bool * option (list positiveInteger) *
option cpf.dpProof
和假设Hx: In x l0
,那么我可以使用策略:ded (H x Hx)
来获取(let (p, ...)
的{{1}}部分。
因此,在这种情况下,我无法使用H
,因为ded (H ci Hin)
的类型与ci
中的x
不同。
我想知道如何添加我想要的假设(H
和x
)?
非常感谢你的帮助。
答案 0 :(得分:1)
好吧,除非您的上下文包含有关l0
的更多信息,否则您永远无法从H
推断出任何内容,因为其中一个参数的某些In x l0
类型x
1}}。
如果l0
在您的上下文和目标中完全不受约束,它实际上可以是任意类型的任意列表,因此您无法伪造In x l0
类型的内容因此无法使用H
。
也许你在某个方面存在矛盾,或者是另一种攻击这种证据的方法。