| author | blanchet | 
| Tue, 21 Sep 2010 10:02:50 +0200 | |
| changeset 39598 | 57413334669d | 
| parent 39557 | fe5722fce758 | 
| child 41164 | 6854e9a40edc | 
| 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 | |
| 14516 | 5 | structure Replay = | 
| 6 | struct | |
| 7 | ||
| 8 | structure P = ProofKernel | |
| 9 | ||
| 10 | open ProofKernel | |
| 19064 | 11 | open ImportRecorder | 
| 14516 | 12 | |
| 13 | exception REPLAY of string * string | |
| 14 | fun ERR f mesg = REPLAY (f,mesg) | |
| 15 | fun NY f = raise ERR f "NOT YET!" | |
| 16 | ||
| 17 | fun replay_proof int_thms thyname thmname prf thy = | |
| 18 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 19 | val _ = ImportRecorder.start_replay_proof thyname thmname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 20 | fun rp (PRefl tm) thy = P.REFL tm thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 21 | | rp (PInstT(p,lambda)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 22 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 23 | val (thy',th) = rp' p thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 24 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 25 | P.INST_TYPE lambda th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 26 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 27 | | rp (PSubst(prfs,ctxt,prf)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 28 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 29 | 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 | 30 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 31 | val (thy',th) = rp' p thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 32 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 33 | (thy',th::ths) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 34 | end) prfs (thy,[]) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 35 | val (thy'',th) = rp' prf thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 36 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 37 | P.SUBST ths ctxt th thy'' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 38 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 39 | | rp (PAbs(prf,v)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 40 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 41 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 42 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 43 | P.ABS v th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 44 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 45 | | rp (PDisch(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 46 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 47 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 48 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 49 | P.DISCH tm th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 50 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 51 | | rp (PMp(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 52 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 53 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 54 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 55 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 56 | P.MP th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 57 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 58 | | rp (PHyp tm) thy = P.ASSUME tm thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 59 | | rp (PDef(seg,name,rhs)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 60 | (case P.get_def seg name rhs thy of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 61 | (thy',SOME res) => (thy',res) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 62 | | (thy',NONE) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 63 | if seg = thyname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 64 | then P.new_definition seg name rhs thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 65 |                  else raise ERR "replay_proof" ("Too late for term definition: "^seg^" != "^thyname))
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 66 | | rp (POracle(tg,asl,c)) thy = (*P.mk_oracle_thm tg (map be_contract asl,c)*) NY "ORACLE" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 67 | | rp (PSpec(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 68 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 69 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 70 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 71 | P.SPEC tm th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 72 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 73 | | rp (PInst(prf,theta)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 74 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 75 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 76 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 77 | P.INST theta th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 78 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 79 | | rp (PGen(prf,v)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 80 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 81 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 82 | val p = P.GEN v th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 83 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 84 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 85 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 86 | | rp (PGenAbs(prf,opt,vl)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 87 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 88 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 89 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 90 | P.GEN_ABS opt vl th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 91 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 92 | | rp (PImpAS(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 93 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 94 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 95 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 96 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 97 | P.IMP_ANTISYM th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 98 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 99 | | rp (PSym prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 100 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 101 | val (thy1,th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 102 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 103 | P.SYM th thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 104 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 105 | | rp (PTrans(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 106 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 107 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 108 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 109 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 110 | P.TRANS th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 111 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 112 | | rp (PComb(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 113 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 114 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 115 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 116 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 117 | P.COMB th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 118 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 119 | | rp (PEqMp(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 120 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 121 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 122 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 123 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 124 | P.EQ_MP th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 125 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 126 | | rp (PEqImp prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 127 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 128 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 129 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 130 | P.EQ_IMP_RULE th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 131 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 132 | | rp (PExists(prf,ex,wit)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 133 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 134 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 135 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 136 | P.EXISTS ex wit th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 137 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 138 | | rp (PChoose(v,prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 139 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 140 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 141 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 142 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 143 | P.CHOOSE v th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 144 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 145 | | rp (PConj(prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 146 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 147 | val (thy1,th1) = rp' prf1 thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 148 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 149 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 150 | P.CONJ th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 151 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 152 | | rp (PConjunct1 prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 153 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 154 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 155 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 156 | P.CONJUNCT1 th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 157 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 158 | | rp (PConjunct2 prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 159 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 160 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 161 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 162 | P.CONJUNCT2 th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 163 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 164 | | rp (PDisj1(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 165 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 166 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 167 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 168 | P.DISJ1 th tm thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 169 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 170 | | rp (PDisj2(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 171 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 172 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 173 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 174 | P.DISJ2 tm th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 175 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 176 | | rp (PDisjCases(prf,prf1,prf2)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 177 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 178 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 179 | val (thy1,th1) = rp' prf1 thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 180 | val (thy2,th2) = rp' prf2 thy1 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 181 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 182 | P.DISJ_CASES th th1 th2 thy2 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 183 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 184 | | rp (PNotI prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 185 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 186 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 187 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 188 | P.NOT_INTRO th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 189 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 190 | | rp (PNotE prf) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 191 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 192 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 193 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 194 | P.NOT_ELIM th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 195 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 196 | | rp (PContr(prf,tm)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 197 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 198 | val (thy',th) = rp' prf thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 199 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 200 | P.CCONTR tm th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 201 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 202 | | 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 | 203 | | 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 | 204 | | 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 | 205 | | 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 | 206 | | 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 | 207 | and rp' p thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 208 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 209 | val pc = content_of p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 210 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 211 | case pc of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 212 | PDisk => (case disk_info_of p of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 213 | SOME(thyname',thmname) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 214 | (case Int.fromString thmname of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 215 | SOME i => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 216 | if thyname' = thyname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 217 | then | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 218 | (case Array.sub(int_thms,i-1) of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 219 | NONE => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 220 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 221 | 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 | 222 | 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 | 223 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 224 | (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 225 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 226 | | SOME th => (thy,th)) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 227 |                                        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 | 228 | | NONE => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 229 | (case P.get_thm thyname' thmname thy of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 230 | (thy',SOME res) => (thy',res) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 231 | | (thy',NONE) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 232 | if thyname' = thyname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 233 | then | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 234 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 235 |                                                     val _ = writeln ("Found no " ^ thmname ^ " theorem, replaying...")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 236 | 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 | 237 | val prf = prf thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 238 | val (thy',th) = replay_proof int_thms thyname' thmname prf thy' | 
| 17322 | 239 |                                                     val _ = writeln ("Successfully finished replaying "^thmname^" !")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 240 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 241 | case content_of prf of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 242 | PTmSpec _ => (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 243 | | PTyDef _ => (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 244 | | PTyIntro _ => (thy',th) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 245 | | _ => P.store_thm thyname' thmname th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 246 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 247 |                                             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 | 248 | | NONE => raise ERR "rp'.PDisk" "Not enough information") | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 249 | | PAxm(name,c) => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 250 | (case P.get_axiom thyname name thy of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 251 | (thy',SOME res) => (thy',res) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 252 | | (thy',NONE) => P.new_axiom name c thy') | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 253 | | PTmSpec(seg,names,prf') => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 254 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 255 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 256 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 257 | P.new_specification seg thmname names th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 258 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 259 | | PTyDef(seg,name,prf') => | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 260 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 261 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 262 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 263 | P.new_type_definition seg thmname name th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 264 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 265 | | 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 | 266 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 267 | val (thy',th) = rp' prf' thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 268 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 269 | P.type_introduction seg thmname name abs_name rep_name (P,t) th thy' | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 270 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 271 | | _ => rp pc thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 272 | end | 
| 14516 | 273 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 274 | let | 
| 37778 
87b5dfe00387
do not intercept ML exceptions -- printing exception positions/text is the job of the Isar/ML toplevel;
 wenzelm parents: 
35842diff
changeset | 275 | val x = rp' prf thy | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 276 | val _ = ImportRecorder.stop_replay_proof thyname thmname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 277 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 278 | x | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 279 | end | 
| 37778 
87b5dfe00387
do not intercept ML exceptions -- printing exception positions/text is the job of the Isar/ML toplevel;
 wenzelm parents: 
35842diff
changeset | 280 | end handle x => (ImportRecorder.abort_replay_proof thyname thmname; reraise x) | 
| 14516 | 281 | |
| 282 | fun setup_int_thms thyname thy = | |
| 283 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 284 | val fname = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 285 | case P.get_proof_dir thyname thy of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 286 |                 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 | 287 | | NONE => error "Cannot find proof files" | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 288 | val is = TextIO.openIn fname | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 289 | val (num_int_thms,facts) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 290 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 291 | fun get_facts facts = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 292 | case TextIO.inputLine is of | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 293 | NONE => (case facts of | 
| 33035 | 294 | i::facts => (the (Int.fromString i),map P.protect_factname (rev facts)) | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 295 | | _ => raise ERR "replay_thm" "Bad facts.lst file") | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 296 | | 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 | 297 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 298 | get_facts [] | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 299 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 300 | val _ = TextIO.closeIn is | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 301 | val int_thms = Array.array(num_int_thms,NONE:thm option) | 
| 14516 | 302 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 303 | (int_thms,facts) | 
| 14516 | 304 | end | 
| 305 | ||
| 306 | fun import_single_thm thyname int_thms thmname thy = | |
| 307 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 308 | fun replay_fact (thmname,thy) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 309 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 310 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 311 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 312 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 313 | 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 | 314 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 315 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 316 | end | 
| 14516 | 317 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 318 | replay_fact (thmname,thy) | 
| 14516 | 319 | end | 
| 320 | ||
| 19064 | 321 | fun replay_chached_thm int_thms thyname thmname = | 
| 322 | let | |
| 32970 
fbd2bb2489a8
operations of structure Skip_Proof (formerly SkipProof) no longer require quick_and_dirty mode;
 wenzelm parents: 
32966diff
changeset | 323 | fun th_of thy = Skip_Proof.make_thm thy | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 324 | fun err msg = raise ERR "replay_cached_thm" msg | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 325 |         val _ = writeln ("Replaying (from cache) "^thmname^" ...")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 326 | fun rps [] thy = thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 327 | | rps (t::ts) thy = rps ts (rp t thy) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 328 | and rp (ThmEntry (thyname', thmname', aborted, History history)) thy = rps history thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 329 | | rp (DeltaEntry ds) thy = fold delta ds thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 330 | and delta (Specification (names, th)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 331 | fst (Choice_Specification.add_specification NONE names (thy,th_of thy th)) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 332 | | delta (Hol_mapping (thyname, thmname, isaname)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 333 | add_hol4_mapping thyname thmname isaname thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 334 | | delta (Hol_pending (thyname, thmname, th)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 335 | add_hol4_pending thyname thmname ([], th_of thy th) thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 336 | | delta (Consts cs) thy = Sign.add_consts_i (map (fn (c, T, mx) => (Binding.name c, T, mx)) cs) thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 337 | | delta (Hol_const_mapping (thyname, constname, fullcname)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 338 | add_hol4_const_mapping thyname constname true fullcname thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 339 | | delta (Hol_move (fullname, moved_thmname)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 340 | add_hol4_move fullname moved_thmname thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 341 | | delta (Defs (thmname, eq)) thy = | 
| 39557 
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
 wenzelm parents: 
37778diff
changeset | 342 | snd (Global_Theory.add_defs false [((Binding.name thmname, eq), [])] thy) | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 343 | | delta (Hol_theorem (thyname, thmname, th)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 344 | add_hol4_theorem thyname thmname ([], th_of thy th) thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 345 | | delta (Typedef (thmname, (t, vs, mx), c, repabs, th)) thy = | 
| 35842 | 346 | snd (Typedef.add_typedef_global false (Option.map Binding.name thmname) | 
| 347 | (Binding.name t, map (rpair dummyS) vs, mx) c | |
| 30346 | 348 | (Option.map (pairself Binding.name) repabs) (rtac (th_of thy th) 1) thy) | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 349 | | delta (Hol_type_mapping (thyname, tycname, fulltyname)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 350 | add_hol4_type_mapping thyname tycname true fulltyname thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 351 | | delta (Indexed_theorem (i, th)) thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 352 | (Array.update (int_thms,i-1,SOME (P.to_hol_thm (th_of thy th))); thy) | 
| 19068 | 353 | | delta (Protect_varname (s,t)) thy = (P.replay_protect_varname s t; thy) | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 354 | | delta (Dump s) thy = P.replay_add_dump s thy | 
| 19064 | 355 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 356 | rps | 
| 19064 | 357 | end | 
| 358 | ||
| 14516 | 359 | fun import_thms thyname int_thms thmnames thy = | 
| 360 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 361 | fun zip names [] = ([], names) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 362 | | zip [] _ = ([], []) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 363 | | zip (thmname::names) ((ThmEntry (entry as (thyname',thmname',aborted,History history)))::ys) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 364 | if thyname = thyname' andalso thmname = thmname' then | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 365 | (if aborted then ([], thmname::names) else | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 366 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 367 |                      val _ = writeln ("theorem is in-sync: "^thmname)
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 368 | val (cached,normal) = zip names ys | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 369 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 370 | (entry::cached, normal) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 371 | end) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 372 | else | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 373 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 374 |                     val _ = writeln ("cached theorems are not in-sync,  expected: "^thmname^", found: "^thmname')
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 375 |                     val _ = writeln ("proceeding with next uncached theorem...")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 376 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 377 | ([], thmname::names) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 378 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 379 |         (*      raise ERR "import_thms" ("cached theorems are not in-sync, expected: "^thmname^", found: "^thmname')*)
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 380 | | zip (thmname::_) (DeltaEntry _ :: _) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 381 |             raise ERR "import_thms" ("expected theorem '"^thmname^"', but found a delta")
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 382 | fun zip' xs (History ys) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 383 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 384 |                 val _ = writeln ("length of xs: "^(string_of_int (length xs)))
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 385 |                 val _ = writeln ("length of history: "^(string_of_int (length ys)))
 | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 386 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 387 | zip xs ys | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 388 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 389 | fun replay_fact thmname thy = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 390 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 391 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 392 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 393 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 394 | 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 | 395 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 396 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 397 | end | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 398 | fun replay_cache (_,thmname, _, History history) thy = replay_chached_thm int_thms thyname thmname history thy | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 399 | val (cached, normal) = zip' thmnames (ImportRecorder.get_history ()) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 400 | val _ = ImportRecorder.set_history (History (map ThmEntry cached)) | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 401 | val res_thy = fold replay_fact normal (fold replay_cache cached thy) | 
| 14516 | 402 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 403 | res_thy | 
| 14516 | 404 | end | 
| 405 | ||
| 406 | fun import_thm thyname thmname thy = | |
| 407 | let | |
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 408 | 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 | 409 | fun replay_fact (thmname,thy) = | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 410 | let | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 411 | val prf = mk_proof PDisk | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 412 | val _ = set_disk_info_of prf thyname thmname | 
| 17594 | 413 |                 val _ = writeln ("Replaying "^thmname^" ...")
 | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 414 | 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 | 415 | in | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 416 | p | 
| 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 417 | end | 
| 14516 | 418 | in | 
| 32960 
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
 wenzelm parents: 
31723diff
changeset | 419 | replay_fact (thmname,thy) | 
| 14516 | 420 | end | 
| 421 | ||
| 17959 | 422 | end |