diff -r 28df61d931e2 -r a455e69c31cc src/HOL/HoareParallel/OG_Hoare.thy --- a/src/HOL/HoareParallel/OG_Hoare.thy Wed Jul 11 11:13:08 2007 +0200 +++ b/src/HOL/HoareParallel/OG_Hoare.thy Wed Jul 11 11:14:51 2007 +0200 @@ -36,46 +36,40 @@ "interfree Ts \ \i j. i < length Ts \ j < length Ts \ i \ j \ interfree_aux (com (Ts!i), post (Ts!i), com (Ts!j)) " -consts ann_hoare :: "('a ann_com \ 'a assn) set" -syntax "_ann_hoare" :: "'a ann_com \ 'a assn \ bool" ("(2\ _// _)" [60,90] 45) -translations "\ c q" \ "(c, q) \ ann_hoare" - -consts oghoare :: "('a assn \ 'a com \ 'a assn) set" -syntax "_oghoare" :: "'a assn \ 'a com \ 'a assn \ bool" ("(3\- _//_//_)" [90,55,90] 50) -translations "\- p c q" \ "(p, c, q) \ oghoare" - -inductive oghoare ann_hoare -intros +inductive + oghoare :: "'a assn \ 'a com \ 'a assn \ bool" ("(3\- _//_//_)" [90,55,90] 50) + and ann_hoare :: "'a ann_com \ 'a assn \ bool" ("(2\ _// _)" [60,90] 45) +where AnnBasic: "r \ {s. f s \ q} \ \ (AnnBasic r f) q" - AnnSeq: "\ \ c0 pre c1; \ c1 q \ \ \ (AnnSeq c0 c1) q" +| AnnSeq: "\ \ c0 pre c1; \ c1 q \ \ \ (AnnSeq c0 c1) q" - AnnCond1: "\ r \ b \ pre c1; \ c1 q; r \ -b \ pre c2; \ c2 q\ +| AnnCond1: "\ r \ b \ pre c1; \ c1 q; r \ -b \ pre c2; \ c2 q\ \ \ (AnnCond1 r b c1 c2) q" - AnnCond2: "\ r \ b \ pre c; \ c q; r \ -b \ q \ \ \ (AnnCond2 r b c) q" +| AnnCond2: "\ r \ b \ pre c; \ c q; r \ -b \ q \ \ \ (AnnCond2 r b c) q" - AnnWhile: "\ r \ i; i \ b \ pre c; \ c i; i \ -b \ q \ +| AnnWhile: "\ r \ i; i \ b \ pre c; \ c i; i \ -b \ q \ \ \ (AnnWhile r b i c) q" - AnnAwait: "\ atom_com c; \- (r \ b) c q \ \ \ (AnnAwait r b c) q" +| AnnAwait: "\ atom_com c; \- (r \ b) c q \ \ \ (AnnAwait r b c) q" - AnnConseq: "\\ c q; q \ q' \ \ \ c q'" +| AnnConseq: "\\ c q; q \ q' \ \ \ c q'" - Parallel: "\ \ic q. Ts!i = (Some c, q) \ \ c q; interfree Ts \ +| Parallel: "\ \ic q. Ts!i = (Some c, q) \ \ c q; interfree Ts \ \ \- (\i\{i. ii\{i. i- {s. f s \q} (Basic f) q" +| Basic: "\- {s. f s \q} (Basic f) q" - Seq: "\ \- p c1 r; \- r c2 q \ \ \- p (Seq c1 c2) q " +| Seq: "\ \- p c1 r; \- r c2 q \ \ \- p (Seq c1 c2) q " - Cond: "\ \- (p \ b) c1 q; \- (p \ -b) c2 q \ \ \- p (Cond b c1 c2) q" +| Cond: "\ \- (p \ b) c1 q; \- (p \ -b) c2 q \ \ \- p (Cond b c1 c2) q" - While: "\ \- (p \ b) c p \ \ \- p (While b i c) (p \ -b)" +| While: "\ \- (p \ b) c p \ \ \- p (While b i c) (p \ -b)" - Conseq: "\ p' \ p; \- p c q ; q \ q' \ \ \- p' c q'" +| Conseq: "\ p' \ p; \- p c q ; q \ q' \ \ \- p' c q'" section {* Soundness *} (* In the version Isabelle-10-Sep-1999: HOL: The THEN and ELSE @@ -147,13 +141,13 @@ subsection {* Soundness of the System for Component Programs *} inductive_cases ann_transition_cases: - "(None,s) -1\ t" - "(Some (AnnBasic r f),s) -1\ t" - "(Some (AnnSeq c1 c2), s) -1\ t" - "(Some (AnnCond1 r b c1 c2), s) -1\ t" - "(Some (AnnCond2 r b c), s) -1\ t" - "(Some (AnnWhile r b I c), s) -1\ t" - "(Some (AnnAwait r b c),s) -1\ t" + "(None,s) -1\ (c', s')" + "(Some (AnnBasic r f),s) -1\ (c', s')" + "(Some (AnnSeq c1 c2), s) -1\ (c', s')" + "(Some (AnnCond1 r b c1 c2), s) -1\ (c', s')" + "(Some (AnnCond2 r b c), s) -1\ (c', s')" + "(Some (AnnWhile r b I c), s) -1\ (c', s')" + "(Some (AnnAwait r b c),s) -1\ (c', s')" text {* Strong Soundness for Component Programs:*} @@ -174,7 +168,7 @@ apply(clarify,simp,clarify,rule_tac x=qa in exI,fast) done -lemma Help: "(transition \ {(v,v,u). True}) = (transition)" +lemma Help: "(transition \ {(x,y). True}) = (transition)" apply force done @@ -412,7 +406,7 @@ apply clarify apply(drule Parallel_length_post_PStar) apply clarify -apply (ind_cases "(Parallel Ts, s) -P1\ (Parallel Rs, t)") +apply (ind_cases "(Parallel Ts, s) -P1\ (Parallel Rs, t)" for Ts s Rs t) apply(rule conjI) apply clarify apply(case_tac "i=j")