(** A nat indexed finite number of conjunctions *) 

Definition fmap_reifier_t X (Q : nat -> X -> Prop) k : 
             (forall i, i < k -> sig (Q i))
          -> { f : forall i, i < k -> X | forall i Hi, Q i (f i Hi) }.Definition fmap_reifier_t_default X (Q : nat -> X -> Prop) k (x : X) : 
             (forall i, i < k -> sig (Q i))
          -> { f : nat -> X | forall i, i < k -> Q i (f i) }.

(* Specifications: *)
Theorem fmap_bound n P : (forall x, x < n -> ex (P x)) -> exists m, forall x, x < n -> exists y, y < m /\ P x y.
Theorem fmap_reifier_default X n (P : nat -> X -> Prop) : inhabited X -> (forall x, x < n -> ex (P x)) -> exists f, forall x, x < n -> P x (f x).
Theorem fmap_reifer_bound n P : (forall x, x < n -> ex (P x)) -> exists m f, forall x, x < n -> f x < m /\ P x (f x).