src/HOLCF/explicit_domains/Stream2.ML
changeset 1274 ea0668a1c0ba
child 1461 6bcb44e4d6e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOLCF/explicit_domains/Stream2.ML	Fri Oct 06 17:25:24 1995 +0100
@@ -0,0 +1,43 @@
+(*
+    ID:         $Id$
+    Author: 	Franz Regensburger
+    Copyright   1993 Technische Universitaet Muenchen
+
+Lemmas for theory Stream2.thy
+*)
+
+open Stream2;
+
+(* ------------------------------------------------------------------------- *)
+(* expand fixed point properties                                             *)
+(* ------------------------------------------------------------------------- *)
+
+val smap_def2 = fix_prover2 Stream2.thy smap_def 
+	"smap = (LAM f s. stream_when`(LAM x l.scons`(f`x) `(smap`f`l)) `s)";
+
+
+(* ------------------------------------------------------------------------- *)
+(* recursive  properties                                                     *)
+(* ------------------------------------------------------------------------- *)
+
+
+qed_goal "smap1" Stream2.thy "smap`f`UU = UU"
+ (fn prems =>
+	[
+	(rtac (smap_def2 RS ssubst) 1),
+	(simp_tac (!simpset addsimps stream_when) 1)
+	]);
+
+qed_goal "smap2" Stream2.thy 
+	"x~=UU ==> smap`f`(scons`x`xs) = scons `(f`x) `(smap`f`xs)"
+ (fn prems =>
+	[
+	(cut_facts_tac prems 1),
+	(rtac trans 1),
+	(rtac (smap_def2 RS ssubst) 1),
+	(asm_simp_tac (!simpset addsimps stream_rews) 1),
+	(rtac refl 1)
+	]);
+
+
+val stream2_rews = [smap1, smap2];