In coq, is it somehow possible to apply a lemma or hypothesis to a subexpression of the current goal? For example I would like to apply the fact that plus is commutative in order to swap 3 and 4 in this example.
Require Import Coq.Arith.Plus.
Inductive foobar : nat -> Prop :=
| foob : forall n:nat, foobar n.
Goal foob (3 + 4) = foob (4 + 3).
Proof.
apply plus_comm. (* or maybe rewrite plus_comm *)
gives:
Error: Impossible to unify "?199 + ?200 = ?200 + ?199" with
"foob (3 + 4) = foob (4 + 3)".
How can I tell coq where exactly in this goal to apply plus_comm?