LARA

Project Ideas

  • you are not restricted to these ideas, but please discuss the suggestions with me first
  • some of the projects below have been assigned already
  • once you know which project you will like to do and you discussed it with me, email me with project title and names of people on the project
  • these ideas are meant to be open-ended, so there is no such thing as “entirely finished project” and you can do only part of it. Overall, the pace of work on your project should be similar to the pace we had for homeworks (you will have more time for project, but the project is bigger than any single homework and closer to the sum of all homeworks)
  • once you choose the project you should regularly discuss your progress with me, approximately once a week

Verifying pattern matching

Verify completeness and disjointness of guarded patterns in Scala.

  • connect to some pass (to be determined where exactly)
  • do analysis of completeness of pattern matching of guards (optionally disjointness if useful)
    • look at guards that have no loops or procedure calls
    • verification condition generation + some theorem prover
  • can represent completeness as unreachability of the default case
  • can we use formDecider.opt or some other tool that formDecider uses
  • some issues: do we need procedure preconditions to check for completeness of interesting data structures?

do we need more expressive type systems/constraints to encode invariants on data structures

SAT-based checker

Implement a bug finder based on SAT.

For example, you could start from formulas in Jahob and generate, in order of going more and more detailed:

For techniques you can see this thesis

http://theory.stanford.edu/~aiken/publications/theses/xie.pdf

and this paper:

http://sdg.csail.mit.edu/pubs/2006/dennis_modular.pdf

This can be a longer term thing, but even if you do a working translation from Jahob formulas into Alloy formulas it will be interesting and useful.

Analysis of linear constraints

Implement a static analyzer for linear constraints on integer variables using domains such as octagons, intervals, or polyhedra.

Incorporate the analyzer into Jahob.

Develop techniques for extracting such constraints from general Jahob formulas.

Typestate analysis for Jahob

Run-time checker

Verification case study

Verify an interesting Java program, such as a data structure, using Jahob.

Monadic Second Order Logic over Trees

Theoretical project.

Try to come up with a quantifier elimination procedure for monadic second-order logic over strings.

Compare results to to Presburger arithmetic quantifier elimination.

Generalization to quantifier elimination for Monadic Second-Order Logic over Trees.

@InCollection{Thomas97LanguagesAutomataLogic,
  author =       {Wolfgang Thomas},
  title =        {Languages, Automata, and Logic},
  booktitle =    {Handbook of Formal Languages Vol.3: Beyond Words},
  publisher =    SPRINGER,
  year =         1997
}

Program-driven proofs

Develop a set of proof rules that allow statements such as assume and assert statements to be used to prove arbitrary invariants in imperative programs.

For example, to prove

s1;
assert (ALL x. P(x))

it should be possible to declare

var x;
havoc x;
s1;
assert P(x);

when certain properties hold for s1.

To prove

assert (EX x. P(x))

we should be able to prove

assert P(t)

for some term t.

You need to generalize these ideas, prove that they work and explore what class of properties we can prove using them.

Sets with cardinality bounds

Generalize the this result on sets with cardinality bounds by bounding certain parameters incorporating relations. Evaluate the applicability of these polynomial algorithms to a constraints that are NP hard.

Review of decidability results

Create a summary (in form of wiki) of a substantial number of logics that are useful for software analysis and verification. State complexity of algorithms for these logics and general techniques used, and reference appropriate papers.

Translation of language features

In the context of Jahob, explore translation from a subset of full-fledged language like Java into guarded command language, enabling verification of more real-world programs.

Logic for reasoning about reachability in trees

Develop a decision procedure for reasoning about trees with reachability predicate. The logic should be in NP.

QFBAPA decision procedure based on translation to SAT

Implement a translation from QFBAPA to SAT using the ideas from cade07paper.pdf.

Compare the results to an existing translator to SMT format.

Concurrent programs

Develop techniques for verifying programs written in an imperative language with transactional memory.