| 359 |      1 | \contentsline {chapter}{\numberline {1}Basic Use of Isabelle}{1}
 | 
| 104 |      2 | \contentsline {section}{\numberline {1.1}Basic interaction with Isabelle}{1}
 | 
|  |      3 | \contentsline {section}{\numberline {1.2}Ending a session}{2}
 | 
| 359 |      4 | \contentsline {section}{\numberline {1.3}Reading ML files}{2}
 | 
|  |      5 | \contentsline {section}{\numberline {1.4}Printing of terms and theorems}{2}
 | 
|  |      6 | \contentsline {subsection}{Printing limits}{2}
 | 
|  |      7 | \contentsline {subsection}{Printing of hypotheses, types and sorts}{3}
 | 
|  |      8 | \contentsline {subsection}{$\eta $-contraction before printing}{3}
 | 
|  |      9 | \contentsline {section}{\numberline {1.5}Displaying exceptions as error messages}{3}
 | 
|  |     10 | \contentsline {section}{\numberline {1.6}Shell scripts}{4}
 | 
|  |     11 | \contentsline {chapter}{\numberline {2}Proof Management: The Subgoal Module}{5}
 | 
|  |     12 | \contentsline {section}{\numberline {2.1}Basic commands}{5}
 | 
|  |     13 | \contentsline {subsection}{Starting a backward proof}{5}
 | 
|  |     14 | \contentsline {subsection}{Applying a tactic}{6}
 | 
|  |     15 | \contentsline {subsection}{Extracting the proved theorem}{7}
 | 
|  |     16 | \contentsline {subsection}{Undoing and backtracking}{7}
 | 
|  |     17 | \contentsline {subsection}{Printing the proof state}{8}
 | 
|  |     18 | \contentsline {subsection}{Timing}{8}
 | 
|  |     19 | \contentsline {section}{\numberline {2.2}Shortcuts for applying tactics}{8}
 | 
|  |     20 | \contentsline {subsection}{Refining a given subgoal}{8}
 | 
|  |     21 | \contentsline {subsection}{Scanning shortcuts}{9}
 | 
|  |     22 | \contentsline {subsection}{Other shortcuts}{9}
 | 
|  |     23 | \contentsline {section}{\numberline {2.3}Executing batch proofs}{9}
 | 
|  |     24 | \contentsline {section}{\numberline {2.4}Managing multiple proofs}{10}
 | 
|  |     25 | \contentsline {subsection}{The stack of proof states}{11}
 | 
|  |     26 | \contentsline {subsection}{Saving and restoring proof states}{11}
 | 
|  |     27 | \contentsline {section}{\numberline {2.5}Debugging and inspecting}{11}
 | 
|  |     28 | \contentsline {subsection}{Reading and printing terms}{11}
 | 
|  |     29 | \contentsline {subsection}{Inspecting the proof state}{12}
 | 
|  |     30 | \contentsline {subsection}{Filtering lists of rules}{12}
 | 
|  |     31 | \contentsline {chapter}{\numberline {3}Tactics}{13}
 | 
|  |     32 | \contentsline {section}{\numberline {3.1}Resolution and assumption tactics}{13}
 | 
|  |     33 | \contentsline {subsection}{Resolution tactics}{13}
 | 
|  |     34 | \contentsline {subsection}{Assumption tactics}{14}
 | 
|  |     35 | \contentsline {subsection}{Matching tactics}{14}
 | 
|  |     36 | \contentsline {subsection}{Resolution with instantiation}{14}
 | 
|  |     37 | \contentsline {section}{\numberline {3.2}Other basic tactics}{15}
 | 
|  |     38 | \contentsline {subsection}{Definitions and meta-level rewriting}{15}
 | 
|  |     39 | \contentsline {subsection}{Tactic shortcuts}{16}
 | 
|  |     40 | \contentsline {subsection}{Inserting premises and facts}{16}
 | 
|  |     41 | \contentsline {subsection}{Theorems useful with tactics}{17}
 | 
|  |     42 | \contentsline {section}{\numberline {3.3}Obscure tactics}{17}
 | 
|  |     43 | \contentsline {subsection}{Tidying the proof state}{17}
 | 
|  |     44 | \contentsline {subsection}{Renaming parameters in a goal}{17}
 | 
|  |     45 | \contentsline {subsection}{Composition: resolution without lifting}{18}
 | 
|  |     46 | \contentsline {section}{\numberline {3.4}Managing lots of rules}{18}
 | 
|  |     47 | \contentsline {subsection}{Combined resolution and elim-resolution}{19}
 | 
|  |     48 | \contentsline {subsection}{Discrimination nets for fast resolution}{19}
 | 
|  |     49 | \contentsline {section}{\numberline {3.5}Programming tools for proof strategies}{20}
 | 
|  |     50 | \contentsline {subsection}{Operations on type {\ptt tactic}}{21}
 | 
|  |     51 | \contentsline {subsection}{Tracing}{21}
 | 
|  |     52 | \contentsline {section}{\numberline {3.6}Sequences}{22}
 | 
|  |     53 | \contentsline {subsection}{Basic operations on sequences}{22}
 | 
|  |     54 | \contentsline {subsection}{Converting between sequences and lists}{22}
 | 
|  |     55 | \contentsline {subsection}{Combining sequences}{22}
 | 
|  |     56 | \contentsline {chapter}{\numberline {4}Tacticals}{24}
 | 
|  |     57 | \contentsline {section}{\numberline {4.1}The basic tacticals}{24}
 | 
|  |     58 | \contentsline {subsection}{Joining two tactics}{24}
 | 
|  |     59 | \contentsline {subsection}{Joining a list of tactics}{24}
 | 
|  |     60 | \contentsline {subsection}{Repetition tacticals}{25}
 | 
|  |     61 | \contentsline {subsection}{Identities for tacticals}{25}
 | 
|  |     62 | \contentsline {section}{\numberline {4.2}Control and search tacticals}{26}
 | 
|  |     63 | \contentsline {subsection}{Filtering a tactic's results}{26}
 | 
|  |     64 | \contentsline {subsection}{Depth-first search}{26}
 | 
|  |     65 | \contentsline {subsection}{Other search strategies}{27}
 | 
|  |     66 | \contentsline {subsection}{Auxiliary tacticals for searching}{27}
 | 
|  |     67 | \contentsline {subsection}{Predicates and functions useful for searching}{28}
 | 
|  |     68 | \contentsline {section}{\numberline {4.3}Tacticals for subgoal numbering}{28}
 | 
|  |     69 | \contentsline {subsection}{Restricting a tactic to one subgoal}{28}
 | 
|  |     70 | \contentsline {subsection}{Scanning for a subgoal by number}{29}
 | 
|  |     71 | \contentsline {subsection}{Joining tactic functions}{30}
 | 
|  |     72 | \contentsline {subsection}{Applying a list of tactics to 1}{31}
 | 
|  |     73 | \contentsline {chapter}{\numberline {5}Theorems and Forward Proof}{32}
 | 
|  |     74 | \contentsline {section}{\numberline {5.1}Basic operations on theorems}{32}
 | 
|  |     75 | \contentsline {subsection}{Pretty-printing a theorem}{32}
 | 
|  |     76 | \contentsline {subsection}{Forward proof: joining rules by resolution}{33}
 | 
|  |     77 | \contentsline {subsection}{Expanding definitions in theorems}{33}
 | 
|  |     78 | \contentsline {subsection}{Instantiating a theorem}{34}
 | 
|  |     79 | \contentsline {subsection}{Miscellaneous forward rules}{34}
 | 
|  |     80 | \contentsline {subsection}{Taking a theorem apart}{35}
 | 
|  |     81 | \contentsline {subsection}{Tracing flags for unification}{35}
 | 
|  |     82 | \contentsline {section}{\numberline {5.2}Primitive meta-level inference rules}{36}
 | 
|  |     83 | \contentsline {subsection}{Assumption rule}{37}
 | 
|  |     84 | \contentsline {subsection}{Implication rules}{37}
 | 
|  |     85 | \contentsline {subsection}{Logical equivalence rules}{38}
 | 
|  |     86 | \contentsline {subsection}{Equality rules}{38}
 | 
|  |     87 | \contentsline {subsection}{The $\lambda $-conversion rules}{38}
 | 
|  |     88 | \contentsline {subsection}{Forall introduction rules}{39}
 | 
|  |     89 | \contentsline {subsection}{Forall elimination rules}{39}
 | 
|  |     90 | \contentsline {subsection}{Instantiation of unknowns}{39}
 | 
|  |     91 | \contentsline {subsection}{Freezing/thawing type unknowns}{40}
 | 
|  |     92 | \contentsline {section}{\numberline {5.3}Derived rules for goal-directed proof}{40}
 | 
|  |     93 | \contentsline {subsection}{Proof by assumption}{40}
 | 
|  |     94 | \contentsline {subsection}{Resolution}{40}
 | 
|  |     95 | \contentsline {subsection}{Composition: resolution without lifting}{40}
 | 
|  |     96 | \contentsline {subsection}{Other meta-rules}{41}
 | 
|  |     97 | \contentsline {chapter}{\numberline {6}Theories, Terms and Types}{42}
 | 
|  |     98 | \contentsline {section}{\numberline {6.1}Defining theories}{42}
 | 
|  |     99 | \contentsline {subsection}{*Classes and arities}{44}
 | 
|  |    100 | \contentsline {section}{\numberline {6.2}Loading a new theory}{44}
 | 
|  |    101 | \contentsline {section}{\numberline {6.3}Reloading modified theories}{45}
 | 
|  |    102 | \contentsline {subsection}{Important note for Poly/ML users}{45}
 | 
|  |    103 | \contentsline {subsection}{*Pseudo theories}{46}
 | 
|  |    104 | \contentsline {section}{\numberline {6.4}Basic operations on theories}{47}
 | 
|  |    105 | \contentsline {subsection}{Extracting an axiom from a theory}{47}
 | 
|  |    106 | \contentsline {subsection}{Building a theory}{47}
 | 
|  |    107 | \contentsline {subsection}{Inspecting a theory}{47}
 | 
|  |    108 | \contentsline {section}{\numberline {6.5}Terms}{48}
 | 
|  |    109 | \contentsline {section}{\numberline {6.6}Variable binding}{49}
 | 
|  |    110 | \contentsline {section}{\numberline {6.7}Certified terms}{50}
 | 
|  |    111 | \contentsline {subsection}{Printing terms}{50}
 | 
|  |    112 | \contentsline {subsection}{Making and inspecting certified terms}{50}
 | 
|  |    113 | \contentsline {section}{\numberline {6.8}Types}{50}
 | 
|  |    114 | \contentsline {section}{\numberline {6.9}Certified types}{51}
 | 
|  |    115 | \contentsline {subsection}{Printing types}{51}
 | 
|  |    116 | \contentsline {subsection}{Making and inspecting certified types}{51}
 | 
|  |    117 | \contentsline {chapter}{\numberline {7}Defining Logics}{52}
 | 
|  |    118 | \contentsline {section}{\numberline {7.1}Priority grammars}{52}
 | 
|  |    119 | \contentsline {section}{\numberline {7.2}The Pure syntax}{53}
 | 
|  |    120 | \contentsline {subsection}{Logical types and default syntax}{55}
 | 
|  |    121 | \contentsline {subsection}{Lexical matters}{55}
 | 
|  |    122 | \contentsline {subsection}{*Inspecting the syntax}{56}
 | 
|  |    123 | \contentsline {section}{\numberline {7.3}Mixfix declarations}{58}
 | 
|  |    124 | \contentsline {subsection}{Grammar productions}{58}
 | 
|  |    125 | \contentsline {subsection}{The general mixfix form}{59}
 | 
|  |    126 | \contentsline {subsection}{Example: arithmetic expressions}{60}
 | 
|  |    127 | \contentsline {subsection}{The mixfix template}{61}
 | 
|  |    128 | \contentsline {subsection}{Infixes}{61}
 | 
|  |    129 | \contentsline {subsection}{Binders}{62}
 | 
|  |    130 | \contentsline {section}{\numberline {7.4}Example: some minimal logics}{62}
 | 
|  |    131 | \contentsline {chapter}{\numberline {8}Syntax Transformations}{66}
 | 
|  |    132 | \contentsline {section}{\numberline {8.1}Abstract syntax trees}{66}
 | 
|  |    133 | \contentsline {section}{\numberline {8.2}Transforming parse trees to {\psc ast}{}s}{67}
 | 
|  |    134 | \contentsline {section}{\numberline {8.3}Transforming {\psc ast}{}s to terms}{69}
 | 
|  |    135 | \contentsline {section}{\numberline {8.4}Printing of terms}{69}
 | 
|  |    136 | \contentsline {section}{\numberline {8.5}Macros: Syntactic rewriting}{71}
 | 
|  |    137 | \contentsline {subsection}{Specifying macros}{72}
 | 
|  |    138 | \contentsline {subsection}{Applying rules}{73}
 | 
|  |    139 | \contentsline {subsection}{Example: the syntax of finite sets}{75}
 | 
|  |    140 | \contentsline {subsection}{Example: a parse macro for dependent types}{76}
 | 
|  |    141 | \contentsline {section}{\numberline {8.6}Translation functions}{76}
 | 
|  |    142 | \contentsline {subsection}{Declaring translation functions}{77}
 | 
|  |    143 | \contentsline {subsection}{The translation strategy}{77}
 | 
|  |    144 | \contentsline {subsection}{Example: a print translation for dependent types}{78}
 | 
|  |    145 | \contentsline {chapter}{\numberline {9}Substitution Tactics}{80}
 | 
|  |    146 | \contentsline {section}{\numberline {9.1}Substitution rules}{80}
 | 
|  |    147 | \contentsline {section}{\numberline {9.2}Substitution in the hypotheses}{81}
 | 
|  |    148 | \contentsline {section}{\numberline {9.3}Setting up {\ptt hyp_subst_tac}}{82}
 | 
|  |    149 | \contentsline {chapter}{\numberline {10}Simplification}{84}
 | 
|  |    150 | \contentsline {section}{\numberline {10.1}Simplification sets}{84}
 | 
|  |    151 | \contentsline {subsection}{Rewrite rules}{84}
 | 
|  |    152 | \contentsline {subsection}{*Congruence rules}{85}
 | 
|  |    153 | \contentsline {subsection}{*The subgoaler}{85}
 | 
|  |    154 | \contentsline {subsection}{*The solver}{86}
 | 
|  |    155 | \contentsline {subsection}{*The looper}{86}
 | 
|  |    156 | \contentsline {section}{\numberline {10.2}The simplification tactics}{87}
 | 
|  |    157 | \contentsline {section}{\numberline {10.3}Examples using the simplifier}{88}
 | 
|  |    158 | \contentsline {subsection}{A trivial example}{88}
 | 
|  |    159 | \contentsline {subsection}{An example of tracing}{89}
 | 
|  |    160 | \contentsline {subsection}{Free variables and simplification}{90}
 | 
|  |    161 | \contentsline {section}{\numberline {10.4}Permutative rewrite rules}{90}
 | 
|  |    162 | \contentsline {subsection}{Example: sums of integers}{91}
 | 
|  |    163 | \contentsline {subsection}{Re-orienting equalities}{93}
 | 
|  |    164 | \contentsline {section}{\numberline {10.5}*Setting up the simplifier}{93}
 | 
|  |    165 | \contentsline {subsection}{A collection of standard rewrite rules}{94}
 | 
|  |    166 | \contentsline {subsection}{Functions for preprocessing the rewrite rules}{94}
 | 
|  |    167 | \contentsline {subsection}{Making the initial simpset}{96}
 | 
|  |    168 | \contentsline {subsection}{Case splitting}{97}
 | 
|  |    169 | \contentsline {chapter}{\numberline {11}The Classical Reasoner}{98}
 | 
|  |    170 | \contentsline {section}{\numberline {11.1}The sequent calculus}{98}
 | 
|  |    171 | \contentsline {section}{\numberline {11.2}Simulating sequents by natural deduction}{99}
 | 
|  |    172 | \contentsline {section}{\numberline {11.3}Extra rules for the sequent calculus}{100}
 | 
|  |    173 | \contentsline {section}{\numberline {11.4}Classical rule sets}{101}
 | 
|  |    174 | \contentsline {section}{\numberline {11.5}The classical tactics}{103}
 | 
|  |    175 | \contentsline {subsection}{The automatic tactics}{103}
 | 
|  |    176 | \contentsline {subsection}{Single-step tactics}{103}
 | 
|  |    177 | \contentsline {subsection}{Other useful tactics}{104}
 | 
|  |    178 | \contentsline {subsection}{Creating swapped rules}{104}
 | 
|  |    179 | \contentsline {section}{\numberline {11.6}Setting up the classical reasoner}{104}
 | 
|  |    180 | \contentsline {chapter}{\numberline {A}Syntax of Isabelle Theories}{107}
 |