equal
deleted
inserted
replaced
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 |