src/Tools/induct.ML
changeset 44241 7943b69f0188
parent 43333 2bdec7f430d3
child 44942 a05ab4d803f2
equal deleted inserted replaced
44240:4b1a63678839 44241:7943b69f0188
   656            (cert (Term.head_of arg), cert (Logic.rlist_abs (xs, v)))]);
   656            (cert (Term.head_of arg), cert (Logic.rlist_abs (xs, v)))]);
   657 
   657 
   658     fun goal_concl k xs (Const ("all", _) $ Abs (a, T, B)) = goal_concl k ((a, T) :: xs) B
   658     fun goal_concl k xs (Const ("all", _) $ Abs (a, T, B)) = goal_concl k ((a, T) :: xs) B
   659       | goal_concl 0 xs B =
   659       | goal_concl 0 xs B =
   660           if not (Term.exists_subterm (fn t => t aconv v) B) then NONE
   660           if not (Term.exists_subterm (fn t => t aconv v) B) then NONE
   661           else SOME (xs, Term.absfree (x, T, Term.incr_boundvars 1 B))
   661           else SOME (xs, absfree (x, T) (Term.incr_boundvars 1 B))
   662       | goal_concl k xs (Const ("==>", _) $ _ $ B) = goal_concl (k - 1) xs B
   662       | goal_concl k xs (Const ("==>", _) $ _ $ B) = goal_concl (k - 1) xs B
   663       | goal_concl _ _ _ = NONE;
   663       | goal_concl _ _ _ = NONE;
   664   in
   664   in
   665     (case goal_concl n [] goal of
   665     (case goal_concl n [] goal of
   666       SOME concl =>
   666       SOME concl =>