src/HOL/UNITY/Handshake.ML
changeset 6536 281d44905cab
parent 6295 351b3c2b0d83
child 6570 a7d7985050a9
equal deleted inserted replaced
6535:880f31a62784 6536:281d44905cab
    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);