equal
deleted
inserted
replaced
31 |
31 |
32 |
32 |
33 fun AI :: "com \<Rightarrow> 'a astate \<Rightarrow> 'a astate" where |
33 fun AI :: "com \<Rightarrow> 'a astate \<Rightarrow> 'a astate" where |
34 "AI SKIP S = S" | |
34 "AI SKIP S = S" | |
35 "AI (x ::= a) S = update S x (aval' a S)" | |
35 "AI (x ::= a) S = update S x (aval' a S)" | |
36 "AI (c1;c2) S = AI c2 (AI c1 S)" | |
36 "AI (c1;;c2) S = AI c2 (AI c1 S)" | |
37 "AI (IF b THEN c1 ELSE c2) S = (AI c1 S) \<squnion> (AI c2 S)" | |
37 "AI (IF b THEN c1 ELSE c2) S = (AI c1 S) \<squnion> (AI c2 S)" | |
38 "AI (WHILE b DO c) S = pfp (AI c) S" |
38 "AI (WHILE b DO c) S = pfp (AI c) S" |
39 |
39 |
40 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <: S0 \<Longrightarrow> t <: AI c S0" |
40 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <: S0 \<Longrightarrow> t <: AI c S0" |
41 proof(induction c arbitrary: s t S0) |
41 proof(induction c arbitrary: s t S0) |