User:Realazthat/Projects wishlist/LLVM/Formal methods: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
Line 19: Line 19:
* Compute function complexity
* Compute function complexity
** Allow the function to assert complexity
** Allow the function to assert complexity
* Allow arbitrary restrictions on functions, which would propagate through the call graph
** Complexity (time/memory)
** Restricting stack allocation
** Restricting heap allocation
* Allow a programmer to make certain assumptions on input (probably through assertions)
* Allow a programmer to make certain assumptions on input (probably through assertions)
* Prove that no undefined behavior can occur
* Prove that no undefined behavior can occur

Revision as of 20:06, 31 October 2010

Formal methods project

Write an LLVM pass that will prove certain properties of functions.

Features

Follow the examples of wp:Java_Modeling_Language and wp:SPARK_programming_language.


Things that the pass might prove, for each function:

Test examples

  • Prove that a regular expression evaluator halts (IE. calculate the computational complexity).

Reference material

Further reading

Read this stuff:

Implementation methods


SMT Research

Related work

Non-Turing-complete languages

Other interesting languages