Documentation

Lean.Elab.Tactic.Do.VCGen.Split

Instances For
    Equations
    Instances For

      A list of pairs (numParams, alt) per match alternative, where numParams is the number of parameters of the alternative and alt is the alternative.

      Equations
      Instances For
        def Lean.Elab.Tactic.Do.SplitInfo.withAbstract {n : TypeType u_1} {α : Type} [MonadLiftT MetaM n] [MonadControlT MetaM n] [Monad n] [Inhabited α] (info : SplitInfo) (resTy : Expr) (k : SplitInfoArray Exprn α) :
        n α

        Introduces fvars for all varying parts of a SplitInfo and provides the abstract SplitInfo and fvars to the continuation.

        For ite/dite, introduces c : Prop, dec : Decidable c, t : mα (or t : c → mα), e : mα (or e : ¬c → mα). For matcher, introduces discriminant fvars and alternative fvars, builds a non-dependent motive fun _ ... _ => mα, and adjusts matcher universe levels.

        The abstract SplitInfo satisfies abstractInfo.expr = abstractProgram.

        For matcher, the abstract MatcherApp stores eta-expanded fvar alts so that splitWith/matcherApp.transform can instantiateLambda them directly (no patching needed). Since eta-expanded alts like fun n => alt n can cause expensive higher-order unification in backward rule patterns, callers building backward rules should eta-reduce them first (e.g. via Expr.eta on the alt arguments of abstractInfo.expr).

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For