Abstraction and specification in program development
Abstraction and specification in program development
Symbolic execution and program testing
Communications of the ACM
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Tracking down software bugs using automatic anomaly detection
Proceedings of the 24th International Conference on Software Engineering
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Inferring specifications to detect errors in code
Automated Software Engineering
Mining specifications of malicious behavior
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
The Daikon system for dynamic detection of likely invariants
Science of Computer Programming
DySy: dynamic symbolic execution for invariant inference
Proceedings of the 30th international conference on Software engineering
Interface Generation and Compositional Verification in JavaPathfinder
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Synthesizing intensional behavior models by graph transformation
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A survey of new trends in symbolic execution for software testing and analysis
International Journal on Software Tools for Technology Transfer (STTT) - Special Section on HVC 07
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
CAV'07 Proceedings of the 19th international conference on Computer aided verification
All about maude - a high-performance logical framework: how to specify, program and verify systems in rewriting logic
Reflections on the Work of C.A.R. Hoare
Reflections on the Work of C.A.R. Hoare
QuickSpec: guessing formal specifications using testing
TAP'10 Proceedings of the 4th international conference on Tests and proofs
Matching logic: an alternative to hoare/floyd logic
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
Matching logic: a new program verification approach (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
An executable formal semantics of C with applications
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Discovering likely method specifications
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
A Survey of Automated Techniques for Formal Software Verification
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Automatic synthesis of specifications for first order curry programs
Proceedings of the 14th symposium on Principles and practice of declarative programming
Hi-index | 0.00 |
Formal specifications can be used for various software engineering activities ranging from finding errors to documenting software and automatic test-case generation. Automatically discovering specifications for heap-manipulating programs is a challenging task. In this paper, we propose a technique for automatically inferring formal specifications from C code which is based on the symbolic execution and automated reasoning tandem "Matching Logic/K framework". We implemented our technique for a fragment of C called KernelC, in the automated tool KingSpec, which generates axioms that describe the precise input/output behavior of C routines that handle pointer-based structures, i.e., result values and state change. These specifications can be written either in Matching Logic itself, which is useful for further automated analysis within the K formal environment, or in sugared axiomatic form, which favors better human inspection. Since we rely on rewriting logic K semantics specification of programming languages, our approach can be easily extended to any language for which %that a formal semantics in K is given.