CASCompCert
The results related to our paper reside in concurrency/ subdirectory, others are CompCert-3.0.1 files required by our formalization.
Below we list contents of concurrency/.
Top-level files
-
framework/Soundness.vThe framework final theorem (Theorem 12) -
FinalTheorem.vCompCert correctness with x86-SC backend and object modules (Theorem 14). -
x86TSO/FinalTheoremExt.vCorrectness with x86-TSO backend and object modules (Theorem 15).
Verification framework
-
common/
general definitions, e.g. abstract languages, global semantics, DRF, etc..-
Footprint.vFootprint Definition -
GMemory.vGlobal memory instantiation -
InteractionSemantics.vThe abstract module-local semantics, including the definition of “well-defined language” (Def. 1) -
GAST.v,GlobDefs.v,GlobSemantics.vPreemptive global semantics (see Fig. 7) -
ETrace.vEvent trace definition -
DRF.vDefinition of DRF (see Fig. 9 and Sec. 5) -
ReachClose.vReach-close (Def. 4) -
Injections,LDSimDefs.vDefinitions of footprint matching and rely/guarantee conditions (Fig. 8). -
LDSim.vModule local simulation (see Def. 2, 3). -
SeqCorrect.vDefinition of Sequential compiler correctness (Def. 10)
-
-
framework/
the verification framework-
NPDefs/NPSemantics.vNon-preemptive global semantics (see Fig. 7) -
NPDefs/NPDRF.vDefinition of NPDRF (see Sec. 5) -
NPDefs/NPEquiv.vEquivalence between DRF and NPDRF -
NPDefs/RefineEquiv.vEquivalence between preemptive and non-preemptive semantics of DRF programs (Lemma 9) -
GlobUSim/GlobUSim.v,GlobUSim/GlobUSimRefine.vGlobal upward simulation and the proofs of the Soundness Lemma (Lemma 7) -
GlobDSim/GlobDSim.v,GlobDSim/Flipping.vGlobal downward simulation and the proofs of the Flip Lemma -
Compositionality/Compositionality.vProofs of Compositionality (Lemma 6)
-
CompCert verification
-
comp_correct/CompCert verification-
ClightLang.v,AsmLang.v,SpecLang.vClight, x86-SC, and CImp language instantiations -
ClightWD.v,AsmWD.v,SpecLangWDDET.vProofs showing that Clight, x86-SC, CImp languages are well-defined -
AsmDET.v,SpecLangWDDET.vProofs showing that x86-SC and CImp are deterministic -
localize/Localize.vLifting lemmas for reusing CompCert's proofs -
localize/LDSim_local_transitive.vTransitivity of the CompCert memory based simulation -
SpecLangIDTrans.vCorrectness of the identity transformation of CImp modules -
CompCorrect.vThe adapted CompCert compiler and its correctness proof (Lemma 13) -
cfrontend/andbackend/: Instantiations of the intermediate languages (*_local.v) and proved individual compilation passes. Below are tables of the intermediate language instantiations and proved passes.
Intermediate Languages Instantiation CSharpminor Csharpminor_local.vCminor Cminor_local.vRTL RTL_local.vLTL LTL_local.vLinear Linear_local.vMach Mach_local.vPass Compiler code Correctness Proof Cshmgen cshmgen.vcshmgen_proof.vCminorgen cminorgen.vcminorgenproof.vSelection selection.vselection_proof.vRTLgen rtlgen.vrtlgen_proof.vTailcall tailcall.vtailcall_proof.vRenumber renumber.vrenumber_proof.vAllocation allocation.valloc_proof.vTunneling tunneling.vtunneling_proof.vLinearize linearize.vlinearize_proof.vCleanupLabels cleanuplabels.vcleanuplabels_proof.vStacking stacking.vstacking_proof.vAsmgen asmgen.vasmgen_proof.v -
Extended framework
-
x86TSO/-
AsmTSO.vThe x86-TSO language instantiations -
ObjectSim.vObject simulation -
TSOCompositionality.vProof of Lemma 16 (Restore SC semantics for DRF x86 programs) -
lock_proof/An efficient spin-lock implementation (code.v) with its correctness proof (LockProof.v)
-