equal
deleted
inserted
replaced
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 |