src/HOL/Tools/TFL/tfl.ML
changeset 51717 9e7d1c139569
parent 46909 3c73a121a387
child 51930 52fd62618631
equal deleted inserted replaced
51709:19b47bfac6ef 51717:9e7d1c139569
   429                            given_pats
   429                            given_pats
   430      val (case_rewrites,context_congs) = extraction_thms theory
   430      val (case_rewrites,context_congs) = extraction_thms theory
   431      (*case_ss causes minimal simplification: bodies of case expressions are
   431      (*case_ss causes minimal simplification: bodies of case expressions are
   432        not simplified. Otherwise large examples (Red-Black trees) are too
   432        not simplified. Otherwise large examples (Red-Black trees) are too
   433        slow.*)
   433        slow.*)
   434      val case_ss =
   434      val case_simpset =
   435        Simplifier.global_context theory
   435        Simplifier.global_context theory HOL_basic_ss
   436          (HOL_basic_ss addsimps case_rewrites
   436           addsimps case_rewrites
   437           |> fold (Simplifier.add_cong o #weak_case_cong o snd)
   437           |> fold (Simplifier.add_cong o #weak_case_cong o snd)
   438               (Symtab.dest (Datatype.get_all theory)))
   438               (Symtab.dest (Datatype.get_all theory))
   439      val corollaries' = map (Simplifier.simplify case_ss) corollaries
   439      val corollaries' = map (Simplifier.simplify case_simpset) corollaries
   440      val extract = Rules.CONTEXT_REWRITE_RULE
   440      val extract = Rules.CONTEXT_REWRITE_RULE
   441                      (f, [R], @{thm cut_apply}, meta_tflCongs@context_congs)
   441                      (f, [R], @{thm cut_apply}, meta_tflCongs @ context_congs)
   442      val (rules, TCs) = ListPair.unzip (map extract corollaries')
   442      val (rules, TCs) = ListPair.unzip (map extract corollaries')
   443      val rules0 = map (rewrite_rule [Thms.CUT_DEF]) rules
   443      val rules0 = map (rewrite_rule [Thms.CUT_DEF]) rules
   444      val mk_cond_rule = Rules.FILTER_DISCH_ALL(not o curry (op aconv) WFR)
   444      val mk_cond_rule = Rules.FILTER_DISCH_ALL(not o curry (op aconv) WFR)
   445      val rules1 = Rules.LIST_CONJ(map mk_cond_rule rules0)
   445      val rules1 = Rules.LIST_CONJ(map mk_cond_rule rules0)
   446  in
   446  in