src/Provers/classical.ML
changeset 33339 d41f77196338
parent 33317 b4534348b8fd
child 33369 470a7b233ee5
equal deleted inserted replaced
33338:de76079f973a 33339:d41f77196338
   196 val swapped = Thm.rule_attribute (fn _ => fn th => th RSN (2, Data.swap));
   196 val swapped = Thm.rule_attribute (fn _ => fn th => th RSN (2, Data.swap));
   197 
   197 
   198 (*Uses introduction rules in the normal way, or on negated assumptions,
   198 (*Uses introduction rules in the normal way, or on negated assumptions,
   199   trying rules in order. *)
   199   trying rules in order. *)
   200 fun swap_res_tac rls =
   200 fun swap_res_tac rls =
   201     let fun addrl (rl,brls) = (false, rl) :: (true, rl RSN (2, Data.swap)) :: brls
   201     let fun addrl rl brls = (false, rl) :: (true, rl RSN (2, Data.swap)) :: brls
   202     in  assume_tac      ORELSE'
   202     in  assume_tac      ORELSE'
   203         contr_tac       ORELSE'
   203         contr_tac       ORELSE'
   204         biresolve_tac (List.foldr addrl [] rls)
   204         biresolve_tac (fold_rev addrl rls [])
   205     end;
   205     end;
   206 
   206 
   207 (*Duplication of hazardous rules, for complete provers*)
   207 (*Duplication of hazardous rules, for complete provers*)
   208 fun dup_intr th = zero_var_indexes (th RS classical);
   208 fun dup_intr th = zero_var_indexes (th RS classical);
   209 
   209