src/ZF/QPair.thy
changeset 44 00597b21a6a9
parent 0 a5a9c433f639
child 120 09287f26bfb8
equal deleted inserted replaced
43:eb7ad4a7dc4f 44:00597b21a6a9
    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", " <*>"))];