|         |      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 €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ä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> |