lh-l4v/proof/crefine
Gerwin Klein b64bd15816 cleanup: fix indent and warnings
This fixes up some atrocious indentation and removes some warnings for
duplicate rules etc.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-08-16 16:47:10 +10:00
..
ARM cleanup: fix indent and warnings 2021-08-16 16:47:10 +10:00
ARM_HYP cleanup: fix indent and warnings 2021-08-16 16:47:10 +10:00
RISCV64 riscv crefine: proof fix for idle_tcb'/valid_idle' change 2021-07-24 12:09:57 +10:00
X64 x64 crefine: fixes for idle_tcb'/valid_idle' change 2021-07-24 12:09:57 +10:00
autocorres-test lib proof: reorder the assumptions of corres_split 2021-02-19 11:37:12 +11:00
base crefine: session structure update for Isabelle2020 2020-10-27 15:52:31 +10:00
intermediate crefine: enable intermediate CRefine session for Isabelle2020 2020-10-27 15:52:31 +10:00
lib clib: remove unused `csymbr_legacy` method 2021-03-19 13:01:44 +11:00
Move_C.thy riscv crefine: generalise and move some lemmas 2021-03-23 22:40:46 +11:00
README.md trivial: fix links to papers 2021-03-02 11:44:22 +11:00

README.md

C Refinement Proof

This proof establishes that seL4's C code, once translated into Isabelle/HOL using Michael Norrish's C parser, is a formal refinement (i.e. a correct implementation) of its design specification and, transitively (using the results of the Design Spec Refinement Proof) seL4's C code is also a formal refinement of its abstract specification. In other words, this proof establishes that seL4's C code correctly implements its abstract specification.

The approach used for the proof is described in the TPHOLS '09 [paper][5].

Building

To build from the l4v/proof directory, run:

make CRefine

If you wish to build for a specific architecture other than the default, set your L4V_ARCH environment variable accordingly, as documented for the C code translation.

Important Theories

The top-level theory where the refinement statement is established over the entire kernel is Refine_C; the state-relation that relates the state-spaces of the two specifications is defined in StateRelation_C.

Note that this proof deals with two C-level semantics of seL4: one produced directly by the C parser from the kernel's C code, and another produced by the C spec's Substitute theory. These proofs largely operate on the latter, proving that it corresponds to the design spec. Refinement between the two C-level specs is proved in the CToCRefine theory. The top-level Refine_C theory quotes both refinement properties.