153 | thms_of_proof tab (prf' as PThm ((s, _), prf, prop, _)) = |
153 | thms_of_proof tab (prf' as PThm ((s, _), prf, prop, _)) = |
154 (case Symtab.lookup (tab, s) of |
154 (case Symtab.lookup (tab, s) of |
155 None => thms_of_proof (Symtab.update ((s, [(prop, prf')]), tab)) prf |
155 None => thms_of_proof (Symtab.update ((s, [(prop, prf')]), tab)) prf |
156 | Some ps => if exists (equal prop o fst) ps then tab else |
156 | Some ps => if exists (equal prop o fst) ps then tab else |
157 thms_of_proof (Symtab.update ((s, (prop, prf')::ps), tab)) prf) |
157 thms_of_proof (Symtab.update ((s, (prop, prf')::ps), tab)) prf) |
|
158 | thms_of_proof tab (MinProof prfs) = foldl (uncurry thms_of_proof) (tab, prfs) |
158 | thms_of_proof tab _ = tab; |
159 | thms_of_proof tab _ = tab; |
159 |
160 |
160 fun axms_of_proof tab (Abst (_, _, prf)) = axms_of_proof tab prf |
161 fun axms_of_proof tab (Abst (_, _, prf)) = axms_of_proof tab prf |
161 | axms_of_proof tab (AbsP (_, _, prf)) = axms_of_proof tab prf |
162 | axms_of_proof tab (AbsP (_, _, prf)) = axms_of_proof tab prf |
162 | axms_of_proof tab (prf1 %% prf2) = axms_of_proof (axms_of_proof tab prf1) prf2 |
163 | axms_of_proof tab (prf1 %% prf2) = axms_of_proof (axms_of_proof tab prf1) prf2 |
163 | axms_of_proof tab (prf % _) = axms_of_proof tab prf |
164 | axms_of_proof tab (prf % _) = axms_of_proof tab prf |
164 | axms_of_proof tab (prf as PAxm (s, _, _)) = Symtab.update ((s, prf), tab) |
165 | axms_of_proof tab (prf as PAxm (s, _, _)) = Symtab.update ((s, prf), tab) |
|
166 | axms_of_proof tab (MinProof prfs) = foldl (uncurry axms_of_proof) (tab, prfs) |
165 | axms_of_proof tab _ = tab; |
167 | axms_of_proof tab _ = tab; |
166 |
168 |
167 (** collect all theorems, axioms and oracles **) |
169 (** collect all theorems, axioms and oracles **) |
168 |
170 |
169 fun mk_min_proof (prfs, Abst (_, _, prf)) = mk_min_proof (prfs, prf) |
171 fun mk_min_proof (prfs, Abst (_, _, prf)) = mk_min_proof (prfs, prf) |