src/Provers/simplifier.ML
changeset 11669 4f7ad093b413
parent 10821 dcb75538f542
child 11938 7b594aba1300
equal deleted inserted replaced
11668:548ba68385a3 11669:4f7ad093b413
    19   type solver
    19   type solver
    20   val mk_solver: string -> (thm list -> int -> tactic) -> solver
    20   val mk_solver: string -> (thm list -> int -> tactic) -> solver
    21   type simpset
    21   type simpset
    22   val empty_ss: simpset
    22   val empty_ss: simpset
    23   val rep_ss: simpset ->
    23   val rep_ss: simpset ->
    24    {mss: meta_simpset,
    24    {mss: MetaSimplifier.meta_simpset,
    25     mk_cong: thm -> thm,
    25     mk_cong: thm -> thm,
    26     subgoal_tac: simpset -> int -> tactic,
    26     subgoal_tac: simpset -> int -> tactic,
    27     loop_tacs: (string * (int -> tactic)) list,
    27     loop_tacs: (string * (int -> tactic)) list,
    28     unsafe_solvers: solver list,
    28     unsafe_solvers: solver list,
    29     solvers: solver list};
    29     solvers: solver list};
   150 
   150 
   151 (* type simpset *)
   151 (* type simpset *)
   152 
   152 
   153 datatype simpset =
   153 datatype simpset =
   154   Simpset of {
   154   Simpset of {
   155     mss: meta_simpset,
   155     mss: MetaSimplifier.meta_simpset,
   156     mk_cong: thm -> thm,
   156     mk_cong: thm -> thm,
   157     subgoal_tac: simpset -> int -> tactic,
   157     subgoal_tac: simpset -> int -> tactic,
   158     loop_tacs: (string * (int -> tactic)) list,
   158     loop_tacs: (string * (int -> tactic)) list,
   159     unsafe_solvers: solver list,
   159     unsafe_solvers: solver list,
   160     solvers: solver list};
   160     solvers: solver list};
   409       val solvs = app_sols (if safe then solvers else unsafe_solvers);
   409       val solvs = app_sols (if safe then solvers else unsafe_solvers);
   410       fun simp_loop_tac i =
   410       fun simp_loop_tac i =
   411         asm_rewrite_goal_tac mode
   411         asm_rewrite_goal_tac mode
   412           (solve_all_tac (mk_cong, subgoal_tac, loop_tacs, unsafe_solvers))
   412           (solve_all_tac (mk_cong, subgoal_tac, loop_tacs, unsafe_solvers))
   413           mss i
   413           mss i
   414         THEN (solvs (prems_of_mss mss) i ORELSE
   414         THEN (solvs (MetaSimplifier.prems_of_mss mss) i ORELSE
   415               TRY ((loop_tac loop_tacs THEN_ALL_NEW simp_loop_tac) i))
   415               TRY ((loop_tac loop_tacs THEN_ALL_NEW simp_loop_tac) i))
   416     in simp_loop_tac end;
   416     in simp_loop_tac end;
   417 
   417 
   418 val simp_tac = generic_simp_tac false (false, false, false);
   418 val simp_tac = generic_simp_tac false (false, false, false);
   419 val asm_simp_tac = generic_simp_tac false (false, true, false);
   419 val asm_simp_tac = generic_simp_tac false (false, true, false);