(** Deriving choice on product types requires some computation on
    singleton propositional types, so we need computational
    conjunction projections and dependent elimination of conjunction
    and equality *)

Scheme and_indd := Induction for and Sort Prop.Scheme eq_indd := Induction for eq Sort Prop.Definition proj1_inf (A B:Prop) (p : A/\B) :=
  let (a,b) := p in a.

Theorem functional_choice_to_inhabited_forall_commute : FunctionalChoice -> InhabitedForallCommute.