diff -r 886a7c614ced -r 26d2f91608ed ProgTutorial/Tactical.thy --- a/ProgTutorial/Tactical.thy Tue Jun 14 22:09:40 2011 +0100 +++ b/ProgTutorial/Tactical.thy Fri Jun 17 16:58:05 2011 +0100 @@ -775,20 +775,12 @@ is similar to @{ML RS}, but takes an additional number as argument. This number makes explicit which premise should be instantiated. - To improve readability of the theorems we shall produce below, we will use the - function @{ML no_vars} from Section~\ref{sec:printing}, which transforms - schematic variables into free ones. Using this function for the first @{ML - RS}-expression above produces the more readable result: - - @{ML_response_fake [display,gray] - "no_vars @{context} (@{thm disjI1} RS @{thm conjI})" "\P; Q\ \ (P \ Qa) \ Q"} - If you want to instantiate more than one premise of a theorem, you can use the function @{ML_ind MRS in Drule}: @{ML_response_fake [display,gray] - "no_vars @{context} ([@{thm disjI1}, @{thm disjI2}] MRS @{thm conjI})" - "\P; Q\ \ (P \ Qa) \ (Pa \ Q)"} + "[@{thm disjI1}, @{thm disjI2}] MRS @{thm conjI}" + "\?P2; ?Q1\ \ (?P2 \ ?Q2) \ (?P1 \ ?Q1)"} If you need to instantiate lists of theorems, you can use the functions @{ML_ind RL in Drule} and @{ML_ind MRL in Drule}. For @@ -800,12 +792,12 @@ val list1 = [@{thm impI}, @{thm disjI2}] val list2 = [@{thm conjI}, @{thm disjI1}] in - map (no_vars @{context}) (list1 RL list2) + list1 RL list2 end" -"[\P \ Q; Qa\ \ (P \ Q) \ Qa, - \Q; Qa\ \ (P \ Q) \ Qa, - (P \ Q) \ (P \ Q) \ Qa, - Q \ (P \ Q) \ Qa]"} +"[\?P1 \ ?Q1; ?Q\ \ (?P1 \ ?Q1) \ ?Q, + \?Q1; ?Q\ \ (?P1 \ ?Q1) \ ?Q, + (?P1 \ ?Q1) \ (?P1 \ ?Q1) \ ?Q, + ?Q1 \ (?P1 \ ?Q1) \ ?Q]"} \begin{readmore} The combinators for instantiating theorems with other theorems are