equal
deleted
inserted
replaced
2616 val _ = if idt_size <> size_of_type thy (typs, []) IDT then |
2616 val _ = if idt_size <> size_of_type thy (typs, []) IDT then |
2617 raise REFUTE ("IDT_recursion_interpreter", |
2617 raise REFUTE ("IDT_recursion_interpreter", |
2618 "unexpected size of IDT (wrong type associated?)") |
2618 "unexpected size of IDT (wrong type associated?)") |
2619 else () |
2619 else () |
2620 (* interpretation *) |
2620 (* interpretation *) |
2621 val rec_op = Node (map (compute_array_entry idt_index) |
2621 val rec_op = Node (map_range (compute_array_entry idt_index) idt_size) |
2622 (0 upto (idt_size - 1))) |
|
2623 in |
2622 in |
2624 SOME (rec_op, model', args') |
2623 SOME (rec_op, model', args') |
2625 end |
2624 end |
2626 end |
2625 end |
2627 else |
2626 else |
2782 else |
2781 else |
2783 Leaf ((replicate element False) @ True :: |
2782 Leaf ((replicate element False) @ True :: |
2784 (replicate (size_of_nat - element - 1) False)) |
2783 (replicate (size_of_nat - element - 1) False)) |
2785 end |
2784 end |
2786 in |
2785 in |
2787 SOME (Node (map (fn m => Node (map (plus m) (0 upto size_of_nat-1))) |
2786 SOME (Node (map_range (fn m => Node (map_range (plus m) size_of_nat)) size_of_nat), |
2788 (0 upto size_of_nat-1)), model, args) |
2787 model, args) |
2789 end |
2788 end |
2790 | _ => |
2789 | _ => |
2791 NONE; |
2790 NONE; |
2792 |
2791 |
2793 (* theory -> model -> arguments -> Term.term -> |
2792 (* theory -> model -> arguments -> Term.term -> |
2810 in |
2809 in |
2811 Leaf ((replicate element False) @ True :: |
2810 Leaf ((replicate element False) @ True :: |
2812 (replicate (size_of_nat - element - 1) False)) |
2811 (replicate (size_of_nat - element - 1) False)) |
2813 end |
2812 end |
2814 in |
2813 in |
2815 SOME (Node (map (fn m => Node (map (minus m) (0 upto size_of_nat-1))) |
2814 SOME (Node (map_range (fn m => Node (map_range (minus m) size_of_nat)) size_of_nat), |
2816 (0 upto size_of_nat-1)), model, args) |
2815 model, args) |
2817 end |
2816 end |
2818 | _ => |
2817 | _ => |
2819 NONE; |
2818 NONE; |
2820 |
2819 |
2821 (* theory -> model -> arguments -> Term.term -> |
2820 (* theory -> model -> arguments -> Term.term -> |
2841 else |
2840 else |
2842 Leaf ((replicate element False) @ True :: |
2841 Leaf ((replicate element False) @ True :: |
2843 (replicate (size_of_nat - element - 1) False)) |
2842 (replicate (size_of_nat - element - 1) False)) |
2844 end |
2843 end |
2845 in |
2844 in |
2846 SOME (Node (map (fn m => Node (map (mult m) (0 upto size_of_nat-1))) |
2845 SOME (Node (map_range (fn m => Node (map_range (mult m) size_of_nat)) size_of_nat), |
2847 (0 upto size_of_nat-1)), model, args) |
2846 model, args) |
2848 end |
2847 end |
2849 | _ => |
2848 | _ => |
2850 NONE; |
2849 NONE; |
2851 |
2850 |
2852 (* theory -> model -> arguments -> Term.term -> |
2851 (* theory -> model -> arguments -> Term.term -> |