intuition.
unfold OMH_G_oc.
econstructor.
econstructor.
eapply oc_compMap_qam.
intuition.
econstructor.
intuition.
econstructor.
rewrite mult_1_r.
rewrite plus_0_r.
eapply max_queries.
eauto.
Qed.
Definition Gi_oracleMap i :=
[s, p] <-$2 A1;
[lsa, s_A] <-2 p;
p <-$ oracleMap _ _ (Oi _ _ O1 O2 i) (s, 0)%nat lsa;
A2 s_A (fst p).
Definition Gi_oracleMap' i :=
[s, p] <-$2 A1;
[lsa, s_A] <-2 p;
p <-$ (
[lsb1, s'] <-$2 oracleMap _ _ (Oi _ _ O1 O2 i) (s, 0)%nat (firstn i lsa);
[lsb2, s''] <-$2 oracleMap _ _ (Oi _ _ O1 O2 i) s'%nat (skipn i lsa);
ret (lsb1 ++ lsb2, s'')
);
A2 s_A (fst p).

Theorem Gi_oracleMap_equiv :
forall i,
Pr[Gi _ _ O1 O2 A1 OMH_G_oc i] == Pr[Gi_oracleMap i].