src/HOL/BNF/Tools/bnf_gfp_rec_sugar.ML
changeset 54925 c63223067cab
parent 54924 44373f3560c7
child 54926 28b621fce2f9
equal deleted inserted replaced
54924:44373f3560c7 54925:c63223067cab
   958     val nchotomy_goalss =
   958     val nchotomy_goalss =
   959       map2 (fn false => K [] | true => single o HOLogic.mk_Trueprop o mk_dnf o map #prems)
   959       map2 (fn false => K [] | true => single o HOLogic.mk_Trueprop o mk_dnf o map #prems)
   960         de_facto_exhaustives disc_eqnss
   960         de_facto_exhaustives disc_eqnss
   961       |> list_all_fun_args []
   961       |> list_all_fun_args []
   962     val nchotomy_taut_thmss =
   962     val nchotomy_taut_thmss =
   963       map3 (fn {disc_exhausts, ...} => fn syntactic_exhaustive =>
   963       map3 (fn {disc_exhausts, ...} => fn false => K []
   964           (case maybe_tac of
   964           | true => map_prove_with_tac (fn {context = ctxt, ...} =>
   965             SOME tac => map_prove_with_tac tac
   965               mk_primcorec_nchotomy_tac ctxt disc_exhausts))
   966           | NONE =>
       
   967             if syntactic_exhaustive then
       
   968               map_prove_with_tac (fn {context = ctxt, ...} =>
       
   969                 mk_primcorec_nchotomy_tac ctxt disc_exhausts)
       
   970             else
       
   971               K []))
       
   972         corec_specs syntactic_exhaustives nchotomy_goalss;
   966         corec_specs syntactic_exhaustives nchotomy_goalss;
   973     val goalss = goalss'
   967     val goalss = goalss'
   974       |> (if is_none maybe_tac then
   968       |> (if is_none maybe_tac then
   975           append (map2 (fn true => K [] | false => map (rpair [])) syntactic_exhaustives
   969           append (map2 (fn true => K [] | false => map (rpair [])) syntactic_exhaustives
   976             nchotomy_goalss)
   970             nchotomy_goalss)