src/HOLCF/ex/Stream.thy
changeset 11348 e08a0855af67
parent 9169 85a47aa21f74
child 12036 49f6c49454c2
equal deleted inserted replaced
11347:4e41f71179ed 11348:e08a0855af67
     1 (*  Title: 	HOLCF/ex//Stream.thy
     1 (*  Title: 	HOLCF/ex/Stream.thy
     2     ID:         $Id$
     2     ID:         $Id$
     3     Author: 	Franz Regensburger, David von Oheimb
     3     Author: 	Franz Regensburger, David von Oheimb
     4     Copyright   1993, 1995 Technische Universitaet Muenchen
     4     Copyright   1993, 1995 Technische Universitaet Muenchen
     5 
     5 
     6 general Stream domain
     6 general Stream domain
     7 *)
     7 *)
     8 
     8 
     9 Stream = HOLCF + 
     9 Stream = HOLCF + Nat_Infinity +
    10 
    10 
    11 domain 'a stream = "&&" (ft::'a) (lazy rt::'a stream) (infixr 65)
    11 domain 'a stream = "&&" (ft::'a) (lazy rt::'a stream) (infixr 65)
       
    12 
       
    13 consts
       
    14 
       
    15   smap		:: "('a \\<rightarrow> 'b) \\<rightarrow> 'a stream \\<rightarrow> 'b stream"
       
    16   sfilter	:: "('a \\<rightarrow> tr) \\<rightarrow> 'a stream \\<rightarrow> 'a stream"
       
    17   slen		:: "'a stream \\<Rightarrow> inat"			("#_" [1000] 1000)
       
    18 
       
    19 defs
       
    20 
       
    21   smap_def	"smap	 \\<equiv> fix\\<cdot>(\\<Lambda>h f s. case s of x && xs => f\\<cdot>x && h\\<cdot>f\\<cdot>xs)"
       
    22   sfilter_def	"sfilter \\<equiv> fix\\<cdot>(\\<Lambda>h p s. case s of x && xs => 
       
    23 				     If p\\<cdot>x then x && h\\<cdot>p\\<cdot>xs else h\\<cdot>p\\<cdot>xs fi)"
       
    24   slen_def	"#s \\<equiv> if stream_finite s 
       
    25 		      then Fin (LEAST n. stream_take n\\<cdot>s = s) else \\<infinity>"
    12 
    26 
    13 end
    27 end
    14 
    28 
    15 
    29