src/HOL/Tools/old_primrec_package.ML
changeset 30364 577edc39b501
parent 30280 eb98b49ef835
equal deleted inserted replaced
30363:9b8d9b6ef803 30364:577edc39b501
   210   let
   210   let
   211     val rhs = fold_rev (fn T => fn t => Abs ("", T, t))
   211     val rhs = fold_rev (fn T => fn t => Abs ("", T, t))
   212                     ((map snd ls) @ [dummyT])
   212                     ((map snd ls) @ [dummyT])
   213                     (list_comb (Const (rec_name, dummyT),
   213                     (list_comb (Const (rec_name, dummyT),
   214                                 fs @ map Bound (0 ::(length ls downto 1))))
   214                                 fs @ map Bound (0 ::(length ls downto 1))))
   215     val def_name = NameSpace.base_name fname ^ "_" ^ NameSpace.base_name tname ^ "_def";
   215     val def_name = Long_Name.base_name fname ^ "_" ^ Long_Name.base_name tname ^ "_def";
   216     val def_prop =
   216     val def_prop =
   217       singleton (Syntax.check_terms (ProofContext.init thy))
   217       singleton (Syntax.check_terms (ProofContext.init thy))
   218         (Logic.mk_equals (Const (fname, dummyT), rhs));
   218         (Logic.mk_equals (Const (fname, dummyT), rhs));
   219   in (def_name, def_prop) end;
   219   in (def_name, def_prop) end;
   220 
   220 
   267     val nameTs2 = map fst rec_eqns;
   267     val nameTs2 = map fst rec_eqns;
   268     val _ = if gen_eq_set (op =) (nameTs1, nameTs2) then ()
   268     val _ = if gen_eq_set (op =) (nameTs1, nameTs2) then ()
   269             else primrec_err ("functions " ^ commas_quote (map fst nameTs2) ^
   269             else primrec_err ("functions " ^ commas_quote (map fst nameTs2) ^
   270               "\nare not mutually recursive");
   270               "\nare not mutually recursive");
   271     val primrec_name =
   271     val primrec_name =
   272       if alt_name = "" then (space_implode "_" (map (NameSpace.base_name o #1) defs)) else alt_name;
   272       if alt_name = "" then (space_implode "_" (map (Long_Name.base_name o #1) defs)) else alt_name;
   273     val (defs_thms', thy') =
   273     val (defs_thms', thy') =
   274       thy
   274       thy
   275       |> Sign.add_path primrec_name
   275       |> Sign.add_path primrec_name
   276       |> fold_map def (map (fn (name, t) => ((name, []), t)) defs');
   276       |> fold_map def (map (fn (name, t) => ((name, []), t)) defs');
   277     val rewrites = (map mk_meta_eq rec_rewrites) @ map snd defs_thms';
   277     val rewrites = (map mk_meta_eq rec_rewrites) @ map snd defs_thms';