Paper XII · Lean source

FittingBoundaryChecks.lean

Inherited / related evidence Coverage and evidence

The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (1)

PaperXII/FittingBoundaryChecks.lean66 lines

Original source pathcore/publication/source/lean_guide/formal_release/lean/PaperXII/FittingBoundaryChecks.lean
Skip declarations and read code

Skip source text

1 import PaperXII.FittingTransport
2 
3 /-! Kernel-checked normalization checks, including zero and empty-rank boundaries. -/
4 noncomputable section
5 namespace PaperXII
6 open Matrix DeterminantalIdeals
7 variable {R : Type*} [CommRing R]
8 
9 /-- Positive-order minors of the zero relation matrix all vanish. -/
10 theorem minorIdeal_zero_matrix {m n : Type*} {k : ℕ} (hk : 0 < k) :
11     minorIdeal (0 : Matrix m n R) k = ⊥ := by
12   apply le_antisymm _ bot_le
13   apply (minorIdeal_le_iff _ _ _).mpr
14   intro r c
15   have : Nonempty (Fin k) := ⟨⟨0,hk⟩⟩
16   simp
17 
18 /-- For a finite free module, low-index Fitting ideals are zero and high-index ones are the unit ideal. -/
19 theorem fittingIdeal_free (n j : ℕ) :
20     fittingIdeal R (Fin n → R) j = if n ≤ j then ⊤ else ⊥ := by
21   classical
22   have hp : Presents (0 : Matrix (Fin n) (Fin 0) R) (LinearMap.id : (Fin n → R) →ₗ[R] _) := by
23     refine ⟨Function.surjective_id, ?_⟩
24     simp [Matrix.mulVecLin]
25   rw [fittingIdeal_eq_presentation _ _ hp]
26   by_cases h : n ≤ j
27   · simp only [h,ite_true]
28     exact presentationIdeal_eq_top _ (by simpa using h)
29   · simp only [h,ite_false,presentationIdeal,Fintype.card_fin]
30     exact minorIdeal_zero_matrix (by omega)
31 
32 /-- The zero module has unit zeroth Fitting ideal, not the zero ideal. -/
33 theorem fittingIdeal_zero_module (j : ℕ) : fittingIdeal R (Fin 0 → R) j = ⊤ := by
34   simp [fittingIdeal_free]
35 
36 /-- The first normalization distinguishes the free rank-one module from the zero module. -/
37 theorem fittingIdeal_free_rank_one_zero : fittingIdeal R (Fin 1 → R) 0 = ⊥ := by
38   simp [fittingIdeal_free]
39 
40 /-- A one-by-one presentation records its actual relation coefficient. -/
41 theorem one_by_one_presentationIdeal (a : R) :
42     presentationIdeal (Matrix.of fun (_ : Fin 1) (_ : Fin 1) => a) 0 = Ideal.span ({a} : Set R) := by
43   change minorIdeal (Matrix.of fun (_ : Fin 1) (_ : Fin 1) => a) 1 = _
44   unfold minorIdeal
45   congr 1
46   ext x
47   constructor
48   · rintro ⟨⟨r,c⟩,hx⟩
49     change (Matrix.of (fun (_ : Fin 1) (_ : Fin 1) => a)).det = x at hx
50     rw [Matrix.det_fin_one] at hx
51     exact hx.symm
52   · intro hx
53     have h : x = a := Set.mem_singleton_iff.mp hx
54     subst x
55     refine ⟨(id,id),?_⟩
56     change (Matrix.of (fun (_ : Fin 1) (_ : Fin 1) => a)).det = a
57     rw [Matrix.det_fin_one]
58     rfl
59 
60 /-- The empty matrix boundary and a genuine 1-by-1 relation both survive non-flat coefficient maps. -/
61 theorem one_by_one_baseChange {S : Type*} [CommRing S] (f : R →+* S) (a : R) :
62     presentationIdeal (Matrix.of fun (_ : Fin 1) (_ : Fin 1) => f a) 0 =
63       Ideal.map f (presentationIdeal (Matrix.of fun (_ : Fin 1) (_ : Fin 1) => a) 0) :=
64   minorIdeal_map f (Matrix.of fun (_ : Fin 1) (_ : Fin 1) => a) _
65 
66 end PaperXII

Back to source controls

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: 8516575908e9f9351e9f46667450896bbbb06ff184af3e688fb78e0713cd6e85

Original source on GitHub

Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion