A semantics for procedure local heaps and its abstractions

Noam Rinetzky*, Jörg Bauer, Thomas Reps, Mooly Sagiv, Reinhard Wilhelm

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

32 Scopus citations

Abstract

The goal of this work is to develop compile-time algorithms for automatically verifying properties of imperative programs that manipulate dynamically allocated storage. The paper presents an analysis method that uses a characterization of a procedure's behavior in which parts of the heap not relevant to the procedure are ignored. The paper has two main parts: The first part introduces a non-standard concrete semantics, ℒSℒ, in which called procedures are only passed parts of the heap. In this semantics, objects are treated specially when they separate the "local heap" that can be mutated by a procedure from the rest of the heap, which-from the viewpoint of that procedure - is non-accessible and immutable. The second part concerns abstract interpretation of ℒSℒ and develops a new static-analysis algorithm using canonical abstraction.

Original languageEnglish
Pages (from-to)296-309
Number of pages14
JournalACM SIGPLAN Notices
Volume40
Issue number1
DOIs
StatePublished - Jan 2005

Keywords

  • 3-valued logic
  • Abstract interpretation
  • Shape analysis
  • Static analysis

Fingerprint

Dive into the research topics of 'A semantics for procedure local heaps and its abstractions'. Together they form a unique fingerprint.

Cite this