Paper X · Lean source
CoprimeClassRepresentative.lean
Declared contract recorded Coverage and evidence
The cited release explicitly reports completion of its registered formal contract, under its exact hypotheses.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
PaperX/CoprimeClassRepresentative.lean67 lines
Original source path
current_continuation/lean/PaperX/CoprimeClassRepresentative.leanSkip declarations and read code
1 import PaperX.FinitePrimeAvoidance
2 import Mathlib.RingTheory.ClassGroup.Basic
3
4 /-!
5 # Ideal-class representatives avoiding finitely many primes
6
7 This is the elementary class-group step needed by the norm-residue counting
8 lane. Starting from a nonzero ideal `I`, finite-prime avoidance produces a
9 nonzero `a ∈ I` with `a ∉ P * I` for every selected prime. Factoring the
10 principal ideal `(a)` as `I * J` then puts `J` in the inverse ideal class and
11 forces `J` to avoid every selected prime.
12 -/
13
14 set_option autoImplicit false
15 noncomputable section
16
17 open Ideal
18 open scoped nonZeroDivisors
19
20 namespace PaperX.IdealPrimeAvoidance
21
22 variable {R ι : Type*} [CommRing R] [IsDedekindDomain R]
23
24 /-- Every inverse ideal class has a nonzero integral representative avoiding a
25 prescribed finite pairwise-distinct family of prime ideals. -/
26 theorem exists_inverse_class_representative_avoiding [Fintype ι]
27 (P : ι → Ideal R) (hP : ∀ i, Prime (P i))
28 (hpair : Pairwise fun i j => P i ≠ P j)
29 (I : (Ideal R)⁰) :
30 ∃ J : (Ideal R)⁰,
31 ClassGroup.mk0 J = (ClassGroup.mk0 I)⁻¹ ∧
32 ∀ i, ¬ P i ∣ (J : Ideal R) := by
33 classical
34 obtain ⟨a, haI, ha0, haAvoid⟩ :=
35 exists_ne_zero_mem_avoiding_prime_multiples P hP hpair (I : Ideal R)
36 (mem_nonZeroDivisors_iff_ne_zero.mp I.2)
37 have hdiv : (I : Ideal R) ∣ Ideal.span {a} :=
38 Ideal.dvd_iff_le.mpr (Ideal.span_le.mpr (by
39 intro x hx
40 simp only [Set.mem_singleton_iff] at hx
41 subst x
42 exact haI))
43 obtain ⟨J, hJ⟩ := hdiv
44 have hJ0 : J ≠ (⊥ : Ideal R) := by
45 intro h0
46 subst J
47 have : Ideal.span ({a} : Set R) = ⊥ := by simpa using hJ
48 exact ha0 (Ideal.span_singleton_eq_bot.mp this)
49 let J0 : (Ideal R)⁰ := ⟨J, mem_nonZeroDivisors_iff_ne_zero.mpr hJ0⟩
50 refine ⟨J0, ?_, ?_⟩
51 · have hclass : ClassGroup.mk0 I = (ClassGroup.mk0 J0)⁻¹ := by
52 rw [ClassGroup.mk0_eq_mk0_inv_iff]
53 exact ⟨a, ha0, by simpa [J0] using hJ.symm⟩
54 have hinv := congrArg (fun z : ClassGroup R => z⁻¹) hclass
55 simpa using hinv.symm
56 · intro i hPiJ
57 apply haAvoid i
58 have hJP : J ≤ P i := Ideal.dvd_iff_le.mp hPiJ
59 have hmul : (I : Ideal R) * J ≤ (I : Ideal R) * P i :=
60 Ideal.mul_mono le_rfl hJP
61 have haProd : a ∈ (I : Ideal R) * J := by
62 rw [← hJ]
63 exact Ideal.mem_span_singleton_self a
64 have : a ∈ (I : Ideal R) * P i := hmul haProd
65 simpa [mul_comm] using this
66
67 end PaperX.IdealPrimeAvoidance
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: 12c0eff027388e639338a14ec1b5ff34ce206113ca04559cf7d0f278444c5383
Back to Paper X: Universal Residual Seeds and Conditional Occupied-System Completion