equal
deleted
inserted
replaced
328 in |
328 in |
329 (case elem of |
329 (case elem of |
330 Assumes asms => Assumes (asms |> map (fn (a, propps) => |
330 Assumes asms => Assumes (asms |> map (fn (a, propps) => |
331 (a, map (fn (t, ps) => (close_frees t, no_binds ps)) propps))) |
331 (a, map (fn (t, ps) => (close_frees t, no_binds ps)) propps))) |
332 | Defines defs => Defines (defs |> map (fn ((name, atts), (t, ps)) => |
332 | Defines defs => Defines (defs |> map (fn ((name, atts), (t, ps)) => |
333 let val ((c, _), t') = Local_Defs.cert_def ctxt (close_frees t) |
333 let val ((c, _), t') = Local_Defs.cert_def ctxt (K []) (close_frees t) |
334 in ((Thm.def_binding_optional (Binding.name c) name, atts), (t', no_binds ps)) end)) |
334 in ((Thm.def_binding_optional (Binding.name c) name, atts), (t', no_binds ps)) end)) |
335 | e => e) |
335 | e => e) |
336 end; |
336 end; |
337 |
337 |
338 in |
338 in |
538 |
538 |
539 val norm_term = Envir.beta_norm oo Term.subst_atomic; |
539 val norm_term = Envir.beta_norm oo Term.subst_atomic; |
540 |
540 |
541 fun bind_def ctxt eq (xs, env, eqs) = |
541 fun bind_def ctxt eq (xs, env, eqs) = |
542 let |
542 let |
543 val _ = Local_Defs.cert_def ctxt eq; |
543 val _ = Local_Defs.cert_def ctxt (K []) eq; |
544 val ((y, T), b) = Local_Defs.abs_def eq; |
544 val ((y, T), b) = Local_Defs.abs_def eq; |
545 val b' = norm_term env b; |
545 val b' = norm_term env b; |
546 fun err msg = error (msg ^ ": " ^ quote y); |
546 fun err msg = error (msg ^ ": " ^ quote y); |
547 in |
547 in |
548 (case filter (fn (Free (y', _), _) => y = y' | _ => false) env of |
548 (case filter (fn (Free (y', _), _) => y = y' | _ => false) env of |