I profit of this occassion to promote this webpage explaining very nicely the inner workings of rule, erule, drule and frule.
However, I noticed that method rule(k) seems to not work in current Isabelle (in contrast to for instance drule(k). Take the example:
lemma "A ⟹ A ∨ B" apply (rule(1) disjI1)
The manual (Isar-ref) for Isabelle 2020, section 9.2, states that the method rule
accepts exactly one argument thms
. However, the methods erule
, drule
and frule
have an additional optional argument (nat)
:
The optional natural number argument (default 0) specifies additional assumption steps to be performed here.