about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2011-03-28 14:52:26 +0000
committerDaniel Dunbar <daniel@zuster.org>2011-03-28 14:52:26 +0000
commit38bd464676c7bcc95d1207531b2a278b796c9866 (patch)
treeccf803212cbb6bb08e04af5a8e131c1afda7a15b
parentc9f5caf93780b4fe85f3582b1451f97ef4fb7267 (diff)
downloadklee-38bd464676c7bcc95d1207531b2a278b796c9866.tar.gz
Start sketching a list of open projects.
Currently this is focused on things which are well understood, it is intended to
be a place to start hacking on KLEE, not a list of research projects in symbolic
execution.

git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@128407 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--www/OpenProjects.html91
-rw-r--r--www/menu.html.incl1
2 files changed, 92 insertions, 0 deletions
diff --git a/www/OpenProjects.html b/www/OpenProjects.html
new file mode 100644
index 00000000..33888ba0
--- /dev/null
+++ b/www/OpenProjects.html
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
+          "http://www.w3.org/TR/html4/strict.dtd">
+<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
+<html>
+<head>
+  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+  <title>KLEE - Open Projects</title>
+  <link type="text/css" rel="stylesheet" href="menu.css">
+  <link type="text/css" rel="stylesheet" href="content.css">
+</head>
+<body>
+<!--#include virtual="menu.html.incl"-->
+<div id="content">
+  <!--*********************************************************************-->
+  <h1>KLEE Open Projects</h1>
+  <!--*********************************************************************-->
+
+  This page lists a variety of open projects that are natural (and tractable)
+  extensions of KLEE and things that we would love to see people work on.  If
+  you are interested in tackling any of the projects, please mail
+  <a href="http://keeda.stanford.edu/mailman/listinfo/klee-dev">klee-dev</a>
+  with your ideas -- or even better, your patches!.</a> 
+
+  <ul>
+    <li>
+      <em>Implement SMT support for Kleaver:</em>
+
+      <p>We would like to make Kleaver (KLEE's constraint solver) a more viable
+      standalone product. One of the steps in this direction is to implement SMT
+      support. This would also allow us to enter Kleaver into
+      the <a href="http://www.smtcomp.org/2011/">SMT-COMP</a> theorem prover
+      competition, which would be a good proving ground for our optimizations
+      and benchmarking our underlying constraint solver (STP, currently) against
+      other implementations.</p>
+    </li>
+
+    <li>
+      <em>Distributed Constraint Solving:</em>
+
+      <p>Much of the execution time of KLEE is spent inside the constraint
+      solver. A natural extension would be to implement support for a
+      distributed constraint solver, which would run KLEE on a single machine,
+      but would farm out the constraints to be solved on a network of
+      machines.</p>
+    </li>
+
+    <li>
+      <em>Improve User Interface:</em>
+
+      <p>This is not a very glamorous project, but it is still
+      important. Currently, KLEE has a myriad of command line options and flags,
+      most of which are left over from its research project roots. In order to
+      promote KLEE's use as a user tool, we would like to clean up most of the
+      UI so that the default behavior matches best practice, and so that more
+      arcane or research-only options are hidden by default.</p>
+    </li>
+
+    <li>
+      <em>Experiment With Other Constraint Solvers:</em>
+
+      <p>For the most part, KLEE has been written so that it is possible to swap
+      in other constraint solvers, but we have never tried anything other than
+      STP. We would love to see the results of using other contraint solvers
+      (like Yices or Z3) with KLEE.</p>
+    </li>
+
+    <li>
+      <em>Implement Expression Level Constraint Optimization:</em>
+
+      <p>KLEE does not currently do much optimization of constraint expressions
+      before sending them to the constraint solver. We would like to have an
+      internal framework for doing optimization of constraint expressions (e.g.,
+      (A & ~A) => 0) so that these optimizations are only done once instead of
+      on every solver query.</p>
+
+      <p>In general, because KLEE is dealing with expressions which result from
+      dynamic execution traces, many expressions end up having constant
+      components. This means we can frequently apply the same optimizations a
+      compiler would do, but to much greater effect because we are more likely
+      to see constant values. For reference, see the kinds of optimizations done
+      by LLVM's InstCombine
+      pass <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/">here</a>.</p>
+
+      <p>The bulk of this project involves defining a good framework for us to
+      apply optimizations to expressions, and for deciding when to attempt to
+      optimization expressions.</p>
+    </li>
+  </ul>
+</div>
+</body>
+</html>
diff --git a/www/menu.html.incl b/www/menu.html.incl
index abb26a91..1ae4183f 100644
--- a/www/menu.html.incl
+++ b/www/menu.html.incl
@@ -10,6 +10,7 @@
     <a href="Documentation.html">Documentation</a>
     <a href="Tutorials.html">Tutorials</a>
     <a href="Publications.html">Publications</a>
+    <a href="OpenProjects.html">Open Projects</a>
   </div>
 
   <div class="submenu">