src/Tools/induct.ML
changeset 28375 c879d88d038a
parent 28083 103d9282a946
child 28965 1de908189869
equal deleted inserted replaced
28374:27f1b5cc5f9b 28375:c879d88d038a
   476           | rename_params ((y, _) :: ys) = y :: rename_params ys;
   476           | rename_params ((y, _) :: ys) = y :: rename_params ys;
   477         fun rename_asm A =
   477         fun rename_asm A =
   478           let
   478           let
   479             val xs = rename_params (Logic.strip_params A);
   479             val xs = rename_params (Logic.strip_params A);
   480             val xs' =
   480             val xs' =
   481               (case List.filter (equal x) xs of
   481               (case filter (fn x' => x' = x) xs of
   482                 [] => xs | [_] => xs | _ => index 1 xs);
   482                 [] => xs | [_] => xs | _ => index 1 xs);
   483           in Logic.list_rename_params (xs', A) end;
   483           in Logic.list_rename_params (xs', A) end;
   484         fun rename_prop p =
   484         fun rename_prop p =
   485           let val (As, C) = Logic.strip_horn p
   485           let val (As, C) = Logic.strip_horn p
   486           in Logic.list_implies (map rename_asm As, C) end;
   486           in Logic.list_implies (map rename_asm As, C) end;