seL4-L4.verified/proof/crefine
Rafal Kolanski 1ab65b78ed refine+crefine: arch-split Machine_R
Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
2025-07-08 15:05:33 +10:00
..
AARCH64 refine+crefine: arch-split Machine_R 2025-07-08 15:05:33 +10:00
ARM refine+crefine: arch-split Machine_R 2025-07-08 15:05:33 +10:00
ARM_HYP refine+crefine: arch-split Machine_R 2025-07-08 15:05:33 +10:00
RISCV64 refine+crefine: arch-split Machine_R 2025-07-08 15:05:33 +10:00
X64 refine+crefine: arch-split Machine_R 2025-07-08 15:05:33 +10:00
autocorres-test lib+proof: move corres_add_noop_rhs and corres_add_noop_rhs2 to Lib 2024-07-11 13:36:28 +09:30
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 refine+crefine: update to Isabelle2025 2025-06-13 13:20:24 +10:00
Move_C.thy crefine: update for Bits_R arch-split 2025-07-08 08:24:16 +10:00
README.md READMEs: use run_tests consistently in READMEs (#622) 2023-03-30 13:59:18 +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 for the ARM architecture from the l4v/ directory, run:

L4V_ARCH=ARM ./run_tests CRefine

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.