| 9285 |      1 | %title%
 | 
|  |      2 | Isabelle's Logics
 | 
|  |      3 | 
 | 
|  |      4 | %body%
 | 
|  |      5 | 
 | 
|  |      6 | Isabelle can be viewed from two main perspectives.  On the one hand it
 | 
|  |      7 | may serve as a generic framework for rapid prototyping of deductive
 | 
|  |      8 | systems.  On the other hand, major existing logics like
 | 
|  |      9 | <strong>Isabelle/HOL</strong> provide a theorem proving environment
 | 
|  |     10 | ready to use for sizable applications.
 | 
|  |     11 | 
 | 
|  |     12 | 
 | 
|  |     13 | <h2>Isabelle's Logics</h2>
 | 
|  |     14 | 
 | 
|  |     15 | The Isabelle distribution includes a large body of object logics and
 | 
| 10180 |     16 | other examples (see the <a href="library/index.html">Isabelle theory
 | 
| 9285 |     17 | library</a>).
 | 
|  |     18 | 
 | 
|  |     19 | <dl>
 | 
|  |     20 | 
 | 
| 10019 |     21 | <dt><a
 | 
|  |     22 | href="library/HOL/index.html"><strong>Isabelle/HOL</strong></a><dd> is
 | 
|  |     23 | a version of classical higher-order logic resembling that of the <A
 | 
| 9285 |     24 | HREF="http://www.cl.cam.ac.uk/Research/HVG/HOL/HOL.html">HOL
 | 
|  |     25 | System</A>.
 | 
|  |     26 | 
 | 
| 10019 |     27 | <dt><a
 | 
|  |     28 | href="library/HOLCF/index.html"><strong>Isabelle/HOLCF</strong></a><dd>
 | 
| 9285 |     29 | adds Scott's Logic for Computable Functions (domain theory) to HOL.
 | 
|  |     30 | 
 | 
| 10019 |     31 | <dt><a
 | 
|  |     32 | href="library/FOL/index.html"><strong>Isabelle/FOL</strong></a><dd>
 | 
| 9285 |     33 | provides basic classical and intuitionistic first-order logic.  It is
 | 
|  |     34 | polymorphic.
 | 
|  |     35 | 
 | 
| 10019 |     36 | <dt><a
 | 
|  |     37 | href="library/ZF/index.html"><strong>Isabelle/ZF</strong></a><dd>
 | 
|  |     38 | offers a formulation of Zermelo-Fraenkel set theory on top of FOL.
 | 
| 9285 |     39 | 
 | 
|  |     40 | </dl>
 | 
|  |     41 | 
 | 
|  |     42 | <p>
 | 
|  |     43 | 
 | 
|  |     44 | Isabelle/HOL is currently the best developed object logic, including
 | 
|  |     45 | an extensive library of (concrete) mathematics, and various packages
 | 
|  |     46 | for advanced definitional concepts (like (co-)inductive sets and
 | 
|  |     47 | types, well-founded recursion etc.).  The distribution also includes
 | 
|  |     48 | some large applications, for example correctness proofs of
 | 
| 10019 |     49 | cryptographic protocols (<a
 | 
|  |     50 | href="library/HOL/Auth/index.html">HOL/Auth</a>) or communication
 | 
|  |     51 | protocols (<a href="library/HOLCF/IOA/index.html">HOLCF/IOA</a>).
 | 
| 9285 |     52 | 
 | 
|  |     53 | <p>
 | 
|  |     54 | 
 | 
|  |     55 | Isabelle/ZF provides another starting point for applications, with a
 | 
|  |     56 | slightly less developed library.  Its definitional packages are
 | 
|  |     57 | similar to those of Isabelle/HOL.  Untyped ZF provides more advanced
 | 
|  |     58 | constructions for sets than simply-typed HOL.
 | 
|  |     59 | 
 | 
|  |     60 | <p>
 | 
|  |     61 | 
 | 
|  |     62 | There are a few minor object logics that may serve as further
 | 
| 10019 |     63 | examples: <a href="library/CTT/index.html">CTT</a> is an extensional
 | 
|  |     64 | version of Martin-Löf's Type Theory, <a
 | 
|  |     65 | href="library/Cube/index.html">Cube</a> is Barendregt's Lambda Cube.
 | 
|  |     66 | There are also some sequent calculus examples under <a
 | 
|  |     67 | href="library/Sequents/index.html">Sequents</a>, including modal and
 | 
|  |     68 | linear logics.  Again see the <a href="library/index.html">Isabelle
 | 
| 9285 |     69 | theory library</a> for other examples.
 | 
|  |     70 | 
 | 
|  |     71 | 
 | 
|  |     72 | <h3>Defining Logics</h3>
 | 
|  |     73 | 
 | 
|  |     74 | Logics are not hard-wired into Isabelle, but formulated within
 | 
|  |     75 | Isabelle's meta logic: <strong>Isabelle/Pure</strong>.  There are
 | 
|  |     76 | quite a lot of syntactic and deductive tools available in generic
 | 
|  |     77 | Isabelle.  Thus defining new logics or extending existing ones
 | 
|  |     78 | basically works as follows:
 | 
|  |     79 | 
 | 
|  |     80 | <ol>
 | 
|  |     81 | 
 | 
|  |     82 | <li> declare concrete syntax (via mixfix grammar and syntax macros),
 | 
|  |     83 | 
 | 
|  |     84 | <li> declare abstract syntax (as higher-order constants),
 | 
|  |     85 | 
 | 
|  |     86 | <li> declare inference rules (as meta-logical propositions),
 | 
|  |     87 | 
 | 
|  |     88 | <li> instantiate generic automatic proof tools (simplifier, classical
 | 
|  |     89 | tableau prover etc.),
 | 
|  |     90 | 
 | 
|  |     91 | <li> manually code special proof procedures (via tacticals or
 | 
|  |     92 | hand-written ML).
 | 
|  |     93 | 
 | 
|  |     94 | </ol>
 | 
|  |     95 | 
 | 
|  |     96 | The first three steps above are fully declarative and involve no ML
 | 
|  |     97 | programming at all.  Thus one already gets a decent deductive
 | 
|  |     98 | environment based on primitive inferences (by employing the built-in
 | 
|  |     99 | mechanisms of Isabelle/Pure, in particular higher-order unification
 | 
|  |    100 | and resolution).
 | 
|  |    101 | 
 | 
|  |    102 | For sizable applications some degree of automated reasoning is
 | 
|  |    103 | essential.  Instantiating existing tools like the classical tableau
 | 
|  |    104 | prover involves only minimal ML-based setup.  One may also write
 | 
|  |    105 | arbitrary proof procedures or even theory extension packages in ML,
 | 
|  |    106 | without breaching system soundness (Isabelle follows the well-known
 | 
|  |    107 | <em>LCF system approach</em> to achieve a secure system).
 |