Next: Library Documentation
Up: New features in LEGO Version 1.3
Previous: Theorems and Configure Theorems
LEGO Version 1.3: UTac
Lego is written in ML. We provide two binaries, lego and legoML.
The latter gives you a toplevel of ML in which lego is executed as
a function. The command Drop returns you to the ML
toplevel. There, you can define any ML function you like e.g., a
fancy decision procedure, and execute it to ease some tedious
aspects in your proof development. Of course, this function may
interrogate the current goals and use known assumptions.
Notice, that you have been able to do this with all previous
versions of Lego as well! However, with the current
release, we provide a mechanism to register simple user-defined
tactics so that they can be conveniently executed at the
Lego level. While at the ML level, you may register any
tactic f:unit->unit via
Tactics.add_tactic "TacticId" f
After returning to the Lego level via lego(), you can
execute the new tactic by invoking
UTac TacticId
In constructing such a tactic f, you will have to
synthesis all arguments from the current proof state. Notice that
the function
Namespace.getCurrentGoals : unit -> question list
gives you access to the current goals wheras interrogation of
the context is possible through
Namespace.search id (Namespace.getNamespace()) : binding
See the source file "src/lib_nat_plus_thms.sml"> for an example on
how one might define and integrate a tactic for replacing
all occurrences of the form (a+b)+c in the current goal
by a+(b+c).
LEGO Team
Last modified: Tue Jun 23 16:46:32 BST 1998