open tactic example (a b c : nat) (p : nat → Prop) (f : nat → nat → nat) : p (f (f a a) (f b c)) := begin do { [x, y, z] ← match_target_subexpr `(λ x y z, f x (f y z)) | failed, trace x, trace y, trace z, trace "------------"}, exact sorry end