src/HOLCF/explicit_domains/Coind.thy
changeset 1479 21eb5e156d91
parent 1274 ea0668a1c0ba
equal deleted inserted replaced
1478:2b8c2a7547ab 1479:21eb5e156d91
     1 (*  Title: 	HOLCF/Coind.thy
     1 (*  Title:      HOLCF/Coind.thy
     2     ID:         $Id$
     2     ID:         $Id$
     3     Author: 	Franz Regensburger
     3     Author:     Franz Regensburger
     4     Copyright   1993 Technische Universitaet Muenchen
     4     Copyright   1993 Technische Universitaet Muenchen
     5 
     5 
     6 Example for co-induction on streams
     6 Example for co-induction on streams
     7 *)
     7 *)
     8 
     8 
     9 Coind = Stream2 +
     9 Coind = Stream2 +
    10 
    10 
    11 
    11 
    12 consts
    12 consts
    13 
    13 
    14 	nats		:: "dnat stream"
    14         nats            :: "dnat stream"
    15 	from		:: "dnat -> dnat stream"
    15         from            :: "dnat -> dnat stream"
    16 
    16 
    17 defs
    17 defs
    18 	nats_def	"nats == fix`(LAM h.scons`dzero`(smap`dsucc`h))"
    18         nats_def        "nats == fix`(LAM h.scons`dzero`(smap`dsucc`h))"
    19 
    19 
    20 	from_def	"from == fix`(LAM h n.scons`n`(h`(dsucc`n)))"
    20         from_def        "from == fix`(LAM h n.scons`n`(h`(dsucc`n)))"
    21 
    21 
    22 end
    22 end
    23 
    23 
    24 (*
    24 (*
    25 		smap`f`UU = UU
    25                 smap`f`UU = UU
    26       x~=UU --> smap`f`(scons`x`xs) = scons`(f`x)`(smap`f`xs)
    26       x~=UU --> smap`f`(scons`x`xs) = scons`(f`x)`(smap`f`xs)
    27 
    27 
    28 		nats = scons`dzero`(smap`dsucc`nats)
    28                 nats = scons`dzero`(smap`dsucc`nats)
    29 
    29 
    30 		from`n = scons`n`(from`(dsucc`n))
    30                 from`n = scons`n`(from`(dsucc`n))
    31 *)
    31 *)
    32 
    32 
    33 
    33