src/HOL/Tools/refute.ML
changeset 33063 4d462963a7db
parent 33055 5a733f325939
child 33243 17014b1b9353
equal deleted inserted replaced
33062:542b34b178ec 33063:4d462963a7db
  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 ->