equal
deleted
inserted
replaced
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') |