src/HOL/Tools/BNF/bnf_tactics.ML
changeset 59058 a78612c67ec0
parent 58370 ffc8669e46cf
child 59582 0fbed69ff081
equal deleted inserted replaced
59057:5b649fb2f2e1 59058:a78612c67ec0
    49 
    49 
    50 
    50 
    51 (*transforms f (g x) = h (k x) into f o g = h o k using first order matches for f, g, h, and k*)
    51 (*transforms f (g x) = h (k x) into f o g = h o k using first order matches for f, g, h, and k*)
    52 fun mk_pointfree ctxt thm = thm
    52 fun mk_pointfree ctxt thm = thm
    53   |> Thm.prop_of |> HOLogic.dest_Trueprop |> HOLogic.dest_eq
    53   |> Thm.prop_of |> HOLogic.dest_Trueprop |> HOLogic.dest_eq
    54   |> pairself (dest_comb #> apsnd (dest_comb #> fst) #> HOLogic.mk_comp)
    54   |> apply2 (dest_comb #> apsnd (dest_comb #> fst) #> HOLogic.mk_comp)
    55   |> mk_Trueprop_eq
    55   |> mk_Trueprop_eq
    56   |> (fn goal => Goal.prove_sorry ctxt [] [] goal
    56   |> (fn goal => Goal.prove_sorry ctxt [] [] goal
    57     (K (rtac @{thm ext} 1 THEN
    57     (K (rtac @{thm ext} 1 THEN
    58         unfold_thms_tac ctxt ([o_apply, unfold_thms ctxt [o_apply] (mk_sym thm)]) THEN
    58         unfold_thms_tac ctxt ([o_apply, unfold_thms ctxt [o_apply] (mk_sym thm)]) THEN
    59         rtac refl 1)))
    59         rtac refl 1)))