author | paulson |
Thu, 11 Nov 1999 10:24:14 +0100 | |
changeset 8004 | 6273f58ea2c1 |
parent 7499 | 23e090051cb8 |
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 |
||
5068 | 14 |
Goalw [confluence_def,strip_def] |
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
15 |
"[|confluence(Spar_red1)|]==> strip"; |
1048 | 16 |
by (resolve_tac [impI RS allI RS allI] 1); |
1732 | 17 |
by (etac Spar_red.induct 1); |
2469 | 18 |
by (Fast_tac 1); |
4091 | 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 |
||
5068 | 23 |
Goalw [confluence_def,strip_def] |
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
24 |
"strip==> confluence(Spar_red)"; |
1048 | 25 |
by (resolve_tac [impI RS allI RS allI] 1); |
1732 | 26 |
by (etac Spar_red.induct 1); |
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
27 |
by (Blast_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); |
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
30 |
by (blast_tac (claset() addIs [Spar_red.trans]) 2); |
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
31 |
by (assume_tac 1); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
32 |
qed "strip_lemma_l"; |
1048 | 33 |
|
34 |
(* ------------------------------------------------------------------------- *) |
|
35 |
(* Confluence *) |
|
36 |
(* ------------------------------------------------------------------------- *) |
|
37 |
||
38 |
||
5068 | 39 |
Goalw [confluence_def] "confluence(Spar_red1)"; |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
40 |
by (Clarify_tac 1); |
7499 | 41 |
by (ftac simulation 1); |
1048 | 42 |
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
|
43 |
by (Clarify_tac 1); |
1048 | 44 |
by (forw_inst_tac [("v","va")] paving 1); |
45 |
by (TRYALL assume_tac); |
|
4091 | 46 |
by (fast_tac (claset() addIs [completeness] addss (simpset())) 1); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
47 |
qed "parallel_moves"; |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
48 |
|
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
49 |
bind_thm ("confluence_parallel_reduction", |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
50 |
parallel_moves RS strip_lemma_r RS strip_lemma_l); |
1048 | 51 |
|
5068 | 52 |
Goalw [confluence_def] |
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
53 |
"[|confluence(Spar_red)|]==> confluence(Sred)"; |
4152 | 54 |
by (blast_tac (claset() addIs [par_red_red, red_par_red]) 1); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
55 |
val lemma1 = result(); |
1048 | 56 |
|
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
57 |
bind_thm ("confluence_beta_reduction", |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
58 |
confluence_parallel_reduction RS lemma1); |
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
59 |