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