Systematic design of program transformation frameworks by abstract interpretation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Equality saturation: a new approach to optimization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Introduction to Interval Analysis
Introduction to Interval Analysis
Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software
FMICS '09 Proceedings of the 14th International Workshop on Formal Methods for Industrial Critical Systems
Handbook of Floating-Point Arithmetic
Handbook of Floating-Point Arithmetic
Practical verification for the working programmer with codecontracts and abstract interpretation
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Modular and verified automatic program repair
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Semantics-based transformation of arithmetic expressions
SAS'07 Proceedings of the 14th international conference on Static Analysis
A new abstract domain for the representation of mathematically equivalent expressions
SAS'12 Proceedings of the 19th international conference on Static Analysis
Hi-index | 0.00 |
In this article, we focus on the synthesis of arithmetic expressions that can be evaluated efficiently on computers in the sense that they do not create overflows, are accurate and do not use unnecessary ressources. We consider several computer arithmetics for integers, floating-point and fixed-point numbers and intervals and we show how to synthetize new expressions, mathematically equivalent to the original ones and more efficient. Our approach is based on abstract interpretation. We introduce two abstractions to represent in polynomial size sets of mathematically equivalent expressions. Then, we extract optimized expressions by searching the most accurate expression among the expressions contained in the abstract structures. We focus on the correctness of the synthesis which consists of showing that the new expressions cannot be distinguished from the source expressions when an observational abstraction is used.