Theory Wasm_Soundness

section ‹Soundness Theorems›

theory Wasm_Soundness imports Main Wasm_Properties begin

theorem preservation:
  assumes "⊢_i s;vs;es : ts"
          "s;vs;es ↝_i s';vs';es'"
  shows "⊢_i s';vs';es' : ts"
proof -
  obtain 𝒮 where "store_typing s 𝒮" "𝒮None ⊩_i vs;es : ts"
    using assms(1) config_typing.simps
    by blast
  hence "store_typing s' 𝒮" "𝒮None ⊩_i vs';es' : ts"
    using assms(2) store_preserved types_preserved_e
    by simp_all
  thus ?thesis
    using config_typing.intros
    by blast
qed

theorem progress:
  assumes "⊢_i s;vs;es : ts"
  shows "const_list es  es = [Trap]  (a s' vs' es'. s;vs;es ↝_i s';vs';es')"
proof -
  obtain 𝒮 where "store_typing s 𝒮" "𝒮None ⊩_i vs;es : ts"
    using assms config_typing.simps
    by blast
  thus ?thesis
    using progress_e3
    by blast
qed

end