equal
deleted
inserted
replaced
137 val recursor = head_of (#1 (hd recursor_pairs)) |
137 val recursor = head_of (#1 (hd recursor_pairs)) |
138 |
138 |
139 (** make definition **) |
139 (** make definition **) |
140 |
140 |
141 (*the recursive argument*) |
141 (*the recursive argument*) |
142 val rec_arg = Free (Name.variant (map #1 (ls@rs)) (NameSpace.base_name big_rec_name), |
142 val rec_arg = Free (Name.variant (map #1 (ls@rs)) (Long_Name.base_name big_rec_name), |
143 Ind_Syntax.iT) |
143 Ind_Syntax.iT) |
144 |
144 |
145 val def_tm = Logic.mk_equals |
145 val def_tm = Logic.mk_equals |
146 (subst_bound (rec_arg, fabs), |
146 (subst_bound (rec_arg, fabs), |
147 list_comb (recursor, |
147 list_comb (recursor, |
151 in |
151 in |
152 if !Ind_Syntax.trace then |
152 if !Ind_Syntax.trace then |
153 writeln ("primrec def:\n" ^ |
153 writeln ("primrec def:\n" ^ |
154 Syntax.string_of_term_global thy def_tm) |
154 Syntax.string_of_term_global thy def_tm) |
155 else(); |
155 else(); |
156 (NameSpace.base_name fname ^ "_" ^ NameSpace.base_name big_rec_name ^ "_def", |
156 (Long_Name.base_name fname ^ "_" ^ Long_Name.base_name big_rec_name ^ "_def", |
157 def_tm) |
157 def_tm) |
158 end; |
158 end; |
159 |
159 |
160 |
160 |
161 (* prepare functions needed for definitions *) |
161 (* prepare functions needed for definitions *) |
166 val SOME (fname, ftype, ls, rs, con_info, eqns) = |
166 val SOME (fname, ftype, ls, rs, con_info, eqns) = |
167 List.foldr (process_eqn thy) NONE eqn_terms; |
167 List.foldr (process_eqn thy) NONE eqn_terms; |
168 val def = process_fun thy (fname, ftype, ls, rs, con_info, eqns); |
168 val def = process_fun thy (fname, ftype, ls, rs, con_info, eqns); |
169 |
169 |
170 val ([def_thm], thy1) = thy |
170 val ([def_thm], thy1) = thy |
171 |> Sign.add_path (NameSpace.base_name fname) |
171 |> Sign.add_path (Long_Name.base_name fname) |
172 |> PureThy.add_defs false [Thm.no_attributes (apfst Binding.name def)]; |
172 |> PureThy.add_defs false [Thm.no_attributes (apfst Binding.name def)]; |
173 |
173 |
174 val rewrites = def_thm :: map mk_meta_eq (#rec_rewrites con_info) |
174 val rewrites = def_thm :: map mk_meta_eq (#rec_rewrites con_info) |
175 val eqn_thms = |
175 val eqn_thms = |
176 eqn_terms |> map (fn t => |
176 eqn_terms |> map (fn t => |