1 | |
---|
2 | This directory contains documents for the presentation of the project |
---|
3 | in the dissemination workshops and in the final review. |
---|
4 | |
---|
5 | Each module is supposed to last between 15' and 30', so it should be |
---|
6 | supported by a set of 15-30 slides and possibly by a short demo. |
---|
7 | |
---|
8 | Not all modules need to be presented each time. |
---|
9 | |
---|
10 | Module: |
---|
11 | Overview |
---|
12 | Abstract (*To come (Bologna?)*) |
---|
13 | |
---|
14 | Module: |
---|
15 | The labelling approach to certified cost annotations. |
---|
16 | Abstract |
---|
17 | We present a so-called labelling method to enrich a compiler in order |
---|
18 | to turn it into a ``cost annotating compiler'', that is, a compiler |
---|
19 | which can ``lift'' pieces of information on the execution cost of the |
---|
20 | object code as cost annotations on the source code. These cost |
---|
21 | annotations characterize the execution costs of code fragments of |
---|
22 | constant complexity. First, we provide a proof methodology that |
---|
23 | extends standard simulation proofs of compiler correctness to ensure |
---|
24 | that the cost annotations on the source code are sound and precise |
---|
25 | with respect to an execution cost model of the object code. Second, |
---|
26 | we demonstrate that our label-based instrumentation is scalable |
---|
27 | because it consists in a modular extension of the compilation |
---|
28 | chain. To that end, we report our successful experience in |
---|
29 | implementing and testing the labelling approach on top of a prototype |
---|
30 | compiler written in OCAML for (a large fragment of) the C language. |
---|
31 | |
---|
32 | Module: |
---|
33 | Reasoning on cost annotations of C programms. |
---|
34 | Abstract |
---|
35 | We provide evidence for the usability of the generated cost |
---|
36 | annotations as a mean to reason on the concrete complexity of programs |
---|
37 | written in C. For this purpose, we present a Frama-C plugin that uses |
---|
38 | our cost annotating compiler to automatically infer trustworthy logic |
---|
39 | assertions about the concrete worst case execution cost of programs |
---|
40 | written in a fragment of the C language. These logic assertions are |
---|
41 | synthetic in the sense that they characterize the cost of executing |
---|
42 | the entire program, not only constant-time fragments. (These bounds |
---|
43 | may depend on the size of the input data.) We report our |
---|
44 | experimentations on some C programs, including programs generated by a |
---|
45 | compiler for the synchronous programming language Lustre used in |
---|
46 | critical embedded software. |
---|
47 | |
---|
48 | |
---|
49 | Module: |
---|
50 | Targeting more advanced optimisations: indexed labelling. |
---|
51 | Abstract |
---|
52 | We present an extension to the labelling approach. The original approach looses |
---|
53 | preciseness when differences arise as to the cost of the same portion of code, |
---|
54 | whether due to code transformation such as loop optimisations or advanced |
---|
55 | architecture features (e.g. cache). We propose to address this weakness by |
---|
56 | formally indexing cost labels with the iterations of the containing loops they |
---|
57 | occur in. These indexes can be transformed during the compilation, and when |
---|
58 | lifted back to source code they produce dependent costs. |
---|
59 | The proposed changes have been implemented in CerCo's untrusted prototype |
---|
60 | compiler. |
---|
61 | |
---|
62 | Module: |
---|
63 | Certifying and reasoning on cost annotations of functional programs. |
---|
64 | Abstract |
---|
65 | We design a labelling method to insert cost annotations in a |
---|
66 | higher-order functional program, to certify their correctness with |
---|
67 | respect to a standard, typable compilation chain to assembly code |
---|
68 | including safe memory management, and to reason about them in a |
---|
69 | higher-order Hoare logic. |
---|
70 | Slides: funcca-slide.pdf |
---|
71 | |
---|
72 | Module: |
---|
73 | Compiler certification in Matita (tentative title, add more modules if needed...) |
---|
74 | Abstract (*To come (Edinburgh/Bologna?)*) |
---|