lh-l4v/proof/crefine
Gerwin Klein 8f992b2350 arm_hyp: proof updates for seL4 commit 93ab2543d9d8
The seL4 commit factors out special treatment of specific VCPU
registers, and this commit updates the ARM_HYP proofs accordingly.

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-12-19 21:08:30 +11:00
..
ARM crefine: proof update for seL4 7cc50c3039 2020-11-30 16:22:31 +11:00
ARM_HYP arm_hyp: proof updates for seL4 commit 93ab2543d9d8 2020-12-19 21:08:30 +11:00
RISCV64 crefine: proof update for seL4 7cc50c3039 2020-11-30 16:22:31 +11:00
X64 crefine: proof update for seL4 7cc50c3039 2020-11-30 16:22:31 +11:00
autocorres-test proof/ROOT: more Isabelle2020 session structure 2020-10-27 15:52:31 +10: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 all: remove theory import path references 2020-11-02 10:16:17 +10:00
Move_C.thy crefine: session structure update for Isabelle2020 2020-10-27 15:52:31 +10:00
README.md update publications links 2020-11-23 17:06:46 +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.