expandf : (tactic -> unit)
- g `HD[1;2;3] = 1`; `HD[1;2;3] = 1` () : void - expandf (REWRITE_TAC[HD;TL]);; OK.. goal proved |- HD[1;2;3] = 1 Previous subproof: goal proved () : voidThe following example shows how the use of an invalid tactic can yield a theorem which does not correspond to the goal set.
- set_goal([], Term `1=2`); `1 = 2` () : void - expandf (REWRITE_TAC[ASSUME (Term`1=2`)]); OK.. goal proved . |- 1 = 2 Previous subproof: goal proved () : voidThe proof assumed something which was not on the assumption list. This assumption appears in the assumption list of the theorem proved, even though it was not in the goal. An attempt to perform the proof using expand fails. The validated version of the tactic detects that the justification produces a theorem which does not correspond to the goal set. It therefore fails.