Symbolic execution systems—a review
Software Engineering Journal
Integrating noninterfering versions of programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
An integrated system for automatically generating test data
ISCI '90 Proceedings of the first international conference on systems integration on Systems integration '90
Symbolic execution and testing
Information and Software Technology
A Fortran language system for mutation-based software testing
Software—Practice & Experience
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Software Specialization Via Symbolic Execution
IEEE Transactions on Software Engineering
An experimental evaluation of a symbolic execution system
Software Engineering Journal
Experimental results from an automatic test case generator
ACM Transactions on Software Engineering and Methodology (TOSEM)
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program integration for languages with procedure calls
ACM Transactions on Software Engineering and Methodology (TOSEM)
Reuse-driven interprocedural slicing
Proceedings of the 20th international conference on Software engineering
Call-mark slicing: an efficient and economical way of reducing slice
Proceedings of the 21st international conference on Software engineering
Programmers use slices when debugging
Communications of the ACM
Chaff: engineering an efficient SAT solver
Proceedings of the 38th annual Design Automation Conference
Improving program slicing with dynamic points-to data
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
IEEE Transactions on Software Engineering
Software Salvaging Based on Conditions
ICSM '94 Proceedings of the International Conference on Software Maintenance
Validity Checking for Combinations of Theories with Equality
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
CVC: A Cooperating Validity Checker
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Qualifying reusable functions using symbolic execution
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Understanding Function Behaviors through Program Slicing
WPC '96 Proceedings of the 4th International Workshop on Program Comprehension (WPC '96)
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Identifying reusable functions using specification driven program slicing: a case study
ICSM '95 Proceedings of the International Conference on Software Maintenance
Reuse-Driven Interprocedural Slicing in the Presence of Pointers and Recursions
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Assembler to C Migration Using the FermaT Transformation System
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
ConSIT: A Conditioned Program Slicer
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
IWPC '01 Proceedings of the 9th International Workshop on Program Comprehension
A Large-Scale Empirical Study of Forward and Backward Static Slice Size and Context Sensitivity
ICSM '03 Proceedings of the International Conference on Software Maintenance
CONSIT: a fully automated conditioned program slicer
Software—Practice & Experience
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
A formalisation of the relationship between forms of program slicing
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
Theoretical foundations of dynamic program slicing
Theoretical Computer Science
Abstract dependences for alarm diagnosis
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Hi-index | 0.01 |
Program conditioning consists of identifying and removing a set of statements which cannot be executed when a condition of interest holds at some point in a program. It has been applied to problems in maintenance, testing, re-use and re-engineering. All current approaches to program conditioning rely upon both symbolic execution and reasoning about symbolic predicates. The reasoning can be performed by a 'heavy duty' theorem prover but this may impose unrealistic performance constraints. This paper reports on a lightweight approach to theorem proving using the FermaT Simplify decision procedure. This is used as a component to ConSUS, a program conditioning system for the Wide Spectrum Language WSL. The paper describes the symbolic execution algorithm used by ConSUS, which prunes as it conditions. The paper also provides empirical evidence that conditioning produces a significant reduction in program size and, although exponential in the worst case, the conditioning system has low degree polynomial behaviour in many cases, thereby making it scalable to unit level applications of program conditioning.