src/Pure/tactic.ML
changeset 13925 761af5c2fd59
parent 13650 31bd2a8cdbe2
child 14673 3d760a971fde
equal deleted inserted replaced
13924:09f6f2fefb25 13925:761af5c2fd59
   416 (*delete one kbrl from the pair of nets*)
   416 (*delete one kbrl from the pair of nets*)
   417 local
   417 local
   418   fun eq_kbrl ((_, (_, th)), (_, (_, th'))) = Drule.eq_thm_prop (th, th')
   418   fun eq_kbrl ((_, (_, th)), (_, (_, th'))) = Drule.eq_thm_prop (th, th')
   419 in
   419 in
   420 fun delete_tagged_brl (brl as (eres, th), (inet, enet)) =
   420 fun delete_tagged_brl (brl as (eres, th), (inet, enet)) =
   421   if eres then
   421   (if eres then
   422     (case try Thm.major_prem_of th of
   422     (case try Thm.major_prem_of th of
   423       Some prem => (inet, Net.delete_term ((prem, ((), brl)), enet, eq_kbrl))
   423       Some prem => (inet, Net.delete_term ((prem, ((), brl)), enet, eq_kbrl))
   424     | None => (inet, enet))  (*no major premise: ignore*)
   424     | None => (inet, enet))  (*no major premise: ignore*)
   425   else (Net.delete_term ((Thm.concl_of th, ((), brl)), inet, eq_kbrl), enet);
   425   else (Net.delete_term ((Thm.concl_of th, ((), brl)), inet, eq_kbrl), enet))
       
   426   handle Net.DELETE => (inet,enet);
   426 end;
   427 end;
   427 
   428 
   428 
   429 
   429 (*biresolution using a pair of nets rather than rules.
   430 (*biresolution using a pair of nets rather than rules.
   430     function "order" must sort and possibly filter the list of brls.
   431     function "order" must sort and possibly filter the list of brls.