unfold DistSingle_Adv, DistSingle_G1, DistSingle_G.
intuition.
Qed.
Definition DistSingle_G2(c : A -> Comp B) :=
[a, s_A] <-$2 A1;
i <-$ [ 0  .. n);
distHybrid <-$
(b <-$ c a;
rndHybrid <-$ computeHybrid n i a;
ret (listReplace rndHybrid i b b));
A2 s_A distHybrid.

(* Specifications: *)
Theorem DistSingle_G2_equiv :
forall c,
Pr[DistSingle_G1 c] == Pr[DistSingle_G2 c].