Nuprl also adapts tactics from LCF ([55]) into the proof tree setting
to get a notion of tactic-tree proof ([4,7,57]). In
this setting the justifications are called primitive refinement tactics. These
can be combined using procedures called tacticalstactical.
For example, if a refinement ro generates subgoals
when
applied to sequent Go, then the compound refinement tactic written
executes ro, then applies ri to
subgoal Gi generated by ro.
There are many tacticals (c.f. [65,28]); two basic ones are
ORELSE and REPEAT. The ORELSE tactical relies on
the idea that a refinement might fail to apply, as in trying to use
on
an implication. In
,
if ro fails to
decompose the goal, then r1 is applied.
We will use tacticals to put together compound justifications when the notation seems clear enough.