SemSlice: Exploiting Relational Verification for Automatic Program Slicing

We present SemSlice, a tool which automatically produces very precise slices for C routines. Slicing is the process of removing statements from a program such that defined aspects of its behavior are retained. For producing precise slices, i.e., slices that are close to the minimal number of statements, the program’s semantics must be considered. SemSlice is based on automatic relational regression verification, which SemSlice uses to select valid slices from a set of candidate slices. We present several approaches for producing candidates for precise slices. Evaluation shows that regression verification (based on coupling invariant inference) is a powerful tool for semantics-aware slicing: precise slices for typical slicing challenges can be found automatically and fast.

[1]  Mark Harman,et al.  A survey of empirical results on program slicing , 2004, Adv. Comput..

[2]  Pedro Rangel Henriques,et al.  Assertion-based Slicing and Slice Graphs , 2010, SEFM.

[3]  Agostino Cortesi,et al.  Abstract program slicing on dependence condition graphs , 2013, Sci. Comput. Program..

[4]  Isabella Mastroeni,et al.  Abstract Program Slicing: From Theory towards an Implementation , 2010, ICFEM.

[5]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[6]  Raghavan Komondoor,et al.  Precise Slicing in Imperative Programs via Term-Rewriting and Abstract Interpretation , 2013, SAS.

[7]  Jorge A. Navas,et al.  Path-Sensitive Backward Slicing , 2012, SAS.

[8]  Viktor Kuncak,et al.  A Verification Toolkit for Numerical Transition Systems - Tool Paper , 2012, FM.

[9]  Vladimir Klebanov,et al.  Relational Program Reasoning Using Compiler IR , 2016, VSTTE.

[10]  Pedro Rangel Henriques,et al.  GamaSlicer: an online laboratory for program verification and analysis , 2010, LDTA.

[11]  Robert C. Martin Clean Code - a Handbook of Agile Software Craftsmanship , 2008 .

[12]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[13]  Kannan M. Moudgalya,et al.  Program Slicing Technique: A Novel Approach to Improve Programming Skills in Novice Learners , 2016, SIGITE.

[14]  Martin P. Ward Properties of Slicing Definitions , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[15]  Frank Tip,et al.  Parametric program slicing , 1995, POPL '95.

[16]  Vladimir Klebanov,et al.  Automating regression verification , 2014, Software Engineering & Management.

[17]  Gilles Barthe,et al.  Relational Verification Using Product Programs , 2011, FM.

[18]  Aniello Cimitile,et al.  Conditioned program slicing , 1998, Inf. Softw. Technol..