equal
deleted
inserted
replaced
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))) |