Theory Parity_Sound

theory Parity_Sound
  imports
    Parity_Exec
begin

section ‹What a run's initial abstract state describes›

text ‹
  A run starts with every declared global at zero and every local
  unconstrained. The one lemma here says const‹cinit_parity_st› describes
  exactly that: zero is even, so const‹PEven› covers a declared global
  precisely, and const‹PTop› covers an unconstrained local trivially.
  Choosing const‹PEven› rather than const‹PTop› for globals is what makes
  this a fact worth owning: it is the one place the zero-initialization of
  globals is turned into a parity.

  Parity's specification, its concretization and the soundness of the one
  against the other are not restated here. Those are constants and theorems of
  locale‹dg_domain_exec›, and an assembly reaches them by interpreting
  that locale from Parity's own commute lemmas in
  theory‹Voblint_Analysis_Parity.Parity_Exec› --- so a per-domain copy would
  only rename what the locale already proves.
›

lemma parity_cinit_gamma:
  "cinit_stores 𝒢 ⊆ default_st_gamma 𝒢 cinit_parity_st"
  by (auto simp: cinit_stores_def gamma_state_def default_st_gamma_initial)


end