# 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.]