Taylor Model Composition and Expression Integration #
This file provides composition operations for Taylor models and integration
with the Expr AST. It builds on the core Taylor model infrastructure and
function-specific Taylor approximations to enable automatic Taylor model
construction for expression trees.
Main definitions #
TaylorModel.sin,TaylorModel.cos,TaylorModel.exp- Interval-based compositionTaylorModel.fromExpr,TaylorModel.fromExpr?- Expression to Taylor model conversionexpIntervalRefined- Refined exp interval using Taylor models
Main results #
fromExpr_evalSet_correct- Taylor models from expressions are correctfromExpr_correct- Expression evaluation lies in Taylor model boundmem_expIntervalRefined- FTIA for refined exp interval
Interval-based composition operations #
Given a TM for an argument, these operations return TMs that bound transcendental functions of that argument. They use function-level Taylor models for tight bounds.
Interval-based sin composition. Given a TM for the argument, returns a TM that bounds sin of the argument. Uses function-level Taylor model for tight bounds.
Equations
Instances For
Interval-based cos composition. Given a TM for the argument, returns a TM that bounds cos of the argument. Uses function-level Taylor model for tight bounds.
Equations
Instances For
Interval-based exp composition. Given a TM for the argument, returns a TM that bounds exp of the argument. Uses function-level Taylor model for tight bounds.
Equations
Instances For
Interval-based sinh composition. Given a TM for the argument, returns a TM that bounds sinh of the argument. Uses function-level Taylor model for tight bounds.
Equations
Instances For
Interval-based cosh composition. Given a TM for the argument, returns a TM that bounds cosh of the argument. Uses function-level Taylor model for tight bounds.
Equations
Instances For
Interval-based tanh composition. Given a TM for the argument, returns a TM that bounds tanh of the argument. Uses tanh = sinh / cosh with the fact that cosh ≥ 1 > 0.
Equations
Instances For
Interval-based atan composition. Given a TM for the argument, returns a TM that bounds atan of the argument. Uses function-level Taylor model. Valid for |arg| ≤ 1.
Equations
Instances For
Interval-based atanh composition. Given a TM for the argument, returns a TM that bounds atanh of the argument. Uses function-level Taylor model. Valid for |arg| < 1.
Equations
Instances For
Interval-based asinh composition. Given a TM for the argument, returns a TM that bounds asinh of the argument. Uses function-level Taylor model.
Equations
Instances For
Interval-based sinc composition. Given a TM for the argument, returns a TM that bounds sinc of the argument. sinc(z) = sin(z)/z for z ≠ 0, sinc(0) = 1.
Equations
Instances For
Interval-based erf composition. Given a TM for the argument, returns a TM that bounds erf of the argument. erf(z) = (2/√π) ∫₀ᶻ e^{-t²} dt.
Equations
Instances For
Interval-based log composition. Given a TM for the argument, returns a TM that bounds log of the argument. Only valid when the argument interval is strictly positive. Returns none if the argument could be ≤ 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interval-based sqrt composition. Given a TM for the argument, returns a TM that bounds sqrt of the argument. Uses sqrtIntervalTight for the interval bound.
Equations
Instances For
Interval-based atan composition. Given a TM for the argument, returns a TM that bounds atan of the argument. Uses atanInterval for the interval bound (a conservative [-2, 2]).
Equations
Instances For
Interval-based erf composition. Given a TM for the argument, returns a TM that bounds erf of the argument. Uses erfInterval for the interval bound ([-1, 1]).
Equations
Instances For
Check if an interval is safe for atanh: max(|lo|, |hi|) ≤ 99/100. This ensures we're away from the singularities at ±1.
Instances For
Interval-based atanh composition with domain check. Given a TM for the argument, returns a TM that bounds atanh of the argument. Returns none if the argument bound could be too close to ±1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Building Taylor models from Expr #
Convert an expression to a Taylor model (total builder used for examples).
Equations
- One or more equations did not get rendered due to their size.
- LeanCert.Engine.TaylorModel.fromExpr (LeanCert.Core.Expr.const q) domain degree = LeanCert.Engine.TaylorModel.const q domain
- LeanCert.Engine.TaylorModel.fromExpr (LeanCert.Core.Expr.var idx) domain degree = LeanCert.Engine.TaylorModel.identity domain
- LeanCert.Engine.TaylorModel.fromExpr (e₁.add e₂) domain degree = (LeanCert.Engine.TaylorModel.fromExpr e₁ domain degree).add (LeanCert.Engine.TaylorModel.fromExpr e₂ domain degree)
- LeanCert.Engine.TaylorModel.fromExpr (e₁.mul e₂) domain degree = (LeanCert.Engine.TaylorModel.fromExpr e₁ domain degree).mul (LeanCert.Engine.TaylorModel.fromExpr e₂ domain degree) degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.neg domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).neg
- LeanCert.Engine.TaylorModel.fromExpr e_2.exp domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).exp degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.sin domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).sin degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.cos domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).cos degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.atan domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).atan degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.arsinh domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).asinh degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.atanh domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).atanh degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.sinc domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).sinc degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.erf domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).erf degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.sinh domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).sinh degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.cosh domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).cosh degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.tanh domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).tanh degree
- LeanCert.Engine.TaylorModel.fromExpr e_2.sqrt domain degree = (LeanCert.Engine.TaylorModel.fromExpr e_2 domain degree).sqrt?.getD (LeanCert.Engine.TaylorModel.const 0 domain)
Instances For
Safe (partial) builder: convert an expression to a Taylor model, returning none
if an inversion would require dividing by an interval that contains 0.
Equations
- One or more equations did not get rendered due to their size.
- LeanCert.Engine.TaylorModel.fromExpr? (LeanCert.Core.Expr.const q) domain degree = some (LeanCert.Engine.TaylorModel.const q domain)
- LeanCert.Engine.TaylorModel.fromExpr? (LeanCert.Core.Expr.var idx) domain degree = some (LeanCert.Engine.TaylorModel.identity domain)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.neg domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure tm.neg
- LeanCert.Engine.TaylorModel.fromExpr? e_2.inv domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree if h : tm.bound.containsZero then none else pure (tm.inv h)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.exp domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.exp degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.sin domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.sin degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.cos domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.cos degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.log domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree tm.log? degree
- LeanCert.Engine.TaylorModel.fromExpr? e_2.atan domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree tm.atan?
- LeanCert.Engine.TaylorModel.fromExpr? e_2.arsinh domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.asinh degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.atanh domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree tm.atanh? degree
- LeanCert.Engine.TaylorModel.fromExpr? e_2.sinc domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.sinc degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.erf domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree tm.erf?
- LeanCert.Engine.TaylorModel.fromExpr? e_2.sinh domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.sinh degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.cosh domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.cosh degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.tanh domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree pure (tm.tanh degree)
- LeanCert.Engine.TaylorModel.fromExpr? e_2.sqrt domain degree = do let tm ← LeanCert.Engine.TaylorModel.fromExpr? e_2 domain degree tm.sqrt?
- LeanCert.Engine.TaylorModel.fromExpr? LeanCert.Core.Expr.pi domain degree = some { poly := 0, remainder := LeanCert.Engine.piInterval, center := domain.midpoint, domain := domain }
Instances For
Composition lemma (addition): if sub-evaluations are in their evalSets, the sum is in the evalSet of the added TM (centers must match).
If e evaluates into tm.evalSet x on the domain, then -e evaluates into
(neg tm).evalSet x on the domain.
Correctness of transcendental operations #
atanh preserves evalSet membership when atanh? succeeds.
Main fromExpr correctness #
Helper: fromExpr? produces TaylorModels with matching domain.
Core evalSet correctness: if fromExpr? succeeds, evaluation is in evalSet.
fromExpr? produces correct Taylor models when it succeeds.
Refined exp interval using Taylor models #
Refined interval bound for exp using Taylor models. For small intervals (width ≤ 1), uses degree-5 Taylor model which gives tight bounds. For larger intervals, falls back to the monotonicity-based coarse bound.
Equations
Instances For
FTIA for refined exp: if x ∈ I, then exp(x) ∈ expIntervalRefined I