# HG changeset patch # User oheimb # Date 997282663 -7200 # Node ID 8f32860eac3afd89648e87303a0cd4d487d8ea2b # Parent f7157bdc1e7015a9108b55046427daf839a731dd layout, subscripts diff -r f7157bdc1e70 -r 8f32860eac3a src/HOL/NanoJava/AxSem.thy --- a/src/HOL/NanoJava/AxSem.thy Wed Aug 08 15:16:38 2001 +0200 +++ b/src/HOL/NanoJava/AxSem.thy Wed Aug 08 16:57:43 2001 +0200 @@ -9,7 +9,7 @@ theory AxSem = State: types assn = "state => bool" - vassn = "val \ assn" + vassn = "val => assn" triple = "assn \ stmt \ assn" etriple = "assn \ expr \ vassn" translations @@ -24,9 +24,9 @@ "@hoare" :: "[triple set, triple set ] => bool" ("_ |\/ _" [61,61] 60) "@hoare1" :: "[triple set, assn,stmt,assn] => bool" ("_ \/ ({(1_)}/ (_)/ {(1_)})" [61,3,90,3]60) -"@ehoare" :: "[triple set, etriple ] => bool" ("_ |\e/ _"[61,61]60) +"@ehoare" :: "[triple set, etriple ] => bool" ("_ |\\<^sub>e/ _"[61,61]60) "@ehoare1" :: "[triple set, assn,expr,vassn]=> bool" - ("_ \e/ ({(1_)}/ (_)/ {(1_)})" [61,3,90,3]60) + ("_ \\<^sub>e/ ({(1_)}/ (_)/ {(1_)})" [61,3,90,3]60) syntax "@hoare" :: "[triple set, triple set ] => bool" ("_ ||-/ _" [61,61] 60) "@hoare1" :: "[triple set, assn,stmt,assn] => bool" @@ -37,9 +37,9 @@ translations "A |\ C" \ "(A,C) \ hoare" "A \ {P}c{Q}" \ "A |\ {(P,c,Q)}" - "A |\e t" \ "(A,t) \ ehoare" - "A |\e (P,e,Q)" \ "(A,P,e,Q) \ ehoare" (** shouldn't be necess.**) - "A \e{P}e{Q}" \ "A |\e (P,e,Q)" + "A |\\<^sub>e t" \ "(A,t) \ ehoare" + "A |\\<^sub>e (P,e,Q)" \ "(A,P,e,Q) \ ehoare" (** shouldn't be necess.**) + "A \\<^sub>e {P}e{Q}" \ "A |\\<^sub>e (P,e,Q)" inductive hoare ehoare @@ -124,13 +124,13 @@ apply fast done -lemma eConseq1: "\A \e {P'} e {Q}; \s. P s \ P' s\ \ A \e {P} e {Q}" +lemma eConseq1: "\A \\<^sub>e {P'} e {Q}; \s. P s \ P' s\ \ A \\<^sub>e {P} e {Q}" apply (rule hoare_ehoare.eConseq) apply (rule allI, assumption) apply fast done -lemma eConseq2: "\A \e {P} e {Q'}; \v t. Q' v t \ Q v t\ \ A \e {P} e {Q}" +lemma eConseq2: "\A \\<^sub>e {P} e {Q'}; \v t. Q' v t \ Q v t\ \ A \\<^sub>e {P} e {Q}" apply (rule hoare_ehoare.eConseq) apply (rule allI, assumption) apply fast diff -r f7157bdc1e70 -r 8f32860eac3a src/HOL/NanoJava/Decl.thy --- a/src/HOL/NanoJava/Decl.thy Wed Aug 08 15:16:38 2001 +0200 +++ b/src/HOL/NanoJava/Decl.thy Wed Aug 08 16:57:43 2001 +0200 @@ -15,7 +15,6 @@ types fdecl (* field declaration *) = "vnam \ ty" - record methd (* method declaration *) = par :: ty res :: ty @@ -46,9 +45,6 @@ consts Prog :: prog (* program as a global value *) - -consts - Object :: cname (* name of root class *) diff -r f7157bdc1e70 -r 8f32860eac3a src/HOL/NanoJava/Equivalence.thy --- a/src/HOL/NanoJava/Equivalence.thy Wed Aug 08 15:16:38 2001 +0200 +++ b/src/HOL/NanoJava/Equivalence.thy Wed Aug 08 16:57:43 2001 +0200 @@ -35,12 +35,12 @@ syntax (xsymbols) valid :: "[assn,stmt, assn] => bool" ( "\ {(1_)}/ (_)/ {(1_)}" [3,90,3] 60) - evalid :: "[assn,expr,vassn] => bool" ("\e {(1_)}/ (_)/ {(1_)}" [3,90,3] 60) + evalid :: "[assn,expr,vassn] => bool" ("\\<^sub>e {(1_)}/ (_)/ {(1_)}" [3,90,3] 60) nvalid :: "[nat, triple ] => bool" ("\_: _" [61,61] 60) - envalid :: "[nat,etriple ] => bool" ("\_:e _" [61,61] 60) + envalid :: "[nat,etriple ] => bool" ("\_:\<^sub>e _" [61,61] 60) nvalids :: "[nat, triple set] => bool" ("|\_: _" [61,61] 60) cnvalids :: "[triple set,triple set] => bool" ("_ |\/ _" [61,61] 60) -cenvalid :: "[triple set,etriple ] => bool" ("_ |\e/ _"[61,61] 60) +cenvalid :: "[triple set,etriple ] => bool" ("_ |\\<^sub>e/ _"[61,61] 60) lemma nvalid_def2: "\n: (P,c,Q) \ \s t. s -c-n\ t \ P s \ Q t" @@ -51,16 +51,16 @@ apply blast done -lemma envalid_def2: "\n:e (P,e,Q) \ \s v t. s -e\v-n\ t \ P s \ Q v t" +lemma envalid_def2: "\n:\<^sub>e (P,e,Q) \ \s v t. s -e\v-n\ t \ P s \ Q v t" by (simp add: envalid_def Let_def) -lemma evalid_def2: "\e {P} e {Q} = (\n. \n:e (P,e,Q))" +lemma evalid_def2: "\\<^sub>e {P} e {Q} = (\n. \n:\<^sub>e (P,e,Q))" apply (simp add: evalid_def envalid_def2) apply blast done lemma cenvalid_def2: - "A|\e (P,e,Q) = (\n. |\n: A \ (\s v t. s -e\v-n\ t \ P s \ Q v t))" + "A|\\<^sub>e (P,e,Q) = (\n. |\n: A \ (\s v t. s -e\v-n\ t \ P s \ Q v t))" by(simp add: cenvalid_def envalid_def2) @@ -103,7 +103,7 @@ "A |\ {(P,c,Q)} \ \n. |\n: A \ (\s t. s -c-n\ t \ P s \ Q t)" by(simp add: cnvalids_def nvalids_def nvalid_def2) -lemma hoare_sound_main:"\t. (A |\ C \ A |\ C) \ (A |\e t \ A |\e t)" +lemma hoare_sound_main:"\t. (A |\ C \ A |\ C) \ (A |\\<^sub>e t \ A |\\<^sub>e t)" apply (tactic "split_all_tac 1", rename_tac P e Q) apply (rule hoare_ehoare.induct) apply (tactic {* ALLGOALS (REPEAT o dresolve_tac [thm "all_conjunct2", thm "all3_conjunct2"]) *}) @@ -149,7 +149,7 @@ apply fast done -theorem ehoare_sound: "{} \e {P} e {Q} \ \e {P} e {Q}" +theorem ehoare_sound: "{} \\<^sub>e {P} e {Q} \ \\<^sub>e {P} e {Q}" apply (simp only: evalid_def2) apply (drule hoare_sound_main [THEN conjunct2, rule_format]) apply (unfold cenvalid_def nvalids_def) @@ -160,9 +160,11 @@ subsection "(Relative) Completeness" constdefs MGT :: "stmt => state => triple" - "MGT c z \ (\s. z = s, c, \ t. \n. z -c- n-> t)" - eMGT :: "expr => state => etriple" - "eMGT e z \ (\s. z = s, e, \v t. \n. z -e>v-n-> t)" + "MGT c z \ (\s. z = s, c, \ t. \n. z -c- n-> t)" + MGTe :: "expr => state => etriple" + "MGTe e z \ (\s. z = s, e, \v t. \n. z -e>v-n-> t)" +syntax (xsymbols) + MGTe :: "expr => state => etriple" ("MGT\<^sub>e") lemma MGF_implies_complete: "\z. {} |\ { MGT c z} \ \ {P} c {Q} \ {} \ {P} c {Q}" @@ -173,9 +175,9 @@ done lemma eMGF_implies_complete: - "\z. {} |\e eMGT e z \ \e {P} e {Q} \ {} \e {P} e {Q}" + "\z. {} |\\<^sub>e MGT\<^sub>e e z \ \\<^sub>e {P} e {Q} \ {} \\<^sub>e {P} e {Q}" apply (simp only: evalid_def2) -apply (unfold eMGT_def) +apply (unfold MGTe_def) apply (erule hoare_ehoare.eConseq) apply (clarsimp simp add: envalid_def2) done @@ -183,8 +185,8 @@ declare exec_eval.intros[intro!] lemma MGF_Loop: "\z. A \ {op = z} c {\t. \n. z -c-n\ t} \ - A \ {op = z} While (e) c {\t. \n. z -While (e) c-n\ t}" -apply (rule_tac P' = "\z s. (z,s) \ ({(s,t). \n. s \ Null \ s -c-n\ t})^*" + A \ {op = z} While (x) c {\t. \n. z -While (x) c-n\ t}" +apply (rule_tac P' = "\z s. (z,s) \ ({(s,t). \n. s \ Null \ s -c-n\ t})^*" in hoare_ehoare.Conseq) apply (rule allI) apply (rule hoare_ehoare.Loop) @@ -203,8 +205,8 @@ done lemma MGF_lemma: "\C m z. A |\ {MGT (Impl C m) z} \ - (\z. A |\ {MGT c z}) \ (\z. A |\e eMGT e z)" -apply (simp add: MGT_def eMGT_def) + (\z. A |\ {MGT c z}) \ (\z. A |\\<^sub>e MGT\<^sub>e e z)" +apply (simp add: MGT_def MGTe_def) apply (rule stmt_expr.induct) apply (rule_tac [!] allI) @@ -301,7 +303,7 @@ apply (rule MGF_Impl) done -theorem ehoare_relative_complete: "\e {P} e {Q} \ {} \e {P} e {Q}" +theorem ehoare_relative_complete: "\\<^sub>e {P} e {Q} \ {} \\<^sub>e {P} e {Q}" apply (rule eMGF_implies_complete) apply (erule_tac [2] asm_rl) apply (rule allI) diff -r f7157bdc1e70 -r 8f32860eac3a src/HOL/NanoJava/OpSem.thy --- a/src/HOL/NanoJava/OpSem.thy Wed Aug 08 15:16:38 2001 +0200 +++ b/src/HOL/NanoJava/OpSem.thy Wed Aug 08 16:57:43 2001 +0200 @@ -22,7 +22,6 @@ "s -e>v-n-> s'" == "(s, e, v, n, s') \ eval" inductive exec eval intros - Skip: " s -Skip-n-> s" Comp: "[| s0 -c1-n-> s1; s1 -c2-n-> s2 |] ==> @@ -67,21 +66,21 @@ inductive_cases exec_elim_cases': - "s -Skip -n\ t" - "s -c1;; c2 -n\ t" - "s -If(e) c1 Else c2-n\ t" - "s -While(x) c -n\ t" - "s -x:==e -n\ t" - "s -e1..f:==e2 -n\ t" -inductive_cases Meth_elim_cases: "s -Meth C m-n\ t" -inductive_cases Impl_elim_cases: "s -Impl C m-n\ t" + "s -Skip -n\ t" + "s -c1;; c2 -n\ t" + "s -If(e) c1 Else c2-n\ t" + "s -While(x) c -n\ t" + "s -x:==e -n\ t" + "s -e1..f:==e2 -n\ t" +inductive_cases Meth_elim_cases: "s -Meth C m-n\ t" +inductive_cases Impl_elim_cases: "s -Impl C m-n\ t" lemmas exec_elim_cases = exec_elim_cases' Meth_elim_cases Impl_elim_cases inductive_cases eval_elim_cases: - "s -new C \v-n\ t" - "s -Cast C e \v-n\ t" - "s -LAcc x \v-n\ t" - "s -e..f \v-n\ t" - "s -{C}e1..m(e2) \v-n\ t" + "s -new C \v-n\ t" + "s -Cast C e \v-n\ t" + "s -LAcc x \v-n\ t" + "s -e..f \v-n\ t" + "s -{C}e1..m(e2) \v-n\ t" lemma exec_eval_mono [rule_format]: "(s -c -n\ t \ (\m. n \ m \ s -c -m\ t)) \ diff -r f7157bdc1e70 -r 8f32860eac3a src/HOL/NanoJava/Term.thy --- a/src/HOL/NanoJava/Term.thy Wed Aug 08 15:16:38 2001 +0200 +++ b/src/HOL/NanoJava/Term.thy Wed Aug 08 16:57:43 2001 +0200 @@ -38,11 +38,5 @@ | Call cname expr mname expr (* method call *) ("{_}_.._'(_')" [99,95,99,95] 95) - -lemma pair_imageI [intro]: "(a, b) \ A ==> f a b : (%(a, b). f a b) ` A" -apply (rule_tac x = "(a,b)" in image_eqI) -apply auto -done - end