| 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>  |