src/Pure/proofterm.ML
changeset 70399 ac570c179ee9
parent 70398 725438ceae7c
child 70400 65bbef66e2ec
equal deleted inserted replaced
70398:725438ceae7c 70399:ac570c179ee9
  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 *