4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87
Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The VLISP verified PreScheme compiler
Lisp and Symbolic Computation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Term rewriting and all that
Proving correctness of compiler optimizations by temporal logic
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Advice on structuring compilers and proving them correct
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Automated Correctness Proofs of Machine Code Programs for a Commercial Microprocessor
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Foundational proof checkers with small witnesses
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Journal of Automated Reasoning
Symbolic transfer function-based approaches to certified compilation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbering using random interpretation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
The design and implementation of a certifying compiler
ACM SIGPLAN Notices - Best of PLDI 1979-1999
A pattern matching compiler for multiple target languages
CC'03 Proceedings of the 12th international conference on Compiler construction
A ρ-calculus of explicit constraint application
Higher-Order and Symbolic Computation
Canonical Abstract Syntax Trees
Electronic Notes in Theoretical Computer Science (ENTCS)
Weaving rewrite-based access control policies
Proceedings of the 2007 ACM workshop on Formal methods in security engineering
Electronic Notes in Theoretical Computer Science (ENTCS)
ESOP'07 Proceedings of the 16th European conference on Programming
Tom: piggybacking rewriting on java
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
AMAST'06 Proceedings of the 11th international conference on Algebraic Methodology and Software Technology
Hi-index | 0.00 |
When addressing the formal validation of generated software, two main alternatives consist either to prove the correctness of compilers or to directly validate the generated code. Here, we focus on directly proving the correctness of compiled code issued from powerful pattern matching constructions typical of ML like languages or rewrite based languages such as ELAN, Maude or Tom. In this context, our first contribution is to define a general framework for anchoring algebraic pattern-matching capabilities in existing languages like C, Java or ML. Then, using a just enough powerful intermediate language, we formalize the behavior of compiled code and define the correctness of compiled code with respect to pattern-matching behavior. This allows us to prove the equivalence of compiled code correctness with a generic first-order proposition whose proof could be achieved via a proof assistant or an automated theorem prover. We then extend these results to the multi-match situation characteristic of the ML like languages. The whole approach has been implemented on top of the Tom compiler and used to validate the syntactic matching code of the Tom compiler itself.