RISC JKU

Formal Methods in Computer Science

How to reason about computer programs and computing systems.

The term "formal methods" applies to all techniques that make computer software and computing systems subject to reasoning. By treating computer programs and system descriptions as language objects with a formal semantics, we can think and argue about the behavior of the resulting software and systems. The automatization of this process by supporting software is currently a hot topic of research. Formal methods are already industrially applied, e.g. to mission-critical software, computer chips, or communication protocols.

The area includes the following topics:

Specification
To specify a system means to describe a behavior that an implementation shall satisfy. There exist various specification languages that allow to describe different aspects of a system.
Verification
To verify a system means to show that it satisfies a particular specification, to falsify means to show that it violates the specification. This process can be automated by applying automated theorem provers or model checkers.
Transformation
There exist various semantics-based techniques that allow to transform a system into a "better" one. For instance, partial evaluation takes a program and a program argument and "compiles the argument into the program" to make it more efficient.
Derivation/synthesis
To derive or synthesize a program means to automatically transform a specification into a program such that the program satisfies the specification. This process usually proceeds in multiple steps by making the specification more and more constructive.

See also the Wikipedia article, the organization Formal Methods Europe, the FM conference series, and the RISC research on Theorema.


Wolfgang Schreiner
Last modified: January 19, 2012