Scalable Program Analysis and topics in Programming Language Design and Transformation
Doctoral thesis, 2007

The thesis covers a variety of topics in programming language technology, with the main emphasis on static program analysis. A program analysis is an automatic method, a program, which anwers a specific question about programs. Examples of questions could be "Will this program crash?" and "Will a certain part of the program ever be executed?" Program analyses answering questions such as these can be used to improve the efficiency and security of programs. A program analysis can never be exact. This means that there will always be apportunities to develop new and increasingly precise methods for program analysis. However these analyses can easily become very resource hungry, taking a lot of time and memory to compute. This thesis develops methods for scalable program analysis. As programs grow larger and more complex program analyses should still yield precise enough answers and be feasible to compute. Our contributions include a new constraint-based program analysis method, Constraint Abstractions, specifically targeted towards computing solutions to precise program analyses. The key technical contribution is an O(n^3) algorithm for program analyses which uses polymorphism and subtyping. A concrete case study is described: a Usage analysis which answers the question "Is a particular value used at most once?" We also present a comprehensive experimental exploration of the vast design space for program analyses in order to determine how program analysis features interact and impact precision. Beside program analysis this thesis covers two other topics: program transformation and programing language design. A new technique is introduced for fusing functions, thereby removing any intermediate data structure and improving the speed of programs. Last we show how regular expressions can be seamlessly added to the pattern matching facility found in functional programming languages.

10.15 Lecture room EC, ED&IT-building, Hörsalsvägen 11, Göteborg
Opponent: Professor Jakob Rehof, Department of Computer Science, University of Dortmund, Germany


Josef Svenningsson

Chalmers, Computer Science and Engineering (Chalmers), Computing Science (Chalmers)

Constraint Abstractions

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),; Vol. LNCS(2001)p. 63-83

Paper in proceeding

Polymorphism, Subtyping, Whole Program Analysis and Accurate Data Types in Usage Analysis

The Fourth ASIAN Symposium on Programming Languages and Systems,; Vol. LNCS(2006)p. 200-216

Paper in proceeding

Shortcut fusion for accumulating parameters & zip-like functions

SIGPLAN Notices (ACM Special Interest Group on Programming Languages),; Vol. 37(2002)p. 124-132

Paper in proceeding

A usage analysis with bounded usage polymorphism and subtyping

Implementation of Functional Languages 2000,; (2000)

Paper in proceeding

Regular Expression Patterns

Proceedings of the ninth ACM SIGPLAN international conference on Functional programming,; (2004)p. 67 - 78

Paper in proceeding

Subject Categories

Computer Science



Doktorsavhandlingar vid Chalmers tekniska högskola. Ny serie: 2580

Technical report D - Department of Computer Science and Engineering, Chalmers University of Technology and Göteborg University: 26D

10.15 Lecture room EC, ED&IT-building, Hörsalsvägen 11, Göteborg

Opponent: Professor Jakob Rehof, Department of Computer Science, University of Dortmund, Germany

More information