| author | Christian Urban <urbanc@in.tum.de> | 
| Fri, 02 Dec 2011 17:37:46 +0000 | |
| changeset 45 | eb3048ee8858 | 
| parent 44 | 790a40046dc8 | 
| child 47 | e0d36fd0a8fd | 
| permissions | -rw-r--r-- | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 1 | <?xml version="1.0" encoding="utf-8"?> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 2 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 3 | <HEAD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 4 | <TITLE>Christian Urban</TITLE> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 5 | <BASE HREF="http://www.inf.kcl.ac.uk/staff/urbanc/"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 6 | <script type="text/javascript" src="striper.js"></script> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 7 | <link rel="stylesheet" href="nominal.css"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 8 | </HEAD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 9 | <BODY TEXT="#000000" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 10 | BGCOLOR="#4169E1" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 11 | LINK="#0000EF" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 12 | VLINK="#51188E" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 13 | ALINK="#FF0000" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 14 |       ONLOAD="striper('ul','striped','li','first,second')">
 | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 15 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 16 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 17 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 18 | <TABLE WIDTH="100%" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 19 | BGCOLOR="#4169E1" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 20 | BORDER="0" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 21 | FRAME="border" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 22 | CELLPADDING="10" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 23 | CELLSPACING="2" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 24 | RULES="all"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 25 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 26 | <TR> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 27 | <TD BGCOLOR="#FFFFFF" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 28 | WIDTH="75%" | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 29 | VALIGN="TOP"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 30 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 31 | <H2>2011/12 MSc Individual Projects</H2> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 32 | <H4>Supervisor: Christian Urban</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 33 | <H4>Email: @kcl Office: Strand Building S6.30</H4> | 
| 44 | 34 | <H4>If you are interested in a project, please send me email and we can discuss details.</H4> | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 35 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 36 | <ul class="striped"> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 37 | <li> <H4>[CU1] Implementing a SAT-Solver in a Functional Programming Language</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 38 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 39 | <p><B>Description:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 40 | SAT-solver search for satisfying assignments of boolean formulas. Although this | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 41 | is a computationally hard problem (<A HREF="http://en.wikipedia.org/wiki/NP-complete">NP-complete</A>), | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 42 | modern SAT-solvers routinely solve boolean formulas with 100,000 and more variables. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 43 | Application areas of SAT-solver are manifold: they range from hardware verification to | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 44 | Sudoku solvers. Every 2 years there is a competition of the best SAT-solvers in the world.</p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 45 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 46 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 47 | Most SAT-solvers are written in C. The aim of this project is to design and implement | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 48 | a SAT-solver in a functional programming language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 49 | <A HREF="http://en.wikipedia.org/wiki/Standard_ML">ML</A>, but | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 50 | <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 51 | <A HREF="http://www.scala-lang.org/">Scala</A>, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 52 | <A HREF="http://caml.inria.fr/">OCaml</A>, ... are also OK). Starting point is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 53 | the open source SAT-solver MiniSat (available <A HREF="http://minisat.se/Main.html">here</A>). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 54 | The long-term hope is that your implementation becomes part of the interactive theorem prover | 
| 44 | 55 | <A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>. For this | 
| 56 | the SAT-solver needs to be implemented in ML.</p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 57 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 58 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 59 | <B>Tasks:</B> Understand MiniSat, design and code a SAT-solver in ML, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 60 | empirical evaluation and tuning of your code.</p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 61 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 62 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 63 | <B>Literature:</B> A good starting point for reading about SAT-solving is the handbook | 
| 44 | 64 | article <A HREF="http://www.cs.cornell.edu/gomes/papers/SATSolvers-KR-Handbook.pdf">here</A>. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 65 | MiniSat is explained <A HREF="http://minisat.se/downloads/MiniSat.pdf">here</A> and | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 66 | <A HREF="http://minisat.se/Papers.html">here</A>. The standard reference for ML is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 67 | <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 68 | of this book for the duration of the project). The best free implementation of ML is | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 69 | <A HREF="http://www.polyml.org/">PolyML</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 70 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 71 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 72 | <li> <H4>[CU2] A Compiler for System F</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 73 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 74 | <p><b>Description:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 75 | <A HREF="http://en.wikipedia.org/wiki/System_F">System F</A> is a mini programming language, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 76 | which is often used to study the theory behind programming languages, but is also used as | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 77 | a core-language of functional programming languages (for example | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 78 | <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>). The language is small | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 79 | enough to implement in a reasonable amount of time a compiler to an | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 80 | idealised assembly language (preferably | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 81 | <A HREF="http://en.wikipedia.org/wiki/Typed_assembly_language">TAL</A>) or an abstract machine. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 82 | This has been explained in full detail in a PhD-thesis by Louis-Julien Guillemette | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 83 | (available in English <A HREF="https://papyrus.bib.umontreal.ca/jspui/bitstream/1866/3454/6/Guillemette_Louis-Julien_2009_these.pdf">here</A>). He used <A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A> | 
| 44 | 84 | as his implementation language. Other choices are possible. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 85 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 86 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 87 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 88 | <b>Tasks:</b> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 89 | Read the relevant literature and implement the various components of a compiler | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 90 | (parser, intermediate languages, simulator for the idealised assembly language). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 91 | This project is for a good student with an interest in programming languages, | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 92 | who can also translate abstract ideas into code. If it is too difficult, the project can | 
| 44 | 93 | be easily scaled down to the | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 94 | <A HREF="http://en.wikipedia.org/wiki/Simply_typed_lambda_calculus">simply-typed | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 95 | lambda calculus</A> (which is simpler than | 
| 44 | 96 | System F) or to cover only some components of the compiler. | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 97 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 98 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 99 | <p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 100 | <B>Literature:</B> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 101 | The <A HREF="https://papyrus.bib.umontreal.ca/jspui/bitstream/1866/3454/6/Guillemette_Louis-Julien_2009_these.pdf">PhD-thesis</A> by Louis-Julien Guillemette is required reading. A shorter | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 102 | paper about this subject is available <A HREF="http://www.iro.umontreal.ca/~monnier/icfp08.pdf">here</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 103 | A good starting point for TAL is <A HREF="http://www.cs.cornell.edu/talc/papers/tal-tr.pdf">here</A>. | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 104 | There is a lot of literature about compilers | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 105 | (for example <A HREF="http://www.cs.princeton.edu/~appel/papers/cwc.html">this book</A> - | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 106 | I can lend you my copy for the duration of the project). | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 107 | </p> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 108 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 109 | <li> <H4>[CU3] Sorting Suffixes</H4> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 110 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 111 | <p><b>Description:</b> Given a string, take all its suffixes, and sort them. | 
| 44 | 112 | This is often called <A HREF="http://en.wikipedia.org/wiki/Suffix_array">suffix | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 113 | array sorting</A>. It sound simple, but there are some difficulties. | 
| 44 | 114 | The naive algorithm would generate all suffix strings and sort them | 
| 115 | using a standard sorting algorithm, for example | |
| 116 | <A HREF="http://en.wikipedia.org/wiki/Quicksort">quicksort</A>. | |
| 117 | The problem is that | |
| 118 | this algorithm is not optimal for suffix sorting: it does not take into account that you sort | |
| 119 | suffixes and it also takes a quadratic amount of space. This is a | |
| 120 | huge problem if you have to sort strings of several Megabytes or even Gigabytes, | |
| 121 | as happens often in biotech and DNA data mining. Suffix sorting is also a crucial operation for the | |
| 122 | <A HREF="http://en.wikipedia.org/wiki/Burrows?Wheeler_transform">Burrows-Wheeler transform</A> | |
| 123 | on which the data compression algorithm of the popular | |
| 124 | <A HREF="http://en.wikipedia.org/wiki/Bzip2">bzip2</A> | |
| 125 | program is based. | |
| 126 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 127 | |
| 44 | 128 | <p> | 
| 129 | There are more efficient algorithms for suffix sorting, for example | |
| 130 | <A HREF="http://books.google.co.uk/books?id=Pn1sHToYf9oC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false">here</A> and | |
| 131 | <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. | |
| 132 | However the most space efficient algorithm for suffix sorting | |
| 133 | (<A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">here</A>) | |
| 134 | is horrendously complicated. Your task would be to understand it, and then implement it. | |
| 135 | </p> | |
| 136 | ||
| 137 | <p> | |
| 138 | <B>Tasks:</B> | |
| 139 | Start by reading the literature about suffix sorting. Then work through the | |
| 140 | 12-page <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">paper</A> | |
| 141 | explaining the horrendously complicated algorithm and implement it. | |
| 142 | Time permitting the work can include an implementation of the Burrows-Wheeler | |
| 143 | data compression. This project is for a good student, who likes to study in-depth | |
| 144 | algorithms. The project can be carried out in almost all programming languages, | |
| 145 | including C, Java, Scala, ML, Haskell and so on. | |
| 146 | </p> | |
| 147 | ||
| 148 | <p> | |
| 149 | <B>Literature:</B> A good starting point for reading about suffix sorting is the | |
| 150 | <A HREF="http://books.google.co.uk/books?id=Pn1sHToYf9oC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false">book</A> by Crochemore. Two simple algorithms are also described | |
| 151 | <A HREF="http://ls11-www.cs.uni-dortmund.de/people/rahmann/teaching/ss2008/AlgorithmenAufSequenzen/09-walk-bwt.pdf">here</A>. The main literature is the 12-page | |
| 152 | <A HREF="http://www.cs.rutgers.edu/~muthu/fm072.pdf">article</A> about in-place | |
| 153 | suffix sorting. The Burrows-Wheeler data compression is described | |
| 154 | <A HREF="http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf">here</A>. | |
| 155 | </p> | |
| 156 | ||
| 157 | <li> <H4>[CU4] Simplification with Equivalence Relations in the Isabelle Theorem Prover</H4> | |
| 158 | <p> | |
| 159 | <B>Description:</B> | |
| 160 | In this project you have to extend the simplifier of the | |
| 161 | <A HREF="http://isabelle.in.tum.de/">Isabelle theorem prover</A>. | |
| 162 | The simplifier is an important reasoning tool of this theorem prover: it | |
| 163 | replaces a term by another term that can be proved to be equal to it. However, | |
| 164 | currently the simplifier only rewrites terms according to equalities. | |
| 165 | Assuming ≈ is an equivalence relation, the simplifier should also be able | |
| 166 | to rewrite terms according to ≈. Since equivalence relations occur | |
| 167 | frequently in automated reasoning, this extension would make the simplifier | |
| 168 | more powerful and useful. The hope is that your code can go into the | |
| 169 | code base of Isabelle. | |
| 170 | </p> | |
| 171 | ||
| 172 | <p> | |
| 173 | <B>Tasks:</B> | |
| 174 | Read the <A HREF="http://www.springerlink.com/content/x7041m1807738832/">paper</A> | |
| 175 | about rewriting with equivalence relations. Get familiar with parts of the | |
| 176 | implementation of Isabelle (I will be of much help as I can). Implement | |
| 177 | the extension. This project is suitable for a student with a bit of math background. | |
| 178 | It requires knowledge of the functional programming language ML, which | |
| 179 | however can be learned quickly provided you have already written code | |
| 180 | in another functional programming language. | |
| 181 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 182 | |
| 44 | 183 | <p> | 
| 184 | <B>Literature:</B> A good starting point for reading about rewriting modulo equivalences | |
| 185 | is the paper <A HREF="http://www.springerlink.com/content/x7041m1807738832/">here</A>, | |
| 186 | which uses the ACL2 theorem prover. The implementation of the Isabelle theorem | |
| 187 | prover is described in much detail in this | |
| 188 | <A HREF="http://www.inf.kcl.ac.uk/staff/urbanc/Cookbook/">programming tutorial</A>. | |
| 189 | The standard reference for ML is | |
| 190 | <A HREF="http://www.cl.cam.ac.uk/~lp15/MLbook/">here</A> (I can lend you my copy | |
| 191 | of this book for the duration of the project). | |
| 192 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 193 | |
| 44 | 194 | |
| 195 | <li><h4>[CU5] Lexing and Parsing with Derivatives</h4> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 196 | |
| 44 | 197 | <p> | 
| 198 | <B>Description:</B> | |
| 199 | Lexing and parsing are usually done using automated tools, like | |
| 200 | <A HREF="http://en.wikipedia.org/wiki/Lex_programming_tool">lex</A> and | |
| 201 | <A HREF="http://en.wikipedia.org/wiki/Yacc">yacc</A>. The problem | |
| 202 | with them is that they "work when they work", but if not, they are | |
| 203 | <A HREF="http://en.wikipedia.org/wiki/Black_box">black boxes</A> | |
| 204 | which are difficult to debug and change. They are really quite | |
| 205 | clumsy, to the point that Might wrote a paper titled | |
| 206 | "<A HREF="http://arxiv.org/pdf/1010.5023v1">Yacc is dead</A>".</p> | |
| 207 | ||
| 208 | <p> | |
| 209 | There is simple algorithm for regular expression matching (that is lexing). | |
| 210 | This algorithm was introduced by | |
| 211 | <A HREF="http://en.wikipedia.org/wiki/Janusz_Brzozowski_(computer_scientist)">Brzozowski</A> | |
| 212 | in 1964. It is based on the notion of derivatives of regular expressions and | |
| 213 | has proved <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">useful</A> | |
| 214 | for practical lexing. Last year the notion of derivatives was extended by | |
| 215 | <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">Might et al</A> | |
| 216 | to <A HREF="http://en.wikipedia.org/wiki/Context-free_grammar">context free grammars</A> | |
| 217 | and parsing. | |
| 218 | </p> | |
| 219 | ||
| 220 | <p> | |
| 221 | <B>Tasks:</B> Get familiar with the two algorithms and implement them. Regular | |
| 222 | expression matching is relatively simple; parsing with derivatives is the | |
| 223 | harder part. Therefore you should empirically evaluate this part and | |
| 224 | tune your implementation. The project can be carried out in almost all programming | |
| 225 | languages, including C, Java, Scala, ML, Haskell and so on. | |
| 226 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 227 | |
| 44 | 228 | <p> | 
| 229 | <B>Literature:</B> This | |
| 230 | <A HREF="http://www.cl.cam.ac.uk/~so294/documents/jfp09.pdf">paper</A> | |
| 231 | gives a modern introduction to derivative based lexing. Derivative-based | |
| 232 | parsing is explained <A HREF="http://arxiv.org/pdf/1010.5023v1">here</A> | |
| 233 | and <A HREF="http://matt.might.net/papers/might2011derivatives.pdf">here</A>. | |
| 234 | </p> | |
| 235 | ||
| 236 | <li> <H4>[CU6] Equivalence Checking of Regular Expressions using the Method by Antimirov and Mosses</H4> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 237 | |
| 44 | 238 | <p> | 
| 239 | <B>Description:</B> | |
| 240 | Solving the problem of deciding equivalence of regular expressions can be used | |
| 241 | to decide a number of problems in automated reasoning. Therefore one likes to | |
| 242 | have a method for equivalence checking that is as fast as possible. | |
| 243 | </p> | |
| 244 | ||
| 245 | <p> | |
| 246 | <B>Tasks:</B> | |
| 247 | The task is to implement the algorithm by Antimirov and Mosses and compare it to | |
| 248 | other methods. Hopefully the algorithm can be tuned to be faster than other | |
| 249 | methods. | |
| 250 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 251 | |
| 44 | 252 | <p> | 
| 253 | <B>Literature:</B> | |
| 254 | Central to this project is the paper <A HREF="http://www.dcc.fc.up.pt/~nam/publica/ijcs08.pdf">here</A>. | |
| 255 | Other methods have been described, for example, | |
| 256 | <A HREF="http://www4.informatik.tu-muenchen.de/~krauss/papers/rexp.pdf">here</A>. | |
| 257 | </p> | |
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 258 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 259 | </ul> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 260 | </TD> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 261 | </TR> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 262 | </TABLE> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 263 | |
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 264 | <P><!-- Created: Tue Mar 4 00:23:25 GMT 1997 --> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 265 | <!-- hhmts start --> | 
| 44 | 266 | Last modified: Fri Dec 2 03:26:32 GMT 2011 | 
| 43 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 267 | <!-- hhmts end --> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 268 | <a href="http://validator.w3.org/check/referer">[Validate this page.]</a> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 269 | </BODY> | 
| 
a6c077ba850a
added initial version of projects
 Christian Urban <urbanc@in.tum.de> parents: diff
changeset | 270 | </HTML> |