src/Pure/type_infer.ML
changeset 42284 326f57825e1a
parent 42143 786ccfffcd67
child 42360 da8817d01e7c
equal deleted inserted replaced
42283:25d9d836ed9c 42284:326f57825e1a
   298       let
   298       let
   299         val (Ts_bTs', ts') = finish ctxt tye (Ts @ map snd bs, ts);
   299         val (Ts_bTs', ts') = finish ctxt tye (Ts @ map snd bs, ts);
   300         val (Ts', Ts'') = chop (length Ts) Ts_bTs';
   300         val (Ts', Ts'') = chop (length Ts) Ts_bTs';
   301         fun prep t =
   301         fun prep t =
   302           let val xs = rev (Term.variant_frees t (rev (map fst bs ~~ Ts'')))
   302           let val xs = rev (Term.variant_frees t (rev (map fst bs ~~ Ts'')))
   303           in Term.subst_bounds (map Syntax.mark_boundT xs, t) end;
   303           in Term.subst_bounds (map Syntax_Trans.mark_boundT xs, t) end;
   304       in (map prep ts', Ts') end;
   304       in (map prep ts', Ts') end;
   305 
   305 
   306     fun err_loose i = error ("Loose bound variable: B." ^ string_of_int i);
   306     fun err_loose i = error ("Loose bound variable: B." ^ string_of_int i);
   307 
   307 
   308     fun unif_failed msg =
   308     fun unif_failed msg =