src/HOL/Tools/Meson/meson.ML
changeset 46904 f30e941b4512
parent 46818 2a28e66e2e4c
child 47022 8eac39af4ec0
equal deleted inserted replaced
46903:3d44892ac0d6 46904:f30e941b4512
   558   @{thms simp_implies_def Ex1_def Ball_def Bex_def if_True if_False if_cancel
   558   @{thms simp_implies_def Ex1_def Ball_def Bex_def if_True if_False if_cancel
   559          if_eq_cancel cases_simp}
   559          if_eq_cancel cases_simp}
   560 val nnf_extra_simps = @{thms split_ifs ex_simps all_simps simp_thms}
   560 val nnf_extra_simps = @{thms split_ifs ex_simps all_simps simp_thms}
   561 
   561 
   562 (* FIXME: "let_simp" is probably redundant now that we also rewrite with
   562 (* FIXME: "let_simp" is probably redundant now that we also rewrite with
   563   "Let_def_raw". *)
   563   "Let_def [abs_def]". *)
   564 val nnf_ss =
   564 val nnf_ss =
   565   HOL_basic_ss addsimps nnf_extra_simps
   565   HOL_basic_ss addsimps nnf_extra_simps
   566     addsimprocs [@{simproc defined_All}, @{simproc defined_Ex}, @{simproc neq},
   566     addsimprocs [@{simproc defined_All}, @{simproc defined_Ex}, @{simproc neq},
   567                  @{simproc let_simp}]
   567                  @{simproc let_simp}]
   568 
   568 
   572    @{const_name Let}]
   572    @{const_name Let}]
   573 
   573 
   574 val presimplify =
   574 val presimplify =
   575   rewrite_rule (map safe_mk_meta_eq nnf_simps)
   575   rewrite_rule (map safe_mk_meta_eq nnf_simps)
   576   #> simplify nnf_ss
   576   #> simplify nnf_ss
   577   #> Raw_Simplifier.rewrite_rule @{thms Let_def_raw}
   577   #> Raw_Simplifier.rewrite_rule @{thms Let_def [abs_def]}
   578 
   578 
   579 fun make_nnf ctxt th = case prems_of th of
   579 fun make_nnf ctxt th = case prems_of th of
   580     [] => th |> presimplify |> make_nnf1 ctxt
   580     [] => th |> presimplify |> make_nnf1 ctxt
   581   | _ => raise THM ("make_nnf: premises in argument", 0, [th]);
   581   | _ => raise THM ("make_nnf: premises in argument", 0, [th]);
   582 
   582