Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
ba7bb7c
Import Stafford 3.8
Vilin97 Sep 21, 2026
b167fca
Refine full import for Lean 4.34 compatibility and quality checks
Vilin97 Sep 21, 2026
8c8b8ed
Update polynomial coefficients and finite-length transport APIs
Vilin97 Sep 21, 2026
91d1d93
Port Stafford algebra APIs and generalize the Euler-subring factoriza…
Vilin97 Sep 21, 2026
e90a50b
Update remaining Stafford coefficient APIs and isolate scalar inference
Vilin97 Sep 21, 2026
28c550d
Port Stafford Euler, quotient and retained-place constructions
Vilin97 Sep 21, 2026
67e4e89
Make localized page and coordinate-ring instances explicit
Vilin97 Sep 21, 2026
fcc3992
Port retained projective equation and ground-map transport
Vilin97 Sep 21, 2026
0e36f11
Complete retained divisor frame port to current Mathlib
Vilin97 Sep 21, 2026
15cab3c
Narrow Stafford38 imports and remove inherited linter waivers
Vilin97 Sep 21, 2026
6f48e50
Use ordinary proof-local instances and isolate algebraic field extension
Vilin97 Sep 21, 2026
9bbd60c
Document Stafford APIs and normalize the filtered page proofs
Vilin97 Sep 21, 2026
3d9bc63
Finish Stafford documentation and generalize page action constructions
Vilin97 Sep 21, 2026
b00f1d7
Complete Stafford quality checks and precise field assumptions
Vilin97 Sep 21, 2026
987700c
Keep localization commutators independent of Lie product imports
Vilin97 Sep 21, 2026
b862ca2
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 22, 2026
8b2c82c
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 23, 2026
9485be5
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 23, 2026
31d2031
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 24, 2026
23501b8
Preserve Stafford38 module migration checkpoint
Vilin97 Sep 25, 2026
7625543
Sync current main and preserve complete project card
Vilin97 Sep 25, 2026
af9f336
Expose Stafford data needed by public module interfaces
Vilin97 Sep 25, 2026
1d209b3
Expose Stafford page maps and recursive Ore stage data
Vilin97 Sep 25, 2026
666f2b0
Retain exact vendored AlgebraicAnalysis provenance and notice
Vilin97 Sep 25, 2026
a39fb3f
Merge current main while preserving all project cards
Vilin97 Sep 25, 2026
e059e86
Expose Stafford canonical and completion data interfaces
Vilin97 Sep 25, 2026
beb3267
Retain private Stafford laws inside public construction proofs
Vilin97 Sep 25, 2026
c4f5d57
Keep the scalar-extension commutator proof private
Vilin97 Sep 25, 2026
19ecd98
Simplify Stafford proof helpers and record explicit simp sets
Vilin97 Sep 25, 2026
359ae11
Preserve Stafford coordinate-cancellation interface
Vilin97 Sep 25, 2026
50b7b8e
Expose scalar endomorphism interface and transport Weyl matrix entries
Vilin97 Sep 25, 2026
ee569cd
Merge current attribution update into Stafford review fixes
Vilin97 Sep 25, 2026
ccd1c1d
Publish symbol and ideal aliases used by public theorem statements
Vilin97 Sep 25, 2026
7f9149e
Merge remote-tracking branch 'origin/codex/import42-stafford38-formal…
Vilin97 Sep 25, 2026
fdea30d
Expand the identity matrix in the Weyl rank-shift proof
Vilin97 Sep 26, 2026
76a68cc
Merge current main after Puiseux import into PR 503
Vilin97 Sep 26, 2026
a70cffe
Merge commit '854da85a8bc6c9219c2c04ec9d43d4a49f43aef8' into HEAD
Vilin97 Sep 26, 2026
9edf7d4
Merge main and preserve all YAML project registrations
Vilin97 Sep 26, 2026
bafeb85
fix: unfold Weyl linear combination in symbol proof
Vilin97 Sep 26, 2026
b909115
fix(Stafford38): preserve module visibility in data constructions
Vilin97 Sep 26, 2026
e372bd9
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
b9f81c7
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
a89463f
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
6056cd3
fix(Stafford38): reuse exposed trace data and local grading instance
Vilin97 Sep 26, 2026
e571e35
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
21b0e44
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
c22d662
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
2a1ab82
Merge remote-tracking branch 'origin/main' into pr-503
github-actions[bot] Sep 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
347 changes: 347 additions & 0 deletions LeanPool.lean

Large diffs are not rendered by default.

419 changes: 419 additions & 0 deletions LeanPool/Stafford38.lean

Large diffs are not rendered by default.

82 changes: 82 additions & 0 deletions LeanPool/Stafford38/AlgebraicAnalysis.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/-
Copyright (c) 2026 Christopher Albert. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christopher Albert
-/

module

public import LeanPool.Stafford38.AlgebraicAnalysis.Commutator
public import LeanPool.Stafford38.AlgebraicAnalysis.RingTheory.TwoGeneratorIdentity
public import LeanPool.Stafford38.AlgebraicAnalysis.DifferentialOperators.Basic
public import LeanPool.Stafford38.AlgebraicAnalysis.CommutatorRiccati
public import LeanPool.Stafford38.AlgebraicAnalysis.FieldTheory.FunctionField
public import LeanPool.Stafford38.AlgebraicAnalysis.Polynomial.DistinguishedVariable
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.ActiveCoordinate
public import LeanPool.Stafford38.AlgebraicAnalysis.Derivation.Central
public import LeanPool.Stafford38.AlgebraicAnalysis.Derivation.Escape
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.RightHilbertBasis
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.RightIntersection
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.PrincipalRightIdeal
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.Localization
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.LocalizationExtension
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.LeftPBW
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.RightPBW
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.Tower
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.IteratedTower
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.IteratedPBW
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.RankTorsion
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.StablyFree
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.HyperplaneRestriction
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredStrictness
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.RankExact
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.DenominatorTorsion
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.TriangularDenominator
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.Unimodular
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FreeSummandInduction
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.TorsionProjectiveImage
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredSchreyer
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.Splice
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.TwoSimplicity
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.EscapeSpan
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.EscapeAssembly
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.RightCoordinates
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermPages
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermPageEquivalences
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermPageActions
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermTotalPages
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermTotalActions
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermBoundaryExhaustion
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermBoundaryNaturality
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.FilteredTwoTermSuccessorNaturality
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.CommutingPolynomialAction
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.BaseLocalizationModuleComparison
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.LocalizedKernelCokernelEquivalences
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.LocalizedMinimalSupportAvoidance
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.MinimalPrimeFiniteLengthLocalization
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.EndomorphismKernelSupport
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.EndomorphismKernelSupportOverBase
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.MinimalSupportKernelCokernelLengths
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.PrincipalKoszulPositivity
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.PrincipalKoszulFiniteTorsion
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.StableTorsionResidualSupport
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.PrincipalKoszulSupportOverBase
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.PrincipalKoszulMinimalSupportPositivity
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.MinimalSupportExistence
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.BaseLocalizedKoszulPositivity
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.TwoTermPageLength
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.UniformBoundaryVanishing
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.MonicAnnihilatorFinite
public import LeanPool.Stafford38.AlgebraicAnalysis.Module.SplitLatticePresentation
public import LeanPool.Stafford38.AlgebraicAnalysis.LinearAlgebra.FiniteTaylorReconstruction
public import LeanPool.Stafford38.AlgebraicAnalysis.DifferentialOperators.CoordinateGeneration
public import LeanPool.Stafford38.AlgebraicAnalysis.DifferentialOperators.LocalizedPolynomialDerivations
public import LeanPool.Stafford38.AlgebraicAnalysis.DifferentialOperators.LocalizedPolynomialCommutant
public import LeanPool.Stafford38.AlgebraicAnalysis.Ore.RightLocalization


/-!
# AlgebraicAnalysis

Root module for reusable formal mathematics in algebraic analysis.
-/
64 changes: 64 additions & 0 deletions LeanPool/Stafford38/AlgebraicAnalysis/Commutator.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/-
Copyright (c) 2026 Christopher Albert. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christopher Albert
-/

module

public import Mathlib.Algebra.Algebra.Basic
public import Mathlib.Algebra.Order.Group.Nat
public import Mathlib.Algebra.Order.Sub.Basic
public import Mathlib.Tactic
public import Mathlib.Tactic.Abel


/-!
# Ring commutators

This module contains the multiplication identities used by both the Weyl
symplectic layer and the differential-Ore escape layer. The convention is
`[u,v] = u*v - v*u`; no Weyl relation, Ore presentation, or application
specific structure is assumed.
-/

@[expose] public section

namespace AlgebraicAnalysis

section

variable {A : Type*} [Ring A]

/-- The ring commutator, with the written multiplication order retained. -/
def ringCommutator (u v : A) : A := u * v - v * u

@[simp]
theorem ringCommutator_apply (u v : A) :
ringCommutator u v = u * v - v * u := rfl

/-- Leibniz expansion in the first argument. -/
theorem ringCommutator_mul (u v x : A) :
ringCommutator (u * v) x =
u * ringCommutator v x + ringCommutator u x * v := by
simp only [ringCommutator]
noncomm_ring

/-- Iterated commutation with a Weyl-type relation. -/
theorem ringCommutator_pow (z x : A) (h : ringCommutator z x = 1) :
∀ n : ℕ, ringCommutator (z ^ n) x = n • z ^ (n - 1)
| 0 => by simp [ringCommutator]
| n + 1 => by
rw [pow_succ, ringCommutator_mul, h, ringCommutator_pow z x h n]
by_cases hn : n = 0
· subst n
simp
· rw [smul_mul_assoc, Nat.succ_sub_one, mul_one, add_nsmul]
have hpow : z ^ (n - 1) * z = z ^ n := by
rw [← pow_succ, Nat.sub_add_cancel (Nat.pos_of_ne_zero hn)]
rw [hpow, one_nsmul]
exact add_comm _ _

end

end AlgebraicAnalysis
164 changes: 164 additions & 0 deletions LeanPool/Stafford38/AlgebraicAnalysis/CommutatorRiccati.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
/-
Copyright (c) 2026 Christopher Albert. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christopher Albert
-/

module

public import Mathlib.Tactic
public import LeanPool.Stafford38.AlgebraicAnalysis.Commutator


/-!
# Inverse-Euler/Riccati commutator identities

This module contains the purely ring-theoretic identities behind the
inverse-Euler calculation. No Weyl presentation, filtration, module, or
application-specific hypothesis is assumed.
-/

@[expose] public section

namespace AlgebraicAnalysis.InverseEulerRiccati

variable {A : Type*} [Ring A]

/-- Historical local name for the shared ring commutator. -/
def commutator (a b : A) : A := AlgebraicAnalysis.ringCommutator a b

@[simp]
theorem commutator_eq_shared (a b : A) :
commutator a b = AlgebraicAnalysis.ringCommutator a b := rfl

/-- Iterated commutation by a fixed element. -/
def adIterate (p : A) : ℕ → A → A
| 0, z => z
| n + 1, z => commutator p (adIterate p n z)

/-- Inverting the relation `P*X-X*P=-1` produces the Riccati identity. -/
theorem inverse_riccati
(P X T : A)
(hPX : P * X - X * P = -1)
(hXT : X * T = 1)
(hTX : T * X = 1) :
P * T - T * P = T * T := by
have hright : P - X * P * T = -T := by
have h := congrArg (fun z : A => z * T) hPX
simpa [sub_mul, mul_assoc, hXT] using h
have hleft : T * P - P * T = -(T * T) := by
have htxpt : T * (X * P * T) = P * T := by
calc
T * (X * P * T) = (T * X) * P * T := by noncomm_ring
_ = P * T := by rw [hTX]; simp
calc
T * P - P * T = T * P - T * (X * P * T) := by rw [htxpt]
_ = T * (P - X * P * T) := by rw [mul_sub]
_ = T * (-T) := by rw [hright]
_ = -(T * T) := by simp
calc
P * T - T * P = -(T * P - P * T) := by noncomm_ring
_ = -(-(T * T)) := by rw [hleft]
_ = T * T := by simp

/-- The Euler element `H = P*X` has commutator `T`. -/
theorem euler_commutator
(P X T : A)
(hPX : P * X - X * P = -1)
(hXT : X * T = 1)
(hTX : T * X = 1) :
(P * X) * T - T * (P * X) = T := by
have htxp : T * (X * P) = P := by
calc
T * (X * P) = (T * X) * P := by rw [mul_assoc]
_ = P := by rw [hTX]; simp
have hleft : T * (P * X) - P = -T := by
calc
T * (P * X) - P = T * (P * X) - T * (X * P) := by rw [htxp]
_ = T * (P * X - X * P) := by rw [mul_sub]
_ = T * (-1) := by rw [hPX]
_ = -T := by simp
have htp : T * (P * X) = P - T := by
calc
T * (P * X) = (T * (P * X) - P) + P := by noncomm_ring
_ = (-T) + P := by rw [hleft]
_ = P - T := by noncomm_ring
calc
(P * X) * T - T * (P * X) = P - T * (P * X) := by
simp [mul_assoc, hXT]
_ = T := by rw [htp]; noncomm_ring

private theorem commutator_nat_mul (P Z : A) (m : ℕ) :
commutator P ((m : A) * Z) = (m : A) * commutator P Z := by
have hcentral : ∀ z : A, (m : A) * z = z * (m : A) := by
intro z
exact Nat.cast_comm m z
unfold commutator
calc
P * ((m : A) * Z) - ((m : A) * Z) * P =
((m : A) * (P * Z)) - ((m : A) * (Z * P)) := by
calc
P * ((m : A) * Z) - ((m : A) * Z) * P =
((P * (m : A)) * Z) - ((m : A) * Z) * P := by
exact congrArg (fun q : A => q - ((m : A) * Z) * P)
(mul_assoc P (m : A) Z).symm
_ = (((m : A) * P) * Z) - ((m : A) * Z) * P := by
rw [hcentral P]
_ = (((m : A) * P) * Z) - (m : A) * (Z * P) := by
exact congrArg (fun q : A => (((m : A) * P) * Z) - q)
(mul_assoc (m : A) Z P)
_ = (m : A) * (P * Z) - (m : A) * (Z * P) := by
rw [mul_assoc]
_ = (m : A) * (P * Z - Z * P) := by rw [mul_sub]

private theorem commutator_pow
(P T : A)
(hPT : P * T - T * P = T * T) :
∀ n : ℕ, commutator P (T ^ n) = (n : A) * T ^ (n + 1) := by
intro n
induction n with
| zero => simp [commutator]
| succ n ih =>
calc
commutator P (T ^ (n + 1)) =
commutator P (T ^ n) * T + T ^ n * commutator P T := by
simp only [commutator, AlgebraicAnalysis.ringCommutator, pow_succ]
noncomm_ring
_ = (n : A) * T ^ (n + 1) * T +
T ^ n * (P * T - T * P) := by
rw [ih]
rfl
_ = (n : A) * T ^ (n + 1) * T + T ^ n * (T * T) := by
rw [hPT]
_ = ((n + 1 : ℕ) : A) * T ^ ((n + 1) + 1) := by
rw [Nat.cast_succ]
simp only [pow_succ]
noncomm_ring

/-- The iterated commutator is the factorial Riccati tower. -/
theorem iterated_commutator
(P X T : A)
(hPX : P * X - X * P = -1)
(hXT : X * T = 1)
(hTX : T * X = 1) :
∀ n : ℕ, adIterate P n T = (n.factorial : A) * T ^ (n + 1) := by
have hPT : P * T - T * P = T * T :=
inverse_riccati P X T hPX hXT hTX
intro n
induction n with
| zero => simp [adIterate]
| succ n ih =>
calc
adIterate P (n + 1) T = commutator P (adIterate P n T) := by rfl
_ = commutator P ((n.factorial : A) * T ^ (n + 1)) := by rw [ih]
_ = (n.factorial : A) * commutator P (T ^ (n + 1)) := by
exact commutator_nat_mul P (T ^ (n + 1)) n.factorial
_ = (n.factorial : A) * (((n + 1 : ℕ) : A) *
T ^ ((n + 1) + 1)) := by
rw [commutator_pow P T hPT (n + 1)]
_ = ((n + 1).factorial : A) * T ^ ((n + 1) + 1) := by
simp [Nat.factorial_succ, Nat.cast_succ, Nat.cast_mul,
mul_assoc, Nat.cast_comm]


end AlgebraicAnalysis.InverseEulerRiccati
Loading
Loading