Automatic inference of specifications using matching logic

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 f...

Descripción completa

Detalles Bibliográficos
Autores: Alpuente Frasnedo, María|||0000-0002-9268-1178, Villanueva, Alicia|||0000-0003-1090-5009, Feliú Gabaldón, Marco Antonio
Tipo de recurso: capítulo de libro
Fecha de publicación:2013
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglés
OAI Identifier:oai:riunet.upv.es:10251/55606
Acceso en línea:https://riunet.upv.es/handle/10251/55606
Access Level:acceso abierto
Palabra clave:Matching logic
Specifications inference
Symbolic execution
CIENCIAS DE LA COMPUTACION E INTELIGENCIA ARTIFICIAL
LENGUAJES Y SISTEMAS INFORMATICOS
Descripción
Sumario: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 KINDSPEC, 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 a formal semantics in K is given.