src/HOLCF/Cprod3.thy
author regensbu
Thu, 29 Jun 1995 16:28:40 +0200
changeset 1168 74be52691d62
parent 752 b89462f9d5f1
child 1274 ea0668a1c0ba
permissions -rw-r--r--
The curried version of HOLCF is now just called HOLCF. The old uncurried version is no longer supported

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


Class instance of  * for class pcpo

*)

Cprod3 = Cprod2 +

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

consts  
	cpair        :: "'a -> 'b -> ('a*'b)" (* continuous  pairing *)
	cfst         :: "('a*'b)->'a"
	csnd         :: "('a*'b)->'b"
	csplit       :: "('a->'b->'c)->('a*'b)->'c"

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


translations 
	"<x, y, z>"   == "<x, <y, z>>"
	"<x, y>"      == "cpair`x`y"

rules 

inst_cprod_pcpo	"(UU::'a*'b) = (UU,UU)"

defs
cpair_def	"cpair  == (LAM x y.(x,y))"
cfst_def	"cfst   == (LAM p.fst(p))"
csnd_def	"csnd   == (LAM p.snd(p))"	
csplit_def	"csplit == (LAM f p.f`(cfst`p)`(csnd`p))"

end