fact: Definition do_def n {A:Prop} (a:A) := '(mexistT _ t f) <- lift_lemma A (a); let x := reduce (RedStrong [rl: RedFix; RedMatch; RedBeta; RedDeltaOnly [rl: Dyn (@TTele_app)]]) (TTele_app (fun T PT => let '(mexistT _ l _) := PT in M (l -*> T)) (fun T PT => let '(mexistT _ l X) := PT in X ) f) in let T := reduce (RedStrong [rl: RedBeta; RedZeta; RedFix; RedMatch; RedDeltaOnly [rl: Dyn (@M.type_of); Dyn (@TTele_ty); Dyn (@TTele_App); Dyn (@TTele_app); Dyn (@func_of)] ]) (M.type_of x) in @M.declare dok_Definition n false T x;; M.ret tt.
imports: Mtac2(Base Datatypes List MTele MTeleMatch MTeleMatchDef MFixDef Sorts tactics.Tactics) Strings.String