Wisconsin Program-Slicing Project's Home Page (original) (raw)


Table of Contents


Disclaimer

This web page contains links to PostScript and PDF files of articles that may be covered by copyright. You may browse the articles at your convenience (in the same spirit that you read a journal article or an article from a conference proceedings in a public library). Retrieving, copying, or distributing these files may violate copyright law.

Please note that the definitive versions of these papers are the published versions. The PostScript versions are provided here as a courtesy, and, in some cases, there may be differences between the PostScript provided here and the published version. We believe that all of the differences are either formatting differences or copy-editing changes. If you cite these papers, please cite the published version rather than giving a URL.

[Back to the Table of Contents]


Research Summary

The goal of this project is to create enhanced tools to support the development of complex software systems. The objective is to create tools that provide powerful language-specific program-manipulation operations. In particular, the project has explored how program slicing can serve as the basis for such program-manipulation operations.

The slice of a program with respect to a set of program elements S is a projection of the program that includes only program elements that might affect (either directly or transitively) the values of the variables used at members of S. Slicing allows one to find semantically meaningful decompositions of programs, where the decompositions consist of elements that are not textually contiguous.

Program slicing is a fundamental operation that can aid in solving many software-engineering problems. For instance, it has applications to program understanding, maintenance, debugging, testing, differencing, specialization, reuse, and merging.

The activities of the project have been devoted to:

More recently, we found some unexpected connections between interprocedural dataflow analysis and our previous work on interprocedural program slicing. In particular, we have shown how a large class of interprocedural dataflow-analysis problems can be solved by transforming them into a special kind of graph-reachability problem. This graph-reachability problem can be solved precisely in polynomial time by the algorithm originally developed for interprocedural slicing.

[Back to the Table of Contents]


Recent Items of Note*new*

Recent Publications

[Back to the Table of Contents]

Miscellaneous

  1. Tips on writing a research paper (video recording from PLMW@PLDI21)
  2. Some notes on automatic differentiation and back-propagation (PDF)
  3. A recording of a lecture about "retrograde debugging" is availablehere. The password is Rptp6tSh. The lecture is based on several "retrograde chess puzzles" from the Raymond Smullyan book "The Chess Mysteries of Sherlock Holmes. Smullyan also wrote a second book of such problems, titled "The Chess Mysteries of the Arabian Knights. In the lecture, the chess problems start at 9:56, 33:39, and 45:40, with a fourth one toward the end. (The accompanying text was auto-generated by Webex, and is pretty funny: "chess problems" became "just problems" or "chest problems," etc. Not sure how to turn it off though.) I recommend watching at 1.25x speed though (or even faster) because I talked quite slowly that day.
  4. Material from CAV 2021 tutorial ``Introduction to Algebraic Program Analysis'' (Z. Kincaid and T. Reps):
  5. Reps interview for People of Programming Languages (2018)
  6. The Reps At Sixty Workshop was held in Edinburgh, UK on September 11, 2016.
    • Slides for most of the talks given at the workshop are now available on thewebsite.
    • Some post-workshop reflections about (i) my work on machine-code analysis, and (ii) differences between academic and industry research are available here.
  7. Information about the life of Susan Horwitz (1955-2014) can be found here.
  8. Raghavan Komondoor has made available the software for detecting clones in C code that he developed as part of his Ph.D. dissertation.
  9. The paper
    • Horwitz, S., Reps, T., and Binkley, D., Interprocedural slicing using dependence graphs. In Proceedings of the ACM SIGPLAN 88 Conference on Programming Language Design and Implementation, (Atlanta, GA, June 22-24, 1988),ACM SIGPLAN Notices 23, 7 (July 1988), pp. 35-46. [abstract]
      was selected for inclusion in a special SIGPLAN collection of the 50 most influential papers from the SIGPLAN Conference on Programming Language Design and Implementation from 1979 to 1999:
    • Horwitz, S., Reps, T., and Binkley, D., Interprocedural slicing using dependence graphs.20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation (1979 - 1999): A Selection, K.S. McKinley, ed.,ACM SIGPLAN Notices 39, 4 (April 2004), 232-243.
      A retrospective on the paper was published as
    • Horwitz, S., Reps, T., and Binkley, D., Retrospective: Interprocedural slicing using dependence graphs.20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation (1979 - 1999): A Selection, K.S. McKinley, ed.,ACM SIGPLAN Notices 39, 4 (April 2004), 229-231. [retrospective (PS);retrospective (PDF);ACM Author-Izer Link.]
      An extended version of the PLDI 88 paper later appeared as the following journal paper:
    • Horwitz, S., Reps, T., and Binkley, D., Interprocedural slicing using dependence graphs.ACM Transactions on Programming Languages and Systems 12, 1 (January 1990), 26-60. [abstract;paper;ACM Author-Izer Link.]

[Back to the Table of Contents]


Personnel

Faculty

Former Students, Post-Doctoral Associates, Staff, and Visitors


Categorized Index to Project Publications

Program Slicing, Differencing, Merging, etc.

Overview

The Wisconsin Program-Slicing Tool

CodeSurfer System

Slicing

Chopping

Differencing

Merging

Algebra of slices (and applications to program merging)

Semantics and slicing

Other applications of slicing

Implemented integration system (for a small Pascal subset)

Miscellaneous

Ph.D. Dissertations

Interprocedural Dataflow Analysis

Demand IDFA via bottom-up logic programming and the magic-sets transformation

Exhaustive and Demand IDFA via graph reachability

IDFA using more than graph reachability

PTIME completeness of IDFA

Alias Analysis, Pointer Analysis, and Shape Analysis

Ph.D. Dissertations

Analysis of Multi-Threaded Programs

Ph.D. Dissertations

Symbolic Abstraction and Decision Procedures

Ph.D. Dissertations

Other Program-Analysis Problems

Ph.D. Dissertations

Path Problems

Context-Free-Language Reachability

Other Path Problems

Ph.D. Dissertations

Model Checking

Software

Ph.D. Dissertations

Computer Security

Ph.D. Dissertations

Quantum Computing

Code Instrumentation

Ph.D. Dissertations

Computational Differentiation and Computational Divided Differencing

Clone Detection

Software

Ph.D. Dissertations

Miscellaneous


Project Bibliography

Books

Journal Publications

Invited Papers

Book Chapters

Reprinted in Collections

[Back to the Table of Contents]

Edited Books

[Back to the Table of Contents]

Conference and Refereed Workshop Publications

Tutorials

Patents

Pending Submissions

Software