src/HOL/Codatatype/Tools/bnf_gfp.ML
changeset 49126 1bbd7a37fc29
parent 49125 5fc5211cf104
child 49128 1a86ef0a0210
equal deleted inserted replaced
49125:5fc5211cf104 49126:1bbd7a37fc29
     8 *)
     8 *)
     9 
     9 
    10 signature BNF_GFP =
    10 signature BNF_GFP =
    11 sig
    11 sig
    12   val bnf_gfp: binding list -> typ list list -> BNF_Def.BNF list -> local_theory ->
    12   val bnf_gfp: binding list -> typ list list -> BNF_Def.BNF list -> local_theory ->
    13     (term list * term list * thm list * thm list) * local_theory
    13     (term list * term list * thm list * thm list * thm list) * local_theory
    14 end;
    14 end;
    15 
    15 
    16 structure BNF_GFP : BNF_GFP =
    16 structure BNF_GFP : BNF_GFP =
    17 struct
    17 struct
    18 
    18 
  2987         |> maps (fn (thmN, thmss) =>
  2987         |> maps (fn (thmN, thmss) =>
  2988           map2 (fn b => fn thms =>
  2988           map2 (fn b => fn thms =>
  2989             ((Binding.qualify true (Binding.name_of b) (Binding.name thmN), []), [(thms, [])]))
  2989             ((Binding.qualify true (Binding.name_of b) (Binding.name thmN), []), [(thms, [])]))
  2990           bs thmss)
  2990           bs thmss)
  2991   in
  2991   in
  2992     ((flds, unfs, fld_unf_thms, unf_fld_thms),
  2992     ((unfs, flds, unf_fld_thms, fld_unf_thms, fld_inject_thms),
  2993       lthy |> Local_Theory.notes (common_notes @ notes) |> snd)
  2993       lthy |> Local_Theory.notes (common_notes @ notes) |> snd)
  2994   end;
  2994   end;
  2995 
  2995 
  2996 val _ =
  2996 val _ =
  2997   Outer_Syntax.local_theory @{command_spec "codata_raw"} "greatest fixed points for BNF equations"
  2997   Outer_Syntax.local_theory @{command_spec "codata_raw"} "greatest fixed points for BNF equations"