@@ -102,24 +102,27 @@ instance [monoid R] [comm_semiring S₁] [distrib_mul_action R S₁] :
102
102
distrib_mul_action R (mv_polynomial σ S₁) :=
103
103
add_monoid_algebra.distrib_mul_action
104
104
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₁] :
106
109
has_faithful_smul R (mv_polynomial σ S₁) :=
107
110
add_monoid_algebra.has_faithful_smul
108
111
109
112
instance [semiring R] [comm_semiring S₁] [module R S₁] : module R (mv_polynomial σ S₁) :=
110
113
add_monoid_algebra.module
111
114
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₂] :
114
117
is_scalar_tower R S₁ (mv_polynomial σ S₂) :=
115
118
add_monoid_algebra.is_scalar_tower
116
119
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₂] :
119
122
smul_comm_class R S₁ (mv_polynomial σ S₂) :=
120
123
add_monoid_algebra.smul_comm_class
121
124
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₁]
123
126
[is_central_scalar R S₁] :
124
127
is_central_scalar R (mv_polynomial σ S₁) :=
125
128
add_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
218
221
lemma C_eq_smul_one : (C a : mv_polynomial σ R) = a • 1 :=
219
222
by rw [← C_mul', mul_one]
220
223
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
+
221
227
lemma X_injective [nontrivial R] : function.injective (X : σ → mv_polynomial σ R) :=
222
228
(monomial_left_injective one_ne_zero).comp (finsupp.single_left_injective one_ne_zero)
223
229
@@ -422,7 +428,7 @@ by rw [X_pow_eq_monomial, support_monomial, if_neg (one_ne_zero' R)]
422
428
423
429
@[simp] lemma support_zero : (0 : mv_polynomial σ R).support = ∅ := rfl
424
430
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 } :
426
432
(a • f).support ⊆ f.support :=
427
433
finsupp.support_smul
428
434
@@ -463,7 +469,7 @@ lemma ext_iff (p q : mv_polynomial σ R) :
463
469
@[simp] lemma coeff_add (m : σ →₀ ℕ) (p q : mv_polynomial σ R) :
464
470
coeff m (p + q) = coeff m p + coeff m q := add_apply p q m
465
471
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]
467
473
(m : σ →₀ ℕ) (c : S₁) (p : mv_polynomial σ R) :
468
474
coeff m (c • p) = c • coeff m p := smul_apply c p m
469
475
@@ -557,6 +563,10 @@ add_monoid_algebra.support_mul_single p _ (by simp) _
557
563
(X s * p).support = p.support.map (add_left_embedding (single s 1 )) :=
558
564
add_monoid_algebra.support_single_mul p _ (by simp) _
559
565
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
+
560
570
lemma support_sdiff_support_subset_support_add [decidable_eq σ] (p q : mv_polynomial σ R) :
561
571
p.support \ q.support ⊆ (p + q).support :=
562
572
begin
@@ -626,6 +636,9 @@ lemma ne_zero_iff {p : mv_polynomial σ R} :
626
636
p ≠ 0 ↔ ∃ d, coeff d p ≠ 0 :=
627
637
by { rw [ne.def, eq_zero_iff], push_neg, }
628
638
639
+ @[simp] lemma support_eq_empty {p : mv_polynomial σ R} : p.support = ∅ ↔ p = 0 :=
640
+ finsupp.support_eq_empty
641
+
629
642
lemma exists_coeff_ne_zero {p : mv_polynomial σ R} (h : p ≠ 0 ) :
630
643
∃ d, coeff d p ≠ 0 :=
631
644
ne_zero_iff.mp h
@@ -675,7 +688,8 @@ variables (R)
675
688
by simp [constant_coeff_eq]
676
689
variables {R}
677
690
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₁) :
679
693
constant_coeff (a • f) = a • constant_coeff f := rfl
680
694
681
695
lemma constant_coeff_monomial [decidable_eq σ] (d : σ →₀ ℕ) (r : R) :
0 commit comments