将依赖类型应用于参数以断言 Coq 中的目标?

Applying a dependent type to an arguement to assert a goal in Coq?

如果我有如下一般设置,我如何证明我断言 (f a)?

A : Type
f : A -> Prop
a : A
...
============================
f a

具体来说,为什么我不能使用这些策略中的任何一个,这些错误是什么意思?

specialize (f a).
Error: Cannot change f, it is used in conclusion.

apply (f a).
Unable to unify "Prop" with "f a".

你不能特化 f 因为它用在结论中,也就是在目标中。 specalize (f a) 将您的假设 f 替换为其应用版本。 如果我们忘记了之后会让你 f : Prop 的目标。 但是,由于 f 出现在目标中,您不能更改其含义。

另外f a是一个命题,当然不是f a本身的证明! 它被命名为 f 并不意味着它不是谓词。