# HG changeset patch # User wenzelm # Date 1393012453 -3600 # Node ID b45af39fcdaee2875d6787ee7cd50a70db4ed526 # Parent ec14796cd140bd238f6b720450a0a7b8125e02f2 tuned; diff -r ec14796cd140 -r b45af39fcdae src/HOL/Isar_Examples/Hoare.thy --- a/src/HOL/Isar_Examples/Hoare.thy Fri Feb 21 20:47:48 2014 +0100 +++ b/src/HOL/Isar_Examples/Hoare.thy Fri Feb 21 20:54:13 2014 +0100 @@ -189,26 +189,24 @@ @{ML Syntax_Trans.quote_tr'},). *} syntax - "_quote" :: "'b \ ('a \ 'b)" ("(.'(_').)" [0] 1000) - "_antiquote" :: "('a \ 'b) \ 'b" ("\_" [1000] 1000) - "_Subst" :: "'a bexp \ 'b \ idt \ 'a bexp" - ("_[_'/\_]" [1000] 999) - "_Assert" :: "'a \ 'a set" ("(\_\)" [0] 1000) - "_Assign" :: "idt \ 'b \ 'a com" ("(\_ :=/ _)" [70, 65] 61) - "_Cond" :: "'a bexp \ 'a com \ 'a com \ 'a com" - ("(0IF _/ THEN _/ ELSE _/ FI)" [0, 0, 0] 61) - "_While_inv" :: "'a bexp \ 'a assn \ 'a com \ 'a com" - ("(0WHILE _/ INV _ //DO _ /OD)" [0, 0, 0] 61) - "_While" :: "'a bexp \ 'a com \ 'a com" - ("(0WHILE _ //DO _ /OD)" [0, 0] 61) + "_quote" :: "'b \ ('a \ 'b)" + "_antiquote" :: "('a \ 'b) \ 'b" ("\_" [1000] 1000) + "_Subst" :: "'a bexp \ 'b \ idt \ 'a bexp" ("_[_'/\_]" [1000] 999) + "_Assert" :: "'a \ 'a set" ("(\_\)" [0] 1000) + "_Assign" :: "idt \ 'b \ 'a com" ("(\_ :=/ _)" [70, 65] 61) + "_Cond" :: "'a bexp \ 'a com \ 'a com \ 'a com" + ("(0IF _/ THEN _/ ELSE _/ FI)" [0, 0, 0] 61) + "_While_inv" :: "'a bexp \ 'a assn \ 'a com \ 'a com" + ("(0WHILE _/ INV _ //DO _ /OD)" [0, 0, 0] 61) + "_While" :: "'a bexp \ 'a com \ 'a com" ("(0WHILE _ //DO _ /OD)" [0, 0] 61) translations - "\b\" \ "CONST Collect .(b)." - "B [a/\x]" \ "\\(_update_name x (\_. a)) \ B\" - "\x := a" \ "CONST Basic .(\(_update_name x (\_. a)))." + "\b\" \ "CONST Collect (_quote b)" + "B [a/\x]" \ "\\(_update_name x (\_. a)) \ B\" + "\x := a" \ "CONST Basic (_quote (\(_update_name x (\_. a))))" "IF b THEN c1 ELSE c2 FI" \ "CONST Cond \b\ c1 c2" - "WHILE b INV i DO c OD" \ "CONST While \b\ i c" - "WHILE b DO c OD" \ "WHILE b INV CONST undefined DO c OD" + "WHILE b INV i DO c OD" \ "CONST While \b\ i c" + "WHILE b DO c OD" \ "WHILE b INV CONST undefined DO c OD" parse_translation {* let @@ -328,12 +326,10 @@ text {* While statements --- with optional invariant. *} -lemma [intro?]: - "\ (P \ b) c P \ \ P (While b P c) (P \ -b)" +lemma [intro?]: "\ (P \ b) c P \ \ P (While b P c) (P \ -b)" by (rule while) -lemma [intro?]: - "\ (P \ b) c P \ \ P (While b undefined c) (P \ -b)" +lemma [intro?]: "\ (P \ b) c P \ \ P (While b undefined c) (P \ -b)" by (rule while)