<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Nominal Methods Group</title>
<link rel="stylesheet" href="nominal.css">
</head>
<body>
<div align="center">
<table width="95%">
<tbody>
<tr>
<td align="left">
<H1>Aim</H1>
There is already quite good documentation available for users to learn
how to interact with Isabelle and to use it for proving
theorems (see <A HREF="http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html" target="_top">here</A>).
However, the entry barrier for users to program on the ML-level of Isabelle
is still unbearably high. In this project we want to change this state
of affairs by providing a <i>tutorial</i> about ML-coding in Isabelle. The
German Research Council has provided us with €26,000 to be spend
over the next three years on this project. We invite the Isabelle community to
participate in this project and benefit from the money (and of course
also to reap the benefits from the better documentation).
<p>
The main aim is to generate a tutorial for people who want to have
a look under the <i>hood</i> of Isabelle. At its centre it describes the
implementation of a simple prototypical Isabelle package (we describe
a simplified version of the inductive package). We hope by
documenting every aspect of this package that in the future you will
be able to modify, extend and adapt this package for your own purposes,
see how developers code in Isabelle and understand better Isabelle's
idiosyncrasies. As a result you will be able to quickly produce code
for your own needs and will be able to participate in keeping Isabelle
alive in the long run.
<p>
Specific topics of the tutorial we have not yet covered:
<P>
<ul>
<li> First Steps
<ul>
<li>theories, contexts and local theories
<li>morphisms
<li>name spaces
</ul>
<li>Parsing
<ul>
<li>context-, argument- and attribute parsers
<li>parsing and printing translations
<li>methods
</ul>
<li>Tactical Reasoning
<ul>
<li>declarations
<li>structured proofs
</ul>
<li>Advanced Stuff
<ul>
<li>user-space type-systems
<li>typing algorithms
<li>external applications
</ul>
</ul>
<P>
Please help us to expand on this list.
<H3>We need You</H3>
We need help for accomplishing this tutorial. If you are familiar with the ML-level of
Isabelle, then we can offer money in order that you write small parts of
this documentation. Please get in contact with us (see addresses below). If you
are not familiar, but like to know more about the bits and pieces that make
up the Isabelle code, then let us know what you are interested in or what
project you like to implement. Above all we like to help future users and
developers of Isabelle; we do not want to end up with some "artificial documentation"
that is of nobody's help. Also proofreading and feedback would be most
appreciated.
<H3>People to contact</H3>
The project is managed by
<ul>
<li> <A HREF="http://www4.in.tum.de/~urbanc/" target="_top">Christian Urban</A> (urbanc at in tum de)
<li> <A HREF="http://www.cl.cam.ac.uk/~lp15/" target="_top">Larry Paulson</A> (lp15 at cam ac uk)
<li> <A HREF="http://nicta.com.au/people/norrishm" target="_top">Michael Norrish</A>
(Michael.Norrish at nicta com au)
</ul>
There is also the following mailing list that is subscribed by all developers
and open for help, suggestions etc. about this project.
<p>
<A HREF="https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev">
isabelle-dev@mailbroy.informatik.tu-muenchen.de</A>
<BR>
<p>
<H3>Repository</H3>
A preliminary
<A HREF="http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook" target="_top">repository</A>
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>.
<H3>Stable Version</H3>
There is no real stable version of the Programming Tutorial yet. If you need a version
that is guaranteed to work with Isabelle 2009, then please get in touch with me
(urbanc at in tum de).
<H3><A NAME="readers"></A>What early readers said:</H3>
<i>
The tutorial really is quite nice. (Jeremy Avigad, CMU, 2011)
</i>
<p>
<i>
By the way, thanks for the Isabelle Cookbook, it's really helpful to
start with Isabelle/ML. (Mathieu Giorgino, 2011)
</i>
<p>
<i>
Great! This seems to have a lot of the missing pieces I couldn't find
in the tutorial and reference manual. (Kevin Van Horn, 2011)
</i>
<p>
<i>
I've been fighting for hours trying to derive some theorems automatically,
until Florian told me I should try using conversions and then I read the Cookbook
section and it solved my problem. The example with abs_conv in particular was
particularly illuminating. Thanks! (Jasmin Blanchette, TU Munich, 2010)
</i>
<p>
<i> The cook book seems really helpful, if not even exactly what I need.
(Nils Jähnig, FU Berlin, 2010)</i>
<p>
<i>The Programming Tutorial has helped me tremendously to get familiar with
Isabelle, which I used in my bachelor thesis about the type-inference algorithm
in Isabelle. (Dmitriy Traytel, TU Munich, 2010)</i>
<p>
<i>I've already pointed a couple of PhD students at the programming tutorial, and
they've already found it to be a great place to start with Isabelle
programming. (Lucas Dixon, University of Edinburgh, 2009)</i>
<p>
<i>The Isabelle Programming Tutorial is great! I finally learned how to add
new keywords and how to parse outer syntax! (Amine Chaieb, University of Cambridge)</i>
<p>
<i>I felt the programming tutorial was very clear and comprehensible. I'm
toying with actually getting back to Isabelle again. Thanks to
everyone involved in the documentation project. I really think it
is worthwhile. (Tom Ridge, University of Cambridge, 2009)</i>
<p>
<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.
(Lukas Bulwahn, TU Munich, 2009)</i>
<p>
<i> What a great resource! I wish I'd had this when I wrote my first
parser in December 2008.
(Timothy Bourke, UNSW Sydney, 2009)</i>
</td>
</tr>
</tbody>
</table>
</div>
<HR>
<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'" />
</a>
<p>
<P>
<a href="http://validator.w3.org/check/referer" target="_top">[Validate this page.]</a>
<!-- hhmts start -->
Last modified: Mon Aug 1 09:09:07 BST 2011
<!-- hhmts end -->
<!--script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-4143458-3");
pageTracker._trackPageview();
} catch(err) {}</script -->
</body>
</html>