Sound interval evaluation of real expressions #
Each backend operation must enclose its real result for every real member of the input intervals. Structural induction then gives the same guarantee for a complete expression. The theorem does not restrict variable values to rationals or to the interval's endpoint representation.
Curried real functions; arity zero is a real constant.
Instances For
Apply a curried real function to its argument list. Successful extension evaluation checks the arity before this interpretation is used.
Instances For
A successful user enclosure contains the result for every real input member. The argument count is checked by the common evaluator, independently of the user's procedure.
Instances For
A certified constant enclosure satisfies the common extension contract.
Rational lower and upper bounds for a real constant, indexed by requested precision.
Compute the lower and upper endpoints.
The constant lies between those endpoints at every precision.
Instances For
Adapt proved constant bounds to the general enclosure evaluator.
Instances For
Ordinary endpoint inequalities suffice to certify a constant enclosure.
Lift an existing unary containment theorem to a registered enclosure.
Lift an existing binary containment theorem to a registered enclosure.
Real interpretation of a unary expression operation.
Instances For
Containment contracts for all successful operations of an interval backend.
The constant enclosure contains its exact rational value.
- unary {op : UnaryOp} {I J : Interval α} {x : ℝ} : B.unary? op I = some J → ContainsReal B.decode I x → ContainsReal B.decode J (op.eval x)
Unary operations enclose the result at every real input member.
- binary {op : BinaryOp} {I J K : Interval α} {x y : ℝ} : B.binary? op I J = some K → ContainsReal B.decode I x → ContainsReal B.decode J y → ContainsReal B.decode K (op.eval x y)
Binary operations enclose the result at every pair of real input members.
- ternary {op : TernaryOp} {I J K L : Interval α} {x y z : ℝ} : B.ternary? op I J K = some L → ContainsReal B.decode I x → ContainsReal B.decode J y → ContainsReal B.decode K z → ContainsReal B.decode L (op.eval x y z)
Three-input operations enclose the result at every combination of real input members.
- call {index : ℕ} {inputs : List (Interval α)} {output : Interval α} {values : List ℝ} : B.call? index inputs = some output → List.Forall₂ (fun (I : Interval α) (x : ℝ) => ContainsReal B.decode I x) inputs values → ContainsReal B.decode output (functions index values)
Registered operations enclose all real tuples in their input intervals.
Instances For
A successful expression evaluation encloses the exact real value throughout the input box.
Only variables actually supplied by the interval environment need a membership proof. A missing variable prevents successful evaluation, so it cannot create an unproved assumption.