fact: Fixpoint unCurry (fDom : list Type) {fCod : Type} (f : funType fDom fCod) {struct fDom} : funType (cons (unCurry_funType fDom) nil) fCod := match fDom return funType fDom fCod -> funType (cons (unCurry_funType fDom) nil) fCod with | nil => fun f _ => f | cons T fDom' => fun f t => unCurry fDom' (f (fst t)) (snd t) end f.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.Sets.Ensembles Coq.ZArith.ZArith Coq.Classes.Morphisms Coq.Classes.SetoidTactics Fiat.Computation Fiat.Computation.SetoidMorphisms Coq.Logic.FunctionalExtensionality