LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
verifying_pattern_matching_with_guards [2007/06/21 14:41]
mirco.dotta
verifying_pattern_matching_with_guards [2007/06/30 01:19]
philippe.suter
Line 2: Line 2:
 ** Mirco Dotta, Philippe Suter ** ** Mirco Dotta, Philippe Suter **
  
-===== Documents =====+Abstract from the final report:
  
 +----
 +Pattern matching is a powerful construct for conditional
 +execution, and is present in many programming
 +languages, particularly in functional ones. The number
 +and complexity of patterns in a matching expression often
 +grows quickly as programs are written, and the task
 +of checking the completeness or disjointness of such an
 +expression becomes tedious. Compilers can assist programmers
 +to some extent, but complex cases, such as
 +the use of guards to refine the patterns, are in general
 +too difficult to deal with and are hence treated very
 +conservatively. As a result, no useful information can
 +be gained from the compilation process and programmers,​
 +once more, have to resort to manual checking of
 +their expressions.
 +
 +In this project, we show how formal verification techniques
 +can be used to prove completeness or disjointess
 +of a pattern matching expression with guards. Our examples
 +and results are based on the Scala programming
 +language [1], but we believe they can be extended to
 +other languages with a minimal amount of work.
 +
 +[1] [[http://​scala-lang.org]]
 +----
 +
 +
 +===== Documents and sources =====
 +
 +  * The final report is available [[http://​icwww.epfl.ch/​~psuter/​report.pdf|here]].
 +  * Sources of the implementation are available through Google code: [[http://​code.google.com/​p/​sav07/​source]].
 +(Note that this also includes the .tex source files for the report and the presentation.)
 +  * Don't forget to read the [[http://​sav07.googlecode.com/​svn/​trunk/​README|README file]] before trying to run the implementation.
   * slides for printing {{1xverify_pattern_matching1.1.pdf|}} (without animation) ​   * slides for printing {{1xverify_pattern_matching1.1.pdf|}} (without animation) ​
   * slides for presentation{{verify_pattern_matching1.1.pdf|}}   * slides for presentation{{verify_pattern_matching1.1.pdf|}}