| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Fri, 23 Dec 2022 10:35:27 +0000 | |
| changeset 623 | 9a3fe74de4b0 | 
| parent 615 | 38a926c8d66f | 
| child 645 | 552a6b834d43 | 
| 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> | |
| 479 | 16 | |
| 25 | 17 | |
| 18 | There is already quite good documentation available for users to learn | |
| 19 | how to interact with Isabelle and to use it for proving | |
| 20 | theorems (see <A HREF="http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html" target="_top">here</A>). | |
| 21 | However, the entry barrier for users to program on the ML-level of Isabelle | |
| 22 | is still unbearably high. In this project we want to change this state | |
| 33 | 23 | of affairs by providing a <i>tutorial</i> about ML-coding in Isabelle. | 
| 35 | 24 | At its centre we describe the | 
| 25 | 25 | implementation of a simple prototypical Isabelle package (we describe | 
| 26 | a simplified version of the inductive package). We hope by | |
| 27 | documenting every aspect of this package that in the future you will | |
| 28 | be able to modify, extend and adapt this package for your own purposes, | |
| 29 | see how developers code in Isabelle and understand better Isabelle's | |
| 30 | idiosyncrasies. As a result you will be able to quickly produce code | |
| 31 | for your own needs and will be able to participate in keeping Isabelle | |
| 32 | alive in the long run. | |
| 33 | ||
| 34 | <p> | |
| 35 | Specific topics of the tutorial we have not yet covered: | |
| 36 | ||
| 37 | <P> | |
| 38 | <ul> | |
| 39 | <li> First Steps | |
| 40 | <ul> | |
| 41 | <li>theories, contexts and local theories | |
| 42 | <li>morphisms | |
| 43 | <li>name spaces | |
| 44 | </ul> | |
| 45 | <li>Parsing | |
| 46 | <ul> | |
| 47 | <li>context-, argument- and attribute parsers | |
| 48 | <li>parsing and printing translations | |
| 49 | <li>methods | |
| 50 | </ul> | |
| 51 | <li>Tactical Reasoning | |
| 52 | <ul> | |
| 53 | <li>declarations | |
| 54 | <li>structured proofs | |
| 55 | </ul> | |
| 56 | <li>Advanced Stuff | |
| 57 | <ul> | |
| 58 | <li>user-space type-systems | |
| 59 | <li>typing algorithms | |
| 60 | <li>external applications | |
| 61 | </ul> | |
| 62 | </ul> | |
| 63 | <P> | |
| 64 | ||
| 65 | Please help us to expand on this list. | |
| 66 | ||
| 67 | <H3>We need You</H3> | |
| 68 | ||
| 32 | 69 | We need help for accomplishing this tutorial. If you are familiar with the | 
| 70 | ML-level of Isabelle, please get in contact with us (see addresses below). If you | |
| 25 | 71 | are not familiar, but like to know more about the bits and pieces that make | 
| 72 | up the Isabelle code, then let us know what you are interested in or what | |
| 73 | project you like to implement. Above all we like to help future users and | |
| 74 | developers of Isabelle; we do not want to end up with some "artificial documentation" | |
| 75 | that is of nobody's help. Also proofreading and feedback would be most | |
| 76 | appreciated. | |
| 77 | ||
| 576 | 78 | <H3>Contact</H3> | 
| 25 | 79 | |
| 576 | 80 | I am trying to stay on top of things, but no promises: | 
| 25 | 81 | |
| 82 | <ul> | |
| 465 | 83 | <li> <A HREF="http://nms.kcl.ac.uk/christian.urban/" target="_top">Christian Urban</A> (christian.urban at kcl ac uk) | 
| 25 | 84 | </ul> | 
| 85 | ||
| 86 | There is also the following mailing list that is subscribed by all developers | |
| 87 | and open for help, suggestions etc. about this project. | |
| 578 | 88 | |
| 89 | <ul> | |
| 90 | <li><A HREF="https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev">isabelle-dev@mailman46.in.tum.de</A> | |
| 91 | </ul> | |
| 579 | 92 | |
| 25 | 93 | |
| 94 | <H3>Repository</H3> | |
| 95 | ||
| 573 | 96 | A | 
| 615 | 97 | <A HREF="https://talisker.nms.kcl.ac.uk/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A> | 
| 98 | is available and you are very welcome to contribute to it. The current draft of the tutorial is <A HREF="https://talisker.nms.kcl.ac.uk/cgi-bin/repos.cgi/isabelle-cookbook/raw-file/tip/progtutorial.pdf" target="_top" onclick="pageTracker._trackPageview('tutorial');">here</A>. 
 | |
| 25 | 99 | |
| 100 | <H3>Stable Version</H3> | |
| 101 | ||
| 102 | There is no real stable version of the Programming Tutorial yet. If you need a version | |
| 448 
960cc8081e0a
updated
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
446diff
changeset | 103 | that is guaranteed to work with a stable version of Isabelle, then please get in touch with me | 
| 38 | 104 | (christian.urban at kcl ac uk). | 
| 25 | 105 | |
| 106 | ||
| 107 | <H3><A NAME="readers"></A>What early readers said:</H3> | |
| 108 | ||
| 299 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 109 | <p> | 
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 110 | <i> | 
| 332 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 111 | 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 | 112 | 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 | 113 | </i> | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 114 | |
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 115 | <p> | 
| 
37b2df329532
updated cookbook
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
299diff
changeset | 116 | <i> | 
| 299 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 117 | ...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 | 118 | </i> | 
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 119 | |
| 
7b5ec32a4c10
added comment
 Christian Urban <christian dot urban at kcl dot ac dot uk> parents: 
204diff
changeset | 120 | <p> | 
| 25 | 121 | <i> | 
| 137 | 122 | GREAT!!! That's exactly what I was looking for! (Thomas Genet, ISTIC/IRISA, 2012) | 
| 123 | </i> | |
| 124 | ||
| 125 | <p> | |
| 126 | <i> | |
| 25 | 127 | The tutorial really is quite nice. (Jeremy Avigad, CMU, 2011) | 
| 128 | </i> | |
| 129 | ||
| 130 | <p> | |
| 131 | <i> | |
| 132 | By the way, thanks for the Isabelle Cookbook, it's really helpful to | |
| 133 | start with Isabelle/ML. (Mathieu Giorgino, 2011) | |
| 134 | </i> | |
| 135 | ||
| 136 | <p> | |
| 137 | <i> | |
| 138 | Great! This seems to have a lot of the missing pieces I couldn't find | |
| 139 | in the tutorial and reference manual. (Kevin Van Horn, 2011) | |
| 140 | </i> | |
| 141 | ||
| 142 | <p> | |
| 143 | <i> | |
| 144 | I've been fighting for hours trying to derive some theorems automatically, | |
| 145 | until Florian told me I should try using conversions and then I read the Cookbook | |
| 146 | section and it solved my problem. The example with abs_conv in particular was | |
| 147 | particularly illuminating. Thanks! (Jasmin Blanchette, TU Munich, 2010) | |
| 148 | </i> | |
| 149 | ||
| 150 | <p> | |
| 151 | <i> The cook book seems really helpful, if not even exactly what I need. | |
| 152 | (Nils Jähnig, FU Berlin, 2010)</i> | |
| 153 | ||
| 154 | <p> | |
| 155 | <i>The Programming Tutorial has helped me tremendously to get familiar with | |
| 156 | Isabelle, which I used in my bachelor thesis about the type-inference algorithm | |
| 157 | in Isabelle. (Dmitriy Traytel, TU Munich, 2010)</i> | |
| 158 | ||
| 159 | <p> | |
| 160 | <i>I've already pointed a couple of PhD students at the programming tutorial, and | |
| 161 | they've already found it to be a great place to start with Isabelle | |
| 162 | programming. (Lucas Dixon, University of Edinburgh, 2009)</i> | |
| 163 | ||
| 164 | <p> | |
| 165 | <i>The Isabelle Programming Tutorial is great! I finally learned how to add | |
| 166 | new keywords and how to parse outer syntax! (Amine Chaieb, University of Cambridge)</i> | |
| 167 | ||
| 168 | <p> | |
| 169 | <i>I felt the programming tutorial was very clear and comprehensible. I'm | |
| 170 | toying with actually getting back to Isabelle again. Thanks to | |
| 171 | everyone involved in the documentation project. I really think it | |
| 172 | is worthwhile. (Tom Ridge, University of Cambridge, 2009)</i> | |
| 173 | ||
| 174 | <p> | |
| 479 | 175 | <i>I learned from the tutorial how to deal with fresh variables and also which function to use for applying substitutions that are generated by unification. | 
| 25 | 176 | (Lukas Bulwahn, TU Munich, 2009)</i> | 
| 177 | ||
| 479 | 178 | |
| 25 | 179 | <p> | 
| 180 | <i> What a great resource! I wish I'd had this when I wrote my first | |
| 478 | 181 | parser in December 2008. (Timothy Bourke, UNSW Sydney, 2009)</i> | 
| 25 | 182 | |
| 183 | </td> | |
| 184 | </tr> | |
| 185 | </tbody> | |
| 186 | </table> | |
| 187 | </div> | |
| 479 | 188 | |
| 25 | 189 | |
| 574 | 190 | |
| 25 | 191 | </body> | 
| 137 | 192 | </html> | 
| 479 | 193 |