Section Dual_EC_DRBG_V.
Context`{FCG : FiniteCyclicGroup}.
Hypothesis eqd_GroupElement : EqDec GroupElement.
Variable x : GroupElement -> nat.
Variable from_x : nat -> GroupElement.
Variable Q : GroupElement.
Variable z : nat.
Hypothesis Q_eq_g_z : Q = g ^ z.
Definition B (e: (GroupElement * GroupElement * GroupElement)) :=
[a, b, c] <-3 e;
g_seed <- c ^ modNatAddInverse z order;
ret (eqb b (g ^ (x g_seed))).

Theorem GA_always_true :
Pr[(@DRBG_GA _ groupOp ident inverse _ g order x B Q)] == 1.