equal
deleted
inserted
replaced
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 |