src/HOLCF/Sprod3.thy
author clasohm
Tue, 24 Oct 1995 14:45:35 +0100
changeset 1294 1358dc040edb
parent 1274 ea0668a1c0ba
child 1479 21eb5e156d91
permissions -rw-r--r--
added calls of init_html and make_chart; added usage of qed

(*  Title: 	HOLCF/sprod3.thy
    ID:         $Id$
    Author: 	Franz Regensburger
    Copyright   1993 Technische Universitaet Muenchen

Class instance of  ** for class pcpo
*)

Sprod3 = Sprod2 +

arities "**" :: (pcpo,pcpo)pcpo			(* Witness sprod2.ML *)

consts  
	spair        :: "'a -> 'b -> ('a**'b)" (* continuous strict pairing *)
	sfst         :: "('a**'b)->'a"
	ssnd         :: "('a**'b)->'b"
	ssplit       :: "('a->'b->'c)->('a**'b)->'c"

syntax  
	"@stuple"    :: "['a, args] => 'a ** 'b"	("(1'(|_,/ _|'))")

translations
	"(|x, y, z|)"   == "(|x, (|y, z|)|)"
	"(|x, y|)"      == "spair`x`y"

rules 

inst_sprod_pcpo	"(UU::'a**'b) = Ispair UU UU"

defs
spair_def	"spair  == (LAM x y.Ispair x y)"
sfst_def	"sfst   == (LAM p.Isfst p)"
ssnd_def	"ssnd   == (LAM p.Issnd p)"	
ssplit_def	"ssplit == (LAM f. strictify`(LAM p.f`(sfst`p)`(ssnd`p)))"

(* start 8bit 1 *)
(* end 8bit 1 *)

end