9 research outputs found

    The MINERVA Software Development Process

    Get PDF
    This paper presents a software development process for safety-critical software components of cyber-physical systems. The process is called MINERVA, which stands for Mirrored Implementation Numerically Evaluated against Rigorously Verified Algorithms. The process relies on formal methods for rigorously validating code against its requirements. The software development process uses: (1) a formal specification language for describing the algorithms and their functional requirements, (2) an interactive theorem prover for formally verifying the correctness of the algorithms, (3) test cases that stress the code, and (4) numerical evaluation on these test cases of both the algorithm specifications and their implementations in code. The MINERVA process is illustrated in this paper with an application to geo-containment algorithms for unmanned aircraft systems. These algorithms ensure that the position of an aircraft never leaves a predetermined polygon region and provide recovery maneuvers when the region is inadvertently exited

    Software Validation via Model Animation

    Get PDF
    This paper explores a new approach to validating software implementations that have been produced from formally-verified algorithms. Although visual inspection gives some confidence that the implementations faithfully reflect the formal models, it does not provide complete assurance that the software is correct. The proposed approach, which is based on animation of formal specifications, compares the outputs computed by the software implementations on a given suite of input values to the outputs computed by the formal models on the same inputs, and determines if they are equal up to a given tolerance. The approach is illustrated on a prototype air traffic management system that computes simple kinematic trajectories for aircraft. Proofs for the mathematical models of the system's algorithms are carried out in the Prototype Verification System (PVS). The animation tool PVSio is used to evaluate the formal models on a set of randomly generated test cases. Output values computed by PVSio are compared against output values computed by the actual software. This comparison improves the assurance that the translation from formal models to code is faithful and that, for example, floating point errors do not greatly affect correctness and safety properties

    A Decision Procedure for Univariate Polynomial Systems Based on Root Counting and Interval Subdivision

    Get PDF
    This paper presents a formally verified decision procedure for determinining the satisfiability of a system of univariate polynomial relations over the real line. The procedure combines a root counting function, based on Sturm’s theorem, with an interval subdivision algorithm. Given a system of polynomial relations over the same variable, the decision procedure progressively subdivides the real interval into smaller intervals. The subdivision continues until the satisfiability of the system can be determined on each subinterval using Sturm’s theorem on a subset of the system’s polynomials. The decision procedure has been formally verified in the Prototype Verification System (PVS). In PVS, the decision procedure is specified as a computable Boolean function on a deep embedding of polynomial relations. This function is used to define a proof producing strategy for automatically proving existential and universal statements on polynomial systems. The soundness of the strategy solely depends on the internal logic of PVS

    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

    Greedy Galois Games

    No full text

    Balancing Wind and Batteries: Towards Predictive Verification of Smart Grids

    No full text
    We study a smart grid with wind power and battery storage. Traditionally, day-ahead planning aims to balance demand and wind power, yet actual wind conditions often deviate from forecasts. Short-term flexibility in storage and generation fills potential gaps, planned on a minutes time scale for 30–60 min horizons. Finding the optimal flexibility deployment requires solving a semi-infinite non-convex stochastic program, which is generally intractable to do exactly. Previous approaches rely on sampling, yet such critical problems call for rigorous approaches with stronger guarantees. Our method employs probabilistic model checking techniques. First, we cast the problem as a continuous-space Markov decision process with discretized control, for which an optimal deployment strategy minimizes the expected grid frequency deviation. To mitigate state space explosion, we exploit specific structural properties of the model to implement an iterative exploration method that reuses pre-computed values as wind data is updated. Our experiments show the method’s feasibility and versatility across grid configurations and time scales
    corecore