KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Foundations of programming languages
Foundations of programming languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Deductive Composition of Astronomical Software from Subroutine Libraries
CADE-12 Proceedings of the 12th International Conference on Automated Deduction
Inference rules for program annotation
ICSE '78 Proceedings of the 3rd international conference on Software engineering
AutoBayes: a system for generating data analysis programs from statistical models
Journal of Functional Programming
Automating the implementation of Kalman filter algorithms
ACM Transactions on Mathematical Software (TOMS)
Adding assurance to automatically generated code
HASE'04 Proceedings of the Eighth IEEE international conference on High assurance systems engineering
Automatic verification of pointer programs using grammar-based shape analysis
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Certifiable program generation
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Explaining Verification Conditions
AMAST 2008 Proceedings of the 12th international conference on Algebraic Methodology and Software Technology
SAFECOMP '08 Proceedings of the 27th international conference on Computer Safety, Reliability, and Security
Generating customized verifiers for automatically generated code
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Deriving Safety Cases for the Formal Safety Certification of Automatically Generated Code
Electronic Notes in Theoretical Computer Science (ENTCS)
Harnessing a Refinement Theory to Compute Loop Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
Mathematics for reasoning about loop functions
Science of Computer Programming
Relational Methods in the Analysis of While Loops: Observations of Versatility
RelMiCS '09/AKA '09 Proceedings of the 11th International Conference on Relational Methods in Computer Science and 6th International Conference on Applications of Kleene Algebra: Relations and Kleene Algebra in Computer Science
Intelligent software engineering tools for NASA's crew exploration vehicle
ISMIS'08 Proceedings of the 17th international conference on Foundations of intelligent systems
Reflexive transitive invariant relations: A basis for computing loop functions
Journal of Symbolic Computation
Deriving safety cases for hierarchical structure in model-based development
SAFECOMP'10 Proceedings of the 29th international conference on Computer safety, reliability, and security
Invariant and type inference for matrices
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Invariant functions and invariant relations: An alternative to invariant assertions
Journal of Symbolic Computation
Invariant relations, invariant functions, and loop functions
Innovations in Systems and Software Engineering
Verifying while loops with invariant relations
International Journal of Critical Computer-Based Systems
Hi-index | 0.00 |
Code generators for realistic application domains are not directly verifiable in practice. In the certifiable code generation approach the generator is extended to generate logical annotations (i.e., pre- and postconditions and loop invariants) along with the programs, allowing fully automated program proofs of different safety properties. However, this requires access to the generator sources, and remains difficult to implement and maintain because the annotations are cross-cutting concerns, both on the object-level (i.e., in the generated code) and on the meta-level (i.e., in the generator).Here we describe a new generic post-generation annotation inference algorithm that circumvents these problems. We exploit the fact that the output of a code generator is highly idiomatic, so that patterns can be used to describe all code constructs that require annotations. The patterns are specific to the idioms of the targeted code generator and to the safety property to be shown, but the algorithm itself remains generic. It is based on a pattern matcher used to identify instances of the idioms and build a property-specific abstracted control flow graph, and a graph traversal that follows the paths from the use nodes backwards to all corresponding definitions, annotating the statements along these paths. This core is instantiated for two generators and successfully applied to automatically certify initialization safety for a range of generated programs.