fact: Definition Muse {A} (t: tactic) : M A := mtry P <- evar Prop; of <- unify_univ P A UniMatchNoRed; match of with | mSome f => e <- M.evar P; t (Goal Propₛ e);; let e := reduce (RedOneStep [rl: RedBeta]) (f e) in ret e | mNone => raise NotAProp end with | NotAProp => e <- evar A; t (Goal Typeₛ e);; ret e end.
imports: Mtac2(Base Datatypes List MTele MTeleMatch MTeleMatchDef MFixDef Sorts tactics.Tactics) Strings.String