@@ -6,10 +6,10 @@ Authors: Johan Commelin, Kenny Lau
6
6
import Mathlib.Algebra.CharP.Defs
7
7
import Mathlib.Algebra.Polynomial.AlgebraMap
8
8
import Mathlib.Algebra.Polynomial.Basic
9
- import Mathlib.RingTheory.Ideal.Maps
10
9
import Mathlib.RingTheory.MvPowerSeries.Basic
11
10
import Mathlib.Tactic.MoveAdd
12
11
import Mathlib.Algebra.MvPolynomial.Equiv
12
+ import Mathlib.RingTheory.Ideal.Basic
13
13
14
14
/-!
15
15
# Formal power series (in one variable)
@@ -34,10 +34,6 @@ and the fact that power series over a local ring form a local ring;
34
34
and application to the fact that power series over an integral domain
35
35
form an integral domain.
36
36
37
- ## Instance
38
-
39
- If `R` has `NoZeroDivisors`, then so does `R⟦X⟧`.
40
-
41
37
## Implementation notes
42
38
43
39
Because of its definition,
@@ -563,32 +559,6 @@ theorem X_dvd_iff {φ : R⟦X⟧} : (X : R⟦X⟧) ∣ φ ↔ constantCoeff R φ
563
559
· intro m hm
564
560
rwa [Nat.eq_zero_of_le_zero (Nat.le_of_succ_le_succ hm)]
565
561
566
- instance [NoZeroDivisors R] : NoZeroDivisors R⟦X⟧ where
567
- eq_zero_or_eq_zero_of_mul_eq_zero {φ ψ} h := by
568
- classical
569
- rw [or_iff_not_imp_left]
570
- intro H
571
- have ex : ∃ m, coeff R m φ ≠ 0 := by
572
- contrapose! H
573
- exact ext H
574
- let m := Nat.find ex
575
- ext n
576
- rw [(coeff R n).map_zero]
577
- induction' n using Nat.strong_induction_on with n ih
578
- replace h := congr_arg (coeff R (m + n)) h
579
- rw [LinearMap.map_zero, coeff_mul, Finset.sum_eq_single (m, n)] at h
580
- · simp only [mul_eq_zero] at h
581
- exact Or.resolve_left h (Nat.find_spec ex)
582
- · rintro ⟨i, j⟩ hij hne
583
- rw [mem_antidiagonal] at hij
584
- rcases trichotomy_of_add_eq_add hij with h_eq | hi_lt | hj_lt
585
- · apply False.elim (hne ?_)
586
- simpa using h_eq
587
- · suffices coeff R i φ = 0 by rw [this, zero_mul]
588
- by_contra h; exact Nat.find_min ex hi_lt h
589
- · rw [ih j hj_lt, mul_zero]
590
- · simp
591
-
592
562
end Semiring
593
563
594
564
section CommSemiring
@@ -764,45 +734,6 @@ theorem evalNegHom_X : evalNegHom (X : A⟦X⟧) = -X :=
764
734
765
735
end CommRing
766
736
767
- section IsDomain
768
-
769
- instance [Ring R] [IsDomain R] : IsDomain R⟦X⟧ :=
770
- NoZeroDivisors.to_isDomain _
771
-
772
- variable [CommRing R] [IsDomain R]
773
-
774
- /-- The ideal spanned by the variable in the power series ring
775
- over an integral domain is a prime ideal. -/
776
- theorem span_X_isPrime : (Ideal.span ({X} : Set R⟦X⟧)).IsPrime := by
777
- suffices Ideal.span ({X} : Set R⟦X⟧) = RingHom.ker (constantCoeff R) by
778
- rw [this]
779
- exact RingHom.ker_isPrime _
780
- apply Ideal.ext
781
- intro φ
782
- rw [RingHom.mem_ker, Ideal.mem_span_singleton, X_dvd_iff]
783
-
784
- /-- The variable of the power series ring over an integral domain is prime. -/
785
- theorem X_prime : Prime (X : R⟦X⟧) := by
786
- rw [← Ideal.span_singleton_prime]
787
- · exact span_X_isPrime
788
- · intro h
789
- simpa [map_zero (coeff R 1 )] using congr_arg (coeff R 1 ) h
790
-
791
- /-- The variable of the power series ring over an integral domain is irreducible. -/
792
- theorem X_irreducible : Irreducible (X : R⟦X⟧) := X_prime.irreducible
793
-
794
- theorem rescale_injective {a : R} (ha : a ≠ 0 ) : Function.Injective (rescale a) := by
795
- intro p q h
796
- rw [PowerSeries.ext_iff] at *
797
- intro n
798
- specialize h n
799
- rw [coeff_rescale, coeff_rescale, mul_eq_mul_left_iff] at h
800
- apply h.resolve_right
801
- intro h'
802
- exact ha (pow_eq_zero h')
803
-
804
- end IsDomain
805
-
806
737
section Algebra
807
738
808
739
variable {A B : Type *} [CommSemiring R] [Semiring A] [Algebra R A] [Semiring B] [Algebra R B]
0 commit comments