doc-src/IsarRef/generic.tex
changeset 14175 dbd16ebaf907
parent 13622 9768ba6ab5e7
child 14212 cd05b503ca2d
--- a/doc-src/IsarRef/generic.tex	Fri Aug 29 15:19:02 2003 +0200
+++ b/doc-src/IsarRef/generic.tex	Fri Aug 29 15:40:11 2003 +0200
@@ -437,7 +437,7 @@
 
 \indexisaratt{tagged}\indexisaratt{untagged}
 \indexisaratt{THEN}\indexisaratt{COMP}
-\indexisaratt{where}\indexisaratt{unfolded}\indexisaratt{folded}
+\indexisaratt{unfolded}\indexisaratt{folded}
 \indexisaratt{standard}\indexisarattof{Pure}{elim-format}
 \indexisaratt{no-vars}
 \begin{matharray}{rcl}
@@ -445,7 +445,6 @@
   untagged & : & \isaratt \\[0.5ex]
   THEN & : & \isaratt \\
   COMP & : & \isaratt \\[0.5ex]
-  where & : & \isaratt \\[0.5ex]
   unfolded & : & \isaratt \\
   folded & : & \isaratt \\[0.5ex]
   elim_format & : & \isaratt \\
@@ -460,8 +459,6 @@
   ;
   ('THEN' | 'COMP') ('[' nat ']')? thmref
   ;
-  'where' (name '=' term * 'and')
-  ;
   ('unfolded' | 'folded') thmrefs
   ;
 \end{rail}
@@ -480,11 +477,6 @@
   normally intended (cf.\ \texttt{RS} and \texttt{COMP} in
   \cite[\S5]{isabelle-ref}).
 
-\item [$where~\vec x = \vec t$] perform named instantiation of schematic
-  variables occurring in a theorem.  Unlike instantiation tactics such as
-  $rule_tac$ (see \S\ref{sec:tactic-commands}), actual schematic variables
-  have to be specified on the left-hand side (e.g.\ $\Var{x@3}$).
-
 \item [$unfolded~\vec a$ and $folded~\vec a$] expand and fold back again the
   given meta-level definitions throughout a rule.
 
@@ -513,15 +505,23 @@
 dynamic instantiation within the scope of some subgoal.
 
 \begin{warn}
-  Dynamic instantiations are read and type-checked according to a subgoal of
-  the current dynamic goal state, rather than the static proof context!  In
-  particular, locally fixed variables and term abbreviations may not be
-  included in the term specifications.  Thus schematic variables are left to
-  be solved by unification with certain parts of the subgoal involved.
+  Dynamic instantiations refer to universally quantified parameters of
+  a subgoal (the dynamic context) rather than fixed variables and term
+  abbreviations of a (static) Isar context.
 \end{warn}
 
+Tactic emulation methods, unlike their ML counterparts, admit
+simultaneous instantiation from both dynamic and static contexts.  If
+names occur in both contexts goal parameters hide locally fixed
+variables.  Likewise, schematic variables refer to term abbreviations,
+if present in the static context.  Otherwise the schematic variable is
+interpreted as a schematic variable and left to be solved by unification
+with certain parts of the subgoal.
+
 Note that the tactic emulation proof methods in Isabelle/Isar are consistently
-named $foo_tac$.
+named $foo_tac$.  Note also that variable names occurring on left hand sides
+of instantiations must be preceded by a question mark if they contain dots.
+This is consistent with the attribute $where$ (see \S\ref{sec:pure-meth-att}).
 
 \indexisarmeth{rule-tac}\indexisarmeth{erule-tac}
 \indexisarmeth{drule-tac}\indexisarmeth{frule-tac}