src/HOLCF/ex/Stream.thy
author paulson
Wed, 16 Jan 2002 17:53:22 +0100
changeset 12777 70b2651af635
parent 12036 49f6c49454c2
child 14171 0cab06e3bbd0
permissions -rw-r--r--
Isar version of ZF/AC
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
     1
(*  Title: 	HOLCF/ex/Stream.thy
9169
85a47aa21f74 tidying and unbatchifying
paulson
parents: 4122
diff changeset
     2
    ID:         $Id$
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     3
    Author: 	Franz Regensburger, David von Oheimb
12036
wenzelm
parents: 11348
diff changeset
     4
    License:    GPL (GNU GENERAL PUBLIC LICENSE)
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     5
12036
wenzelm
parents: 11348
diff changeset
     6
General Stream domain.
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     7
*)
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     8
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
     9
Stream = HOLCF + Nat_Infinity +
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    10
4122
f63c283cefaf * removed "axioms" and "generated by" section
oheimb
parents: 2570
diff changeset
    11
domain 'a stream = "&&" (ft::'a) (lazy rt::'a stream) (infixr 65)
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    12
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    13
consts
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    14
12036
wenzelm
parents: 11348
diff changeset
    15
  smap		:: "('a -> 'b) -> 'a stream -> 'b stream"
wenzelm
parents: 11348
diff changeset
    16
  sfilter	:: "('a -> tr) -> 'a stream -> 'a stream"
wenzelm
parents: 11348
diff changeset
    17
  slen		:: "'a stream => inat"			("#_" [1000] 1000)
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    18
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    19
defs
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    20
12036
wenzelm
parents: 11348
diff changeset
    21
  smap_def	"smap	 == fix\\<cdot>(\\<Lambda>h f s. case s of x && xs => f\\<cdot>x && h\\<cdot>f\\<cdot>xs)"
wenzelm
parents: 11348
diff changeset
    22
  sfilter_def	"sfilter == fix\\<cdot>(\\<Lambda>h p s. case s of x && xs => 
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    23
				     If p\\<cdot>x then x && h\\<cdot>p\\<cdot>xs else h\\<cdot>p\\<cdot>xs fi)"
12036
wenzelm
parents: 11348
diff changeset
    24
  slen_def	"#s == if stream_finite s 
11348
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    25
		      then Fin (LEAST n. stream_take n\\<cdot>s = s) else \\<infinity>"
e08a0855af67 added stream length, map, and filter
oheimb
parents: 9169
diff changeset
    26
2570
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    27
end
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    28
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
    29