From the Coq reference manual (8.5p1), my impression is that revert
is the inverse of intro
, but so is generalize
to a certain extent. For example, revert
and generalize dependent
below seem to be the same.
Goal forall x y: nat, 1 + x = 2 + y -> 1 + x + 5 = 7 + y.
intros x y. revert x y.
intros x y. generalize dependent y. generalize dependent x.
Is it just that generalize
is more powerful than revert
?
Also, the documentation is a bit circular in explaining things about generalize
:
This tactic applies to any goal. It generalizes the conclusion with respect to some term.
Is generalize
similar to the abstraction operator in lambda calculus?