src/Pure/Isar/proof.ML
changeset 24011 8f2703c02241
parent 23963 c2ee97a963db
child 24050 248da5f0e735
equal deleted inserted replaced
24010:2ef318813e1a 24011:8f2703c02241
   585 
   585 
   586 (** facts **)
   586 (** facts **)
   587 
   587 
   588 (* chain *)
   588 (* chain *)
   589 
   589 
       
   590 fun clean_facts ctxt =
       
   591   put_facts (SOME (filter_out Drule.is_dummy_thm (the_facts ctxt))) ctxt;
       
   592 
   590 val chain =
   593 val chain =
   591   assert_forward
   594   assert_forward
   592   #> tap the_facts
   595   #> clean_facts
   593   #> enter_chain;
   596   #> enter_chain;
   594 
   597 
   595 fun chain_facts facts =
   598 fun chain_facts facts =
   596   put_facts (SOME facts)
   599   put_facts (SOME facts)
   597   #> chain;
   600   #> chain;
   646       let
   649       let
   647         val ctxt = context_of state';
   650         val ctxt = context_of state';
   648         val ths = maps snd named_facts;
   651         val ths = maps snd named_facts;
   649       in (statement, f ctxt ths using, g ctxt ths goal, before_qed, after_qed) end));
   652       in (statement, f ctxt ths using, g ctxt ths goal, before_qed, after_qed) end));
   650 
   653 
   651 fun append_using _ ths using = using @ ths;
   654 fun append_using _ ths using = using @ filter_out Drule.is_dummy_thm ths;
   652 fun unfold_using ctxt ths = map (LocalDefs.unfold ctxt ths);
   655 fun unfold_using ctxt ths = map (LocalDefs.unfold ctxt ths);
   653 val unfold_goals = LocalDefs.unfold_goals;
   656 val unfold_goals = LocalDefs.unfold_goals;
   654 
   657 
   655 in
   658 in
   656 
   659