1,011 research outputs found
Trusting Computations: a Mechanized Proof from Partial Differential Equations to Actual Program
Computer programs may go wrong due to exceptional behaviors, out-of-bound
array accesses, or simply coding errors. Thus, they cannot be blindly trusted.
Scientific computing programs make no exception in that respect, and even bring
specific accuracy issues due to their massive use of floating-point
computations. Yet, it is uncommon to guarantee their correctness. Indeed, we
had to extend existing methods and tools for proving the correct behavior of
programs to verify an existing numerical analysis program. This C program
implements the second-order centered finite difference explicit scheme for
solving the 1D wave equation. In fact, we have gone much further as we have
mechanically verified the convergence of the numerical scheme in order to get a
complete formal proof covering all aspects from partial differential equations
to actual numerical results. To the best of our knowledge, this is the first
time such a comprehensive proof is achieved.Comment: N° RR-8197 (2012). arXiv admin note: text overlap with
arXiv:1112.179
Verification of Symmetry Detection using PVS
One of the major limitations of model checking is that of state-space
explosion. Symmetry reduction is a method that has been successfully used to alleviate
this problem for models of systems that consist of sets of identical components.
In earlier work, we have introduced a specification language, Promela-Lite, which
captures the essential features of Promela but has a fully defined semantics. We used
hand proofs to show that a static symmetry detection technique developed for this
language is sound, and suitable to be used in a symmetry reduction tool for SPIN.
One of the criticisms often levelled at verification implementations, is that they have
not been proved mechanically to be correct, i.e., no mechanical formal verification
technique has been used to check the soundness of the approach. In this paper, we
address this issue by mechanically verifying the correctness of the symmetry detection
technique. We do this by embedding the syntax and semantics of Promela-Lite
into the theorem prover PVS and using these embeddings to both check the consistency
of syntax/semantics definitions, and interactively prove relevant theoretical
properties
Trustworthy Refactoring via Decomposition and Schemes: A Complex Case Study
Widely used complex code refactoring tools lack a solid reasoning about the
correctness of the transformations they implement, whilst interest in proven
correct refactoring is ever increasing as only formal verification can provide
true confidence in applying tool-automated refactoring to industrial-scale
code. By using our strategic rewriting based refactoring specification
language, we present the decomposition of a complex transformation into smaller
steps that can be expressed as instances of refactoring schemes, then we
demonstrate the semi-automatic formal verification of the components based on a
theoretical understanding of the semantics of the programming language. The
extensible and verifiable refactoring definitions can be executed in our
interpreter built on top of a static analyser framework.Comment: In Proceedings VPT 2017, arXiv:1708.0688
A Mechanized Proof of Kleene’s Theorem in Why3
In this dissertation we present a mathematically minded development of the correction
proof of Kleene’s theorem conversion of regular expressions into finite automata, on
the basis of equivalent expressive power. We formalise a functional implementation of
the algorithm and prove, in full detail, the soundness of its mathematical definition,
working within the Why3 framework to develop a mechanically verified implementation
of the conversion algorithm. The motivation for this work is to test the feasibility of
the deductive approach to the verification of software and pave the way to do similar
proofs in the context of a static analysis approach to (object-oriented) programming. In
particular, on the subject of behavioural types in typestate settings, whose expressiveness
stands between regular and context-free languages and, therefore, can greatly benefit
from mechanically certified implementations.Nesta dissertação apresentamos um desenvolvimento matemático da prova de correcção
da conversão de expressões regulares em autómatos finitos do teorema de Kleene,
com base no seu poder expressivo equivalente. Formalizamos uma implementação funcional
do algoritmo e provamos, em detalhe, a correcção da sua definição matemática.
Trabalhando no framework Why3 para desenvolver uma implementação mecanicamente
certificada do algoritmo de conversão. A motivação para este trabalho é testar a viabilidade
da metodologia e preparar o caminho para fazer provas semelhantes no contexto de
uma abordagem de análise estática na programação (orientada para objectos). Em particular,
no tópico dos tipos comportamentais com typestates, cuja expressividade está entre a
das linguagens regulares e livres-de-contexto. Podendo, por isso, beneficiar enormemente
de implementações mecanicamente certificada
- …