src/HOL/UNITY/Extend.ML
changeset 6647 9ec7b9723f43
parent 6536 281d44905cab
child 6822 8932f33259d4
equal deleted inserted replaced
6646:3ea726909fff 6647:9ec7b9723f43
    60 
    60 
    61 Goalw [extend_set_def]
    61 Goalw [extend_set_def]
    62     "extend_set h (A Int B) = extend_set h A Int extend_set h B";
    62     "extend_set h (A Int B) = extend_set h A Int extend_set h B";
    63 by Auto_tac;
    63 by Auto_tac;
    64 qed "extend_set_Int_distrib";
    64 qed "extend_set_Int_distrib";
       
    65 
       
    66 Goalw [extend_set_def]
       
    67     "extend_set h (INTER A B) = (INT x:A. extend_set h (B x))";
       
    68 by (force_tac (claset() addIs  [h_f_g_eq RS sym], simpset()) 1);
       
    69 qed "extend_set_INTER_distrib";
    65 
    70 
    66 Goalw [extend_set_def]
    71 Goalw [extend_set_def]
    67     "extend_set h (A - B) = extend_set h A - extend_set h B";
    72     "extend_set h (A - B) = extend_set h A - extend_set h B";
    68 by Auto_tac;
    73 by Auto_tac;
    69 qed "extend_set_Diff_distrib";
    74 qed "extend_set_Diff_distrib";
   169 by (simp_tac (simpset() addsimps [image_Un, Acts_Join]) 2);
   174 by (simp_tac (simpset() addsimps [image_Un, Acts_Join]) 2);
   170 by (simp_tac (simpset() addsimps [extend_set_Int_distrib]) 1);
   175 by (simp_tac (simpset() addsimps [extend_set_Int_distrib]) 1);
   171 qed "extend_Join";
   176 qed "extend_Join";
   172 Addsimps [extend_Join];
   177 Addsimps [extend_Join];
   173 
   178 
       
   179 Goal "extend h (JOIN I F) = (JN i:I. extend h (F i))";
       
   180 by (rtac program_equalityI 1);
       
   181 by (simp_tac (simpset() addsimps [image_UNION, Acts_JN]) 2);
       
   182 by (simp_tac (simpset() addsimps [extend_set_INTER_distrib]) 1);
       
   183 qed "extend_JN";
       
   184 Addsimps [extend_JN];
       
   185 
   174 
   186 
   175 (*** Safety: co, stable ***)
   187 (*** Safety: co, stable ***)
   176 
   188 
   177 Goal "(extend h F : (extend_set h A) co (extend_set h B)) = \
   189 Goal "(extend h F : (extend_set h A) co (extend_set h B)) = \
   178 \     (F : A co B)";
   190 \     (F : A co B)";
   220 qed "extend_Constrains";
   232 qed "extend_Constrains";
   221 
   233 
   222 Goal "(extend h F : Stable (extend_set h A)) = (F : Stable A)";
   234 Goal "(extend h F : Stable (extend_set h A)) = (F : Stable A)";
   223 by (simp_tac (simpset() addsimps [Stable_def, extend_Constrains]) 1);
   235 by (simp_tac (simpset() addsimps [Stable_def, extend_Constrains]) 1);
   224 qed "extend_Stable";
   236 qed "extend_Stable";
       
   237 
       
   238 Goal "(extend h F : Always (extend_set h A)) = (F : Always A)";
       
   239 by (asm_simp_tac (simpset() addsimps [Always_def, extend_Stable]) 1);
       
   240 qed "extend_Always";
   225 
   241 
   226 
   242 
   227 (*** Progress: transient, ensures ***)
   243 (*** Progress: transient, ensures ***)
   228 
   244 
   229 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)";
   245 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)";
   311 \     (F : A leadsTo B)";
   327 \     (F : A leadsTo B)";
   312 by Safe_tac;
   328 by Safe_tac;
   313 by (etac leadsTo_imp_extend_leadsTo 2);
   329 by (etac leadsTo_imp_extend_leadsTo 2);
   314 by (dtac extend_leadsTo_slice 1);
   330 by (dtac extend_leadsTo_slice 1);
   315 by (full_simp_tac (simpset() addsimps [slice_extend_set]) 1);
   331 by (full_simp_tac (simpset() addsimps [slice_extend_set]) 1);
   316 qed "extend_leadsto_eq";
   332 qed "extend_leadsto";
   317 
   333 
   318 Goal "(extend h F : (extend_set h A) LeadsTo (extend_set h B)) =  \
   334 Goal "(extend h F : (extend_set h A) LeadsTo (extend_set h B)) =  \
   319 \     (F : A LeadsTo B)";
   335 \     (F : A LeadsTo B)";
   320 by (simp_tac
   336 by (simp_tac
   321     (simpset() addsimps [LeadsTo_def, reachable_extend_eq, 
   337     (simpset() addsimps [LeadsTo_def, reachable_extend_eq, 
   322 			 extend_leadsto_eq, extend_set_Int_distrib RS sym]) 1);
   338 			 extend_leadsto, extend_set_Int_distrib RS sym]) 1);
   323 qed "extend_LeadsTo";
   339 qed "extend_LeadsTo";
   324 
   340 
   325 
   341 
   326 (*** guarantees properties ***)
   342 (*** guarantees properties ***)
   327 
   343