fact: Definition map_term (f : forall d:dynr, M d.(typer)) : forall d : dynr, M d.(typer) := mfix1 rec (d : dynr) : M d.(typer) := let (ty, el) := d in mmatch d as d return M d.(typer) with | [? B A (b: B) (a: B -> A)] Dynr (a b) =n> d1 <- rec (Dynr a); d2 <- rec (Dynr b); M.ret (d1 d2) | [? B (A: B -> Type) (a: forall x, A x)] Dynr (fun x:B=>a x) =n> M.nu (FreshFrom el) mNone (fun x : B => d1 <- rec (Dynr (a x)); M.abs_fun x d1) | [? B (A: B -> Type) a] Dynr (forall x:B, a x) =n> M.nu (FreshFrom el) mNone (fun x : B => d1 <- rec (Dynr (a x)); M.abs_prod_type x d1) | [? d'] d' =n> f d' end.
imports: Strings.String ssrmatching.ssrmatching Mtac2(Logic Datatypes List Utils Logic Sorts MTeleMatch) Strings.String NArith.BinNat NArith.BinNatDef