(motive : List (Lean.TSyntax `Lean.binderIdent) × Array Lean.FVarId × Lean.MVarId → Sort u_1) →
  (__discr : List (Lean.TSyntax `Lean.binderIdent) × Array Lean.FVarId × Lean.MVarId) →
    ((patterns : List (Lean.TSyntax `Lean.binderIdent)) →
        (fst : Array Lean.FVarId) → (goal : Lean.MVarId) → motive (patterns, fst, goal)) →
      motive __discr