src/Provers/simplifier.ML
changeset 4713 bea2ab2e360b
parent 4682 ff081854fc86
child 4722 d2e44673c21e
equal deleted inserted replaced
4712:facfbbca7242 4713:bea2ab2e360b
   321 
   321 
   322 fun gen_simp_tac mode (ss as Simpset {unsafe_finish_tac, ...}) =
   322 fun gen_simp_tac mode (ss as Simpset {unsafe_finish_tac, ...}) =
   323   basic_gen_simp_tac mode (ss setSSolver unsafe_finish_tac);
   323   basic_gen_simp_tac mode (ss setSSolver unsafe_finish_tac);
   324 
   324 
   325 
   325 
   326 val          simp_tac = gen_simp_tac (false, false);
   326 val          simp_tac = gen_simp_tac (false, false, false);
   327 val      asm_simp_tac = gen_simp_tac (false, true);
   327 val      asm_simp_tac = gen_simp_tac (false, true, false);
   328 val     full_simp_tac = gen_simp_tac (true,  false);
   328 val     full_simp_tac = gen_simp_tac (true,  false, false);
   329 val asm_full_simp_tac = gen_simp_tac (true,  true);
   329 val asm_full_simp_tac = gen_simp_tac (true,  true, false);
   330 
   330 
   331 (*not totally safe: may instantiate unknowns that appear also in other subgoals*)
   331 (*not totally safe: may instantiate unknowns that appear also in other subgoals*)
   332 val safe_asm_full_simp_tac = basic_gen_simp_tac (true, true);
   332 val safe_asm_full_simp_tac = basic_gen_simp_tac (true, true, false);
   333 
   333 
   334 (** The abstraction over the proof state delays the dereferencing **)
   334 (** The abstraction over the proof state delays the dereferencing **)
   335 
   335 
   336 fun          Simp_tac i st =          simp_tac (simpset ()) i st;
   336 fun          Simp_tac i st =          simp_tac (simpset ()) i st;
   337 fun      Asm_simp_tac i st =      asm_simp_tac (simpset ()) i st;
   337 fun      Asm_simp_tac i st =      asm_simp_tac (simpset ()) i st;
   338 fun     Full_simp_tac i st =     full_simp_tac (simpset ()) i st;
   338 fun     Full_simp_tac i st =     full_simp_tac (simpset ()) i st;
   339 fun Asm_full_simp_tac i st = asm_full_simp_tac (simpset ()) i st;
   339 fun Asm_full_simp_tac i st = asm_full_simp_tac (simpset ()) i st;
   340 
       
   341 
   340 
   342 
   341 
   343 (** simplification meta rules **)
   342 (** simplification meta rules **)
   344 
   343 
   345 fun simp mode (Simpset {mss, subgoal_tac, loop_tacs, finish_tac, unsafe_finish_tac}) thm =
   344 fun simp mode (Simpset {mss, subgoal_tac, loop_tacs, finish_tac, unsafe_finish_tac}) thm =
   348     fun prover m th = apsome fst (Seq.pull (tacf m th));
   347     fun prover m th = apsome fst (Seq.pull (tacf m th));
   349   in
   348   in
   350     Drule.rewrite_thm mode prover mss thm
   349     Drule.rewrite_thm mode prover mss thm
   351   end;
   350   end;
   352 
   351 
   353 val          simplify = simp (false, false);
   352 val          simplify = simp (false, false, false);
   354 val      asm_simplify = simp (false, true);
   353 val      asm_simplify = simp (false, true, false);
   355 val     full_simplify = simp (true, false);
   354 val     full_simplify = simp (true, false, false);
   356 val asm_full_simplify = simp (true, true);
   355 val asm_full_simplify = simp (true, true, false);
   357 
   356 
   358 
   357 
   359 end;
   358 end;