@@ -102,24 +102,27 @@ instance [monoid R] [comm_semiring S₁] [distrib_mul_action R S₁] :
102102 distrib_mul_action R (mv_polynomial σ S₁) :=
103103add_monoid_algebra.distrib_mul_action
104104
105- instance [monoid R] [comm_semiring S₁] [distrib_mul_action R S₁] [has_faithful_smul R S₁] :
105+ instance [comm_semiring S₁] [smul_zero_class R S₁] : smul_zero_class R (mv_polynomial σ S₁) :=
106+ add_monoid_algebra.smul_zero_class
107+
108+ instance [comm_semiring S₁] [smul_zero_class R S₁] [has_faithful_smul R S₁] :
106109 has_faithful_smul R (mv_polynomial σ S₁) :=
107110add_monoid_algebra.has_faithful_smul
108111
109112instance [semiring R] [comm_semiring S₁] [module R S₁] : module R (mv_polynomial σ S₁) :=
110113add_monoid_algebra.module
111114
112- instance [monoid R] [monoid S₁] [ comm_semiring S₂]
113- [has_smul R S₁] [distrib_mul_action R S₂] [distrib_mul_action S₁ S₂] [is_scalar_tower R S₁ S₂] :
115+ instance [comm_semiring S₂]
116+ [has_smul R S₁] [smul_zero_class R S₂] [smul_zero_class S₁ S₂] [is_scalar_tower R S₁ S₂] :
114117 is_scalar_tower R S₁ (mv_polynomial σ S₂) :=
115118add_monoid_algebra.is_scalar_tower
116119
117- instance [monoid R] [monoid S₁][ comm_semiring S₂]
118- [distrib_mul_action R S₂] [distrib_mul_action S₁ S₂] [smul_comm_class R S₁ S₂] :
120+ instance [comm_semiring S₂]
121+ [smul_zero_class R S₂] [smul_zero_class S₁ S₂] [smul_comm_class R S₁ S₂] :
119122 smul_comm_class R S₁ (mv_polynomial σ S₂) :=
120123add_monoid_algebra.smul_comm_class
121124
122- instance [monoid R] [ comm_semiring S₁] [distrib_mul_action R S₁] [distrib_mul_action Rᵐᵒᵖ S₁]
125+ instance [comm_semiring S₁] [smul_zero_class R S₁] [smul_zero_class Rᵐᵒᵖ S₁]
123126 [is_central_scalar R S₁] :
124127 is_central_scalar R (mv_polynomial σ S₁) :=
125128add_monoid_algebra.is_central_scalar
@@ -218,6 +221,9 @@ lemma smul_eq_C_mul (p : mv_polynomial σ R) (a : R) : a • p = C a * p := C_mu
218221lemma C_eq_smul_one : (C a : mv_polynomial σ R) = a • 1 :=
219222by rw [← C_mul', mul_one]
220223
224+ lemma smul_monomial {S₁ : Type *} [smul_zero_class S₁ R] (r : S₁) :
225+ r • monomial s a = monomial s (r • a) := finsupp.smul_single _ _ _
226+
221227lemma X_injective [nontrivial R] : function.injective (X : σ → mv_polynomial σ R) :=
222228(monomial_left_injective one_ne_zero).comp (finsupp.single_left_injective one_ne_zero)
223229
@@ -422,7 +428,7 @@ by rw [X_pow_eq_monomial, support_monomial, if_neg (one_ne_zero' R)]
422428
423429@[simp] lemma support_zero : (0 : mv_polynomial σ R).support = ∅ := rfl
424430
425- lemma support_smul [distrib_mul_action R S₁ ] {a : R } {f : mv_polynomial σ S₁ } :
431+ lemma support_smul {S₁ : Type *} [smul_zero_class S₁ R ] {a : S₁ } {f : mv_polynomial σ R } :
426432 (a • f).support ⊆ f.support :=
427433finsupp.support_smul
428434
@@ -463,7 +469,7 @@ lemma ext_iff (p q : mv_polynomial σ R) :
463469@[simp] lemma coeff_add (m : σ →₀ ℕ) (p q : mv_polynomial σ R) :
464470 coeff m (p + q) = coeff m p + coeff m q := add_apply p q m
465471
466- @[simp] lemma coeff_smul {S₁ : Type *} [monoid S₁] [distrib_mul_action S₁ R]
472+ @[simp] lemma coeff_smul {S₁ : Type *} [smul_zero_class S₁ R]
467473 (m : σ →₀ ℕ) (c : S₁) (p : mv_polynomial σ R) :
468474 coeff m (c • p) = c • coeff m p := smul_apply c p m
469475
@@ -557,6 +563,10 @@ add_monoid_algebra.support_mul_single p _ (by simp) _
557563 (X s * p).support = p.support.map (add_left_embedding (single s 1 )) :=
558564add_monoid_algebra.support_single_mul p _ (by simp) _
559565
566+ @[simp] lemma support_smul_eq {S₁ : Type *} [semiring S₁] [module S₁ R] [no_zero_smul_divisors S₁ R]
567+ {a : S₁} (h : a ≠ 0 ) (p : mv_polynomial σ R) : (a • p).support = p.support :=
568+ finsupp.support_smul_eq h
569+
560570lemma support_sdiff_support_subset_support_add [decidable_eq σ] (p q : mv_polynomial σ R) :
561571 p.support \ q.support ⊆ (p + q).support :=
562572begin
@@ -626,6 +636,9 @@ lemma ne_zero_iff {p : mv_polynomial σ R} :
626636 p ≠ 0 ↔ ∃ d, coeff d p ≠ 0 :=
627637by { rw [ne.def, eq_zero_iff], push_neg, }
628638
639+ @[simp] lemma support_eq_empty {p : mv_polynomial σ R} : p.support = ∅ ↔ p = 0 :=
640+ finsupp.support_eq_empty
641+
629642lemma exists_coeff_ne_zero {p : mv_polynomial σ R} (h : p ≠ 0 ) :
630643 ∃ d, coeff d p ≠ 0 :=
631644ne_zero_iff.mp h
@@ -675,7 +688,8 @@ variables (R)
675688by simp [constant_coeff_eq]
676689variables {R}
677690
678- @[simp] lemma constant_coeff_smul [distrib_mul_action R S₁] (a : R) (f : mv_polynomial σ S₁) :
691+ @[simp] lemma constant_coeff_smul {R : Type *} [smul_zero_class R S₁]
692+ (a : R) (f : mv_polynomial σ S₁) :
679693 constant_coeff (a • f) = a • constant_coeff f := rfl
680694
681695lemma constant_coeff_monomial [decidable_eq σ] (d : σ →₀ ℕ) (r : R) :
0 commit comments