fact: Definition to_goal (A : Type) : M (A *m goal gs_open) := mtry P <- evar Prop; of <- unify_cumul P A UniMatchNoRed; match of with | mSome f => a <- M.evar P; let a' := reduce (RedOneStep [rl: RedBeta]) (f a) in ret (m: a', Metavar Propₛ _ a) | mNone => raise NotAProp end with [#] NotAProp | =n> a <- evar A; M.ret (m: a, Metavar Typeₛ _ a) end.
imports: Mtac2(Base Datatypes List Sorts tactics.Tactics) Strings.String