author | Christian Urban <urbanc@in.tum.de> |
Thu, 01 Dec 2011 23:36:19 +0000 | |
changeset 43 | a6c077ba850a |
child 44 | 790a40046dc8 |
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> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
34 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
35 |
<ul class="striped"> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
<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
|
37 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
38 |
<p><B>Description:</b> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
39 |
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
|
40 |
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
|
41 |
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
|
42 |
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
|
43 |
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
|
44 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
45 |
<p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
46 |
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
|
47 |
a SAT-solver in a functional programming language (preferably |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
48 |
<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
|
49 |
<A HREF="http://haskell.org/haskellwiki/Haskell">Haskell</A>, |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
50 |
<A HREF="http://www.scala-lang.org/">Scala</A>, |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
51 |
<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
|
52 |
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
|
53 |
The long-term hope is that your implementation becomes part of the interactive theorem prover |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
54 |
<A HREF="http://www.cl.cam.ac.uk/research/hvg/isabelle/">Isabelle</A>.</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
55 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
56 |
<p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
57 |
<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
|
58 |
empirical evaluation and tuning of your code.</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
59 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
60 |
<p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
61 |
<B>Literature:</B> A good starting point for reading about SAT-solving is the handbook |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
62 |
article in <A HREF="http://www.cs.cornell.edu/gomes/papers/SATSolvers-KR-Handbook.pdf">here</A>. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
63 |
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
|
64 |
<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
|
65 |
<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
|
66 |
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
|
67 |
<A HREF="http://www.polyml.org/">PolyML</A>. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
68 |
</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
69 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
70 |
<li> <H4>[CU2] A Compiler for System F</H4> |
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 |
<p><b>Description:</b> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
73 |
<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
|
74 |
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
|
75 |
a core-language of functional programming languages (for example |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
76 |
<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
|
77 |
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
|
78 |
idealised assembly language (preferably |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
79 |
<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
|
80 |
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
|
81 |
(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> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
82 |
as his implementation language. Other choices are of course possible. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
83 |
</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
84 |
|
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 |
<b>Tasks:</b> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
87 |
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
|
88 |
(parser, intermediate languages, simulator for the idealised assembly language). |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
89 |
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
|
90 |
who can also translate abstract ideas into code. If it is too difficult, the project can |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
91 |
easily be scaled back to the |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
92 |
<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
|
93 |
lambda calculus</A> (which is simpler than |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
94 |
System F) or only some components of the compiler are implemented. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
95 |
</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
96 |
|
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 |
<B>Literature:</B> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
99 |
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
|
100 |
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
|
101 |
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
|
102 |
There is a lot of literature about compilers |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
103 |
(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
|
104 |
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
|
105 |
</p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
106 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
107 |
<li> <H4>[CU3] Sorting Suffixes</H4> |
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 |
<p><b>Description:</b> Given a string, take all its suffixes, and sort them. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
110 |
This is often also called <A HREF="http://en.wikipedia.org/wiki/Suffix_array">suffix |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
111 |
array sorting</A>. It sound simple, but there are some difficulties. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
112 |
The naive algorithm would generate all (suffix) strings and sort them |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
113 |
using a standard sorting algorithm, for example quick-sort. Unfortunately, |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
114 |
this algorithm is not optimal (it does not take into account that you sort |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
115 |
suffixes) and it also takes an quadratic amount of space, which is a |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
116 |
problem if you have to sort strings of several Mega-Bytes or even Giga-Bytes |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
117 |
(happens often in biotech DNA information.<p> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
118 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
119 |
Aim: the notion of index on a text is central in many methods for text |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
120 |
processing and for the management of textual databases. Suffix Arrays is one |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
121 |
of these methods based on the sorted list of suffixes of the input text. The |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
122 |
project consists in implementing a linear-time sorting algorithm and other |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
123 |
elements related to Suffix Array construction and to Burrows-Wheeler text |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
124 |
compression. Plan: study of the sorting problem in the literature starting |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
125 |
with the reference below. Implementation of the sorting algorithm and the |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
126 |
LCP computation to obtain a Suffix Array construction software. Then, using |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
127 |
this work, implementation of the algorithms described in the second |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
128 |
reference below. Deliverables: report, suffix sorting and associated |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
129 |
software and their documentation. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
130 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
131 |
References: |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
132 |
J. Kärkkäinen and P. Sanders, Simple linear work suffix array construction, in ICALP'03, LNCS 2719, Spinger, 2003, pp. 943--955. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
133 |
M. Crochemore, J. Désarménien and D. Perrin, A note on the Burrows-Wheeler transformation, Theoret. Comput. Sci., 2005, to appear. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
134 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
135 |
There is a horrendously complicated algorithm for solving these problems. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
136 |
Your task would be to understand it, and then implement it. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
137 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
138 |
<li> <H5>[CU 4] Simplification modulo Equivalences in Isabelle</H5> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
139 |
In this project you have to extend the simplifier of the Isabelle theorem |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
140 |
prover. Currently, the simplifier only rewrites terms according to equalities |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
141 |
l = r. Provided ~ is an equivalence relation, the simplifier should also |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
142 |
be able to rewrite terms according to equivalences of the form l ~ r. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
143 |
This project requires knowledge of the functional programming language ML. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
144 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
145 |
<li><h5>[CU 5] Parsing with Derivatives</h5> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
146 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
147 |
Derivatives can be used to implement a regular expression matcher. In |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
148 |
this project you have to apply this technique to parsing. The starting |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
149 |
point for this project is the paper "Yacc is Dead" by Matthew Might. |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
150 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
151 |
<li> <H5>[CU 6] Equivalence Checking of Regular Expression using Antimirov's Method<H5> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
152 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
153 |
</ul> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
154 |
</TD> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
155 |
</TR> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
156 |
</TABLE> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
157 |
|
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
158 |
<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
|
159 |
<!-- hhmts start --> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
160 |
Last modified: Thu Dec 1 18:10:37 GMT 2011 |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
161 |
<!-- hhmts end --> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
162 |
<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
|
163 |
</BODY> |
a6c077ba850a
added initial version of projects
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
164 |
</HTML> |