166 SELECT_GOAL (BEST_FIRST (has_fewer_prems 1, size_of_thm) |
166 SELECT_GOAL (BEST_FIRST (has_fewer_prems 1, size_of_thm) |
167 (step_tac pack 1)); |
167 (step_tac pack 1)); |
168 |
168 |
169 |
169 |
170 |
170 |
171 structure ProverArgs = |
171 structure ProverData = TheoryDataFun |
172 struct |
172 (struct |
173 val name = "Sequents/prover"; |
173 val name = "Sequents/prover"; |
174 type T = pack ref; |
174 type T = pack ref; |
175 val empty = ref empty_pack |
175 val empty = ref empty_pack |
176 fun copy (ref pack) = ref pack; |
176 fun copy (ref pack) = ref pack; |
177 val prep_ext = copy; |
177 val extend = copy; |
178 fun merge (ref pack1, ref pack2) = ref (merge_pack (pack1, pack2)); |
178 fun merge _ (ref pack1, ref pack2) = ref (merge_pack (pack1, pack2)); |
179 fun print _ (ref pack) = print_pack pack; |
179 fun print _ (ref pack) = print_pack pack; |
180 end; |
180 end); |
181 |
|
182 structure ProverData = TheoryDataFun(ProverArgs); |
|
183 |
181 |
184 val prover_setup = [ProverData.init]; |
182 val prover_setup = [ProverData.init]; |
185 |
183 |
186 val print_pack = ProverData.print; |
184 val print_pack = ProverData.print; |
187 val pack_ref_of_sg = ProverData.get_sg; |
|
188 val pack_ref_of = ProverData.get; |
185 val pack_ref_of = ProverData.get; |
189 |
186 |
190 (* access global pack *) |
187 (* access global pack *) |
191 |
188 |
192 val pack_of_sg = ! o pack_ref_of_sg; |
189 val pack_of = ! o pack_ref_of; |
193 val pack_of = pack_of_sg o sign_of; |
|
194 |
|
195 val pack = pack_of o Context.the_context; |
190 val pack = pack_of o Context.the_context; |
196 val pack_ref = pack_ref_of_sg o sign_of o Context.the_context; |
191 val pack_ref = pack_ref_of o Context.the_context; |
197 |
192 |
198 |
193 |
199 (* change global pack *) |
194 (* change global pack *) |
200 |
195 |
201 fun change_pack f x = pack_ref () := (f (pack (), x)); |
196 fun change_pack f x = pack_ref () := (f (pack (), x)); |