47 in strip_all' (s'::used) names' (subst_bound (Free (s', T), t)) end |
47 in strip_all' (s'::used) names' (subst_bound (Free (s', T), t)) end |
48 | strip_all' used names ((t as Const ("==>", _) $ P) $ Q) = |
48 | strip_all' used names ((t as Const ("==>", _) $ P) $ Q) = |
49 t $ strip_all' used names Q |
49 t $ strip_all' used names Q |
50 | strip_all' _ _ t = t; |
50 | strip_all' _ _ t = t; |
51 |
51 |
52 fun strip_all t = strip_all' (OldTerm.add_term_free_names (t, [])) [] t; |
52 fun strip_all t = strip_all' (Term.add_free_names t []) [] t; |
53 |
53 |
54 fun strip_one name (Const ("all", _) $ Abs (s, T, Const ("==>", _) $ P $ Q)) = |
54 fun strip_one name (Const ("all", _) $ Abs (s, T, Const ("==>", _) $ P $ Q)) = |
55 (subst_bound (Free (name, T), P), subst_bound (Free (name, T), Q)) |
55 (subst_bound (Free (name, T), P), subst_bound (Free (name, T), Q)) |
56 | strip_one _ (Const ("==>", _) $ P $ Q) = (P, Q); |
56 | strip_one _ (Const ("==>", _) $ P $ Q) = (P, Q); |
57 |
57 |
368 (hd (prems_of (hd inducts))))), nparms))) vs; |
368 (hd (prems_of (hd inducts))))), nparms))) vs; |
369 val rs = indrule_realizer thy induct raw_induct rsets params' |
369 val rs = indrule_realizer thy induct raw_induct rsets params' |
370 (vs' @ Ps) rec_names rss' intrs dummies; |
370 (vs' @ Ps) rec_names rss' intrs dummies; |
371 val rlzs = map (fn (r, ind) => Extraction.realizes_of thy (vs' @ Ps) r |
371 val rlzs = map (fn (r, ind) => Extraction.realizes_of thy (vs' @ Ps) r |
372 (prop_of ind)) (rs ~~ inducts); |
372 (prop_of ind)) (rs ~~ inducts); |
373 val used = foldr OldTerm.add_term_free_names [] rlzs; |
373 val used = fold Term.add_free_names rlzs []; |
374 val rnames = Name.variant_list used (replicate (length inducts) "r"); |
374 val rnames = Name.variant_list used (replicate (length inducts) "r"); |
375 val rnames' = Name.variant_list |
375 val rnames' = Name.variant_list |
376 (used @ rnames) (replicate (length intrs) "s"); |
376 (used @ rnames) (replicate (length intrs) "s"); |
377 val rlzs' as (prems, _, _) :: _ = map (fn (rlz, name) => |
377 val rlzs' as (prems, _, _) :: _ = map (fn (rlz, name) => |
378 let |
378 let |