fact: Fixpoint refineFun_lift (fDom : list Type) {fCod : Type} {struct fDom} : ((funType fDom fCod -> Prop) -> Prop) -> funType fDom fCod := match fDom return ((funType fDom fCod -> Prop) -> Prop) -> funType fDom fCod with | nil => fun LFP_P v => (LFP_P (fun cv => computes_to cv v)) | cons T fDom' => fun LFP_P => fun (t : T) => refineFun_lift fDom' (fun cv => LFP_P (fun cv' => cv (cv' t))) end.
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