| author | bulwahn | 
| Fri, 11 Nov 2011 12:10:49 +0100 | |
| changeset 45461 | 130c90bb80b4 | 
| parent 43918 | 6ca79a354c51 | 
| child 46201 | afdc69f5156e | 
| permissions | -rw-r--r-- | 
| 14620 
1be590fd2422
Minor cleanup of headers and some speedup of the HOL4 import.
 skalberg parents: 
14516diff
changeset | 1 | (* Title: HOL/Import/replay.ML | 
| 
1be590fd2422
Minor cleanup of headers and some speedup of the HOL4 import.
 skalberg parents: 
14516diff
changeset | 2 | Author: Sebastian Skalberg (TU Muenchen) | 
| 
1be590fd2422
Minor cleanup of headers and some speedup of the HOL4 import.
 skalberg parents: 
14516diff
changeset | 3 | *) | 
| 
1be590fd2422
Minor cleanup of headers and some speedup of the HOL4 import.
 skalberg parents: 
14516diff
changeset | 4 | |
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 5 | structure Replay = (* FIXME proper signature *) | 
| 14516 | 6 | struct | 
| 7 | ||
| 8 | open ProofKernel | |
| 9 | ||
| 10 | exception REPLAY of string * string | |
| 11 | fun ERR f mesg = REPLAY (f,mesg) | |
| 12 | fun NY f = raise ERR f "NOT YET!" | |
| 13 | ||
| 14 | fun replay_proof int_thms thyname thmname prf thy = | |
| 15 | let | |
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 16 | fun rp (PRefl tm) thy = ProofKernel.REFL tm thy | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 17 | | rp (PInstT(p,lambda)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 18 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 19 | val (thy',th) = rp' p thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 20 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 21 | ProofKernel.INST_TYPE lambda th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 22 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 23 | | rp (PSubst(prfs,ctxt,prf)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 24 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 25 | val (thy',ths) = fold_rev (fn p => fn (thy, ths) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 26 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 27 | val (thy',th) = rp' p thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 28 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 29 | (thy',th::ths) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 30 | end) prfs (thy,[]) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 31 | val (thy'',th) = rp' prf thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 32 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 33 | ProofKernel.SUBST ths ctxt th thy'' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 34 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 35 | | rp (PAbs(prf,v)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 36 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 37 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 38 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 39 | ProofKernel.ABS v th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 40 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 41 | | rp (PDisch(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 42 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 43 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 44 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 45 | ProofKernel.DISCH tm th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 46 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 47 | | rp (PMp(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 48 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 49 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 50 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 51 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 52 | ProofKernel.MP th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 53 | end | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 54 | | rp (PHyp tm) thy = ProofKernel.ASSUME tm thy | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 55 | | rp (PDef(seg,name,rhs)) thy = | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 56 | (case ProofKernel.get_def seg name rhs thy of | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 57 | (thy',SOME res) => (thy',res) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 58 | | (thy',NONE) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 59 | if seg = thyname | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 60 | then ProofKernel.new_definition seg name rhs thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 61 |                  else raise ERR "replay_proof" ("Too late for term definition: "^seg^" != "^thyname))
 | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 62 | | rp (POracle(tg,asl,c)) thy = (*ProofKernel.mk_oracle_thm tg (map be_contract asl,c)*) NY "ORACLE" | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 63 | | rp (PSpec(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 64 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 65 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 66 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 67 | ProofKernel.SPEC tm th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 68 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 69 | | rp (PInst(prf,theta)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 70 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 71 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 72 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 73 | ProofKernel.INST theta th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 74 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 75 | | rp (PGen(prf,v)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 76 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 77 | val (thy',th) = rp' prf thy | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 78 | val p = ProofKernel.GEN v th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 79 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 80 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 81 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 82 | | rp (PGenAbs(prf,opt,vl)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 83 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 84 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 85 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 86 | ProofKernel.GEN_ABS opt vl th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 87 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 88 | | rp (PImpAS(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 89 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 90 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 91 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 92 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 93 | ProofKernel.IMP_ANTISYM th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 94 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 95 | | rp (PSym prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 96 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 97 | val (thy1,th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 98 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 99 | ProofKernel.SYM th thy1 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 100 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 101 | | rp (PTrans(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 102 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 103 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 104 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 105 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 106 | ProofKernel.TRANS th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 107 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 108 | | rp (PComb(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 109 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 110 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 111 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 112 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 113 | ProofKernel.COMB th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 114 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 115 | | rp (PEqMp(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 116 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 117 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 118 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 119 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 120 | ProofKernel.EQ_MP th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 121 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 122 | | rp (PEqImp prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 123 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 124 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 125 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 126 | ProofKernel.EQ_IMP_RULE th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 127 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 128 | | rp (PExists(prf,ex,wit)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 129 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 130 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 131 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 132 | ProofKernel.EXISTS ex wit th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 133 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 134 | | rp (PChoose(v,prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 135 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 136 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 137 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 138 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 139 | ProofKernel.CHOOSE v th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 140 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 141 | | rp (PConj(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 142 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 143 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 144 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 145 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 146 | ProofKernel.CONJ th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 147 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 148 | | rp (PConjunct1 prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 149 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 150 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 151 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 152 | ProofKernel.CONJUNCT1 th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 153 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 154 | | rp (PConjunct2 prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 155 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 156 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 157 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 158 | ProofKernel.CONJUNCT2 th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 159 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 160 | | rp (PDisj1(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 161 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 162 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 163 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 164 | ProofKernel.DISJ1 th tm thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 165 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 166 | | rp (PDisj2(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 167 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 168 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 169 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 170 | ProofKernel.DISJ2 tm th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 171 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 172 | | rp (PDisjCases(prf,prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 173 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 174 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 175 | val (thy1,th1) = rp' prf1 thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 176 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 177 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 178 | ProofKernel.DISJ_CASES th th1 th2 thy2 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 179 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 180 | | rp (PNotI prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 181 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 182 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 183 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 184 | ProofKernel.NOT_INTRO th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 185 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 186 | | rp (PNotE prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 187 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 188 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 189 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 190 | ProofKernel.NOT_ELIM th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 191 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 192 | | rp (PContr(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 193 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 194 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 195 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 196 | ProofKernel.CCONTR tm th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 197 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 198 | | rp (PTmSpec _) _ = raise ERR "rp" "Shouldn't reach here (PTmSpec)" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 199 | | rp (PTyDef _) _ = raise ERR "rp" "Shouldn't reach here (PTyDef)" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 200 | | rp (PTyIntro _) _ = raise ERR "rp" "Shouldn't reach here (PTyIntro)" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 201 | | rp PDisk _ = raise ERR "rp" "Shouldn't reach here (PDisk)" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 202 | | rp _ _ = raise ERR "rp" "What the hell is this? Which case did I forget?" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 203 | and rp' p thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 204 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 205 | val pc = content_of p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 206 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 207 | case pc of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 208 | PDisk => (case disk_info_of p of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 209 | SOME(thyname',thmname) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 210 | (case Int.fromString thmname of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 211 | SOME i => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 212 | if thyname' = thyname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 213 | then | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 214 | (case Array.sub(int_thms,i-1) of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 215 | NONE => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 216 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 217 | val (thy',th) = rp' (snd (import_proof thyname' thmname thy) thy) thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 218 | val _ = Array.update(int_thms,i-1,SOME th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 219 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 220 | (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 221 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 222 | | SOME th => (thy,th)) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 223 |                                        else raise ERR "replay_proof" ("Library " ^ thyname' ^ " should be built before " ^ thyname ^ " (" ^ thmname ^ ")")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 224 | | NONE => | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 225 | (case ProofKernel.get_thm thyname' thmname thy of | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 226 | (thy',SOME res) => (thy',res) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 227 | | (thy',NONE) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 228 | if thyname' = thyname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 229 | then | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 230 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 231 |                                                     val _ = writeln ("Found no " ^ thmname ^ " theorem, replaying...")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 232 | val (f_opt,prf) = import_proof thyname' thmname thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 233 | val prf = prf thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 234 | val (thy',th) = replay_proof int_thms thyname' thmname prf thy' | 
| 17322 | 235 |                                                     val _ = writeln ("Successfully finished replaying "^thmname^" !")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 236 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 237 | case content_of prf of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 238 | PTmSpec _ => (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 239 | | PTyDef _ => (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 240 | | PTyIntro _ => (thy',th) | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 241 | | _ => ProofKernel.store_thm thyname' thmname th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 242 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 243 |                                             else raise ERR "replay_proof" ("Library " ^ thyname' ^ " should be built before " ^ thyname ^ " (" ^ thmname ^ ")")))
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 244 | | NONE => raise ERR "rp'.PDisk" "Not enough information") | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 245 | | PAxm(name,c) => | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 246 | (case ProofKernel.get_axiom thyname name thy of | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 247 | (thy',SOME res) => (thy',res) | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 248 | | (thy',NONE) => ProofKernel.new_axiom name c thy') | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 249 | | PTmSpec(seg,names,prf') => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 250 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 251 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 252 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 253 | ProofKernel.new_specification seg thmname names th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 254 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 255 | | PTyDef(seg,name,prf') => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 256 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 257 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 258 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 259 | ProofKernel.new_type_definition seg thmname name th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 260 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 261 | | PTyIntro(seg,name,abs_name,rep_name,P,t,prf') => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 262 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 263 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 264 | in | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 265 | ProofKernel.type_introduction seg thmname name abs_name rep_name (P,t) th thy' | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 266 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 267 | | _ => rp pc thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 268 | end | 
| 14516 | 269 | in | 
| 43918 
6ca79a354c51
HOL/Import reorganization/cleaning. Factor 9 speedup. Remove Import XML parser in favor of much faster of Isabelle's XML parser. Remove ImportRecording since we can use Isabelle images.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
41522diff
changeset | 270 | rp' prf thy | 
| 
6ca79a354c51
HOL/Import reorganization/cleaning. Factor 9 speedup. Remove Import XML parser in favor of much faster of Isabelle's XML parser. Remove ImportRecording since we can use Isabelle images.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
41522diff
changeset | 271 | end | 
| 14516 | 272 | |
| 273 | fun setup_int_thms thyname thy = | |
| 274 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 275 | val fname = | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 276 | case ProofKernel.get_proof_dir thyname thy of | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 277 |                 SOME p => OS.Path.joinDirFile {dir=p,file=OS.Path.joinBaseExt{base = "facts",ext=SOME "lst"}}
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 278 | | NONE => error "Cannot find proof files" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 279 | val is = TextIO.openIn fname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 280 | val (num_int_thms,facts) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 281 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 282 | fun get_facts facts = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 283 | case TextIO.inputLine is of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 284 | NONE => (case facts of | 
| 41164 
6854e9a40edc
avoid ML structure aliases (especially single-letter abbreviations);
 wenzelm parents: 
39557diff
changeset | 285 | i::facts => (the (Int.fromString i),map ProofKernel.protect_factname (rev facts)) | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 286 | | _ => raise ERR "replay_thm" "Bad facts.lst file") | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 287 | | SOME fact => get_facts ((String.substring(fact,0,String.size fact -1 ))::facts) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 288 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 289 | get_facts [] | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 290 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 291 | val _ = TextIO.closeIn is | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 292 | val int_thms = Array.array(num_int_thms,NONE:thm option) | 
| 14516 | 293 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 294 | (int_thms,facts) | 
| 14516 | 295 | end | 
| 296 | ||
| 297 | fun import_single_thm thyname int_thms thmname thy = | |
| 298 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 299 | fun replay_fact (thmname,thy) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 300 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 301 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 302 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 303 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 304 | val p = fst (replay_proof int_thms thyname thmname prf thy) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 305 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 306 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 307 | end | 
| 14516 | 308 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 309 | replay_fact (thmname,thy) | 
| 14516 | 310 | end | 
| 311 | ||
| 312 | fun import_thms thyname int_thms thmnames thy = | |
| 313 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 314 | fun replay_fact thmname thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 315 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 316 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 317 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 318 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 319 | val p = fst (replay_proof int_thms thyname thmname prf thy) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 320 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 321 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 322 | end | 
| 43918 
6ca79a354c51
HOL/Import reorganization/cleaning. Factor 9 speedup. Remove Import XML parser in favor of much faster of Isabelle's XML parser. Remove ImportRecording since we can use Isabelle images.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
41522diff
changeset | 323 | val res_thy = fold replay_fact thmnames thy | 
| 14516 | 324 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 325 | res_thy | 
| 14516 | 326 | end | 
| 327 | ||
| 328 | fun import_thm thyname thmname thy = | |
| 329 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 330 | val int_thms = fst (setup_int_thms thyname thy) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 331 | fun replay_fact (thmname,thy) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 332 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 333 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 334 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 335 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 336 | val p = fst (replay_proof int_thms thyname thmname prf thy) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 337 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 338 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 339 | end | 
| 14516 | 340 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 341 | replay_fact (thmname,thy) | 
| 14516 | 342 | end | 
| 343 | ||
| 17959 | 344 | end |