equal
deleted
inserted
replaced
534 let |
534 let |
535 val fs = add_term_tfrees (t, []) \\ fixed; |
535 val fs = add_term_tfrees (t, []) \\ fixed; |
536 val ixns = add_term_tvar_ixns (t, []); |
536 val ixns = add_term_tvar_ixns (t, []); |
537 val fmap = fs ~~ variantlist (map fst fs, map #1 ixns) |
537 val fmap = fs ~~ variantlist (map fst fs, map #1 ixns) |
538 fun thaw (f as (a, S)) = |
538 fun thaw (f as (a, S)) = |
539 (case assoc (fmap, f) of |
539 (case gen_assoc (op =) (fmap, f) of |
540 NONE => TFree f |
540 NONE => TFree f |
541 | SOME b => TVar ((b, 0), S)); |
541 | SOME b => TVar ((b, 0), S)); |
542 in map_proof_terms (map_term_types (map_type_tfree thaw)) (map_type_tfree thaw) prf |
542 in map_proof_terms (map_term_types (map_type_tfree thaw)) (map_type_tfree thaw) prf |
543 end; |
543 end; |
544 |
544 |
1083 | NONE => NONE) |
1083 | NONE => NONE) |
1084 | rew2 _ _ _ = NONE |
1084 | rew2 _ _ _ = NONE |
1085 |
1085 |
1086 in getOpt (rew1 [] skel0 prf, prf) end; |
1086 in getOpt (rew1 [] skel0 prf, prf) end; |
1087 |
1087 |
1088 fun rewrite_proof tsig = rewrite_prf (fn (tab, f) => |
1088 fun rewrite_proof tsig = rewrite_prf (fn (tyenv, f) => |
1089 Type.typ_match tsig (tab, f ()) handle Type.TYPE_MATCH => raise PMatch); |
1089 Type.typ_match tsig (f ()) tyenv handle Type.TYPE_MATCH => raise PMatch); |
1090 |
1090 |
1091 fun rewrite_proof_notypes rews = rewrite_prf fst rews; |
1091 fun rewrite_proof_notypes rews = rewrite_prf fst rews; |
1092 |
1092 |
|
1093 |
1093 (**** theory data ****) |
1094 (**** theory data ****) |
1094 |
|
1095 (* data kind 'Pure/proof' *) |
|
1096 |
1095 |
1097 structure ProofData = TheoryDataFun |
1096 structure ProofData = TheoryDataFun |
1098 (struct |
1097 (struct |
1099 val name = "Pure/proof"; |
1098 val name = "Pure/proof"; |
1100 type T = ((proof * proof) list * |
1099 type T = ((proof * proof) list * |