@@ -28,12 +28,10 @@ variable [IsDedekindDomain R]
28
28
29
29
open UniqueFactorizationMonoid
30
30
31
- open scoped Classical
32
-
33
31
/-- Over a Dedekind domain, an `I`-torsion module is the internal direct sum of its `p i ^ e i`-
34
32
torsion submodules, where `I = ∏ i, p i ^ e i` is its unique decomposition in prime ideals. -/
35
- theorem isInternal_prime_power_torsion_of_is_torsion_by_ideal {I : Ideal R} (hI : I ≠ ⊥)
36
- (hM : Module.IsTorsionBySet R M I) :
33
+ theorem isInternal_prime_power_torsion_of_is_torsion_by_ideal [DecidableEq ( Ideal R)]
34
+ {I : Ideal R} (hI : I ≠ ⊥) (hM : Module.IsTorsionBySet R M I) :
37
35
DirectSum.IsInternal fun p : (factors I).toFinset =>
38
36
torsionBySet R M (p ^ (factors I).count ↑p : Ideal R) := by
39
37
let P := factors I
@@ -59,7 +57,8 @@ theorem isInternal_prime_power_torsion_of_is_torsion_by_ideal {I : Ideal R} (hI
59
57
/-- A finitely generated torsion module over a Dedekind domain is an internal direct sum of its
60
58
`p i ^ e i`-torsion submodules where `p i` are factors of `(⊤ : Submodule R M).annihilator` and
61
59
`e i` are their multiplicities. -/
62
- theorem isInternal_prime_power_torsion [Module.Finite R M] (hM : Module.IsTorsion R M) :
60
+ theorem isInternal_prime_power_torsion [DecidableEq (Ideal R)] [Module.Finite R M]
61
+ (hM : Module.IsTorsion R M) :
63
62
DirectSum.IsInternal fun p : (factors (⊤ : Submodule R M).annihilator).toFinset =>
64
63
torsionBySet R M (p ^ (factors (⊤ : Submodule R M).annihilator).count ↑p : Ideal R) := by
65
64
have hM' := Module.isTorsionBySet_annihilator_top R M
@@ -72,8 +71,9 @@ theorem isInternal_prime_power_torsion [Module.Finite R M] (hM : Module.IsTorsio
72
71
`p i ^ e i`-torsion submodules for some prime ideals `p i` and numbers `e i`. -/
73
72
theorem exists_isInternal_prime_power_torsion [Module.Finite R M] (hM : Module.IsTorsion R M) :
74
73
∃ (P : Finset <| Ideal R) (_ : DecidableEq P) (_ : ∀ p ∈ P, Prime p) (e : P → ℕ),
75
- DirectSum.IsInternal fun p : P => torsionBySet R M (p ^ e p : Ideal R) :=
76
- ⟨_, _, fun p hp => prime_of_factor p (Multiset.mem_toFinset.mp hp), _,
74
+ DirectSum.IsInternal fun p : P => torsionBySet R M (p ^ e p : Ideal R) := by
75
+ classical
76
+ exact ⟨_, _, fun p hp => prime_of_factor p (Multiset.mem_toFinset.mp hp), _,
77
77
isInternal_prime_power_torsion hM⟩
78
78
79
79
end Submodule
0 commit comments