184.703 Program Analysis
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2018W, VU, 2.0h, 3.0EC

Properties

  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise

Aim of course

concrete program analysis techniques, proof of the correctness of these techniques via abstract interpretation, techniques for developing new program analyses

Subject of course

definition of the syntax and semantics of a toy programming language;
simple program analyses, which are used standardly in compilers, such as Reaching Definitions, Live Variable Analysis and Constant Propagation;
program analyses, which are used in program verification such as Interval-, Octagon-, Polyederanalysis for determining program invariants;
advanced program analyses, which are used standardly in compilers, such as Pointer Analysis and Call Graph Analysis;
advanced topics in invariant analysis such as termination- and bound analysis;
the discussed program analyses are defined and proven correct with the technique of abstract interpretation with regard to the earlier defined toy language;

Additional information

The lecture starts on 3th of Oct.

For further reading I recommond:

Static Analylsis Course and Script by Michael Schwartzbach, http://cs.au.dk/~mis/static/
Course on Abstract Interpretation by Patrick Cousot, http://web.mit.edu/afs/athena.mit.edu/course/16/16.399/www/
The Book Principles of Program Analysis by Flemming Nielson, Hanne Riis Nielson, Chris Hankin

"Term Rewriting and All That", Franz Baader, Tobias Nipkow, chapter 4.8 contains a good description of the unfication algorithmus used in the first lecture

"Introduction to lattices and order", B. A. Davey and H. A. Priestley is a good introduction into lattice theory

ECTS Breakdown (3ECTS = 75h): 25h lecture, 25h exercises, 25h presentation

Lecturers

Institute

Course dates

DayTimeDateLocationDescription
Wed14:00 - 16:0003.10.2018 - 23.01.2019Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed12:30 - 14:0023.01.2019Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Talks
Program Analysis - Single appointments
DayDateTimeLocationDescription
Wed03.10.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed10.10.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed17.10.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed24.10.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed31.10.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed07.11.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed14.11.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed21.11.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed28.11.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed05.12.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed12.12.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed19.12.201814:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed09.01.201914:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed16.01.201914:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture
Wed23.01.201912:30 - 14:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Talks
Wed23.01.201914:00 - 16:00Seminarraum FAV EG B (Seminarraum von Neumann) Program Analysis - Lecture

Examination modalities

The participants of this lecture give a talk on a current paper on program analysis.

The participants actively participate in the exercises. At the beginning of each exercise they mark in a table which exercises they are able to present on the blackboard. The participants need to mark 50% of the exercises to pass the lecture.

List of presentation topics:

Alexandru Costan, Stephane Gaubert, Eric Goubault, Matthieu Martel, Sylvie Putot:
A Policy Iteration Algorithm for Computing Fixed Points in Static Analysis of Programs. CAV 2005: 462-475

Shaull Almagor, Dmitry Chistikov, Joël Ouaknine, James Worrell:
O-Minimal Invariants for Linear Loops. ICALP 2018: 114:1-114:14

Jiangchao Liu, Liqian Chen, Xavier Rival:
Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions. IEEE Trans. on CAD of Integrated Circuits and Systems 37(11): 2311-2322 (2018)

Ferdinand, C., Wilhelm, R.: Efficient and precise cache behavior prediction for
real-time systems. Real-Time Syst. 17(2–3), 131–181 (1999)

Patrick Cousot:
Types as Abstract Interpretations. POPL 1997: 316-331

Caterina Urban, Antoine Miné:
An Abstract Domain to Infer Ordinal-Valued Ranking Functions. ESOP 2014: 412-431

Antoine Miné:
Relational Thread-Modular Static Value Analysis by Abstract Interpretation. VMCAI 2014: 39-58

Bhargav S. Gulavani, Sumit Gulwani:
A Numerical Abstract Domain Based on Expression Abstraction and Max Operator with Application in Timing Analysis. CAV 2008: 370-384

Christian Müller, Máté Kovács, Helmut Seidl:
An Analysis of Universal Information Flow Based on Self-Composition. CSF 2015: 380-393

Yue Li, Tian Tan, and Yannis Smaragdakis:
Precision-Guided Context Sensitivity for Pointer Analysis. OOPSLA 2018: to appear (https://cs.au.dk/~amoeller/papers/zipper/paper.pdf)

The talks are going to be in the last week of January this semester (Jan 2018, see lecture slides).

Course registration

Not necessary

Curricula

Study CodeObligationSemesterPrecon.Info
066 931 Logic and Computation Mandatory elective
066 937 Software Engineering & Internet Computing Mandatory elective
066 938 Computer Engineering Mandatory elective

Literature

No lecture notes are available.

Language

English