src/HOLCF/cprod3.thy
author paulson
Mon Dec 07 18:26:25 1998 +0100 (1998-12-07)
changeset 6019 0e55c2fb2ebb
parent 243 c22b85994e17
permissions -rw-r--r--
tidying
     1 (*  Title: 	HOLCF/cprod3.thy
     2     ID:         $Id$
     3     Author: 	Franz Regensburger
     4     Copyright   1993 Technische Universitaet Muenchen
     5 
     6 
     7 Class instance of  * for class pcpo
     8 
     9 *)
    10 
    11 Cprod3 = Cprod2 +
    12 
    13 arities "*" :: (pcpo,pcpo)pcpo			(* Witness cprod2.ML *)
    14 
    15 consts  
    16 	"@cpair"     :: "'a => 'b => ('a*'b)" ("_#_" [101,100] 100)
    17 	"cop @cpair" :: "'a -> 'b -> ('a*'b)" ("cpair")
    18 					(* continuous  pairing *)
    19 	cfst         :: "('a*'b)->'a"
    20 	csnd         :: "('a*'b)->'b"
    21 	csplit       :: "('a->'b->'c)->('a*'b)->'c"
    22 
    23 rules 
    24 
    25 inst_cprod_pcpo	"UU::'a*'b = <UU,UU>"
    26 
    27 cpair_def	"cpair  == (LAM x y.<x,y>)"
    28 cfst_def	"cfst   == (LAM p.fst(p))"
    29 csnd_def	"csnd   == (LAM p.snd(p))"	
    30 csplit_def	"csplit == (LAM f p.f[cfst[p]][csnd[p]])"
    31 
    32 end
    33 
    34 ML
    35 
    36 (* ----------------------------------------------------------------------*)
    37 (* parse translations for the above mixfix                               *)
    38 (* ----------------------------------------------------------------------*)
    39 
    40 val parse_translation = [("@cpair",mk_cinfixtr "@cpair")];
    41 
    42 
    43