lh-l4v/tools/asmrefine
Gerwin Klein 2d2cadb86b
lib+proof+tools: move LemmaBucket_C into CParser
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-01-25 10:18:11 +11:00
..
ARM asmrefine: review license for $ARCH/ArchSetup.thy 2020-03-13 14:38:47 +08:00
ARM_HYP asmrefine: review license for $ARCH/ArchSetup.thy 2020-03-13 14:38:47 +08:00
RISCV64 asmrefine: review license for $ARCH/ArchSetup.thy 2020-03-13 14:38:47 +08:00
X64 asmrefine: review license for $ARCH/ArchSetup.thy 2020-03-13 14:38:47 +08:00
testfiles asmrefine: add prefixes for testfiles/*_gref.thy 2022-02-22 18:24:02 +11:00
AsmSemanticsRespects.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
CommonOps.thy isabelle-2021: ad-hoc adjustions to preview 2021-09-30 16:53:17 +10:00
CommonOpsLemmas.thy isabelle2021-1: AsmRefine 2022-03-29 08:38:25 +11:00
ExtraSpecs.thy all: adjust theory imports for TypHeapLib change 2023-01-25 10:13:45 +11:00
FieldAccessors.thy lib+proof+tools: move LemmaBucket_C into CParser 2023-01-25 10:18:11 +11:00
GhostAssertions.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
GlobalsSwap.thy isabelle-2021: update AsmRefine 2021-09-30 16:53:17 +10:00
GraphLang.thy all: adjust theory imports for TypHeapLib change 2023-01-25 10:13:45 +11:00
GraphLangLemmas.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
GraphProof.thy lib+spec+proofs: proof fixes for NonDetMonadLemmaBucket split 2023-01-19 17:01:34 +11:00
GraphRefine.thy lib+proof+tools: move LemmaBucket_C into CParser 2023-01-25 10:18:11 +11:00
Makefile Makefiles: remove unused report-regression target 2022-06-03 09:36:43 +10:00
ProveGraphRefine.thy asmrefine: remove obsolete simp rules 2022-03-29 08:38:25 +11:00
README.md READMEs: fix publication links 2021-08-25 11:22:05 +10:00
ROOT tools/asmrefine: update to Isabelle2020 2020-10-27 15:52:31 +10:00
SimplExport.thy asmrefine: use a prefix for constant lookups 2022-02-22 18:24:02 +11:00
TailrecPre.thy licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00

README.md

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. 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.

An overview of the full proof is given with the SydTV tool. It is also described in the PLDI '13 paper.

Important Theories

The GraphLang theory introduces an Isabelle/HOL representation of SydTV-GL programs, and a parser for them.

The SimplExport theory contains apparatus for exporting the C semantics of a program (created by the C parser and expressed in the Simpl language) into a textual SydTV-GL representation.

The ProveGraphRefine theory introduces proof automation for proving the correctness of the export process of SimplExport.

The GraphProof theory introduces proof rules needed to replay external SydTV refinement proofs within Isabelle/HOL. This is a work in progress.