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. |