src/Tools/induct.ML
changeset 45328 e5b33eecbf6e
parent 45156 a9b6c2ea7bec
child 45375 7fe19930dfc9
equal deleted inserted replaced
45327:4a027cc86f1a 45328:e5b33eecbf6e
   625           let
   625           let
   626             val xs = rename_params (Logic.strip_params A);
   626             val xs = rename_params (Logic.strip_params A);
   627             val xs' =
   627             val xs' =
   628               (case filter (fn x' => x' = x) xs of
   628               (case filter (fn x' => x' = x) xs of
   629                 [] => xs | [_] => xs | _ => index 1 xs);
   629                 [] => xs | [_] => xs | _ => index 1 xs);
   630           in Logic.list_rename_params (xs', A) end;
   630           in Logic.list_rename_params xs' A end;
   631         fun rename_prop p =
   631         fun rename_prop p =
   632           let val (As, C) = Logic.strip_horn p
   632           let val (As, C) = Logic.strip_horn p
   633           in Logic.list_implies (map rename_asm As, C) end;
   633           in Logic.list_implies (map rename_asm As, C) end;
   634         val cp' = cterm_fun rename_prop (Thm.cprop_of thm);
   634         val cp' = cterm_fun rename_prop (Thm.cprop_of thm);
   635         val thm' = Thm.equal_elim (Thm.reflexive cp') thm;
   635         val thm' = Thm.equal_elim (Thm.reflexive cp') thm;