1 (********************************)
\r
2 (* Interval arithmetic (theory) *)
\r
3 (********************************)
\r
5 module Interval_arith = struct
\r
7 (* The main definition *)
\r
8 let interval_arith =
\r
9 new_definition `interval_arith (x:real) (lo, hi) <=> lo <= x /\ x <= hi`;;
\r
12 let CONST_INTERVAL = prove(`!x. interval_arith x (x,x)`,
\r
13 REWRITE_TAC[interval_arith; REAL_LE_REFL]);;
\r
16 let APPROX_INTERVAL = prove(`(a <= lo /\ hi <= b) /\ interval_arith x (lo, hi)
\r
17 ==> interval_arith x (a,b)`,
\r
18 REWRITE_TAC[interval_arith] THEN REAL_ARITH_TAC);;
\r
20 let INTERVAL_NEG = prove(`interval_arith x (a, b) ==>
\r
21 interval_arith (--x) (--b, --a)`,
\r
22 REWRITE_TAC[interval_arith] THEN REAL_ARITH_TAC);;
\r