(** 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.

(* Specifications: *)
Theorem non_dep_dep_functional_choice : FunctionalChoice -> DependentFunctionalChoice.
Theorem functional_choice_to_inhabited_forall_commute : FunctionalChoice -> InhabitedForallCommute.
Theorem inhabited_forall_commute_to_functional_choice : InhabitedForallCommute -> FunctionalChoice.
Theorem dep_non_dep_functional_rel_reification : DependentFunctionalRelReification -> FunctionalRelReification.
Theorem non_dep_dep_functional_rel_reification : FunctionalRelReification -> DependentFunctionalRelReification.