equal
deleted
inserted
replaced
198 | ZThm of {theory_name: string, thm_name: Thm_Name.P, serial: serial}; |
198 | ZThm of {theory_name: string, thm_name: Thm_Name.P, serial: serial}; |
199 |
199 |
200 type zproof_const = (zproof_name * zterm) * (ztyp ZTVars.table * zterm ZVars.table); |
200 type zproof_const = (zproof_name * zterm) * (ztyp ZTVars.table * zterm ZVars.table); |
201 |
201 |
202 datatype zproof = |
202 datatype zproof = |
203 ZDummy (*dummy proof*) |
203 ZNop |
204 | ZConstp of zproof_const |
204 | ZConstp of zproof_const |
205 | ZBoundp of int |
205 | ZBoundp of int |
206 | ZAbst of string * ztyp * zproof |
206 | ZAbst of string * ztyp * zproof |
207 | ZAbsp of string * zterm * zproof |
207 | ZAbsp of string * zterm * zproof |
208 | ZAppt of zproof * zterm |
208 | ZAppt of zproof * zterm |
478 |
478 |
479 (* fold types/terms within proof *) |
479 (* fold types/terms within proof *) |
480 |
480 |
481 fun fold_proof {hyps} typ term = |
481 fun fold_proof {hyps} typ term = |
482 let |
482 let |
483 fun proof ZDummy = I |
483 fun proof ZNop = I |
484 | proof (ZConstp (_, (instT, inst))) = |
484 | proof (ZConstp (_, (instT, inst))) = |
485 ZTVars.fold (typ o #2) instT #> ZVars.fold (term o #2) inst |
485 ZTVars.fold (typ o #2) instT #> ZVars.fold (term o #2) inst |
486 | proof (ZBoundp _) = I |
486 | proof (ZBoundp _) = I |
487 | proof (ZAbst (_, T, p)) = typ T #> proof p |
487 | proof (ZAbst (_, T, p)) = typ T #> proof p |
488 | proof (ZAbsp (_, t, p)) = term t #> proof p |
488 | proof (ZAbsp (_, t, p)) = term t #> proof p |
536 |> make_inst; |
536 |> make_inst; |
537 in if ! changed then (instT', inst') else raise Same.SAME end; |
537 in if ! changed then (instT', inst') else raise Same.SAME end; |
538 |
538 |
539 fun map_proof_same {hyps} typ term = |
539 fun map_proof_same {hyps} typ term = |
540 let |
540 let |
541 fun proof ZDummy = raise Same.SAME |
541 fun proof ZNop = raise Same.SAME |
542 | proof (ZConstp (a, (instT, inst))) = |
542 | proof (ZConstp (a, (instT, inst))) = |
543 ZConstp (a, map_insts_same typ term (instT, inst)) |
543 ZConstp (a, map_insts_same typ term (instT, inst)) |
544 | proof (ZBoundp _) = raise Same.SAME |
544 | proof (ZBoundp _) = raise Same.SAME |
545 | proof (ZAbst (a, T, p)) = |
545 | proof (ZAbst (a, T, p)) = |
546 (ZAbst (a, typ T, Same.commit proof p) |
546 (ZAbst (a, typ T, Same.commit proof p) |