(v : Lean.Level) →
  (M : Q(Type v)) →
    (iM : Q(AddCommMonoid «$M»)) →
      (u₁ : Lean.Level) →
        (R₁ : Q(Type u₁)) →
          (_iR₁ : Q(Semiring «$R₁»)) →
            (iRM₁ : Q(Module «$R₁» «$M»)) →
              (l₁ : Mathlib.Tactic.Module.qNF R₁ M) →
                (u₂ : Lean.Level) →
                  (R₂ : Q(Type u₂)) →
                    (_iR₂ : Q(Semiring «$R₂»)) →
                      (iRM₂ : Q(Module «$R₂» «$M»)) →
                        (l₂ : Mathlib.Tactic.Module.qNF R₂ M) →
                          (motive :
                              (u : Lean.Level) ×
                                  (R : Q(Type u)) ×
                                    (iR : Q(Semiring «$R»)) ×
                                      (x : Q(Module «$R» «$M»)) ×
                                        ((l₁' : Mathlib.Tactic.Module.qNF R M) ×
                                            have a := l₁.toNF;
                                            have a_1 := l₁'.toNF;
                                            Q(«$a_1».eval = «$a».eval)) ×
                                          ((l₂' : Mathlib.Tactic.Module.qNF R M) ×
                                              have a := l₂.toNF;
                                              have a_1 := l₂'.toNF;
                                              Q(«$a_1».eval = «$a».eval)) ×
                                            (r' : Q(«$R»)) × Q(«$r'» • 0 = 0 • 0) →
                                Sort u_1) →
                            (__discr :
                                (u : Lean.Level) ×
                                  (R : Q(Type u)) ×
                                    (iR : Q(Semiring «$R»)) ×
                                      (x : Q(Module «$R» «$M»)) ×
                                        ((l₁' : Mathlib.Tactic.Module.qNF R M) ×
                                            have a := l₁.toNF;
                                            have a_1 := l₁'.toNF;
                                            Q(«$a_1».eval = «$a».eval)) ×
                                          ((l₂' : Mathlib.Tactic.Module.qNF R M) ×
                                              have a := l₂.toNF;
                                              have a_1 := l₂'.toNF;
                                              Q(«$a_1».eval = «$a».eval)) ×
                                            (r' : Q(«$R»)) × Q(«$r'» • 0 = 0 • 0)) →
                              ((fst : Lean.Level) →
                                  (fst_1 : Q(Type fst)) →
                                    (fst_2 : Q(Semiring «$fst_1»)) →
                                      (iRM : Q(Module «$fst_1» «$M»)) →
                                        (l₁' : Mathlib.Tactic.Module.qNF fst_1 M) →
                                          (pf₁' :
                                              have a := l₁.toNF;
                                              have a_1 := l₁'.toNF;
                                              Q(«$a_1».eval = «$a».eval)) →
                                            (l₂' : Mathlib.Tactic.Module.qNF fst_1 M) →
                                              (pf₂' :
                                                  have a := l₂.toNF;
                                                  have a_1 := l₂'.toNF;
                                                  Q(«$a_1».eval = «$a».eval)) →
                                                (snd : (r' : Q(«$fst_1»)) × Q(«$r'» • 0 = 0 • 0)) →
                                                  motive
                                                    ⟨fst, ⟨fst_1, ⟨fst_2, ⟨iRM, (⟨l₁', pf₁'⟩, ⟨l₂', pf₂'⟩, snd)⟩⟩⟩⟩) →
                                motive __discr