I would like to understand how keyword proof
works in an Isar proof. I consulted the Isabelle/Isar reference, section 6.3.2 and Programming and Proving in Isabelle/HOL, section 4.1.
To summarise what I have learned, there are three ways of beginning a proof by the keyword proof
:
without any argument Isabelle finds a suitable introduction rule to the lemma being proved and applies it in a forward mode
if a hyphen:
-
is supplied as an argument, thenproof
does nothing to the goal, avoiding any automatic rule being applied when it would lead to a blind alleyif a specific rule, like
rule name
,unfold true_def
,clarify
orinduct n
is supplied, then it is applied to the goal in a forward mode
Am I right that the third case is like using apply
with the argument supplied?
How is the automatic introduction rule in the first case picked by the system?
And, does the above fully describe the usage of proof
?