equal
deleted
inserted
replaced
25 QInl,QInr :: "i=>i" |
25 QInl,QInr :: "i=>i" |
26 qcase :: "[i=>i, i=>i, i]=>i" |
26 qcase :: "[i=>i, i=>i, i]=>i" |
27 |
27 |
28 translations |
28 translations |
29 "QSUM x:A. B" => "QSigma(A, %x. B)" |
29 "QSUM x:A. B" => "QSigma(A, %x. B)" |
|
30 "A <*> B" => "QSigma(A, _K(B))" |
30 |
31 |
31 rules |
32 rules |
32 QPair_def "<a;b> == a+b" |
33 QPair_def "<a;b> == a+b" |
33 qsplit_def "qsplit(c,p) == THE y. EX a b. p=<a;b> & y=c(a,b)" |
34 qsplit_def "qsplit(c,p) == THE y. EX a b. p=<a;b> & y=c(a,b)" |
34 qfsplit_def "qfsplit(R,z) == EX x y. z=<x;y> & R(x,y)" |
35 qfsplit_def "qfsplit(R,z) == EX x y. z=<x;y> & R(x,y)" |
41 qcase_def "qcase(c,d) == qsplit(%y z. cond(y, d(z), c(z)))" |
42 qcase_def "qcase(c,d) == qsplit(%y z. cond(y, d(z), c(z)))" |
42 end |
43 end |
43 |
44 |
44 ML |
45 ML |
45 |
46 |
46 (* 'Dependent' type operators *) |
|
47 |
|
48 val parse_translation = |
|
49 [(" <*>", ndependent_tr "QSigma")]; |
|
50 |
|
51 val print_translation = |
47 val print_translation = |
52 [("QSigma", dependent_tr' ("@QSUM", " <*>"))]; |
48 [("QSigma", dependent_tr' ("@QSUM", " <*>"))]; |