src/HOL/IMP/Transition.thy
changeset 1700 afd3b60660db
child 1701 a26fbeaaaabd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOL/IMP/Transition.thy	Mon Apr 29 15:48:27 1996 +0200
@@ -0,0 +1,40 @@
+(*  Title:      HOL/IMP/Transition.thy
+    ID:         $Id$
+    Author:     Tobias Nipkow & Robert Sandner, TUM
+    Copyright   1996 TUM
+
+Transition semantics of commands
+*)
+
+Transition = Natural + RelPow +
+
+consts  evalc1    :: "((com*state)*(com*state))set"        
+	"@evalc1" :: "[(com*state),(com*state)] => bool"   
+				("_ -1-> _" [81,81] 100)
+	"@evalcn" :: "[(com*state),(com*state)] => nat => bool"
+				("_ -(_)-> _" [81,81] 100)
+	"@evalc*" :: "[(com*state),(com*state)] => bool"   
+				("_ -*-> _" [81,81] 100)
+
+translations
+       	"cs0 -1-> cs1" == "(cs0,cs1) : evalc1"
+        "x -(n)-> (y,z)" == "(x,y,z) : evalc1 ^ n" 
+	"cs0 -(n)-> cs1" == "(cs0,cs1) : evalc1 ^ n"
+	"x -*-> (y,z)" == "(x,y,z) : evalc1 ^*" 
+	"cs0 -*-> cs1" == "(cs0,cs1) : evalc1 ^*"
+
+
+inductive "evalc1"
+  intrs
+    Assign "(x := a,s) -1-> (SKIP,s[a s / x])"
+
+    Semi1   "(SKIP;c,s) -1-> (c,s)"	
+    Semi2   "(c0,s) -1-> (c2,s1) ==> (c0;c1,s) -1-> (c2;c1,s1)"
+
+    IfTrue "b s ==> (IF b THEN c1 ELSE c2,s) -1-> (c1,s)"
+    IfFalse "~b s ==> (IF b THEN c1 ELSE c2,s) -1-> (c2,s)"
+
+    WhileFalse "~b s ==> (WHILE b DO c,s) -1-> (SKIP,s)"
+    WhileTrue "b s ==> (WHILE b DO c,s) -1-> (c;WHILE b DO c,s)"
+
+end