src/HOLCF/ex/Hoare.thy
changeset 244 929fc2c63bd0
child 1150 66512c9e6bd6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOLCF/ex/Hoare.thy	Wed Jan 19 17:40:26 1994 +0100
@@ -0,0 +1,43 @@
+(*  Title:	HOLCF/ex/hoare.thy
+    ID:         $Id$
+    Author: 	Franz Regensburger
+    Copyright	1993 Technische Universitaet Muenchen
+
+Theory for an example by C.A.R. Hoare 
+
+p x = if b1(x) 
+         then p(g(x))
+         else x fi
+
+q x = if b1(x) orelse b2(x) 
+         then q (g(x))
+         else x fi
+
+Prove: for all b1 b2 g . 
+            q o p  = q 
+
+In order to get a nice notation we fix the functions b1,b2 and g in the
+signature of this example
+
+*)
+
+Hoare = Tr2 +
+
+consts
+	b1:: "'a -> tr"
+	b2:: "'a -> tr"
+	 g:: "'a -> 'a"
+	p :: "'a -> 'a"
+	q :: "'a -> 'a"
+
+rules
+
+  p_def  "p == fix[LAM f. LAM x.\
+\                 If b1[x] then f[g[x]] else x fi]"
+
+  q_def  "q == fix[LAM f. LAM x.\
+\                 If b1[x] orelse b2[x] then f[g[x]] else x fi]"
+
+
+end
+