{σ : Type} →
  {motive : Lean.Elab.Term.Do.AltExpr σ → Sort u} →
    ((ref : Lean.Syntax) →
        (var? : Option Lean.Elab.Term.Do.Var) →
          (funName : Lean.Syntax) →
            (pvars : Array Lean.Syntax) →
              (rhs : σ) → motive { ref := ref, var? := var?, funName := funName, pvars := pvars, rhs := rhs }) →
      (t : Lean.Elab.Term.Do.AltExpr σ) → motive t