equal
deleted
inserted
replaced
523 end; |
523 end; |
524 |
524 |
525 val Suc = Term.absdummy HOLogic.natT (Term.absfree hrec' |
525 val Suc = Term.absdummy HOLogic.natT (Term.absfree hrec' |
526 (HOLogic.mk_tuple (map4 mk_Suc ss setssAs zs zs'))); |
526 (HOLogic.mk_tuple (map4 mk_Suc ss setssAs zs zs'))); |
527 |
527 |
528 val rhs = mk_nat_rec Zero Suc; |
528 val rhs = mk_rec_nat Zero Suc; |
529 in |
529 in |
530 fold_rev (Term.absfree o Term.dest_Free) ss rhs |
530 fold_rev (Term.absfree o Term.dest_Free) ss rhs |
531 end; |
531 end; |
532 |
532 |
533 val ((hset_rec_frees, (_, hset_rec_def_frees)), (lthy, lthy_old)) = |
533 val ((hset_rec_frees, (_, hset_rec_def_frees)), (lthy, lthy_old)) = |
553 val hset_recT = Library.foldr (op -->) (Ts, HOLogic.natT --> hrecT); |
553 val hset_recT = Library.foldr (op -->) (Ts, HOLogic.natT --> hrecT); |
554 in |
554 in |
555 mk_nthN n (Term.list_comb (Const (nth hset_recs (j - 1), hset_recT), args)) i |
555 mk_nthN n (Term.list_comb (Const (nth hset_recs (j - 1), hset_recT), args)) i |
556 end; |
556 end; |
557 |
557 |
558 val hset_rec_0ss = mk_rec_simps n @{thm nat_rec_0_imp} hset_rec_defs; |
558 val hset_rec_0ss = mk_rec_simps n @{thm rec_nat_0_imp} hset_rec_defs; |
559 val hset_rec_Sucss = mk_rec_simps n @{thm nat_rec_Suc_imp} hset_rec_defs; |
559 val hset_rec_Sucss = mk_rec_simps n @{thm rec_nat_Suc_imp} hset_rec_defs; |
560 val hset_rec_0ss' = transpose hset_rec_0ss; |
560 val hset_rec_0ss' = transpose hset_rec_0ss; |
561 val hset_rec_Sucss' = transpose hset_rec_Sucss; |
561 val hset_rec_Sucss' = transpose hset_rec_Sucss; |
562 |
562 |
563 fun hset_binds j = mk_internal_bs (hsetN ^ (if m = 1 then "" else string_of_int j)) |
563 fun hset_binds j = mk_internal_bs (hsetN ^ (if m = 1 then "" else string_of_int j)) |
564 fun hset_bind i j = nth (hset_binds j) (i - 1); |
564 fun hset_bind i j = nth (hset_binds j) (i - 1); |
1200 end; |
1200 end; |
1201 |
1201 |
1202 val Suc = Term.absdummy HOLogic.natT (Term.absfree Lev_rec' |
1202 val Suc = Term.absdummy HOLogic.natT (Term.absfree Lev_rec' |
1203 (HOLogic.mk_tuple (map5 mk_Suc ks ss setssAs zs zs'))); |
1203 (HOLogic.mk_tuple (map5 mk_Suc ks ss setssAs zs zs'))); |
1204 |
1204 |
1205 val rhs = mk_nat_rec Zero Suc; |
1205 val rhs = mk_rec_nat Zero Suc; |
1206 in |
1206 in |
1207 fold_rev (Term.absfree o Term.dest_Free) ss rhs |
1207 fold_rev (Term.absfree o Term.dest_Free) ss rhs |
1208 end; |
1208 end; |
1209 |
1209 |
1210 val ((Lev_free, (_, Lev_def_free)), (lthy, lthy_old)) = |
1210 val ((Lev_free, (_, Lev_def_free)), (lthy, lthy_old)) = |