equal
deleted
inserted
replaced
12 theory ParRed imports Lambda Commutation begin |
12 theory ParRed imports Lambda Commutation begin |
13 |
13 |
14 |
14 |
15 subsection {* Parallel reduction *} |
15 subsection {* Parallel reduction *} |
16 |
16 |
17 inductive2 par_beta :: "[dB, dB] => bool" (infixl "=>" 50) |
17 inductive par_beta :: "[dB, dB] => bool" (infixl "=>" 50) |
18 where |
18 where |
19 var [simp, intro!]: "Var n => Var n" |
19 var [simp, intro!]: "Var n => Var n" |
20 | abs [simp, intro!]: "s => t ==> Abs s => Abs t" |
20 | abs [simp, intro!]: "s => t ==> Abs s => Abs t" |
21 | app [simp, intro!]: "[| s => s'; t => t' |] ==> s \<degree> t => s' \<degree> t'" |
21 | app [simp, intro!]: "[| s => s'; t => t' |] ==> s \<degree> t => s' \<degree> t'" |
22 | beta [simp, intro!]: "[| s => s'; t => t' |] ==> (Abs s) \<degree> t => s'[t'/0]" |
22 | beta [simp, intro!]: "[| s => s'; t => t' |] ==> (Abs s) \<degree> t => s'[t'/0]" |
23 |
23 |
24 inductive_cases2 par_beta_cases [elim!]: |
24 inductive_cases par_beta_cases [elim!]: |
25 "Var n => t" |
25 "Var n => t" |
26 "Abs s => Abs t" |
26 "Abs s => Abs t" |
27 "(Abs s) \<degree> t => u" |
27 "(Abs s) \<degree> t => u" |
28 "s \<degree> t => u" |
28 "s \<degree> t => u" |
29 "Abs s => t" |
29 "Abs s => t" |
48 |
48 |
49 lemma par_beta_subset_beta: "par_beta <= beta^**" |
49 lemma par_beta_subset_beta: "par_beta <= beta^**" |
50 apply (rule predicate2I) |
50 apply (rule predicate2I) |
51 apply (erule par_beta.induct) |
51 apply (erule par_beta.induct) |
52 apply blast |
52 apply blast |
53 apply (blast del: rtrancl.rtrancl_refl intro: rtrancl.rtrancl_into_rtrancl)+ |
53 apply (blast del: rtranclp.rtrancl_refl intro: rtranclp.rtrancl_into_rtrancl)+ |
54 -- {* @{thm[source] rtrancl_refl} complicates the proof by increasing the branching factor *} |
54 -- {* @{thm[source] rtrancl_refl} complicates the proof by increasing the branching factor *} |
55 done |
55 done |
56 |
56 |
57 |
57 |
58 subsection {* Misc properties of par-beta *} |
58 subsection {* Misc properties of par-beta *} |