Section arbFun_completeness.
Variables A B : Type.
Hypothesis choice : FunctionalChoice_on A RandomSeed.

(* begin arbFunCorrect *)
Theorem arbFunComplete `{CoArbitrary A, Arbitrary B} (max:A) (f:A-> B) (s:nat) :
s = Pos.to_nat (coarbitrary max) -> (semGenSize arbitrary s <--> setT) ->
exists seed, forall a, coarbLe a max -> run arbitrary s seed a = f a.