equal
deleted
inserted
replaced
1 (* Title: ZF/ex/Comb.thy |
1 (* Title: ZF/ex/Comb.thy |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Lawrence C Paulson |
3 Author: Lawrence C Paulson |
4 Copyright 1994 University of Cambridge |
4 Copyright 1994 University of Cambridge |
5 |
5 |
6 Combinatory Logic example: the Church-Rosser Theorem |
6 Combinatory Logic example: the Church-Rosser Theorem |
7 Curiously, combinators do not include free variables. |
7 Curiously, combinators do not include free variables. |
8 |
8 |
25 (** Inductive definition of contractions, -1-> |
25 (** Inductive definition of contractions, -1-> |
26 and (multi-step) reductions, ---> |
26 and (multi-step) reductions, ---> |
27 **) |
27 **) |
28 consts |
28 consts |
29 contract :: i |
29 contract :: i |
30 "-1->" :: [i,i] => o (infixl 50) |
30 "-1->" :: [i,i] => o (infixl 50) |
31 "--->" :: [i,i] => o (infixl 50) |
31 "--->" :: [i,i] => o (infixl 50) |
32 |
32 |
33 translations |
33 translations |
34 "p -1-> q" == "<p,q> : contract" |
34 "p -1-> q" == "<p,q> : contract" |
35 "p ---> q" == "<p,q> : contract^*" |
35 "p ---> q" == "<p,q> : contract^*" |
36 |
36 |
47 (** Inductive definition of parallel contractions, =1=> |
47 (** Inductive definition of parallel contractions, =1=> |
48 and (multi-step) parallel reductions, ===> |
48 and (multi-step) parallel reductions, ===> |
49 **) |
49 **) |
50 consts |
50 consts |
51 parcontract :: i |
51 parcontract :: i |
52 "=1=>" :: [i,i] => o (infixl 50) |
52 "=1=>" :: [i,i] => o (infixl 50) |
53 "===>" :: [i,i] => o (infixl 50) |
53 "===>" :: [i,i] => o (infixl 50) |
54 |
54 |
55 translations |
55 translations |
56 "p =1=> q" == "<p,q> : parcontract" |
56 "p =1=> q" == "<p,q> : parcontract" |
57 "p ===> q" == "<p,q> : parcontract^+" |
57 "p ===> q" == "<p,q> : parcontract^+" |
58 |
58 |