src/HOL/Codatatype/Tools/bnf_lfp.ML
changeset 49124 968e1b7de057
parent 49123 263b0e330d8b
child 49125 5fc5211cf104
equal deleted inserted replaced
49123:263b0e330d8b 49124:968e1b7de057
     7 *)
     7 *)
     8 
     8 
     9 signature BNF_LFP =
     9 signature BNF_LFP =
    10 sig
    10 sig
    11   val bnf_lfp: binding list -> typ list list -> BNF_Def.BNF list -> Proof.context ->
    11   val bnf_lfp: binding list -> typ list list -> BNF_Def.BNF list -> Proof.context ->
    12     term list * Proof.context
    12     (term list * term list * thm list * thm list) * Proof.context
    13 end;
    13 end;
    14 
    14 
    15 structure BNF_LFP : BNF_LFP =
    15 structure BNF_LFP : BNF_LFP =
    16 struct
    16 struct
    17 
    17 
  1810         |> maps (fn (thmN, thmss) =>
  1810         |> maps (fn (thmN, thmss) =>
  1811           map2 (fn b => fn thms =>
  1811           map2 (fn b => fn thms =>
  1812             ((Binding.qualify true (Binding.name_of b) (Binding.name thmN), []), [(thms, [])]))
  1812             ((Binding.qualify true (Binding.name_of b) (Binding.name thmN), []), [(thms, [])]))
  1813           bs thmss)
  1813           bs thmss)
  1814   in
  1814   in
  1815     (flds, lthy |> Local_Theory.notes (common_notes @ notes) |> snd)
  1815     ((flds, unfs, fld_unf_thms, unf_fld_thms),
       
  1816       lthy |> Local_Theory.notes (common_notes @ notes) |> snd)
  1816   end;
  1817   end;
  1817 
  1818 
  1818 val _ =
  1819 val _ =
  1819   Outer_Syntax.local_theory @{command_spec "data_raw"} "least fixed points for BNF equations"
  1820   Outer_Syntax.local_theory @{command_spec "data_raw"} "least fixed points for BNF equations"
  1820     (Parse.and_list1
  1821     (Parse.and_list1