src/HOL/IMP/Abs_Int1.thy
changeset 49497 860b7c6bd913
parent 49464 4e4bdd12280f
child 49547 78be750222cf
equal deleted inserted replaced
49496:2694d1615eef 49497:860b7c6bd913
    46 fun aval' :: "aexp \<Rightarrow> 'av st \<Rightarrow> 'av" where
    46 fun aval' :: "aexp \<Rightarrow> 'av st \<Rightarrow> 'av" where
    47 "aval' (N n) S = num' n" |
    47 "aval' (N n) S = num' n" |
    48 "aval' (V x) S = fun S x" |
    48 "aval' (V x) S = fun S x" |
    49 "aval' (Plus a1 a2) S = plus' (aval' a1 S) (aval' a2 S)"
    49 "aval' (Plus a1 a2) S = plus' (aval' a1 S) (aval' a2 S)"
    50 
    50 
    51 lemma aval'_sound: "s : \<gamma>\<^isub>f S \<Longrightarrow> vars a \<subseteq> dom S \<Longrightarrow> aval a s : \<gamma>(aval' a S)"
    51 lemma aval'_sound: "s : \<gamma>\<^isub>s S \<Longrightarrow> vars a \<subseteq> dom S \<Longrightarrow> aval a s : \<gamma>(aval' a S)"
    52 by (induction a) (auto simp: gamma_num' gamma_plus' \<gamma>_st_def)
    52 by (induction a) (auto simp: gamma_num' gamma_plus' \<gamma>_st_def)
    53 
    53 
    54 end
    54 end
    55 
    55 
    56 text{* The for-clause (here and elsewhere) only serves the purpose of fixing
    56 text{* The for-clause (here and elsewhere) only serves the purpose of fixing
    79 
    79 
    80 
    80 
    81 text{* Soundness: *}
    81 text{* Soundness: *}
    82 
    82 
    83 lemma in_gamma_update:
    83 lemma in_gamma_update:
    84   "\<lbrakk> s : \<gamma>\<^isub>f S; i : \<gamma> a \<rbrakk> \<Longrightarrow> s(x := i) : \<gamma>\<^isub>f(update S x a)"
    84   "\<lbrakk> s : \<gamma>\<^isub>s S; i : \<gamma> a \<rbrakk> \<Longrightarrow> s(x := i) : \<gamma>\<^isub>s(update S x a)"
    85 by(simp add: \<gamma>_st_def)
    85 by(simp add: \<gamma>_st_def)
    86 
    86 
    87 theorem step_preserves_le:
    87 theorem step_preserves_le:
    88   "\<lbrakk> S \<subseteq> \<gamma>\<^isub>o S'; C \<le> \<gamma>\<^isub>c C';  C' \<in> L X; S' \<in> L X \<rbrakk> \<Longrightarrow> step S C \<le> \<gamma>\<^isub>c (step' S' C')"
    88   "\<lbrakk> S \<subseteq> \<gamma>\<^isub>o S'; C \<le> \<gamma>\<^isub>c C';  C' \<in> L X; S' \<in> L X \<rbrakk> \<Longrightarrow> step S C \<le> \<gamma>\<^isub>c (step' S' C')"
    89 proof(induction C arbitrary: C' S S')
    89 proof(induction C arbitrary: C' S S')