src/HOL/UNITY/Client.ML
changeset 9403 aad13b59b8d9
parent 8948 b797cfa3548d
child 10064 1a77667b21ef
equal deleted inserted replaced
9402:480a1b40fdd6 9403:aad13b59b8d9
    13 
    13 
    14 
    14 
    15 (*Safety property 1: ask, rel are increasing*)
    15 (*Safety property 1: ask, rel are increasing*)
    16 Goal "Client: UNIV guarantees[funPair rel ask] \
    16 Goal "Client: UNIV guarantees[funPair rel ask] \
    17 \             Increasing ask Int Increasing rel";
    17 \             Increasing ask Int Increasing rel";
    18 by (safe_tac (claset() addSIs [guaranteesI,increasing_imp_Increasing]));
       
    19 by (auto_tac
    18 by (auto_tac
    20     (claset(),
    19     (claset() addSIs [increasing_imp_Increasing],
    21      simpset() addsimps [impOfSubs preserves_subset_increasing,
    20      simpset() addsimps [guar_def, impOfSubs preserves_subset_increasing]));
    22 			 Join_increasing]));
       
    23 by (auto_tac (claset(), simpset() addsimps [increasing_def]));
    21 by (auto_tac (claset(), simpset() addsimps [increasing_def]));
    24 by (ALLGOALS constrains_tac);
    22 by (ALLGOALS constrains_tac);
    25 by Auto_tac;
    23 by Auto_tac;
    26 qed "increasing_ask_rel";
    24 qed "increasing_ask_rel";
    27 
    25 
    68 by Auto_tac;
    66 by Auto_tac;
    69 qed "Join_Stable_rel_le_giv";
    67 qed "Join_Stable_rel_le_giv";
    70 
    68 
    71 Goal "[| Client Join G : Increasing giv;  G : preserves rel |] \
    69 Goal "[| Client Join G : Increasing giv;  G : preserves rel |] \
    72 \     ==> Client Join G : Always {s. rel s <= giv s}";
    70 \     ==> Client Join G : Always {s. rel s <= giv s}";
    73 by (rtac AlwaysI 1);
    71 by (force_tac (claset() addIs [AlwaysI, Join_Stable_rel_le_giv], simpset()) 1);
    74 by (rtac Join_Stable_rel_le_giv 2);
       
    75 by Auto_tac;
       
    76 qed "Join_Always_rel_le_giv";
    72 qed "Join_Always_rel_le_giv";
    77 
    73 
    78 Goal "Client : transient {s. rel s = k & k<h & h <= giv s & h pfixGe ask s}";
    74 Goal "Client : transient {s. rel s = k & k<h & h <= giv s & h pfixGe ask s}";
    79 by (res_inst_tac [("act", "rel_act")] transientI 1);
    75 by (res_inst_tac [("act", "rel_act")] transientI 1);
    80 by (auto_tac (claset(),
    76 by (auto_tac (claset(),
   144 by (blast_tac (claset() addIs [client_progress_lemma]) 1);
   140 by (blast_tac (claset() addIs [client_progress_lemma]) 1);
   145 qed "client_progress";
   141 qed "client_progress";
   146 
   142 
   147 (*This shows that the Client won't alter other variables in any state
   143 (*This shows that the Client won't alter other variables in any state
   148   that it is combined with*)
   144   that it is combined with*)
   149 Goal "Client : preserves extra";
   145 Goal "Client : preserves dummy";
   150 by (rewtac preserves_def);
   146 by (rewtac preserves_def);
   151 by Auto_tac;
   147 by Auto_tac;
   152 by (constrains_tac 1);
   148 by (constrains_tac 1);
   153 by Auto_tac;
   149 by Auto_tac;
   154 qed "client_preserves_extra";
   150 qed "client_preserves_dummy";
   155 
   151 
   156 
   152 
   157 (** Obsolete lemmas from first version of the Client **)
   153 (** Obsolete lemmas from first version of the Client **)
   158 
   154 
   159 Goal "Client: stable {s. size (rel s) <= size (giv s)}";
   155 Goal "Client: stable {s. size (rel s) <= size (giv s)}";