14 research outputs found

    HeteroGenius: A Framework for Hybrid Analysis of Heterogeneous Software Specifications

    Get PDF
    Nowadays, software artifacts are ubiquitous in our lives being an essential part of home appliances, cars, cell phones, and even in more critical activities like aeronautics and health sciences. In this context software failures may produce enormous losses, either economical or, in the worst case, in human lives. Software analysis is an area in software engineering concerned with the application of diverse techniques in order to prove the absence of errors in software pieces. In many cases different analysis techniques are applied by following specific methodological combinations that ensure better results. These interactions between tools are usually carried out at the user level and it is not supported by the tools. In this work we present HeteroGenius, a framework conceived to develop tools that allow users to perform hybrid analysis of heterogeneous software specifications. HeteroGenius was designed prioritising the possibility of adding new specification languages and analysis tools and enabling a synergic relation of the techniques under a graphical interface satisfying several well-known usability enhancement criteria. As a case-study we implemented the functionality of Dynamite on top of HeteroGenius.Comment: In Proceedings LAFM 2013, arXiv:1401.056

    Provably Correct Floating-Point Implementation of a Point-In-Polygon Algorithm

    Get PDF
    The problem of determining whether or not a point lies inside a given polygon occurs in many applications. In air traffic management concepts, a correct solution to the point-in-polygon problem is critical to geofencing systems for Unmanned Aerial Vehicles and in weather avoidance applications. Many mathematical methods can be used to solve the point-in-polygon problem. Unfortunately, a straightforward floating- point implementation of these methods can lead to incorrect results due to round-off errors. In particular, these errors may cause the control flow of the program to diverge with respect to the ideal real-number algorithm. This divergence potentially results in an incorrect point-in- polygon determination even when the point is far from the edges of the polygon. This paper presents a provably correct implementation of a point-in-polygon method that is based on the computation of the winding number. This implementation is mechanically generated from a source- to-source transformation of the ideal real-number specification of the algorithm. The correctness of this implementation is formally verified within the Frama-C analyzer, where the proof obligations are discharged using the Prototype Verification System (PVS)

    A Mixed Real and Floating-Point Solver

    Get PDF
    Reasoning about mixed real and floating-point constraints is essential for developing accurate analysis tools for floating-point pro- grams. This paper presents FPRoCK, a prototype tool for solving mixed real and floating-point formulas. FPRoCK transforms a mixed formula into an equisatisfiable one over the reals. This formula is then solved using an off-the-shelf SMT solver. FPRoCK is also integrated with the PRECiSA static analyzer, which computes a sound estimation of the round-off error of a floating-point program. It is used to detect infeasible computational paths, thereby improving the accuracy of PRECiSA

    Formal Verification of Termination Criteria for First-Order Recursive Functions

    Get PDF
    This paper presents a formalization of several termination criteria for first-order recursive functions. The formalization, which is developed in the Prototype Verification System (PVS), includes the specification and proof of equivalence of semantic termination, Turing termination, size change principle, calling context graphs, and matrix-weighted graphs. These termination criteria are defined on a computational model that consists of a basic functional language called PVS0, which is an embedding of recursive first-order functions. Through this embedding, the native mechanism for checking termination of recursive functions in PVS could be soundly extended with semi-automatic termination criteria such as calling contexts graphs

    Formal analysis of the compact position reporting algorithm

    No full text
    International audienceThe Automatic Dependent Surveillance-Broadcast (ADS-B) system allows aircraft to communicate current state information, including position and velocity messages, to other aircraft in their vicinity andto ground stations. The Compact Position Reporting (CPR) algorithm is the ADS-B protocol responsiblefor the encoding and decoding of aircraft positions. CPR is sensitive to computer arithmetic since it relieson functions that are intrinsically unstable such as floor and modulus. In this paper, a formal verificationof the CPR algorithm is presented. In contrast to previous work, the algorithm presented here encompassesthe entire range of message types supported by ADS-B. The paper also presents two implementations ofthe CPR algorithm, one in double-precision floating-point and one in 32-bit unsigned integers, which areboth formally verified against the real-number algorithm. The verification proceeds in three steps. For eachimplementation, a version of CPR, which is simplified and manipulated to reduce numerical instability andleverage features of the datatypes, is proposed. Then, the Prototype Verification System (PVS) is used toformally prove real conformance properties, which assert that the ideal real-number counterpart of the improved algorithm is mathematically equivalent to the standard CPR definition. Finally, the static analyzerFrama-C is used to verify software conformance properties, which say that the software implementation ofthe improved algorithm is correct with respect to its idealized real-number counterpart. In concert, the twoproperties guarantee that the implementation meets the original specification. The two implementations willbe included in the revised version of the ADS-B standards document as the reference implementation of theCPR algorithm
    corecore