This directory contains the formalization of "Structured logical simulation relations for blunderless separate compilation". The files are organized by the sections of the corresponding research paper:
Section 2: Core Semantics and Memory
mem_lemmas.v: Auxiliary definitions, mem_forward, and CompCert memory model lemmas.core_semantics.v: Definitions for core_semantics, cooperative core_semantics, and multistep relations.
Section 4: Injections and Effects
StructuredInjections.v: Structured injections and associated lemmas.effect_semantics.v: Single- and multi-step execution decorated with memory effects.effect_simulations.v: Contains Lemma 1 (inject_restrict and REACH_inject).
Section 5: Structured Logical Simulation Relations (SLSRs)
effect_simulations.v: Defines SLSRs (at the end of the file). Includes replace_locals/replace_externs (corresponding to leakOut/leakIn).effect_simulations_lemmas.v: SLSR composition and multistep simulation diagrams.
Section 6: Transitivity and Interpolation
rg_lemmas.v: Rely-guarantee propositions 1 and 2.effect_simulations_trans.v: Main transitivity proof (Theorem 1: eff_sim_trans).effect_corediagram_trans.v: Transitivity of the core diagram of SLSRs.effect_interpolants.v: Interpolation lemma as a Coq module type.effect_interpolation_II.v: Construction of interpolating memory.effect_interpolation_proofs.v: Formal instantiation of the interpolation module.
Section 7: CompCert Adaptations
Located in ./compcert_adapt, these files adapt CompCert semantics (Clight, Csharpminor, Cminor, CminorSel, RTL) to the Core Semantics interface and support effect annotations.
[Language]_coop.v: Cooperative core semantics adaptations.[Language]_eff.v: Effect annotation adaptations.[Language]genproofEFF.v: Adaptations of CompCert simulation proofs to SLSRs.effect_properties.v: Contains Lemma 2 (REACH_Store).
Section 8: External Specs and Trace Semantics
extspec.v: Axiomatic specifications of external functions.trace_semantics.v: Memory-instrumented events and trace semantics.closed_safety.v: Safety for trace semantics.open_semantics_preservation.v: Proof of Theorem 2 (trace_refinement) and Corollary 1 (corollary).