@@ -72,7 +72,7 @@ polynomial, multivariate polynomial, multivariable polynomial
72
72
73
73
noncomputable theory
74
74
75
- open_locale classical big_operators
75
+ open_locale big_operators
76
76
77
77
open set function finsupp add_monoid_algebra
78
78
open_locale big_operators
@@ -417,22 +417,22 @@ by convert rfl
417
417
lemma support_monomial_subset : (monomial s a).support ⊆ {s} :=
418
418
support_single_subset
419
419
420
- lemma support_add : (p + q).support ⊆ p.support ∪ q.support := finsupp.support_add
420
+ lemma support_add [decidable_eq σ] : (p + q).support ⊆ p.support ∪ q.support := finsupp.support_add
421
421
422
422
lemma support_X [nontrivial R] : (X n : mv_polynomial σ R).support = {single n 1 } :=
423
- by rw [X, support_monomial, if_neg]; exact one_ne_zero
423
+ by classical; rw [X, support_monomial, if_neg]; exact one_ne_zero
424
424
425
425
lemma support_X_pow [nontrivial R] (s : σ) (n : ℕ) :
426
426
(X s ^ n : mv_polynomial σ R).support = {finsupp.single s n} :=
427
- by rw [X_pow_eq_monomial, support_monomial, if_neg (one_ne_zero' R)]
427
+ by classical; rw [X_pow_eq_monomial, support_monomial, if_neg (one_ne_zero' R)]
428
428
429
429
@[simp] lemma support_zero : (0 : mv_polynomial σ R).support = ∅ := rfl
430
430
431
431
lemma support_smul {S₁ : Type *} [smul_zero_class S₁ R] {a : S₁} {f : mv_polynomial σ R} :
432
432
(a • f).support ⊆ f.support :=
433
433
finsupp.support_smul
434
434
435
- lemma support_sum {α : Type *} {s : finset α} {f : α → mv_polynomial σ R} :
435
+ lemma support_sum {α : Type *} [decidable_eq σ] {s : finset α} {f : α → mv_polynomial σ R} :
436
436
(∑ x in s, f x).support ⊆ s.bUnion (λ x, (f x).support) := finsupp.support_finset_sum
437
437
438
438
end support
@@ -455,7 +455,7 @@ lemma sum_def {A} [add_comm_monoid A] {p : mv_polynomial σ R} {b : (σ →₀
455
455
p.sum b = ∑ m in p.support, b m (p.coeff m) :=
456
456
by simp [support, finsupp.sum, coeff]
457
457
458
- lemma support_mul (p q : mv_polynomial σ R) :
458
+ lemma support_mul [decidable_eq σ] (p q : mv_polynomial σ R) :
459
459
(p * q).support ⊆ p.support.bUnion (λ a, q.support.bUnion $ λ b, {a + b}) :=
460
460
by convert add_monoid_algebra.support_mul p q; ext; convert iff.rfl
461
461
@@ -525,11 +525,12 @@ by rw [← coeff_X_pow, pow_one]
525
525
526
526
@[simp] lemma coeff_X (i : σ) :
527
527
coeff (single i 1 ) (X i : mv_polynomial σ R) = 1 :=
528
- by rw [coeff_X', if_pos rfl]
528
+ by classical; rw [coeff_X', if_pos rfl]
529
529
530
530
@[simp] lemma coeff_C_mul (m) (a : R) (p : mv_polynomial σ R) :
531
531
coeff m (C a * p) = a * coeff m p :=
532
532
begin
533
+ classical,
533
534
rw [mul_def, sum_C],
534
535
{ simp [sum_def, coeff_sum] {contextual := tt} },
535
536
simp
589
590
lemma coeff_mul_monomial' (m) (s : σ →₀ ℕ) (r : R) (p : mv_polynomial σ R) :
590
591
coeff m (p * monomial s r) = if s ≤ m then coeff (m - s) p * r else 0 :=
591
592
begin
593
+ classical,
592
594
obtain rfl | hr := eq_or_ne r 0 ,
593
595
{ simp only [monomial_zero, coeff_zero, mul_zero, if_t_t], },
594
596
haveI : nontrivial R := nontrivial_of_ne _ _ hr,
@@ -742,9 +744,12 @@ finsupp.sum_zero_index
742
744
section
743
745
744
746
@[simp] lemma eval₂_add : (p + q).eval₂ f g = p.eval₂ f g + q.eval₂ f g :=
745
- finsupp.sum_add_index
746
- (by simp [f.map_zero])
747
- (by simp [add_mul, f.map_add])
747
+ begin
748
+ classical,
749
+ exact finsupp.sum_add_index
750
+ (by simp [f.map_zero])
751
+ (by simp [add_mul, f.map_add])
752
+ end
748
753
749
754
@[simp] lemma eval₂_monomial : (monomial s a).eval₂ f g = f a * s.prod (λn e, g n ^ e) :=
750
755
finsupp.sum_single_index (by simp [f.map_zero])
@@ -761,6 +766,7 @@ by simp [eval₂_monomial, f.map_one, X, prod_single_index, pow_one]
761
766
lemma eval₂_mul_monomial :
762
767
∀{s a}, (p * monomial s a).eval₂ f g = p.eval₂ f g * f a * s.prod (λn e, g n ^ e) :=
763
768
begin
769
+ classical,
764
770
apply mv_polynomial.induction_on p,
765
771
{ assume a' s a,
766
772
simp [C_mul_monomial, eval₂_monomial, f.map_mul] },
994
1000
995
1001
lemma coeff_map (p : mv_polynomial σ R) : ∀ (m : σ →₀ ℕ), coeff m (map f p) = f (coeff m p) :=
996
1002
begin
1003
+ classical,
997
1004
apply mv_polynomial.induction_on p; clear p,
998
1005
{ intros r m, rw [map_C], simp only [coeff_C], split_ifs, {refl}, rw f.map_zero },
999
1006
{ intros p q hp hq m, simp only [hp, hq, (map f).map_add, coeff_add], rw f.map_add },
0 commit comments