src/HOLCF/ex/Stream.thy
author kleing
Mon, 21 Jun 2004 10:25:57 +0200
changeset 14981 e73f8140af78
parent 14535 7cb26928e70d
child 15188 9d57263faf9e
permissions -rw-r--r--
Merged in license change from Isabelle2004
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
24d7e8fb8261 added Classlib.* and Witness.*,
oheimb
parents:
diff changeset
     4
12036
wenzelm
parents: 11348
diff changeset
     5
General Stream domain.
14535
7cb26928e70d added Streams.thy (with stream concatenation etc.)
oheimb
parents: 14171
diff changeset
     6
TODO: should be integrated with HOLCF/Streams
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
14171
0cab06e3bbd0 Extended the notion of letter and digit, such that now one may use greek,
skalberg
parents: 12036
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)"
0cab06e3bbd0 Extended the notion of letter and digit, such that now one may use greek,
skalberg
parents: 12036
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