{u v : Lean.Level} →
  {M : Q(Type v)} →
    {R : Q(Type u)} →
      {x : Q(AddCommMonoid «$M»)} →
        {x_1 : Q(Semiring «$R»)} →
          (iRM : Q(Module «$R» «$M»)) →
            (l₁ : Mathlib.Tactic.Module.qNF R M) →
              (L₂ : Mathlib.Tactic.Module.NF (Q(«$R») × Q(«$M»)) ℕ) →
                (motive :
                    (List Lean.MVarId ×
                        let a := Mathlib.Tactic.Module.qNF.toNF L₂;
                        let a_1 := l₁.toNF;
                        Q(Mathlib.Tactic.Module.NF.eval unknown_1 = Mathlib.Tactic.Module.NF.eval unknown_2)) →
                      Sort u_1) →
                  (__discr :
                      List Lean.MVarId ×
                        let a := Mathlib.Tactic.Module.qNF.toNF L₂;
                        let a_1 := l₁.toNF;
                        Q(Mathlib.Tactic.Module.NF.eval unknown_1 = Mathlib.Tactic.Module.NF.eval unknown_2)) →
                    ((mvars : List Lean.MVarId) →
                        (pf :
                            let a := Mathlib.Tactic.Module.qNF.toNF L₂;
                            let a_1 := l₁.toNF;
                            Q(Mathlib.Tactic.Module.NF.eval unknown_1 = Mathlib.Tactic.Module.NF.eval unknown_2)) →
                          motive (mvars, pf)) →
                      motive __discr