Programming in the 1990s: an introduction to the calculation of programs
Programming in the 1990s: an introduction to the calculation of programs
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Computational geometry: algorithms and applications
Computational geometry: algorithms and applications
ABCD: eliminating array bounds checks on demand
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
Communications of the ACM
Implementation of an array bound checker
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Tracking down software bugs using automatic anomaly detection
Proceedings of the 24th International Conference on Software Engineering
Houdini, an Annotation Assistant for ESC/Java
FME '01 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity
Improving test suites via operational abstraction
Proceedings of the 25th International Conference on Software Engineering
A static analyzer for large safety-critical software
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Inference rules for program annotation
ICSE '78 Proceedings of the 3rd international conference on Software engineering
Automated Support for Program Refactoring using Invariants
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Dynamically discovering likely program invariants
Dynamically discovering likely program invariants
Scalable statistical bug isolation
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Generating all polynomial invariants in simple loops
Journal of Symbolic Computation
The Daikon system for dynamic detection of likely invariants
Science of Computer Programming
Formal Verification by Reverse Synthesis
SAFECOMP '08 Proceedings of the 27th international conference on Computer Safety, Reliability, and Security
Automatically patching errors in deployed software
Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
Scalable analysis of linear systems using mathematical programming
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Modeling, optimization and computation for software verification
HSCC'05 Proceedings of the 8th international conference on Hybrid Systems: computation and control
A data driven approach for algebraic loop invariants
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Discovering branching conditions from business process execution logs
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Loop invariants: Analysis, classification, and examples
ACM Computing Surveys (CSUR)
Current challenges in automatic software repair
Software Quality Control
Data-driven equivalence checking
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
Dynamic invariant analysis identifies likely properties over variables from observed program traces. These properties can aid programmers in refactoring, documenting, and debugging tasks by making dynamic patterns visible statically. Two useful forms of invariants involve relations among polynomials over program variables and relations among array variables. Current dynamic analysis methods support such invariants in only very limited forms. We combine mathematical techniques that have not previously been applied to this problem, namely equation solving, polyhedra construction, and SMT solving, to bring new capabilities to dynamic invariant detection. Using these methods, we show how to find equalities and inequalities among nonlinear polynomials over program variables, and linear relations among array variables of multiple dimensions. Preliminary experiments on 24 mathematical algorithms and an implementation of AES encryption provide evidence that the approach is effective at finding these invariants.