Theory Congruence_Sound

theory Congruence_Sound
  imports
    Congruence_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_congruence_st›
  describes exactly that: the singleton residue class term‹congruence_of_int 0›
  covers a declared global precisely, and const‹top› covers an unconstrained
  local trivially. It is the one place the zero-initialization of globals is
  turned into a residue class.

  Congruence'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 Congruence's own commute lemmas in
  theory‹Voblint_Analysis_Congruence.Congruence_Exec› --- so a per-domain copy
  would only rename what the locale already proves.
›

lemma congruence_cinit_gamma:
  "cinit_stores 𝒢 ⊆ default_st_gamma 𝒢 cinit_congruence_st"
  by (auto simp: cinit_stores_def gamma_state_def default_st_gamma_initial)

end