src/HOLCF/Cprod3.thy
author nipkow
Thu Oct 06 18:40:18 1994 +0100 (1994-10-06)
changeset 625 119391dd1d59
parent 442 13ac1fd0a14d
child 752 b89462f9d5f1
permissions -rw-r--r--
New version
nipkow@243
     1
(*  Title: 	HOLCF/cprod3.thy
nipkow@243
     2
    ID:         $Id$
nipkow@243
     3
    Author: 	Franz Regensburger
nipkow@243
     4
    Copyright   1993 Technische Universitaet Muenchen
nipkow@243
     5
nipkow@243
     6
nipkow@243
     7
Class instance of  * for class pcpo
nipkow@243
     8
nipkow@243
     9
*)
nipkow@243
    10
nipkow@243
    11
Cprod3 = Cprod2 +
nipkow@243
    12
nipkow@243
    13
arities "*" :: (pcpo,pcpo)pcpo			(* Witness cprod2.ML *)
nipkow@243
    14
nipkow@243
    15
consts  
nipkow@243
    16
	"@cpair"     :: "'a => 'b => ('a*'b)" ("_#_" [101,100] 100)
nipkow@243
    17
	"cop @cpair" :: "'a -> 'b -> ('a*'b)" ("cpair")
nipkow@243
    18
					(* continuous  pairing *)
nipkow@243
    19
	cfst         :: "('a*'b)->'a"
nipkow@243
    20
	csnd         :: "('a*'b)->'b"
nipkow@243
    21
	csplit       :: "('a->'b->'c)->('a*'b)->'c"
nipkow@243
    22
nipkow@625
    23
translations "x#y" => "cpair[x][y]"
nipkow@625
    24
nipkow@243
    25
rules 
nipkow@243
    26
clasohm@442
    27
inst_cprod_pcpo	"(UU::'a*'b) = <UU,UU>"
nipkow@243
    28
nipkow@243
    29
cpair_def	"cpair  == (LAM x y.<x,y>)"
nipkow@243
    30
cfst_def	"cfst   == (LAM p.fst(p))"
nipkow@243
    31
csnd_def	"csnd   == (LAM p.snd(p))"	
nipkow@243
    32
csplit_def	"csplit == (LAM f p.f[cfst[p]][csnd[p]])"
nipkow@243
    33
nipkow@243
    34
end
nipkow@243
    35
nipkow@243
    36
nipkow@243
    37
nipkow@243
    38