src/FOL/simpdata.ML
changeset 5496 42d13691be86
parent 5307 6a699d5cdef4
child 5555 4b9386224084
equal deleted inserted replaced
5495:48036910ab7e 5496:42d13691be86
     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