lh-l4v/proof/crefine
Gerwin Klein 6418bda962 aarch64/riscv/x64: remove findVSpaceForASIDAssert
findVSpaceForASIDAssert is needed for modeling the hardware ASID lookup
on ARM. None of AARCH64, RISCV64, X64 use that mechanism and the
function is unused. There are some proof about it, but those are unused
as well. This commit removes all of these.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-04-20 09:16:19 +10:00
..
ARM crefine: remove useless comments 2022-03-29 08:38:25 +11:00
ARM_HYP crefine: remove useless comments 2022-03-29 08:38:25 +11:00
RISCV64 aarch64/riscv/x64: remove findVSpaceForASIDAssert 2022-04-20 09:16:19 +10:00
X64 aarch64/riscv/x64: remove findVSpaceForASIDAssert 2022-04-20 09:16:19 +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 isabelle2021-1: CRefine 2022-03-29 08:38:25 +11:00
Move_C.thy isabelle2021-1: CRefine 2022-03-29 08:38:25 +11:00
README.md READMEs: fix publication links 2021-08-25 11:22:05 +10: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.