Library PolTac.Replace2


Ltac replace2_tac term1 term2 term3 term4 :=
let tmp1 := fresh "tmp" in
let tmp2 := fresh "tmp" in
let tmp3 := fresh "tmp" in
let tmp4 := fresh "tmp" in
  (set (tmp1 := term1) in |- * at 1;
   set (tmp2 := term2) in |-* at 1;
   (set (tmp3 := term1); set (tmp4 := term2));
   unfold tmp1; clear tmp1; replace term1 with term3;
   set (tmp1 := term3);
   unfold tmp2; clear tmp2;
  [ replace term2 with term4 | idtac]; unfold tmp1, tmp3, tmp4; clear tmp1 tmp3 tmp4).