{L : Type u_1} →
  (add : L → L → L) →
    (add_assoc : ∀ (a b c : L), a + b + c = a + (b + c)) →
      (zero : L) →
        (zero_add : ∀ (a : L), 0 + a = a) →
          (add_zero : ∀ (a : L), a + 0 = a) →
            (nsmul : ℕ → L → L) →
              (nsmul_zero : autoParam (∀ (x : L), nsmul 0 x = 0) AddMonoid.nsmul_zero._autoParam) →
                (nsmul_succ :
                    autoParam (∀ (n : ℕ) (x : L), nsmul (n + 1) x = nsmul n x + x) AddMonoid.nsmul_succ._autoParam) →
                  (neg : L → L) →
                    (sub : L → L → L) →
                      (sub_eq_add_neg :
                          autoParam (∀ (a b : L), a - b = a + neg b) SubNegMonoid.sub_eq_add_neg._autoParam) →
                        (zsmul : ℤ → L → L) →
                          (zsmul_zero' : autoParam (∀ (a : L), zsmul 0 a = 0) SubNegMonoid.zsmul_zero'._autoParam) →
                            (zsmul_succ' :
                                autoParam (∀ (n : ℕ) (a : L), zsmul (↑n.succ) a = zsmul (↑n) a + a)
                                  SubNegMonoid.zsmul_succ'._autoParam) →
                              (zsmul_neg' :
                                  autoParam (∀ (n : ℕ) (a : L), zsmul (Int.negSucc n) a = neg (zsmul (↑n.succ) a))
                                    SubNegMonoid.zsmul_neg'._autoParam) →
                                (neg_add_cancel : ∀ (a : L), neg a + a = 0) →
                                  (add_comm : ∀ (a b : L), a + b = b + a) →
                                    (mul : L → L → L) →
                                      (left_distrib : ∀ (a b c : L), a * (b + c) = a * b + a * c) →
                                        (right_distrib : ∀ (a b c : L), (a + b) * c = a * c + b * c) →
                                          (zero_mul : ∀ (a : L), 0 * a = 0) →
                                            (mul_zero : ∀ (a : L), a * 0 = 0) →
                                              (∀ (x y z : L), associator x y z = associator y x z) → LeftPreLieRing L