1

If I have a general setup like the following, how can I prove I assert (f a)?

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

Specifically, why can't I use any of these tactics, and what do the errors mean?

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

apply (f a).
Unable to unify "Prop" with "f a".
  • 1
    The context and goal as given are unsolvable. `f a` is the *statement* to be proven. It's not a *proof* of itself! E.g. the sentence "Today, it rained bananas." is a grammatically correct sentence, but it's not actually correct. – HTNW May 02 '20 at 16:21

1 Answers1

3

You cannot specialise f because it is used in the conclusion, that is in the goal. specalize (f a) replaces your hypothesis f by its applied version. If we forget about the goal that would get you f : Prop afterwards. However since f appears in the goal you are not allowed to change its meaning.

Also f a is a proposition, and certainly not a proof of f a itself! The fact that it is named f doesn't mean it's not a predicate.

Théo Winterhalter
  • 4,908
  • 2
  • 18
  • 34