1 %% $Id$ |
1 |
2 \chapter{The Classical Reasoner}\label{chap:classical} |
2 \chapter{The Classical Reasoner}\label{chap:classical} |
3 \index{classical reasoner|(} |
3 \index{classical reasoner|(} |
4 \newcommand\ainfer[2]{\begin{array}{r@{\,}l}#2\\ \hline#1\end{array}} |
4 \newcommand\ainfer[2]{\begin{array}{r@{\,}l}#2\\ \hline#1\end{array}} |
5 |
5 |
6 Although Isabelle is generic, many users will be working in some extension of |
6 Although Isabelle is generic, many users will be working in some extension of |
25 The tactics are generic. They are not restricted to first-order logic, and |
25 The tactics are generic. They are not restricted to first-order logic, and |
26 have been heavily used in the development of Isabelle's set theory. Few |
26 have been heavily used in the development of Isabelle's set theory. Few |
27 interactive proof assistants provide this much automation. The tactics can |
27 interactive proof assistants provide this much automation. The tactics can |
28 be traced, and their components can be called directly; in this manner, |
28 be traced, and their components can be called directly; in this manner, |
29 any proof can be viewed interactively. |
29 any proof can be viewed interactively. |
30 |
|
31 The simplest way to apply the classical reasoner (to subgoal~$i$) is to type |
|
32 \begin{ttbox} |
|
33 by (Blast_tac \(i\)); |
|
34 \end{ttbox} |
|
35 This command quickly proves most simple formulas of the predicate calculus or |
|
36 set theory. To attempt to prove subgoals using a combination of |
|
37 rewriting and classical reasoning, try |
|
38 \begin{ttbox} |
|
39 auto(); \emph{\textrm{applies to all subgoals}} |
|
40 force i; \emph{\textrm{applies to one subgoal}} |
|
41 \end{ttbox} |
|
42 To do all obvious logical steps, even if they do not prove the |
|
43 subgoal, type one of the following: |
|
44 \begin{ttbox} |
|
45 by Safe_tac; \emph{\textrm{applies to all subgoals}} |
|
46 by (Clarify_tac \(i\)); \emph{\textrm{applies to one subgoal}} |
|
47 \end{ttbox} |
|
48 |
|
49 |
|
50 You need to know how the classical reasoner works in order to use it |
|
51 effectively. There are many tactics to choose from, including |
|
52 {\tt Fast_tac} and \texttt{Best_tac}. |
|
53 |
30 |
54 We shall first discuss the underlying principles, then present the classical |
31 We shall first discuss the underlying principles, then present the classical |
55 reasoner. Finally, we shall see how to instantiate it for new logics. The |
32 reasoner. Finally, we shall see how to instantiate it for new logics. The |
56 logics FOL, ZF, HOL and HOLCF have it already installed. |
33 logics FOL, ZF, HOL and HOLCF have it already installed. |
57 |
34 |