Holonomic (D-finite) certificates #
Lean counterpart of the Python kernel in scratch/isar_holonomic_closure_algebra.py.
noncomputable def
ISAR.HolonomicCertificate.residual
(c : HolonomicCertificate)
(f : ℝ → ℝ)
(x : ℝ)
:
Pointwise residual of a certificate against a function.
Equations
- c.residual f x = ∑ i : Fin (c.order + 1), Polynomial.eval x (c.coeffs i) * iteratedDeriv (↑i) f x
Instances For
f satisfies the holonomic ODE encoded by c.
Equations
- ISAR.satisfiesODE c f = ∀ (x : ℝ), c.residual f x = 0
Instances For
f admits some holonomic certificate.
Equations
- ISAR.IsHolonomic f = ∃ (c : ISAR.HolonomicCertificate), ISAR.satisfiesODE c f
Instances For
theorem
ISAR.cert_sound
(c : HolonomicCertificate)
(f : ℝ → ℝ)
(h : ∀ (x : ℝ), c.residual f x = 0)
:
satisfiesODE c f
Build an order-1 certificate p₀ · f + p₁ · f' = 0 with p₁ ≠ 0.
Equations
Instances For
Build an order-2 certificate with leading p2 ≠ 0.
Equations
Instances For
theorem
ISAR.orderOneCert_residual
(p0 p1 : Polynomial ℝ)
(hp1 : p1 ≠ 0)
(f : ℝ → ℝ)
(x : ℝ)
:
(orderOneCert p0 p1 hp1).residual f x = Polynomial.eval x p0 * f x + Polynomial.eval x p1 * deriv f x
theorem
ISAR.orderTwoCert_residual
(p0 p1 p2 : Polynomial ℝ)
(hp2 : p2 ≠ 0)
(f : ℝ → ℝ)
(x : ℝ)
:
(orderTwoCert p0 p1 p2 hp2).residual f x = Polynomial.eval x p0 * f x + Polynomial.eval x p1 * deriv f x + Polynomial.eval x p2 * iteratedDeriv 2 f x
Prepend a zero coefficient (integral-closure construction).