src/HOL/WF.ML
changeset 4350 1983e4054fd8
parent 4153 e534c4c32d54
child 4686 74a12e86b20b
equal deleted inserted replaced
4349:50403e5a44c0 4350:1983e4054fd8
   106  * Wellfoundedness of `insert'
   106  * Wellfoundedness of `insert'
   107  *---------------------------------------------------------------------------*)
   107  *---------------------------------------------------------------------------*)
   108 
   108 
   109 goal WF.thy "wf(insert (y,x) r) = (wf(r) & (x,y) ~: r^*)";
   109 goal WF.thy "wf(insert (y,x) r) = (wf(r) & (x,y) ~: r^*)";
   110 by (rtac iffI 1);
   110 by (rtac iffI 1);
   111  by (blast_tac (claset() addEs [wf_trancl RS wf_irrefl] addIs
   111  by (blast_tac (claset() addEs [wf_trancl RS wf_irrefl] 
   112       [rtrancl_into_trancl1,wf_subset,impOfSubs rtrancl_mono]) 1);
   112 	addIs [rtrancl_into_trancl1,wf_subset,impOfSubs rtrancl_mono]) 1);
   113 by (asm_full_simp_tac (simpset() addsimps [wf_eq_minimal]) 1);
   113 by (asm_full_simp_tac (simpset() addsimps [wf_eq_minimal]) 1);
   114 by Safe_tac;
   114 by Safe_tac;
   115 by (EVERY1[rtac allE, atac, etac impE, Blast_tac]);
   115 by (EVERY1[rtac allE, atac, etac impE, Blast_tac]);
   116 by (etac bexE 1);
   116 by (etac bexE 1);
   117 by (rename_tac "a" 1);
   117 by (rename_tac "a" 1);
   122 by (case_tac "y:Q" 1);
   122 by (case_tac "y:Q" 1);
   123  by (Blast_tac 2);
   123  by (Blast_tac 2);
   124 by (res_inst_tac [("x","{z. z:Q & (z,y) : r^*}")] allE 1);
   124 by (res_inst_tac [("x","{z. z:Q & (z,y) : r^*}")] allE 1);
   125  by (assume_tac 1);
   125  by (assume_tac 1);
   126 by (thin_tac "! Q. (? x. x : Q) --> ?P Q" 1);	(*essential for speed*)
   126 by (thin_tac "! Q. (? x. x : Q) --> ?P Q" 1);	(*essential for speed*)
   127 by (blast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   127 (*Blast_tac with new substOccur fails*)
       
   128 by (best_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   128 qed "wf_insert";
   129 qed "wf_insert";
   129 AddIffs [wf_insert];
   130 AddIffs [wf_insert];
   130 
   131 
   131 (*** acyclic ***)
   132 (*** acyclic ***)
   132 
   133