763 research outputs found

    Certifying safety and termination proofs for integer transition systems

    Get PDF
    Modern program analyzers translate imperative programs to an intermediate formal language like integer transition systems (ITSs), and then analyze properties of ITSs. Because of the high complexity of the task, a number of incorrect proofs are revealed annually in the Software Verification Competitions. In this paper, we establish the trustworthiness of termination and safety proofs for ITSs. To this end we extend our Isabelle/HOL formalization IsaFoR by formalizing several verification techniques for ITSs, such as invariant checking, ranking functions, etc. Consequently the extracted certifier CeTA can now (in)validate safety and termination proofs for ITSs. We also adapted the program analyzers T2 and AProVE to produce machinereadable proof certificates, and as a result, most termination proofs generated by these tools on a standard benchmark set are now certified

    Combining Static and Dynamic Contract Checking for Curry

    Full text link
    Static type systems are usually not sufficient to express all requirements on function calls. Hence, contracts with pre- and postconditions can be used to express more complex constraints on operations. Contracts can be checked at run time to ensure that operations are only invoked with reasonable arguments and return intended results. Although such dynamic contract checking provides more reliable program execution, it requires execution time and could lead to program crashes that might be detected with more advanced methods at compile time. To improve this situation for declarative languages, we present an approach to combine static and dynamic contract checking for the functional logic language Curry. Based on a formal model of contract checking for functional logic programming, we propose an automatic method to verify contracts at compile time. If a contract is successfully verified, dynamic checking of it can be omitted. This method decreases execution time without degrading reliable program execution. In the best case, when all contracts are statically verified, it provides trust in the software since crashes due to contract violations cannot occur during program execution.Comment: Pre-proceedings paper presented at the 27th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR 2017), Namur, Belgium, 10-12 October 2017 (arXiv:1708.07854

    sCompile: Critical path identification and analysis for smart contracts

    Get PDF
    Ethereum smart contracts are an innovation built on top of the blockchain technology, which provides a platform for automatically executing contracts in an anonymous, distributed, and trusted way. The problem is magnified by the fact that smart contracts, unlike ordinary programs, cannot be patched easily once deployed. It is important for smart contracts to be checked against potential vulnerabilities. In this work, we propose an alternative approach to automatically identify critical program paths (with multiple function calls including inter-contract function calls) in a smart contract, rank the paths according to their criticalness, discard them if they are infeasible or otherwise present them with user friendly warnings for user inspection. We identify paths which involve monetary transaction as critical paths, and prioritize those which potentially violate important properties. For scalability, symbolic execution techniques are only applied to top ranked critical paths. Our approach has been implemented in a tool called sCompile, which has been applied to 36,099 smart contracts. The experiment results show that sCompile is efficient, i.e., 5 seconds on average for one smart contract. Furthermore, we show that many known vulnerabilities can be captured if user inspects as few as 10 program paths generated by sCompile. Lastly, sCompile discovered 224 unknown vulnerabilities with a false positive rate of 15.4% before user inspection.Comment: Accepted by ICFEM 201

    A Survey of Satisfiability Modulo Theory

    Full text link
    Satisfiability modulo theory (SMT) consists in testing the satisfiability of first-order formulas over linear integer or real arithmetic, or other theories. In this survey, we explain the combination of propositional satisfiability and decision procedures for conjunctions known as DPLL(T), and the alternative "natural domain" approaches. We also cover quantifiers, Craig interpolants, polynomial arithmetic, and how SMT solvers are used in automated software analysis.Comment: Computer Algebra in Scientific Computing, Sep 2016, Bucharest, Romania. 201

    Scalable Verification of Linear Controller Software

    Get PDF
    We consider the problem of verifying software implementations of linear time-invariant controllers against mathematical specifications. Given a controller specification, multiple correct implementations may exist, each of which uses a different representation of controller state (e.g., due to optimizations in a third-party code generator). To accommodate this variation, we first extract a controller\u27s mathematical model from the implementation via symbolic execution, and then check input-output equivalence between the extracted model and the specification by similarity checking. We show how to automatically verify the correctness of C code controller implementation using the combination of techniques such as symbolic execution, satisfiability solving and convex optimization. Through evaluation using randomly generated controller specifications of realistic size, we demonstrate that the scalability of this approach has significantly improved compared to our own earlier work based on the invariant checking method

    A Decision Procedure for (Co)datatypes in SMT Solvers

    Get PDF
    International audienceWe present a decision procedure that combines reasoning about datatypes and codatatypes. The dual of the acyclicity rule for datatypes is a uniqueness rule that identifies observationally equal codatatype values, including cyclic values. The procedure decides universal problems and is composable via the Nelson–Oppen method. It has been implemented in CVC4, a state-of-the-art SMT solver. An evaluation based on problems generated from theories developed with Isabelle demonstrates the potential of the procedure

    An analysis of risk factors for arterial hypertension in adolescent students

    Get PDF
    The objective of the study was to evaluate some risk factors for increases in systemic arterial blood pressure. This transversal study was carried out with 145 individuals from 12 to18 years of age at two state schools in the city of Pico in the state of Piauí in Brazil. The majority were female (62.8%). The median age was 14.8 years (±3.19). It was ascertained that 13 of the subjects (9.0%) were overweight [CI% 73.0-86.0]. Elevations in waist circumference were found in 31 (21.4%) and 76 (52.4%) had elevated arterial blood levels. There was no statistically-significant association between the above-cited risk factors and gender (p=0.088; 0.999; 0.204, respectively). However, 44.8% of the adolescents had at least one risk factor associated with arterial hypertension; 15.9% had two, and 2.1% had three. The study confirms the influence of the risk factors on arterial pressure values among adolescents. Being aware of these factors means that nurses can intervene with health education measures.El objetivo fue evaluar de los algunos factores de riesgo para aumento de los niveles de presión arterial sistémica. Estudio transversal con 145 personas de 12 a 18 años de dos escuelas públicas de la ciudad de Picos-PI. La mayoría eran mujeres (62,8%). La edad media fue de 14,8 años (±3.19). Se encontró 13 (9,0%) tenían exceso de peso [IC% 73,0 a 86,0]. Elevaciones de la circunferencia de cintura se encontraron en 31 (21,4%) y 76 (52,4%) con niveles elevados de presión arterial. No hubo asociación estadísticamente significativa de los factores de riesgo mencionados anteriormente investigado con el sexo (p=0,088, 0,999, 0,204, respectivamente). Sin embargo, 44,8% de los jóvenes tenían al menos un factor; 15,9% dos y 2,1% tres factores relacionados con la hipertensión. Confirma la influencia de factores de riesgo en los valores de presión arterial en la juventud. Delante del conocimiento de estos factores, la enfermería podrá intervenir con medidas de educación en salud.O objetivo do estudo foi avaliar alguns fatores de risco para aumento dos níveis de pressão arterial sistêmica. Trata-se de estudo transversal, desenvolvido com 145 indivíduos de 12 a 18 anos, de duas escolas públicas da cidade de Picos, PI. A maioria era composta por mulheres (62,8%). A média de idade foi de 14,8 anos (±3,19). Verificou-se que 13 (9,0%) apresentavam excesso de peso [IC% 73,0-86,0]. Elevações da circunferência abdominal foram encontradas em 31 (21,4%), e 76 (52,4%) tinham elevação nos níveis de pressão arterial. Não houve associação estatisticamente significante dos fatores de risco investigados citados anteriormente com o sexo (p=0,088; 0,999; 0,204, respectivamente). No entanto, 44,8% dos adolescentes tinham pelo menos um fator, 15,9% dois e 2,1%, três fatores associados indicativos de hipertensão arterial. Confirma-se a influência de fatores de risco sobre os valores da pressão arterial em adolescentes. Diante do conhecimento desses fatores, a enfermagem poderá intervir com medidas de educação em saúde
    corecore