author | paulson |
Mon, 29 Sep 1997 11:51:52 +0200 | |
changeset 3734 | 33f355f56f82 |
parent 2469 | b50b8c0eec01 |
child 3840 | e0baea4d485a |
permissions | -rw-r--r-- |
1461 | 1 |
(* Title: Confluence.ML |
1048 | 2 |
ID: $Id$ |
1461 | 3 |
Author: Ole Rasmussen |
1048 | 4 |
Copyright 1995 University of Cambridge |
5 |
Logic Image: ZF |
|
6 |
*) |
|
7 |
||
8 |
open Confluence; |
|
9 |
||
10 |
(* ------------------------------------------------------------------------- *) |
|
11 |
(* strip lemmas *) |
|
12 |
(* ------------------------------------------------------------------------- *) |
|
13 |
||
14 |
goalw Confluence.thy [confluence_def,strip_def] |
|
15 |
"!!u.[|confluence(Spar_red1)|]==> strip"; |
|
16 |
by (resolve_tac [impI RS allI RS allI] 1); |
|
1732 | 17 |
by (etac Spar_red.induct 1); |
2469 | 18 |
by (Fast_tac 1); |
19 |
by (fast_tac (!claset addIs [Spar_red.trans]) 1); |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
20 |
qed "strip_lemma_r"; |
1048 | 21 |
|
22 |
||
23 |
goalw Confluence.thy [confluence_def,strip_def] |
|
24 |
"!!u.strip==> confluence(Spar_red)"; |
|
25 |
by (resolve_tac [impI RS allI RS allI] 1); |
|
1732 | 26 |
by (etac Spar_red.induct 1); |
2469 | 27 |
by (Fast_tac 1); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
28 |
by (Clarify_tac 1); |
1048 | 29 |
by (dres_inst_tac [("x1","z")] (spec RS mp) 1); |
30 |
by (REPEAT(eresolve_tac [exE,conjE] 2)); |
|
31 |
by (dres_inst_tac [("x1","ua")] (spec RS mp) 2); |
|
2469 | 32 |
by (fast_tac (!claset addIs [Spar_red.trans]) 3); |
1048 | 33 |
by (TRYALL assume_tac ); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
34 |
qed "strip_lemma_l"; |
1048 | 35 |
|
36 |
(* ------------------------------------------------------------------------- *) |
|
37 |
(* Confluence *) |
|
38 |
(* ------------------------------------------------------------------------- *) |
|
39 |
||
40 |
||
41 |
goalw Confluence.thy [confluence_def] "confluence(Spar_red1)"; |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
42 |
by (Clarify_tac 1); |
1048 | 43 |
by (forward_tac [simulation] 1); |
44 |
by (forw_inst_tac [("n","z")] simulation 1); |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
45 |
by (Clarify_tac 1); |
1048 | 46 |
by (forw_inst_tac [("v","va")] paving 1); |
47 |
by (TRYALL assume_tac); |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
48 |
by (fast_tac (!claset addIs [completeness] addss (!simpset)) 1); |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
49 |
qed "parallel_moves"; |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
50 |
|
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
51 |
bind_thm ("confluence_parallel_reduction", |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
52 |
parallel_moves RS strip_lemma_r RS strip_lemma_l); |
1048 | 53 |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
54 |
goalw Confluence.thy [confluence_def] |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
55 |
"!!u.[|confluence(Spar_red)|]==> confluence(Sred)"; |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
56 |
by(blast_tac (!claset addIs [par_red_red, red_par_red]) 1); |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
57 |
val lemma1 = result(); |
1048 | 58 |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
59 |
bind_thm ("confluence_beta_reduction", |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
60 |
confluence_parallel_reduction RS lemma1); |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
61 |