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
391
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 99
<A HREF="http://www21.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A>
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 100
is available and you are very welcome to contribute to it. The current draft of the tutorial is <A HREF="http://www21.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook/raw-file/tip/progtutorial.pdf" target="_top" onclick="pageTracker._trackPageview('tutorial');">here</A>.
25
+ − 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
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 111
<p>
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 112
<i>
332
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 113
My path towards HOL was from HOL Light, to HOL4, to Isabelle/HOL and
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 114
the Cookbook was essential for the last step (Piotr Trojanek, University of Bristol, 2014)
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 115
</i>
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 116
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 117
<p>
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 118
<i>
299
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 119
...and the Isabelle/ML Cookbook are valuable resources (Lars Hupel, 2014)
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 120
</i>
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 121
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
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>
391
Christian Urban <christian dot urban at kcl dot ac dot uk>
diff
changeset
+ − 199
<!-- hhmts start --> Last modified: Mon Feb 15 23:27:57 CET 2016 <!-- hhmts end -->
25
+ − 200
+ − 201
</body>
137
+ − 202
</html>