src/HOLCF/sprod3.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
nipkow@243
     1
(*  Title: 	HOLCF/sprod3.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
Class instance of  ** for class pcpo
nipkow@243
     7
*)
nipkow@243
     8
nipkow@243
     9
Sprod3 = Sprod2 +
nipkow@243
    10
nipkow@243
    11
arities "**" :: (pcpo,pcpo)pcpo			(* Witness sprod2.ML *)
nipkow@243
    12
nipkow@243
    13
consts  
nipkow@243
    14
	"@spair"     :: "'a => 'b => ('a**'b)" ("_##_" [101,100] 100)
nipkow@243
    15
	"cop @spair" :: "'a -> 'b -> ('a**'b)" ("spair")
nipkow@243
    16
					(* continuous strict pairing *)
nipkow@243
    17
	sfst         :: "('a**'b)->'a"
nipkow@243
    18
	ssnd         :: "('a**'b)->'b"
nipkow@243
    19
	ssplit       :: "('a->'b->'c)->('a**'b)->'c"
nipkow@243
    20
nipkow@243
    21
rules 
nipkow@243
    22
nipkow@243
    23
inst_sprod_pcpo	"UU::'a**'b = Ispair(UU,UU)"
nipkow@243
    24
spair_def	"spair  == (LAM x y.Ispair(x,y))"
nipkow@243
    25
sfst_def	"sfst   == (LAM p.Isfst(p))"
nipkow@243
    26
ssnd_def	"ssnd   == (LAM p.Issnd(p))"	
nipkow@243
    27
ssplit_def	"ssplit == (LAM f. strictify[LAM p.f[sfst[p]][ssnd[p]]])"
nipkow@243
    28
nipkow@243
    29
end
nipkow@243
    30
nipkow@243
    31
ML
nipkow@243
    32
nipkow@243
    33
(* ----------------------------------------------------------------------*)
nipkow@243
    34
(* parse translations for the above mixfix                               *)
nipkow@243
    35
(* ----------------------------------------------------------------------*)
nipkow@243
    36
nipkow@243
    37
val parse_translation = [("@spair",mk_cinfixtr "@spair")];
nipkow@243
    38
nipkow@243
    39