drule : thm -> tactic
!n d. 0 < n /\ 1 < d ==> (n DIV d < n)
> drule arithmeticTheory.DIV_LESS ([“1 < x”, “0 < y”], “P:bool”); val it = ([([“1 < x”, “0 < y”], “(!d. 1 < d ==> y DIV d < y) ==> P”)], fn): goal list * validation
The related dxrule tactic removes the matching assumption from the assumption list. In this example above, the resulting assumption list would just contain 1 < x, having lost the 0 < y which was resolved against the DIV_LESS theorem.
The drule tactic uses the MP_TAC thm_tactic as its fixed continuation; the drule_then variation takes a thm_tactic continuation as its first parameter and applies this to the result of the instantiation and MP call. There is also a dxrule_then, that combines both variations described here.
Finally, note that the implicational theorem may itself have come from the goal’s assumptions, extracted with tools such as FIRST_ASSUM and PAT_ASSUM.