author | Christian Urban <urbanc@in.tum.de> |
Tue, 11 Jun 2019 23:17:29 +0100 | |
changeset 578 | fbebd7a62b84 |
parent 577 | 785abce4b982 |
child 579 | 58c09367912e |
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> |
|
25 | 92 |
<BR> |
93 |
<p> |
|
94 |
||
95 |
<H3>Repository</H3> |
|
96 |
||
573 | 97 |
A |
480 | 98 |
<A HREF="http://talisker.inf.kcl.ac.uk/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A> |
478 | 99 |
is available and you are very welcome to contribute to it. The current draft of the tutorial is <A HREF="http://talisker.inf.kcl.ac.uk/cgi-bin/repos.cgi/isabelle-cookbook/raw-file/tip/progtutorial.pdf" target="_top" onclick="pageTracker._trackPageview('tutorial');">here</A>. |
25 | 100 |
|
101 |
<H3>Stable Version</H3> |
|
102 |
||
103 |
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:
446
diff
changeset
|
104 |
that is guaranteed to work with a stable version of Isabelle, then please get in touch with me |
38 | 105 |
(christian.urban at kcl ac uk). |
25 | 106 |
|
107 |
||
108 |
<H3><A NAME="readers"></A>What early readers said:</H3> |
|
109 |
||
299
7b5ec32a4c10
added comment
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
204
diff
changeset
|
110 |
<p> |
7b5ec32a4c10
added comment
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
204
diff
changeset
|
111 |
<i> |
332
37b2df329532
updated cookbook
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
299
diff
changeset
|
112 |
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:
299
diff
changeset
|
113 |
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:
299
diff
changeset
|
114 |
</i> |
37b2df329532
updated cookbook
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
299
diff
changeset
|
115 |
|
37b2df329532
updated cookbook
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
299
diff
changeset
|
116 |
<p> |
37b2df329532
updated cookbook
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
299
diff
changeset
|
117 |
<i> |
299
7b5ec32a4c10
added comment
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
204
diff
changeset
|
118 |
...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:
204
diff
changeset
|
119 |
</i> |
7b5ec32a4c10
added comment
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
204
diff
changeset
|
120 |
|
7b5ec32a4c10
added comment
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
204
diff
changeset
|
121 |
<p> |
25 | 122 |
<i> |
137 | 123 |
GREAT!!! That's exactly what I was looking for! (Thomas Genet, ISTIC/IRISA, 2012) |
124 |
</i> |
|
125 |
||
126 |
<p> |
|
127 |
<i> |
|
25 | 128 |
The tutorial really is quite nice. (Jeremy Avigad, CMU, 2011) |
129 |
</i> |
|
130 |
||
131 |
<p> |
|
132 |
<i> |
|
133 |
By the way, thanks for the Isabelle Cookbook, it's really helpful to |
|
134 |
start with Isabelle/ML. (Mathieu Giorgino, 2011) |
|
135 |
</i> |
|
136 |
||
137 |
<p> |
|
138 |
<i> |
|
139 |
Great! This seems to have a lot of the missing pieces I couldn't find |
|
140 |
in the tutorial and reference manual. (Kevin Van Horn, 2011) |
|
141 |
</i> |
|
142 |
||
143 |
<p> |
|
144 |
<i> |
|
145 |
I've been fighting for hours trying to derive some theorems automatically, |
|
146 |
until Florian told me I should try using conversions and then I read the Cookbook |
|
147 |
section and it solved my problem. The example with abs_conv in particular was |
|
148 |
particularly illuminating. Thanks! (Jasmin Blanchette, TU Munich, 2010) |
|
149 |
</i> |
|
150 |
||
151 |
<p> |
|
152 |
<i> The cook book seems really helpful, if not even exactly what I need. |
|
153 |
(Nils Jähnig, FU Berlin, 2010)</i> |
|
154 |
||
155 |
<p> |
|
156 |
<i>The Programming Tutorial has helped me tremendously to get familiar with |
|
157 |
Isabelle, which I used in my bachelor thesis about the type-inference algorithm |
|
158 |
in Isabelle. (Dmitriy Traytel, TU Munich, 2010)</i> |
|
159 |
||
160 |
<p> |
|
161 |
<i>I've already pointed a couple of PhD students at the programming tutorial, and |
|
162 |
they've already found it to be a great place to start with Isabelle |
|
163 |
programming. (Lucas Dixon, University of Edinburgh, 2009)</i> |
|
164 |
||
165 |
<p> |
|
166 |
<i>The Isabelle Programming Tutorial is great! I finally learned how to add |
|
167 |
new keywords and how to parse outer syntax! (Amine Chaieb, University of Cambridge)</i> |
|
168 |
||
169 |
<p> |
|
170 |
<i>I felt the programming tutorial was very clear and comprehensible. I'm |
|
171 |
toying with actually getting back to Isabelle again. Thanks to |
|
172 |
everyone involved in the documentation project. I really think it |
|
173 |
is worthwhile. (Tom Ridge, University of Cambridge, 2009)</i> |
|
174 |
||
175 |
<p> |
|
479 | 176 |
<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 | 177 |
(Lukas Bulwahn, TU Munich, 2009)</i> |
178 |
||
479 | 179 |
|
25 | 180 |
<p> |
181 |
<i> What a great resource! I wish I'd had this when I wrote my first |
|
478 | 182 |
parser in December 2008. (Timothy Bourke, UNSW Sydney, 2009)</i> |
25 | 183 |
|
184 |
</td> |
|
185 |
</tr> |
|
186 |
</tbody> |
|
187 |
</table> |
|
188 |
</div> |
|
479 | 189 |
|
25 | 190 |
|
574 | 191 |
|
25 | 192 |
</body> |
137 | 193 |
</html> |
479 | 194 |