| author | Christian Urban <christian dot urban at kcl dot ac dot uk> | 
| Fri, 10 Jul 2015 01:44:23 +0100 | |
| changeset 372 | de46e57b7603 | 
| parent 332 | 37b2df329532 | 
| child 391 | ff462cfb41cb | 
| permissions | -rw-r--r-- | 
| 25 | 1 | <?xml version="1.0" encoding="utf-8"?> | 
| 2 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |
| 3 | <html> | |
| 4 | <head> | |
| 32 | 5 | <title>Isabelle Programming Tutorial</title> | 
| 25 | 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 | |
| 33 | 22 | of affairs by providing a <i>tutorial</i> about ML-coding in Isabelle. | 
| 35 | 23 | At its centre we describe the | 
| 25 | 24 | implementation of a simple prototypical Isabelle package (we describe | 
| 25 | a simplified version of the inductive package). We hope by | |
| 26 | documenting every aspect of this package that in the future you will | |
| 27 | be able to modify, extend and adapt this package for your own purposes, | |
| 28 | see how developers code in Isabelle and understand better Isabelle's | |
| 29 | idiosyncrasies. As a result you will be able to quickly produce code | |
| 30 | for your own needs and will be able to participate in keeping Isabelle | |
| 31 | alive in the long run. | |
| 32 | ||
| 33 | <p> | |
| 34 | Specific topics of the tutorial we have not yet covered: | |
| 35 | ||
| 36 | <P> | |
| 37 | <ul> | |
| 38 | <li> First Steps | |
| 39 | <ul> | |
| 40 | <li>theories, contexts and local theories | |
| 41 | <li>morphisms | |
| 42 | <li>name spaces | |
| 43 | </ul> | |
| 44 | <li>Parsing | |
| 45 | <ul> | |
| 46 | <li>context-, argument- and attribute parsers | |
| 47 | <li>parsing and printing translations | |
| 48 | <li>methods | |
| 49 | </ul> | |
| 50 | <li>Tactical Reasoning | |
| 51 | <ul> | |
| 52 | <li>declarations | |
| 53 | <li>structured proofs | |
| 54 | </ul> | |
| 55 | <li>Advanced Stuff | |
| 56 | <ul> | |
| 57 | <li>user-space type-systems | |
| 58 | <li>typing algorithms | |
| 59 | <li>external applications | |
| 60 | </ul> | |
| 61 | </ul> | |
| 62 | <P> | |
| 63 | ||
| 64 | Please help us to expand on this list. | |
| 65 | ||
| 66 | <H3>We need You</H3> | |
| 67 | ||
| 32 | 68 | We need help for accomplishing this tutorial. If you are familiar with the | 
| 69 | ML-level of Isabelle, please get in contact with us (see addresses below). If you | |
| 25 | 70 | are not familiar, but like to know more about the bits and pieces that make | 
| 71 | up the Isabelle code, then let us know what you are interested in or what | |
| 72 | project you like to implement. Above all we like to help future users and | |
| 73 | developers of Isabelle; we do not want to end up with some "artificial documentation" | |
| 74 | that is of nobody's help. Also proofreading and feedback would be most | |
| 75 | appreciated. | |
| 76 | ||
| 77 | <H3>People to contact</H3> | |
| 78 | ||
| 79 | The project is managed by | |
| 80 | ||
| 81 | <ul> | |
| 32 | 82 | <li> <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/" target="_top">Christian Urban</A> (christian.urban at kcl ac uk) | 
| 25 | 83 | <li> <A HREF="http://www.cl.cam.ac.uk/~lp15/" target="_top">Larry Paulson</A> (lp15 at cam ac uk) | 
| 84 | <li> <A HREF="http://nicta.com.au/people/norrishm" target="_top">Michael Norrish</A> | |
| 85 | (Michael.Norrish at nicta com au) | |
| 86 | </ul> | |
| 87 | ||
| 88 | There is also the following mailing list that is subscribed by all developers | |
| 89 | and open for help, suggestions etc. about this project. | |
| 90 | <p> | |
| 91 | <A HREF="https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev"> | |
| 92 | isabelle-dev@mailbroy.informatik.tu-muenchen.de</A> | |
| 93 | <BR> | |
| 94 | <p> | |
| 95 | ||
| 96 | <H3>Repository</H3> | |
| 97 | ||
| 98 | A preliminary | |
| 99 | <A HREF="http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A> | |
| 100 | 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>. 
 | |
| 101 | ||
| 102 | <H3>Stable Version</H3> | |
| 103 | ||
| 104 | There is no real stable version of the Programming Tutorial yet. If you need a version | |
| 32 | 105 | that is guaranteed to work with Isabelle 2011-1, then please get in touch with me | 
| 38 | 106 | (christian.urban at kcl ac uk). | 
| 25 | 107 | |
| 108 | ||
| 109 | <H3><A NAME="readers"></A>What early readers said:</H3> | |
| 110 | ||
| 299 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 111 | <p> | 
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 112 | <i> | 
| 332 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 113 | My path towards HOL was from HOL Light, to HOL4, to Isabelle/HOL and | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 114 | the Cookbook was essential for the last step (Piotr Trojanek, University of Bristol, 2014) | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 115 | </i> | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 116 | |
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 117 | <p> | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 118 | <i> | 
| 299 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 119 | ...and the Isabelle/ML Cookbook are valuable resources (Lars Hupel, 2014) | 
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 120 | </i> | 
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 121 | |
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 122 | <p> | 
| 25 | 123 | <i> | 
| 137 | 124 | GREAT!!! That's exactly what I was looking for! (Thomas Genet, ISTIC/IRISA, 2012) | 
| 125 | </i> | |
| 126 | ||
| 127 | <p> | |
| 128 | <i> | |
| 25 | 129 | The tutorial really is quite nice. (Jeremy Avigad, CMU, 2011) | 
| 130 | </i> | |
| 131 | ||
| 132 | <p> | |
| 133 | <i> | |
| 134 | By the way, thanks for the Isabelle Cookbook, it's really helpful to | |
| 135 | start with Isabelle/ML. (Mathieu Giorgino, 2011) | |
| 136 | </i> | |
| 137 | ||
| 138 | <p> | |
| 139 | <i> | |
| 140 | Great! This seems to have a lot of the missing pieces I couldn't find | |
| 141 | in the tutorial and reference manual. (Kevin Van Horn, 2011) | |
| 142 | </i> | |
| 143 | ||
| 144 | <p> | |
| 145 | <i> | |
| 146 | I've been fighting for hours trying to derive some theorems automatically, | |
| 147 | until Florian told me I should try using conversions and then I read the Cookbook | |
| 148 | section and it solved my problem. The example with abs_conv in particular was | |
| 149 | particularly illuminating. Thanks! (Jasmin Blanchette, TU Munich, 2010) | |
| 150 | </i> | |
| 151 | ||
| 152 | <p> | |
| 153 | <i> The cook book seems really helpful, if not even exactly what I need. | |
| 154 | (Nils Jähnig, FU Berlin, 2010)</i> | |
| 155 | ||
| 156 | <p> | |
| 157 | <i>The Programming Tutorial has helped me tremendously to get familiar with | |
| 158 | Isabelle, which I used in my bachelor thesis about the type-inference algorithm | |
| 159 | in Isabelle. (Dmitriy Traytel, TU Munich, 2010)</i> | |
| 160 | ||
| 161 | <p> | |
| 162 | <i>I've already pointed a couple of PhD students at the programming tutorial, and | |
| 163 | they've already found it to be a great place to start with Isabelle | |
| 164 | programming. (Lucas Dixon, University of Edinburgh, 2009)</i> | |
| 165 | ||
| 166 | <p> | |
| 167 | <i>The Isabelle Programming Tutorial is great! I finally learned how to add | |
| 168 | new keywords and how to parse outer syntax! (Amine Chaieb, University of Cambridge)</i> | |
| 169 | ||
| 170 | <p> | |
| 171 | <i>I felt the programming tutorial was very clear and comprehensible. I'm | |
| 172 | toying with actually getting back to Isabelle again. Thanks to | |
| 173 | everyone involved in the documentation project. I really think it | |
| 174 | is worthwhile. (Tom Ridge, University of Cambridge, 2009)</i> | |
| 175 | ||
| 176 | <p> | |
| 177 | <i>I learned from the tutorial how to deal with fresh variables and also which function to use | |
| 178 | for applying substitutions that are generated by unification. | |
| 179 | (Lukas Bulwahn, TU Munich, 2009)</i> | |
| 180 | ||
| 181 | <p> | |
| 182 | <i> What a great resource! I wish I'd had this when I wrote my first | |
| 183 | parser in December 2008. | |
| 184 | (Timothy Bourke, UNSW Sydney, 2009)</i> | |
| 185 | ||
| 186 | </td> | |
| 187 | </tr> | |
| 188 | </tbody> | |
| 189 | </table> | |
| 190 | </div> | |
| 191 | ||
| 192 | ||
| 193 | <HR> | |
| 34 | 194 | <div id="clustrmaps-widget"></div><script type="text/javascript">var _clustrmaps = {'url' : 'http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/index.html', 'user' : 948346, 'server' : '4', 'id' : 'clustrmaps-widget', 'version' : 1, 'date' : '2011-10-30', 'lang' : 'en', 'corners' : 'square' };(function (){ var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'http://www4.clustrmaps.com/counter/map.js'; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x);})();</script><noscript><a href="http://www4.clustrmaps.com/user/123e787a"><img src="http://www4.clustrmaps.com/stats/maps-no_clusters/www.inf.kcl.ac.uk-staff-urbanc-Cookbook-index.html-thumb.jpg" alt="Locations of visitors to this page" /></a></noscript>
 | 
| 25 | 195 | </a> | 
| 196 | <p> | |
| 197 | <P> | |
| 198 | <a href="http://validator.w3.org/check/referer" target="_top">[Validate this page.]</a> | |
| 332 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 199 | <!-- hhmts start --> Last modified: Mon Oct 20 00:42:10 BST 2014 <!-- hhmts end --> | 
| 25 | 200 | |
| 201 | </body> | |
| 137 | 202 | </html> |