lh-l4v/tools/asmrefine/README.md

39 lines
1.6 KiB
Markdown
Raw Normal View History

Assembly Refinement Toolchain
=============================
This toolchain is used to validate the translation of C programs into compiled
binaries. The semantics of the compiled binaries and the initial C programs are
compared via the external [SydTV tool](
https://github.com/seL4proj/graph-refine). These tools are used to convert the
Isabelle C semantics of a program into an exported SydTV-GL representation,
to verify that the exported program is a refinement of the starting semantics,
and to replay SydTV proofs in Isabelle/HOL.
These theories are generic. They are specialised to the case of seL4 in the
[proof directory](../../proof/asmrefine).
An overview of the full proof is given with the [SydTV tool](
https://github.com/seL4proj/graph-refine). It is also described in the
PLDI '13 [paper][1].
[1]: http://www.nicta.com.au/pub?id=6449 "Translation Validation for a Verified OS Kernel"
Important Theories
------------------
The [`GraphLang`](GraphLang.thy) theory introduces an Isabelle/HOL
representation of SydTV-GL programs, and a parser for them.
The [`SimplExport`](SimplExport.thy) theory contains apparatus for exporting
the C semantics of a program (created by the [C parser](../c-parser) and
expressed in the [Simpl](../c-parser/Simpl) language) into a textual SydTV-GL
representation.
The [`ProveGraphRefine`](ProveGraphRefine.thy) theory introduces proof
automation for proving the correctness of the export process of
[`SimplExport`](SimplExport.thy).
The [`GraphProof`](GraphProof.thy) theory introduces proof rules needed to
replay external SydTV refinement proofs within Isabelle/HOL. This is a work in
progress.