src/Tools/induct.ML
changeset 24832 64cd13299d39
parent 24830 a7b3ab44d993
child 24861 cc669ca5f382
equal deleted inserted replaced
24831:887d1b32a1a5 24832:64cd13299d39
   520       SOME concl =>
   520       SOME concl =>
   521         (compose_tac (false, spec_rule (goal_prefix n goal) concl, 1) THEN' rtac asm_rl) i
   521         (compose_tac (false, spec_rule (goal_prefix n goal) concl, 1) THEN' rtac asm_rl) i
   522     | NONE => all_tac)
   522     | NONE => all_tac)
   523   end);
   523   end);
   524 
   524 
   525 fun miniscope_tac p =
   525 fun miniscope_tac p = CONVERSION o
   526   CONVERSION (Conv.forall_conv p (MetaSimplifier.rewrite true [Thm.symmetric Drule.norm_hhf_eq]));
   526   Conv.forall_conv p (K (MetaSimplifier.rewrite true [Thm.symmetric Drule.norm_hhf_eq]));
   527 
   527 
   528 in
   528 in
   529 
   529 
   530 fun fix_tac _ _ [] = K all_tac
   530 fun fix_tac _ _ [] = K all_tac
   531   | fix_tac ctxt n xs = SUBGOAL (fn (goal, i) =>
   531   | fix_tac ctxt n xs = SUBGOAL (fn (goal, i) =>
   532      (EVERY' (map (meta_spec_tac ctxt n) xs) THEN'
   532      (EVERY' (map (meta_spec_tac ctxt n) xs) THEN'
   533       (miniscope_tac (goal_params n goal))) i);
   533       (miniscope_tac (goal_params n goal) ctxt)) i);
   534 
   534 
   535 end;
   535 end;
   536 
   536 
   537 
   537 
   538 (* add_defs *)
   538 (* add_defs *)