equal
deleted
inserted
replaced
1303 | needed _ _ _ = []; |
1303 | needed _ _ _ = []; |
1304 in fn prf => #4 (shrink [] 0 prf) end; |
1304 in fn prf => #4 (shrink [] 0 prf) end; |
1305 |
1305 |
1306 |
1306 |
1307 |
1307 |
1308 (** simple first order matching functions for terms and proofs **) |
1308 (** rewriting on proof terms **) |
1309 (*see pattern.ML*) |
1309 |
|
1310 (* simple first order matching functions for terms and proofs (see pattern.ML) *) |
1310 |
1311 |
1311 exception PMatch; |
1312 exception PMatch; |
1312 |
1313 |
1313 fun flt (i: int) = filter (fn n => n < i); |
1314 fun flt (i: int) = filter (fn n => n < i); |
1314 |
1315 |
1450 | (_, Abst _) => true |
1451 | (_, Abst _) => true |
1451 | _ => false |
1452 | _ => false |
1452 end; |
1453 end; |
1453 |
1454 |
1454 |
1455 |
1455 |
1456 (* rewrite proof *) |
1456 (** rewriting on proof terms **) |
|
1457 |
1457 |
1458 val no_skel = PBound 0; |
1458 val no_skel = PBound 0; |
1459 val normal_skel = Hyp (Var ((Name.uu, 0), propT)); |
1459 val normal_skel = Hyp (Var ((Name.uu, 0), propT)); |
1460 |
1460 |
1461 fun rewrite_prf tymatch (rules, procs) prf = |
1461 fun rewrite_prf tymatch (rules, procs) prf = |
1543 Sign.typ_match thy (f ()) tyenv handle Type.TYPE_MATCH => raise PMatch); |
1543 Sign.typ_match thy (f ()) tyenv handle Type.TYPE_MATCH => raise PMatch); |
1544 |
1544 |
1545 fun rewrite_proof_notypes rews = rewrite_prf fst rews; |
1545 fun rewrite_proof_notypes rews = rewrite_prf fst rews; |
1546 |
1546 |
1547 |
1547 |
1548 |
1548 (* theory data *) |
1549 (** theory data **) |
|
1550 |
1549 |
1551 structure Data = Theory_Data |
1550 structure Data = Theory_Data |
1552 ( |
1551 ( |
1553 type T = |
1552 type T = |
1554 (stamp * (proof * proof)) list * |
1553 (stamp * (proof * proof)) list * |