29 by (constrains_tac 2); |
29 by (constrains_tac 2); |
30 by (auto_tac (claset() addIs [le_anti_sym] addSEs [le_SucE], simpset())); |
30 by (auto_tac (claset() addIs [le_anti_sym] addSEs [le_SucE], simpset())); |
31 by (constrains_tac 1); |
31 by (constrains_tac 1); |
32 qed "invFG"; |
32 qed "invFG"; |
33 |
33 |
34 Goal "(F Join G) : LeadsTo ({s. NF s = k} - {s. BB s}) \ |
34 Goal "(F Join G) : ({s. NF s = k} - {s. BB s}) LeadsTo \ |
35 \ ({s. NF s = k} Int {s. BB s})"; |
35 \ ({s. NF s = k} Int {s. BB s})"; |
36 by (rtac (ensures_stable_Join1 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1); |
36 by (rtac (ensures_stable_Join1 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1); |
37 by (ensures_tac "cmdG" 2); |
37 by (ensures_tac "cmdG" 2); |
38 by (constrains_tac 1); |
38 by (constrains_tac 1); |
39 by Auto_tac; |
39 by Auto_tac; |
40 qed "lemma2_1"; |
40 qed "lemma2_1"; |
41 |
41 |
42 Goal "(F Join G) : LeadsTo ({s. NF s = k} Int {s. BB s}) {s. k < NF s}"; |
42 Goal "(F Join G) : ({s. NF s = k} Int {s. BB s}) LeadsTo {s. k < NF s}"; |
43 by (rtac (ensures_stable_Join2 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1); |
43 by (rtac (ensures_stable_Join2 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1); |
44 by (constrains_tac 2); |
44 by (constrains_tac 2); |
45 by (ensures_tac "cmdF" 1); |
45 by (ensures_tac "cmdF" 1); |
46 by Auto_tac; |
46 by Auto_tac; |
47 qed "lemma2_2"; |
47 qed "lemma2_2"; |
48 |
48 |
49 |
49 |
50 Goal "(F Join G) : LeadsTo UNIV {s. m < NF s}"; |
50 Goal "(F Join G) : UNIV LeadsTo {s. m < NF s}"; |
51 by (rtac LeadsTo_weaken_R 1); |
51 by (rtac LeadsTo_weaken_R 1); |
52 by (res_inst_tac [("f", "NF"), ("l","Suc m"), ("B","{}")] |
52 by (res_inst_tac [("f", "NF"), ("l","Suc m"), ("B","{}")] |
53 GreaterThan_bounded_induct 1); |
53 GreaterThan_bounded_induct 1); |
54 by (auto_tac (claset(), simpset() addsimps [vimage_def])); |
54 by (auto_tac (claset(), simpset() addsimps [vimage_def])); |
55 (*The inductive step: (F Join G) : LeadsTo {x. NF x = ma} {x. ma < NF x}*) |
55 (*The inductive step: (F Join G) : {x. NF x = ma} LeadsTo {x. ma < NF x}*) |
56 by (rtac LeadsTo_Diff 1); |
56 by (rtac LeadsTo_Diff 1); |
57 by (rtac lemma2_2 2); |
57 by (rtac lemma2_2 2); |
58 by (rtac LeadsTo_Trans 1); |
58 by (rtac LeadsTo_Trans 1); |
59 by (rtac lemma2_2 2); |
59 by (rtac lemma2_2 2); |
60 by (rtac lemma2_1 1); |
60 by (rtac lemma2_1 1); |