src/HOL/UNITY/SubstAx.thy
changeset 67613 ce654b0e6d69
parent 63146 f1ecba0272f9
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
   302 
   302 
   303 (** Meta or object quantifier ????? **)
   303 (** Meta or object quantifier ????? **)
   304 lemma LeadsTo_wf_induct:
   304 lemma LeadsTo_wf_induct:
   305      "[| wf r;      
   305      "[| wf r;      
   306          \<forall>m. F \<in> (A \<inter> f-`{m}) LeadsTo                      
   306          \<forall>m. F \<in> (A \<inter> f-`{m}) LeadsTo                      
   307                     ((A \<inter> f-`(r^-1 `` {m})) \<union> B) |]  
   307                     ((A \<inter> f-`(r\<inverse> `` {m})) \<union> B) |]  
   308       ==> F \<in> A LeadsTo B"
   308       ==> F \<in> A LeadsTo B"
   309 apply (simp add: LeadsTo_eq_leadsTo)
   309 apply (simp add: LeadsTo_eq_leadsTo)
   310 apply (erule leadsTo_wf_induct)
   310 apply (erule leadsTo_wf_induct)
   311 apply (blast intro: leadsTo_weaken)
   311 apply (blast intro: leadsTo_weaken)
   312 done
   312 done
   313 
   313 
   314 
   314 
   315 lemma Bounded_induct:
   315 lemma Bounded_induct:
   316      "[| wf r;      
   316      "[| wf r;      
   317          \<forall>m \<in> I. F \<in> (A \<inter> f-`{m}) LeadsTo                    
   317          \<forall>m \<in> I. F \<in> (A \<inter> f-`{m}) LeadsTo                    
   318                       ((A \<inter> f-`(r^-1 `` {m})) \<union> B) |]  
   318                       ((A \<inter> f-`(r\<inverse> `` {m})) \<union> B) |]  
   319       ==> F \<in> A LeadsTo ((A - (f-`I)) \<union> B)"
   319       ==> F \<in> A LeadsTo ((A - (f-`I)) \<union> B)"
   320 apply (erule LeadsTo_wf_induct, safe)
   320 apply (erule LeadsTo_wf_induct, safe)
   321 apply (case_tac "m \<in> I")
   321 apply (case_tac "m \<in> I")
   322 apply (blast intro: LeadsTo_weaken)
   322 apply (blast intro: LeadsTo_weaken)
   323 apply (blast intro: subset_imp_LeadsTo)
   323 apply (blast intro: subset_imp_LeadsTo)