equal
deleted
inserted
replaced
3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
4 Copyright 1994 University of Cambridge |
4 Copyright 1994 University of Cambridge |
5 |
5 |
6 Simplification data for FOL |
6 Simplification data for FOL |
7 *) |
7 *) |
|
8 |
|
9 (* Elimination of True from asumptions: *) |
|
10 |
|
11 val True_implies_equals = prove_goal IFOL.thy |
|
12 "(True ==> PROP P) == PROP P" |
|
13 (K [rtac equal_intr_rule 1, atac 2, |
|
14 METAHYPS (fn prems => resolve_tac prems 1) 1, |
|
15 rtac TrueI 1]); |
|
16 |
8 |
17 |
9 (*** Rewrite rules ***) |
18 (*** Rewrite rules ***) |
10 |
19 |
11 fun int_prove_fun s = |
20 fun int_prove_fun s = |
12 (writeln s; |
21 (writeln s; |
280 |
289 |
281 fun Addcongs congs = (simpset_ref() := simpset() addcongs congs); |
290 fun Addcongs congs = (simpset_ref() := simpset() addcongs congs); |
282 fun Delcongs congs = (simpset_ref() := simpset() delcongs congs); |
291 fun Delcongs congs = (simpset_ref() := simpset() delcongs congs); |
283 |
292 |
284 |
293 |
|
294 val meta_simps = |
|
295 [triv_forall_equality, (* prunes params *) |
|
296 True_implies_equals]; (* prune asms `True' *) |
|
297 |
285 val IFOL_simps = |
298 val IFOL_simps = |
286 [refl RS P_iff_T] @ conj_simps @ disj_simps @ not_simps @ |
299 [refl RS P_iff_T] @ conj_simps @ disj_simps @ not_simps @ |
287 imp_simps @ iff_simps @ quant_simps; |
300 imp_simps @ iff_simps @ quant_simps; |
288 |
301 |
289 val notFalseI = int_prove_fun "~False"; |
302 val notFalseI = int_prove_fun "~False"; |
303 setmksimps (mksimps mksimps_pairs); |
316 setmksimps (mksimps mksimps_pairs); |
304 |
317 |
305 |
318 |
306 |
319 |
307 (*intuitionistic simprules only*) |
320 (*intuitionistic simprules only*) |
308 val IFOL_ss = FOL_basic_ss addsimps (IFOL_simps @ int_ex_simps @ int_all_simps) |
321 val IFOL_ss = |
309 addcongs [imp_cong]; |
322 FOL_basic_ss addsimps (meta_simps @ IFOL_simps @ |
|
323 int_ex_simps @ int_all_simps) |
|
324 addcongs [imp_cong]; |
310 |
325 |
311 val cla_simps = |
326 val cla_simps = |
312 [de_Morgan_conj, de_Morgan_disj, imp_disj1, imp_disj2, |
327 [de_Morgan_conj, de_Morgan_disj, imp_disj1, imp_disj2, |
313 not_all, not_ex, cases_simp] @ |
328 not_all, not_ex, cases_simp] @ |
314 map prove_fun |
329 map prove_fun |