| 244 |      1 | (*  Title: 	HOLCF/coind.thy
 | 
|  |      2 |     ID:         $Id$
 | 
|  |      3 |     Author: 	Franz Regensburger
 | 
|  |      4 |     Copyright   1993 Technische Universitaet Muenchen
 | 
|  |      5 | 
 | 
|  |      6 | Example for co-induction on streams
 | 
|  |      7 | *)
 | 
|  |      8 | 
 | 
|  |      9 | Coind = Stream2 +
 | 
|  |     10 | 
 | 
|  |     11 | 
 | 
|  |     12 | consts
 | 
|  |     13 | 
 | 
|  |     14 | nats		:: "dnat stream"
 | 
|  |     15 | from		:: "dnat -> dnat stream"
 | 
|  |     16 | 
 | 
|  |     17 | rules
 | 
|  |     18 | 
 | 
|  |     19 | nats_def	"nats = fix[LAM h.scons[dzero][smap[dsucc][h]]]"
 | 
|  |     20 | 
 | 
|  |     21 | from_def	"from = fix[LAM h n.scons[n][h[dsucc[n]]]]"
 | 
|  |     22 | 
 | 
|  |     23 | end
 | 
|  |     24 | 
 | 
|  |     25 | (*
 | 
|  |     26 | 
 | 
|  |     27 | 		smap[f][UU] = UU
 | 
|  |     28 |       x~=UU --> smap[f][scons[x][xs]] = scons[f[x]][smap[f][xs]]
 | 
|  |     29 | 
 | 
|  |     30 | 		nats = scons[dzero][smap[dsucc][nats]]
 | 
|  |     31 | 
 | 
|  |     32 | 		from[n] = scons[n][from[dsucc[n]]]
 | 
|  |     33 | 
 | 
|  |     34 | 
 | 
|  |     35 | *)
 | 
|  |     36 | 
 | 
|  |     37 | 
 |