src/HOL/UNITY/Handshake.ML
changeset 7523 3a716ebc2fc0
parent 7403 c318acb88251
child 9403 aad13b59b8d9
equal deleted inserted replaced
7522:d93b52bda2dd 7523:3a716ebc2fc0
    17 
    17 
    18 Goal "(F Join G) : Always invFG";
    18 Goal "(F Join G) : Always invFG";
    19 by (rtac AlwaysI 1);
    19 by (rtac AlwaysI 1);
    20 by (Force_tac 1);
    20 by (Force_tac 1);
    21 by (rtac (constrains_imp_Constrains RS StableI) 1);
    21 by (rtac (constrains_imp_Constrains RS StableI) 1);
    22 by (auto_tac (claset(), simpset() addsimps [constrains_Join]));
    22 by (auto_tac (claset(), simpset() addsimps [Join_constrains]));
    23 by (constrains_tac 2);
    23 by (constrains_tac 2);
    24 by (auto_tac (claset() addIs [order_antisym] addSEs [le_SucE], simpset()));
    24 by (auto_tac (claset() addIs [order_antisym] addSEs [le_SucE], simpset()));
    25 by (constrains_tac 1);
    25 by (constrains_tac 1);
    26 qed "invFG";
    26 qed "invFG";
    27 
    27 
    28 Goal "(F Join G) : ({s. NF s = k} - {s. BB s}) LeadsTo \
    28 Goal "(F Join G) : ({s. NF s = k} - {s. BB s}) LeadsTo \
    29 \                  ({s. NF s = k} Int {s. BB s})";
    29 \                  ({s. NF s = k} Int {s. BB s})";
    30 by (rtac (ensures_stable_Join1 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1);
    30 by (rtac (stable_Join_ensures1 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1);
    31 by (ensures_tac "cmdG" 2);
    31 by (ensures_tac "cmdG" 2);
    32 by (constrains_tac 1);
    32 by (constrains_tac 1);
    33 qed "lemma2_1";
    33 qed "lemma2_1";
    34 
    34 
    35 Goal "(F Join G) : ({s. NF s = k} Int {s. BB s}) LeadsTo {s. k < NF s}";
    35 Goal "(F Join G) : ({s. NF s = k} Int {s. BB s}) LeadsTo {s. k < NF s}";
    36 by (rtac (ensures_stable_Join2 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1);
    36 by (rtac (stable_Join_ensures2 RS leadsTo_Basis RS leadsTo_imp_LeadsTo) 1);
    37 by (constrains_tac 2);
    37 by (constrains_tac 2);
    38 by (ensures_tac "cmdF" 1);
    38 by (ensures_tac "cmdF" 1);
    39 qed "lemma2_2";
    39 qed "lemma2_2";
    40 
       
    41 
    40 
    42 Goal "(F Join G) : UNIV LeadsTo {s. m < NF s}";
    41 Goal "(F Join G) : UNIV LeadsTo {s. m < NF s}";
    43 by (rtac LeadsTo_weaken_R 1);
    42 by (rtac LeadsTo_weaken_R 1);
    44 by (res_inst_tac [("f", "NF"), ("l","Suc m"), ("B","{}")] 
    43 by (res_inst_tac [("f", "NF"), ("l","Suc m"), ("B","{}")] 
    45     GreaterThan_bounded_induct 1);
    44     GreaterThan_bounded_induct 1);