Computable domain-aware automatic differentiation #
This module extends LeanCert's computable forward-mode AD path with checked
reciprocal and logarithm nodes. The existing ADSupported fragment remains
the domain-free fast path. Here, successful evaluation itself certifies both
syntactic support and every partial-domain side condition.
The computable domain-aware AD fragment. Unlike ADSupported, this is a
box-dependent check because reciprocal and logarithm have partial domains.
Equations
- LeanCert.Engine.checkADDomain (LeanCert.Core.Expr.const q) ρ cfg = true
- LeanCert.Engine.checkADDomain (LeanCert.Core.Expr.var idx) ρ cfg = true
- LeanCert.Engine.checkADDomain (a.add b) ρ cfg = (LeanCert.Engine.checkADDomain a ρ cfg && LeanCert.Engine.checkADDomain b ρ cfg)
- LeanCert.Engine.checkADDomain (a.mul b) ρ cfg = (LeanCert.Engine.checkADDomain a ρ cfg && LeanCert.Engine.checkADDomain b ρ cfg)
- LeanCert.Engine.checkADDomain a.neg ρ cfg = LeanCert.Engine.checkADDomain a ρ cfg
- LeanCert.Engine.checkADDomain a.exp ρ cfg = LeanCert.Engine.checkADDomain a ρ cfg
- LeanCert.Engine.checkADDomain a.sin ρ cfg = LeanCert.Engine.checkADDomain a ρ cfg
- LeanCert.Engine.checkADDomain a.cos ρ cfg = LeanCert.Engine.checkADDomain a ρ cfg
- LeanCert.Engine.checkADDomain a.inv ρ cfg = (LeanCert.Engine.checkADDomain a ρ cfg && decide ¬(LeanCert.Internal.AD.evalTotalCore a ρ cfg).val.containsZero)
- LeanCert.Engine.checkADDomain a.log ρ cfg = (LeanCert.Engine.checkADDomain a ρ cfg && decide (LeanCert.Internal.AD.evalTotalCore a ρ cfg).val.isPositive)
- LeanCert.Engine.checkADDomain e ρ cfg = false
Instances For
Best-effort structured explanation for a failed domain-aware AD check.
Equations
- One or more equations did not get rendered due to their size.
- LeanCert.Engine.diagnoseADDomainFailure a.neg ρ cfg = LeanCert.Engine.EvalError.nestedFailure "unary operand" (LeanCert.Engine.diagnoseADDomainFailure a ρ cfg)
- LeanCert.Engine.diagnoseADDomainFailure a.exp ρ cfg = LeanCert.Engine.EvalError.nestedFailure "unary operand" (LeanCert.Engine.diagnoseADDomainFailure a ρ cfg)
- LeanCert.Engine.diagnoseADDomainFailure a.sin ρ cfg = LeanCert.Engine.EvalError.nestedFailure "unary operand" (LeanCert.Engine.diagnoseADDomainFailure a ρ cfg)
- LeanCert.Engine.diagnoseADDomainFailure a.cos ρ cfg = LeanCert.Engine.EvalError.nestedFailure "unary operand" (LeanCert.Engine.diagnoseADDomainFailure a ρ cfg)
- LeanCert.Engine.diagnoseADDomainFailure (LeanCert.Core.Expr.const q) ρ cfg = LeanCert.Engine.EvalError.invalidConfiguration "successful AD expression diagnosed as failure"
- LeanCert.Engine.diagnoseADDomainFailure (LeanCert.Core.Expr.var idx) ρ cfg = LeanCert.Engine.EvalError.invalidConfiguration "successful AD expression diagnosed as failure"
- LeanCert.Engine.diagnoseADDomainFailure e ρ cfg = LeanCert.Engine.EvalError.unsupportedFeature "domain-aware automatic differentiation"
Instances For
Computable checked dual evaluation. No finite derivative enclosure is returned unless every reciprocal denominator excludes zero and every logarithm argument is strictly positive on the input box.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Checked value-and-derivative evaluation along coordinate idx.
Equations
- LeanCert.Engine.evalWithDerivChecked e ρ idx cfg = LeanCert.Engine.evalDualChecked e (LeanCert.Engine.mkDualEnv ρ idx) cfg
Instances For
Checked derivative enclosure along coordinate idx.
Equations
- LeanCert.Engine.derivIntervalChecked e ρ idx cfg = do let __do_lift ← LeanCert.Engine.evalWithDerivChecked e ρ idx cfg pure __do_lift.der
Instances For
Checked derivative enclosure for a single-variable expression.
Equations
- LeanCert.Engine.derivIntervalChecked1 e I cfg = LeanCert.Engine.derivIntervalChecked e (fun (x : ℕ) => I) 0 cfg
Instances For
Successful checked dual evaluation encloses the expression value for every real environment represented by the dual environment.
A successful checked evaluation proves differentiability at every point in the input box along the selected coordinate.
Successful checked indexed AD encloses the true partial derivative.
Golden soundness theorem for the checked derivative-only API.