src/ZF/ex/Comb.thy
changeset 1702 4aa538e82f76
parent 1478 2b8c2a7547ab
child 11316 b4e71bd751e4
equal deleted inserted replaced
1701:a26fbeaaaabd 1702:4aa538e82f76
    15 
    15 
    16 Comb = Datatype +
    16 Comb = Datatype +
    17 
    17 
    18 (** Datatype definition of combinators S and K, with infixed application **)
    18 (** Datatype definition of combinators S and K, with infixed application **)
    19 consts comb :: i
    19 consts comb :: i
    20 datatype (* <= "univ(0)" *)
    20 datatype
    21   "comb" = K
    21   "comb" = K
    22          | S
    22          | S
    23          | "#" ("p: comb", "q: comb")   (infixl 90)
    23          | "#" ("p: comb", "q: comb")   (infixl 90)
    24 
    24 
    25 (** Inductive definition of contractions, -1->
    25 (** Inductive definition of contractions, -1->
    65     Ap    "[| p=1=>q;  r=1=>s |] ==> p#r =1=> q#s"
    65     Ap    "[| p=1=>q;  r=1=>s |] ==> p#r =1=> q#s"
    66   type_intrs "comb.intrs"
    66   type_intrs "comb.intrs"
    67 
    67 
    68 
    68 
    69 (*Misc definitions*)
    69 (*Misc definitions*)
    70 consts
    70 constdefs
    71   diamond   :: i => o
    71   I :: i
    72   I         :: i
    72   "I == S#K#K"
    73 
    73 
    74 defs
    74   diamond :: i => o
    75 
    75   "diamond(r) == ALL x y. <x,y>:r --> 
    76   diamond_def "diamond(r) == ALL x y. <x,y>:r --> 
    76                           (ALL y'. <x,y'>:r --> 
    77                             (ALL y'. <x,y'>:r --> 
    77                                    (EX z. <y,z>:r & <y',z> : r))"
    78                                  (EX z. <y,z>:r & <y',z> : r))"
       
    79 
       
    80   I_def       "I == S#K#K"
       
    81 
    78 
    82 end
    79 end