src/HOLCF/cprod3.thy
author nipkow
Wed Jan 19 17:35:01 1994 +0100 (1994-01-19)
changeset 243 c22b85994e17
permissions -rw-r--r--
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
in HOL.
     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