@InProceedings{TMMDB2018, author="Titolo, Laura and Moscato, Mariano M. and Mu{\~{n}}oz, C{\'e}sar A. and Dutle, Aaron and Bobot, Fran{\c{c}}ois", editor="Havelund, Klaus and Peleska, Jan and Roscoe, Bill and de Vink, Erik", title="A Formally Verified Floating-Point Implementation of the {C}ompact {P}osition {R}eporting Algorithm", booktitle="Formal Methods", year="2018", month="July", publisher="Springer International Publishing", series = "Lecture Notes in Computer Science", volume = "10951", address="Oxford, UK", pages="364--381", abstract="The Automatic Dependent Surveillance-Broadcast (ADS-B) system allows aircraft to communicate their current state, including position and velocity information, to other aircraft in their vicinity and to ground stations. The Compact Position Reporting (CPR) algorithm is the ADS-B module responsible for the encoding and decoding of aircraft positions. CPR is highly sensitive to computer arithmetic since it heavily relies on functions that are intrinsically unstable such as floor and modulo. In this paper, a formally-verified double-precision floating-point implementation of the CPR algorithm is presented. The verification proceeds in three steps. First, an alternative version of CPR, which reduces the floating-point rounding error is proposed. Then, the Prototype Verification System (PVS) is used to formally prove that the ideal real-number counterpart of the improved algorithm is mathematically equivalent to the standard CPR definition. Finally, the static analyzer Frama-C is used to verify that the double-precision implementation of the improved algorithm is correct with respect to its operational requirement. The alternative algorithm is currently being considered for inclusion in the revised version of the ADS-B standards document as the reference implementation of the CPR algorithm.", isbn="978-3-319-95582-7", doi="10.1007/978-3-319-95582-7_22" }