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