src/Pure/Syntax/syn_trans.ML
changeset 19473 d87a8838afa4
parent 19311 e3d48fa3908e
child 19482 9f11af8f7ef9
equal deleted inserted replaced
19472:896eb8056e97 19473:d87a8838afa4
   274     if ! eta_contract then eta_abs tm else tm
   274     if ! eta_contract then eta_abs tm else tm
   275   end;
   275   end;
   276 
   276 
   277 
   277 
   278 fun abs_tr' tm =
   278 fun abs_tr' tm =
   279   Library.foldr (fn (x, t) => Lexicon.const "_abs" $ x $ t)
   279   uncurry (fold_rev (fn x => fn t => Lexicon.const "_abs" $ x $ t))
   280     (strip_abss strip_abs_vars strip_abs_body (eta_contr tm));
   280     (strip_abss strip_abs_vars strip_abs_body (eta_contr tm));
   281 
   281 
   282 fun atomic_abs_tr' (x, T, t) =
   282 fun atomic_abs_tr' (x, T, t) =
   283   let val [xT] = rename_wrt_term t [(x, T)]
   283   let val [xT] = rename_wrt_term t [(x, T)]
   284   in (mark_boundT xT, subst_bound (mark_bound (fst xT), t)) end;
   284   in (mark_boundT xT, subst_bound (mark_bound (fst xT), t)) end;