diff -r 28df61d931e2 -r a455e69c31cc src/HOL/IMP/Compiler0.thy --- a/src/HOL/IMP/Compiler0.thy Wed Jul 11 11:13:08 2007 +0200 +++ b/src/HOL/IMP/Compiler0.thy Wed Jul 11 11:14:51 2007 +0200 @@ -20,48 +20,32 @@ text {* We describe execution of programs in the machine by an operational (small step) semantics: *} -consts stepa1 :: "instr list \ ((state\nat) \ (state\nat))set" - -syntax - "_stepa1" :: "[instr list,state,nat,state,nat] \ bool" - ("_ |- (3<_,_>/ -1-> <_,_>)" [50,0,0,0,0] 50) - "_stepa" :: "[instr list,state,nat,state,nat] \ bool" - ("_ |-/ (3<_,_>/ -*-> <_,_>)" [50,0,0,0,0] 50) - - "_stepan" :: "[instr list,state,nat,nat,state,nat] \ bool" - ("_ |-/ (3<_,_>/ -(_)-> <_,_>)" [50,0,0,0,0,0] 50) - -syntax (xsymbols) - "_stepa1" :: "[instr list,state,nat,state,nat] \ bool" - ("_ \ (3\_,_\/ -1\ \_,_\)" [50,0,0,0,0] 50) - "_stepa" :: "[instr list,state,nat,state,nat] \ bool" - ("_ \/ (3\_,_\/ -*\ \_,_\)" [50,0,0,0,0] 50) - "_stepan" :: "[instr list,state,nat,nat,state,nat] \ bool" - ("_ \/ (3\_,_\/ -(_)\ \_,_\)" [50,0,0,0,0,0] 50) -syntax (HTML output) - "_stepa1" :: "[instr list,state,nat,state,nat] \ bool" - ("_ |- (3\_,_\/ -1\ \_,_\)" [50,0,0,0,0] 50) - "_stepa" :: "[instr list,state,nat,state,nat] \ bool" - ("_ |-/ (3\_,_\/ -*\ \_,_\)" [50,0,0,0,0] 50) - "_stepan" :: "[instr list,state,nat,nat,state,nat] \ bool" - ("_ |-/ (3\_,_\/ -(_)\ \_,_\)" [50,0,0,0,0,0] 50) +inductive_set + stepa1 :: "instr list \ ((state\nat) \ (state\nat))set" + and stepa1' :: "[instr list,state,nat,state,nat] \ bool" + ("_ \ (3\_,_\/ -1\ \_,_\)" [50,0,0,0,0] 50) + for P :: "instr list" +where + "P \ \s,m\ -1\ \t,n\ == ((s,m),t,n) : stepa1 P" +| ASIN[simp]: + "\ n \ P \ \s,n\ -1\ \s[x\ a s],Suc n\" +| JMPFT[simp,intro]: + "\ n \ P \ \s,n\ -1\ \s,Suc n\" +| JMPFF[simp,intro]: + "\ n \ P \ \s,n\ -1\ \s,m\" +| JMPB[simp]: + "\ n \ P \ \s,n\ -1\ \s,j\" -translations - "P \ \s,m\ -1\ \t,n\" == "((s,m),t,n) : stepa1 P" - "P \ \s,m\ -*\ \t,n\" == "((s,m),t,n) : ((stepa1 P)^*)" - "P \ \s,m\ -(i)\ \t,n\" == "((s,m),t,n) : ((stepa1 P)^i)" +abbreviation + stepa :: "[instr list,state,nat,state,nat] \ bool" + ("_ \/ (3\_,_\/ -*\ \_,_\)" [50,0,0,0,0] 50) where + "P \ \s,m\ -*\ \t,n\ == ((s,m),t,n) : ((stepa1 P)^*)" -inductive "stepa1 P" -intros -ASIN[simp]: - "\ n \ P \ \s,n\ -1\ \s[x\ a s],Suc n\" -JMPFT[simp,intro]: - "\ n \ P \ \s,n\ -1\ \s,Suc n\" -JMPFF[simp,intro]: - "\ n \ P \ \s,n\ -1\ \s,m\" -JMPB[simp]: - "\ n \ P \ \s,n\ -1\ \s,j\" +abbreviation + stepan :: "[instr list,state,nat,nat,state,nat] \ bool" + ("_ \/ (3\_,_\/ -(_)\ \_,_\)" [50,0,0,0,0,0] 50) where + "P \ \s,m\ -(i)\ \t,n\ == ((s,m),t,n) : ((stepa1 P)^i)" subsection "The compiler"