src/Pure/Isar/expression.ML
changeset 28936 f1647bf418f5
parent 28903 b3fc3a62247a
child 28951 e89dde5f365c
equal deleted inserted replaced
28927:7e631979922f 28936:f1647bf418f5
   302     val elem_css = map extract_elem elems;
   302     val elem_css = map extract_elem elems;
   303     val concl_cs = (map o map) mk_propp concl;
   303     val concl_cs = (map o map) mk_propp concl;
   304     (* Type inference *)
   304     (* Type inference *)
   305     val (inst_cs' :: css', ctxt') =
   305     val (inst_cs' :: css', ctxt') =
   306       (fold_burrow o fold_burrow) check (inst_cs :: elem_css @ [concl_cs]) ctxt;
   306       (fold_burrow o fold_burrow) check (inst_cs :: elem_css @ [concl_cs]) ctxt;
   307     (* Re-check to resolve bindings, elements and conclusion only *)
   307     val (elem_css', [concl_cs']) = chop (length elem_css) css';
   308     val (css'', _) = (fold_burrow o fold_burrow) check css' ctxt';
       
   309     val (elem_css'', [concl_cs'']) = chop (length elem_css) css'';
       
   310   in
   308   in
   311     (map restore_inst (insts ~~ inst_cs'), map restore_elem (elems ~~ elem_css''),
   309     (map restore_inst (insts ~~ inst_cs'), map restore_elem (elems ~~ elem_css'),
   312       concl_cs'', ctxt')
   310       concl_cs', ctxt')
   313   end;
   311   end;
   314 
   312 
   315 end;
   313 end;
   316 
   314 
   317 
   315