src/HOLCF/FOCUS/Fstream.thy
author wenzelm
Sat, 01 Dec 2001 18:52:32 +0100
changeset 12338 de0f4a63baa5
parent 11355 778c369559d9
child 14171 0cab06e3bbd0
permissions -rw-r--r--
renamed class "term" to "type" (actually "HOL.type");

(*  Title: 	HOLCF/FOCUS/Fstream.thy
    ID:         $Id$
    Author: 	David von Oheimb, TU Muenchen
    License:    GPL (GNU GENERAL PUBLIC LICENSE)

FOCUS streams (with lifted elements)
*)

(* FOCUS flat streams *)

Fstream = Stream + 

default type

types 'a fstream = ('a lift) stream

consts

  fscons	:: "'a     \\<Rightarrow> 'a fstream \\<rightarrow> 'a fstream"
  fsfilter	:: "'a set \\<Rightarrow> 'a fstream \\<rightarrow> 'a fstream"

syntax

  "@emptystream":: "'a fstream" 			("<>")
  "@fscons"	:: "'a \\<Rightarrow> 'a fstream \\<Rightarrow> 'a fstream"	("(_~>_)"    [66,65] 65)
  "@fsfilter"	:: "'a set \\<Rightarrow> 'a fstream \\<Rightarrow> 'a fstream"	("(_'(C')_)" [64,63] 63)

syntax (xsymbols)

  "@fscons"	:: "'a \\<Rightarrow> 'a fstream \\<Rightarrow> 'a fstream"	("(_\\<leadsto>_)"
								     [66,65] 65)
  "@fsfilter"	:: "'a set \\<Rightarrow> 'a fstream \\<Rightarrow> 'a fstream" ("(_\\<copyright>_)"
								     [64,63] 63)
translations

  "<>"    => "\\<bottom>"
  "a~>s"  == "fscons a\\<cdot>s"
  "A(C)s" == "fsfilter A\\<cdot>s"

defs

  fscons_def	"fscons a   \\<equiv> \\<Lambda>s. Def a && s"
  fsfilter_def  "fsfilter A \\<equiv> sfilter\\<cdot>(flift2 (\\<lambda>x. x\\<in>A))"

end