equal
deleted
inserted
replaced
9 Sprod3 = Sprod2 + |
9 Sprod3 = Sprod2 + |
10 |
10 |
11 arities "**" :: (pcpo,pcpo)pcpo (* Witness sprod2.ML *) |
11 arities "**" :: (pcpo,pcpo)pcpo (* Witness sprod2.ML *) |
12 |
12 |
13 consts |
13 consts |
14 spair :: "'a -> 'b -> ('a**'b)" (* continuous strict pairing *) |
14 spair :: "'a -> 'b -> ('a**'b)" (* continuous strict pairing *) |
15 sfst :: "('a**'b)->'a" |
15 sfst :: "('a**'b)->'a" |
16 ssnd :: "('a**'b)->'b" |
16 ssnd :: "('a**'b)->'b" |
17 ssplit :: "('a->'b->'c)->('a**'b)->'c" |
17 ssplit :: "('a->'b->'c)->('a**'b)->'c" |
18 |
18 |
19 syntax |
19 syntax |
20 "@stuple" :: "['a, args] => 'a ** 'b" ("(1'(|_,/ _|'))") |
20 "@stuple" :: "['a, args] => 'a ** 'b" ("(1'(|_,/ _|'))") |
21 |
21 |
22 translations |
22 translations |
23 "(|x, y, z|)" == "(|x, (|y, z|)|)" |
23 "(|x, y, z|)" == "(|x, (|y, z|)|)" |
24 "(|x, y|)" == "spair`x`y" |
24 "(|x, y|)" == "spair`x`y" |
|
25 |
|
26 syntax (symbols) |
|
27 "@stuple" :: "['a, args] => 'a ** 'b" ("(1É_,/ _Ê)") |
25 |
28 |
26 rules |
29 rules |
27 |
30 |
28 inst_sprod_pcpo "(UU::'a**'b) = Ispair UU UU" |
31 inst_sprod_pcpo "(UU::'a**'b) = Ispair UU UU" |
29 |
32 |
31 spair_def "spair == (LAM x y.Ispair x y)" |
34 spair_def "spair == (LAM x y.Ispair x y)" |
32 sfst_def "sfst == (LAM p.Isfst p)" |
35 sfst_def "sfst == (LAM p.Isfst p)" |
33 ssnd_def "ssnd == (LAM p.Issnd p)" |
36 ssnd_def "ssnd == (LAM p.Issnd p)" |
34 ssplit_def "ssplit == (LAM f. strictify`(LAM p.f`(sfst`p)`(ssnd`p)))" |
37 ssplit_def "ssplit == (LAM f. strictify`(LAM p.f`(sfst`p)`(ssnd`p)))" |
35 |
38 |
36 (* start 8bit 1 *) |
|
37 (* end 8bit 1 *) |
|
38 |
39 |
39 end |
40 end |
40 |
41 |
41 |
42 |
42 |
43 |