src/HOL/UNITY/SubstAx.ML
changeset 6564 c09997086ca7
parent 6536 281d44905cab
child 6570 a7d7985050a9
equal deleted inserted replaced
6563:128cf997c768 6564:c09997086ca7
   395 				       Int_Un_distrib]) 1);
   395 				       Int_Un_distrib]) 1);
   396 by (blast_tac (claset() addIs [completion, leadsTo_weaken]) 1);
   396 by (blast_tac (claset() addIs [completion, leadsTo_weaken]) 1);
   397 qed "Completion";
   397 qed "Completion";
   398 
   398 
   399 
   399 
   400 Goal "[| finite I |] \
   400 Goal "finite I \
   401 \     ==> (ALL i:I. F : (A i) LeadsTo (A' i Un C)) -->  \
   401 \     ==> (ALL i:I. F : (A i) LeadsTo (A' i Un C)) -->  \
   402 \         (ALL i:I. F : (A' i) Co (A' i Un C)) --> \
   402 \         (ALL i:I. F : (A' i) Co (A' i Un C)) --> \
   403 \         F : (INT i:I. A i) LeadsTo ((INT i:I. A' i) Un C)";
   403 \         F : (INT i:I. A i) LeadsTo ((INT i:I. A' i) Un C)";
   404 by (etac finite_induct 1);
   404 by (etac finite_induct 1);
   405 by (ALLGOALS Asm_simp_tac);
   405 by (ALLGOALS Asm_simp_tac);
   406 by (Clarify_tac 1);
   406 by (Clarify_tac 1);
   407 by (dtac ball_Constrains_INT 1);
   407 by (dtac ball_Constrains_INT 1);
   408 by (asm_full_simp_tac (simpset() addsimps [Completion]) 1); 
   408 by (asm_full_simp_tac (simpset() addsimps [Completion]) 1); 
   409 qed "Finite_completion";
   409 qed_spec_mp "Finite_completion";
   410 
   410 
   411 
   411 
   412 (*proves "ensures/leadsTo" properties when the program is specified*)
   412 (*proves "ensures/leadsTo" properties when the program is specified*)
   413 fun ensures_tac sact = 
   413 fun ensures_tac sact = 
   414     SELECT_GOAL
   414     SELECT_GOAL