# HG changeset patch
# User Christian Urban 2011/12 MSc Individual Projects
 Supervisor: Christian Urban
 
-Email: @kcl   Office: Strand Building S6.30
-If you are interested in a project, please send me email and we can discuss details.
 
+Email: christian dot urban at kcl dot ac dot uk,  Office: Strand Building S6.30
+If you are interested in a project, please send me an email and we can discuss details. Please include
+a short description about your programming and computer science background in your first email. Thanks.
 
 
 
 
[CU1] Implementing a SAT-Solver in a Functional Programming Language
@@ -199,14 +200,14 @@
   Lexing and parsing are usually done using automated tools, like 
   lex and 
   yacc. The problem 
-  with them is that they "work when they work", but if not, they are
+  with them is that they "work when they work", but if they do not, then they are
   black boxes
   which are difficult to debug and change. They are really quite 
-  clumsy, to the point that Might wrote a paper titled 
+  clumsy to the point that Might and Darais wrote a paper titled 
   "Yacc is dead".
- There is simple algorithm for regular expression matching (that is lexing). + There is a simple algorithm for regular expression matching (that is lexing). This algorithm was introduced by Brzozowski in 1964. It is based on the notion of derivatives of regular expressions and @@ -239,14 +240,18 @@ Description: Solving the problem of deciding equivalence of regular expressions can be used to decide a number of problems in automated reasoning. Therefore one likes to - have a method for equivalence checking that is as fast as possible. + have a method for equivalence checking that is as fast as possible. There have + been a number of algorithms proposed in the past, but one based on a method + by Antimirov and Mosses seems relatively simple and easy to implement.
Tasks: The task is to implement the algorithm by Antimirov and Mosses and compare it to other methods. Hopefully the algorithm can be tuned to be faster than other - methods. + methods. The project can be carried out in almost all programming languages, but + as usual functional programming languages such Scala, ML, Haskell have an edge + for this kind of problems.
@@ -254,6 +259,8 @@ Central to this project is the paper here. Other methods have been described, for example, here. + A relatively complicated method, based on automata, is described + here.
@@ -263,7 +270,7 @@-Last modified: Fri Dec 2 03:26:32 GMT 2011 +Last modified: Tue Dec 6 08:41:27 GMT 2011 [Validate this page.]