Cookbook/main.html
changeset 25 8355bfc8d35d
child 32 e64a92e94963
equal deleted inserted replaced
24:1afb9462ea70 25:8355bfc8d35d
       
     1 <?xml version="1.0" encoding="utf-8"?>
       
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
       
     3 <html>
       
     4 <head>
       
     5   <title>Nominal Methods Group</title>
       
     6   <link rel="stylesheet" href="nominal.css">
       
     7 </head>
       
     8 
       
     9 <body>
       
    10 <div align="center">
       
    11 <table width="95%">
       
    12 <tbody>
       
    13 <tr>
       
    14 <td align="left">
       
    15 <H1>Aim</H1>
       
    16 
       
    17 There is already quite good documentation available for users to learn
       
    18 how to interact with Isabelle and to use it for proving
       
    19 theorems (see <A HREF="http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html" target="_top">here</A>).
       
    20 However, the entry barrier for users to program on the ML-level of Isabelle
       
    21 is still unbearably high. In this project we want to change this state
       
    22 of affairs by providing a <i>tutorial</i> about ML-coding in Isabelle. The
       
    23 German Research Council has provided us with &#8364;26,000 to be spend 
       
    24 over the next three years on this project. We invite the Isabelle community to 
       
    25 participate in this project and benefit from the money (and of course 
       
    26 also to reap the benefits from the better documentation).
       
    27 <p> 
       
    28 
       
    29 The main aim is to generate a tutorial for people who want to have 
       
    30 a look under the <i>hood</i> of Isabelle. At its centre it describes the 
       
    31 implementation of a simple prototypical Isabelle package (we describe
       
    32 a simplified version of the inductive package). We hope by 
       
    33 documenting every aspect of this package that in the future you will 
       
    34 be able to modify, extend and adapt this package for your own purposes, 
       
    35 see how developers code in Isabelle and understand better Isabelle's 
       
    36 idiosyncrasies. As a result you will be able to quickly produce code 
       
    37 for your own needs and will be able to participate in keeping Isabelle 
       
    38 alive in the long run. 
       
    39 
       
    40 <p>
       
    41 Specific topics of the tutorial we have not yet covered: 
       
    42 
       
    43 <P>
       
    44 <ul>
       
    45 <li> First Steps
       
    46 <ul> 
       
    47 <li>theories, contexts and local theories
       
    48 <li>morphisms
       
    49 <li>name spaces
       
    50 </ul>
       
    51 <li>Parsing
       
    52 <ul>
       
    53 <li>context-, argument- and attribute parsers
       
    54 <li>parsing and printing translations
       
    55 <li>methods
       
    56 </ul>
       
    57 <li>Tactical Reasoning
       
    58 <ul>
       
    59 <li>declarations
       
    60 <li>structured proofs
       
    61 </ul>
       
    62 <li>Advanced Stuff
       
    63 <ul> 
       
    64 <li>user-space type-systems
       
    65 <li>typing algorithms
       
    66 <li>external applications
       
    67 </ul>
       
    68 </ul>
       
    69 <P>
       
    70 
       
    71 Please help us to expand on this list. 
       
    72 
       
    73 <H3>We need You</H3>
       
    74 
       
    75 We need help for accomplishing this tutorial. If you are familiar with the ML-level of
       
    76 Isabelle, then we can offer money in order that you write small parts of
       
    77 this documentation. Please get in contact with us (see addresses below). If you 
       
    78 are not familiar, but like to know more about the bits and pieces that make
       
    79 up the Isabelle code, then let us know what you are interested in or what
       
    80 project you like to implement. Above all we like to help future users and 
       
    81 developers of Isabelle; we do not want to end up with some "artificial documentation" 
       
    82 that is of nobody's help. Also proofreading and feedback would be most
       
    83 appreciated.
       
    84 
       
    85 <H3>People to contact</H3>
       
    86 
       
    87 The project is managed by
       
    88 
       
    89 <ul>
       
    90 <li> <A HREF="http://www4.in.tum.de/~urbanc/" target="_top">Christian Urban</A> (urbanc at in tum de)
       
    91 <li> <A HREF="http://www.cl.cam.ac.uk/~lp15/" target="_top">Larry Paulson</A> (lp15 at cam ac uk)
       
    92 <li> <A HREF="http://nicta.com.au/people/norrishm" target="_top">Michael Norrish</A>
       
    93      (Michael.Norrish at nicta com au)
       
    94 </ul>
       
    95 
       
    96 There is also the following mailing list that is subscribed by all developers
       
    97 and open for help, suggestions etc. about this project.
       
    98 <p>
       
    99 <A HREF="https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev">
       
   100 isabelle-dev@mailbroy.informatik.tu-muenchen.de</A>
       
   101 <BR>
       
   102 <p>
       
   103 
       
   104 <H3>Repository</H3>
       
   105 
       
   106 A preliminary 
       
   107 <A HREF="http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A>
       
   108 is available and you are very welcome to contribute to it. The current draft of the tutorial is <A HREF="http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook/raw-file/tip/progtutorial.pdf" target="_top" onclick="pageTracker._trackPageview('tutorial');">here</A>. 
       
   109 
       
   110 <H3>Stable Version</H3>
       
   111 
       
   112 There is no real stable version of the Programming Tutorial yet. If you need a version 
       
   113 that is guaranteed to work with Isabelle 2009, then please get in touch with me 
       
   114 (urbanc at in tum de).
       
   115 
       
   116 
       
   117 <H3><A NAME="readers"></A>What early readers said:</H3>
       
   118 
       
   119 <i>
       
   120 The tutorial really is quite nice. (Jeremy Avigad, CMU, 2011)
       
   121 </i>
       
   122 
       
   123 <p>
       
   124 <i>
       
   125 By the way, thanks for the Isabelle Cookbook, it's really helpful to 
       
   126 start with Isabelle/ML. (Mathieu Giorgino, 2011)
       
   127 </i>
       
   128 
       
   129 <p>
       
   130 <i>
       
   131 Great!  This seems to have a lot of the missing pieces I couldn't find  
       
   132 in the tutorial and reference manual. (Kevin Van Horn, 2011)
       
   133 </i>
       
   134 
       
   135 <p>
       
   136 <i>
       
   137 I've been fighting for hours trying to derive some theorems automatically, 
       
   138 until Florian told me I should try using conversions and then I read the Cookbook 
       
   139 section and it solved my problem. The example with abs_conv in particular was 
       
   140 particularly illuminating. Thanks! (Jasmin Blanchette, TU Munich, 2010)
       
   141 </i>
       
   142 
       
   143 <p>
       
   144 <i> The cook book seems really helpful, if not even exactly what I need. 
       
   145 (Nils J&auml;hnig, FU Berlin, 2010)</i>
       
   146 
       
   147 <p>
       
   148 <i>The Programming Tutorial has helped me tremendously to get familiar with
       
   149 Isabelle, which I used in my bachelor thesis about the type-inference algorithm 
       
   150 in Isabelle. (Dmitriy Traytel, TU Munich, 2010)</i>
       
   151 
       
   152 <p>
       
   153 <i>I've already pointed a couple of PhD students at the programming tutorial, and
       
   154 they've already found it to be a great place to start with Isabelle
       
   155 programming. (Lucas Dixon, University of Edinburgh, 2009)</i> 
       
   156 
       
   157 <p>
       
   158 <i>The Isabelle Programming Tutorial is great! I finally learned how to add 
       
   159 new keywords and how to parse outer syntax! (Amine Chaieb, University of Cambridge)</i>
       
   160 
       
   161 <p>
       
   162 <i>I felt the programming tutorial was very clear and comprehensible. I'm
       
   163 toying with actually getting back to Isabelle again. Thanks to 
       
   164 everyone involved in the documentation project. I really think it
       
   165 is worthwhile. (Tom Ridge, University of Cambridge, 2009)</i>
       
   166 
       
   167 <p>
       
   168 <i>I learned from the tutorial how to deal with fresh variables and also which function to use
       
   169 for applying substitutions that are generated by unification.
       
   170 (Lukas Bulwahn, TU Munich, 2009)</i>
       
   171 
       
   172 <p>
       
   173 <i> What a great resource! I wish I'd had this when I wrote my first
       
   174 parser in December 2008. 
       
   175 (Timothy Bourke, UNSW Sydney, 2009)</i>
       
   176 
       
   177 </td>
       
   178 </tr>
       
   179 </tbody>
       
   180 </table>
       
   181 </div>     
       
   182 
       
   183 
       
   184 <HR>
       
   185 <a href="http://www4.clustrmaps.com/counter/maps.php?url=http://www.inf.kcl.ac.uk/staff/urbanc/activities/idp/" id="clustrMapsLink"><img src="http://www4.clustrmaps.com/counter/index2.php?url=http://isabelle.in.tum.de/nominal/activities/idp/" style="border:0px;" alt="Locations of visitors to this page" title="Locations of visitors to this page" id="clustrMapsImg" onError="this.onError=null; this.src='http://www2.clustrmaps.com/images/clustrmaps-back-soon.jpg'; document.getElementById('clustrMapsLink').href='http://www2.clustrmaps.com'" />
       
   186 </a>
       
   187 <p>
       
   188 <P>
       
   189 <a href="http://validator.w3.org/check/referer" target="_top">[Validate this page.]</a>
       
   190 <!-- hhmts start -->
       
   191 Last modified: Mon Aug  1 09:09:07 BST 2011
       
   192 <!-- hhmts end -->
       
   193 
       
   194 <!--script type="text/javascript">
       
   195 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
       
   196 document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
       
   197 </script>
       
   198 <script type="text/javascript">
       
   199 try {
       
   200 var pageTracker = _gat._getTracker("UA-4143458-3");
       
   201 pageTracker._trackPageview();
       
   202 } catch(err) {}</script -->
       
   203 </body>
       
   204 </html>