Coq 对变量应用减缩 我们假设我是一个证据,我有这样的假设: a : nat b : nat c : nat H : somePred a b

Coq 对变量应用减缩 我们假设我是一个证据,我有这样的假设: a : nat b : nat c : nat H : somePred a b,coq,proof,predicates,Coq,Proof,Predicates,somePred的定义是: Definition somePred (p:nat) (q:nat) : Prop := forall (x : nat), P(x, p, q). 如何将H应用于c并获得p(c,a,b)?答案是: specialize H with c. 如何获取变量H:somePred a b?是不是应该是H:Prop?@AaditMShah,我试图证明类似于forall(a:nat)(b:nat)(c:nat)(somePred a b)->的东西,所以我用了简介a b

somePred的定义是:

Definition somePred (p:nat) (q:nat) : Prop := forall (x : nat), P(x, p, q).
如何将
H
应用于
c
并获得
p(c,a,b)

答案是:

specialize H with c.

如何获取变量
H:somePred a b
?是不是应该是
H:Prop
?@AaditMShah,我试图证明类似于forall(a:nat)(b:nat)(c:nat)(somePred a b)->的东西,所以我用了简介a b c H。你不会得到
P(c,b,c)
而不是
P(c,a,b)
somePred
中的
p
的定义根本不能使用。@Vinz抱歉,这是一个拼写错误-现在已修复。您可能需要
在H中展开somePred。
。或者,如果您需要保持
H
的原样,您可以使用
assert(foo:=hc)。
assert(foo:P(c,a,b))通过apply H断言一条新语句。