# Changeset 551 for Deliverables

Ignore:
Timestamp:
Feb 17, 2011, 1:04:15 PM (10 years ago)
Message:

Location:
Deliverables/D4.1/ITP-Paper
Files:
2 edited

### Legend:

Unmodified
 r550 Formal methods are designed to increase our confidence in the design and implementation of software (and hardware). Ideally, we would like all software to come equipped with a formal specification, along with a proof of correctness for the implementation. Today practically all programs are written in high level languages and then compiled into low level ones. Ideally, we would like all software to come equipped with a formal specification, along with a proof of correctness that the software meets this specification. Today the majority of programs are written in high level languages and then compiled into low level ones. Specifications are therefore also given at a high level and correctness can be proved by reasoning automatically or interactively on the program's source code. The code that is actually run, however, is not the high level source code that we reason on, but the object code that is generated by the compiler. A few simple questions now arise: \begin{itemize*} To what extent can you trust your compiler in preserving those properties? \end{itemize*} These questions, and others like them, motivate a current hot topic' in computer science research: \emph{compiler verification}. These questions, and others like them, motivate a current hot topic' in computer science research: \emph{compiler verification} (for instance~\cite{leroy:formal:2009, chlipala:verified:2010}, and many others). So far, the field has been focused on the first and last questions only. In particular, much attention has been placed on verifying compiler correctness with respect to extensional properties of programs, which are easily preserved during compilation; it is sufficient to completely preserve the denotational semantics of the input program. Therefore both the cost model and intensional specifications are affected by the compilation process. In the current EU project CerCo (Certified Complexity') we approach the problem of reasoning about intensional properties of programs as follows. In the current EU project CerCo (Certified Complexity')~\cite{cerco:2011} we approach the problem of reasoning about intensional properties of programs as follows. We are currently developing a compiler that induces a cost model on the high level source code. Costs are assigned to each block of high level instructions by considering the costs of the corresponding blocks of compiled object code. However, the model has the potential to be extremely \emph{precise}, capturing a program's \emph{realistic} cost, by taking into account, not ignoring, the compilation process. A prototype compiler, where no approximation of the cost is provided, has been developed. (The full technical details of the CerCo cost model is explained in~\cite{amadio:certifying:2010}.) We believe that our approach is especially applicable to certifying real time programs.