src/HOL/Tools/BNF/bnf_fp_def_sugar.ML
changeset 74200 17090e27aae9
parent 72450 24bd1316eaae
child 74266 612b7e0d6721
equal deleted inserted replaced
74198:f54b061c2c22 74200:17090e27aae9
   850                 |> infer_instantiate' lthy (replicate live NONE @
   850                 |> infer_instantiate' lthy (replicate live NONE @
   851                   [SOME (Thm.cterm_of lthy (ctorA $ y))])
   851                   [SOME (Thm.cterm_of lthy (ctorA $ y))])
   852                 |> unfold_thms lthy [dtor_ctor];
   852                 |> unfold_thms lthy [dtor_ctor];
   853             in
   853             in
   854               (fp_map_thm' RS ctor_cong RS (ctor_dtor RS sym RS trans))
   854               (fp_map_thm' RS ctor_cong RS (ctor_dtor RS sym RS trans))
   855               |> Drule.generalize ([], [y_s])
   855               |> Drule.generalize (Symtab.empty, Symtab.make_set [y_s])
   856             end;
   856             end;
   857 
   857 
   858         val map_thms =
   858         val map_thms =
   859           let
   859           let
   860             fun mk_goal ctrA ctrB xs ys =
   860             fun mk_goal ctrA ctrB xs ys =
   929             in
   929             in
   930               fp_rel_thm
   930               fp_rel_thm
   931               |> infer_instantiate' lthy (replicate live NONE @
   931               |> infer_instantiate' lthy (replicate live NONE @
   932                 [SOME (Thm.cterm_of lthy (ctorA $ y)), SOME (Thm.cterm_of lthy (ctorB $ z))])
   932                 [SOME (Thm.cterm_of lthy (ctorA $ y)), SOME (Thm.cterm_of lthy (ctorB $ z))])
   933               |> unfold_thms lthy [dtor_ctor]
   933               |> unfold_thms lthy [dtor_ctor]
   934               |> Drule.generalize ([], [y_s, z_s])
   934               |> Drule.generalize (Symtab.empty, Symtab.make_set [y_s, z_s])
   935             end;
   935             end;
   936 
   936 
   937         val rel_inject_thms =
   937         val rel_inject_thms =
   938           let
   938           let
   939             fun mk_goal ctrA ctrB xs ys =
   939             fun mk_goal ctrA ctrB xs ys =