From dfdd8e026a43924d99527f9ce5e1f35898166faa Mon Sep 17 00:00:00 2001
From: Heiko Becker <hbecker@mpi-sws.org>
Date: Tue, 12 Jul 2022 12:21:15 +0200
Subject: [PATCH] Fix FloVer for latest HOL4 master changes

---
 hol4/CertificateCheckerScript.sml            |   2 +-
 hol4/EnvironmentsScript.sml                  |   2 +-
 hol4/ErrorBoundsScript.sml                   |   2 +-
 hol4/ErrorValidationScript.sml               | 462 +++++++++----------
 hol4/FPRangeValidatorScript.sml              |   2 +-
 hol4/IEEE_connectionScript.sml               |   2 +-
 hol4/IEEE_reverseScript.sml                  |  74 +--
 hol4/Infra/FloverCompLib.sml                 |   3 +
 hol4/Infra/Holmakefile                       |   2 -
 hol4/Infra/MachineTypeScript.sml             |  43 +-
 hol4/Infra/RealSimpsScript.sml               |   4 +-
 hol4/Infra/ResultsLib.sml                    |   3 +
 hol4/IntervalArithScript.sml                 |   6 +-
 hol4/IntervalValidationScript.sml            |   6 +-
 hol4/TypeValidatorScript.sml                 |  18 +-
 hol4/semantics/ExpressionSemanticsScript.sml |  23 +-
 hol4/semantics/ExpressionsScript.sml         |  14 +-
 hol4/semantics/expressionsLib.sml            |  85 ++++
 18 files changed, 438 insertions(+), 315 deletions(-)
 create mode 100644 hol4/semantics/expressionsLib.sml

diff --git a/hol4/CertificateCheckerScript.sml b/hol4/CertificateCheckerScript.sml
index bb2936dd..dd227771 100644
--- a/hol4/CertificateCheckerScript.sml
+++ b/hol4/CertificateCheckerScript.sml
@@ -14,7 +14,7 @@ open preambleFloVer;
 
 val _ = new_theory "CertificateChecker";
 
-Overload abs[local] = “real$abs”;
+Overload abs[local] = “realax$abs”;
 
 (** Certificate checking function **)
 Definition CertificateChecker_def:
diff --git a/hol4/EnvironmentsScript.sml b/hol4/EnvironmentsScript.sml
index 4c9afa6b..257d1314 100644
--- a/hol4/EnvironmentsScript.sml
+++ b/hol4/EnvironmentsScript.sml
@@ -10,7 +10,7 @@ open preambleFloVer;
 
 val _ = new_theory "Environments";
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 Definition approxEnv_def:
   approxEnv E1 Gamma absEnv (fVars:num_set) (dVars:num_set) E2 =
diff --git a/hol4/ErrorBoundsScript.sml b/hol4/ErrorBoundsScript.sml
index 28f75c3b..36c39c35 100644
--- a/hol4/ErrorBoundsScript.sml
+++ b/hol4/ErrorBoundsScript.sml
@@ -12,7 +12,7 @@ val _ = new_theory "ErrorBounds";
 
 val _ = Parse.hide "delta"; (* so that it can be used as a variable *)
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 val triangle_tac =
   irule triangle_trans \\ rpt conj_tac \\ TRY (fs[REAL_ABS_TRIANGLE] \\ NO_TAC);
diff --git a/hol4/ErrorValidationScript.sml b/hol4/ErrorValidationScript.sml
index cf7df26f..3f4f4fc2 100644
--- a/hol4/ErrorValidationScript.sml
+++ b/hol4/ErrorValidationScript.sml
@@ -18,7 +18,7 @@ val _ = new_theory "ErrorValidation";
 
 val _ = Parse.hide "delta"; (* so that it can be used as a variable *)
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 val _ = realLib.prefer_real();
 
@@ -1074,15 +1074,15 @@ Proof
        by (match_mp_tac REAL_LE_RMUL_IMP \\ fs[])
   \\ `- (err1 * err2) <= err1 * err2`
         by (fs[REAL_NEG_LMUL] \\ match_mp_tac REAL_LE_RMUL_IMP
-            \\ REAL_ASM_ARITH_TAC)
-  \\ `0 <= maxAbs (e1lo, e1hi) * err2` by REAL_ASM_ARITH_TAC
-  \\ `0 <= maxAbs (invertInterval (e2lo, e2hi)) * err1` by REAL_ASM_ARITH_TAC
+            \\ OLD_REAL_ASM_ARITH_TAC)
+  \\ `0 <= maxAbs (e1lo, e1hi) * err2` by OLD_REAL_ASM_ARITH_TAC
+  \\ `0 <= maxAbs (invertInterval (e2lo, e2hi)) * err1` by OLD_REAL_ASM_ARITH_TAC
   \\ `maxAbs (e1lo, e1hi) * err2 <=
       maxAbs (e1lo, e1hi) * err2 + maxAbs (invertInterval (e2lo, e2hi)) * err1`
-       by (REAL_ASM_ARITH_TAC)
+       by (OLD_REAL_ASM_ARITH_TAC)
   \\ `maxAbs (e1lo, e1hi) * err2 + maxAbs (invertInterval(e2lo, e2hi)) * err1 <=
       maxAbs (e1lo, e1hi) * err2 + maxAbs (invertInterval (e2lo, e2hi)) * err1 + err1 * err2`
-       by REAL_ASM_ARITH_TAC
+       by OLD_REAL_ASM_ARITH_TAC
    (* Case distinction for divisor range
       positive or negative in float and real valued execution *)
   \\ fs [IVlo_def, IVhi_def, widenInterval_def, contained_def, noDivzero_def]
@@ -1091,32 +1091,32 @@ Proof
         by (match_mp_tac err_prop_inversion_neg \\ qexists_tac `e2lo` \\simp[])
       \\ fs [widenInterval_def, IVlo_def, IVhi_def]
       \\ `minAbsFun (e2lo - err2, e2hi + err2) = - (e2hi + err2)`
-           by (match_mp_tac minAbs_negative_iv_is_hi \\ REAL_ASM_ARITH_TAC)
+           by (match_mp_tac minAbs_negative_iv_is_hi \\ OLD_REAL_ASM_ARITH_TAC)
       \\ simp[]
       \\ qpat_x_assum `minAbsFun _ = _ ` kall_tac
-      \\ `nF1 <= err1 + nR1` by REAL_ASM_ARITH_TAC
-      \\ `nR1 - err1 <= nF1` by REAL_ASM_ARITH_TAC
+      \\ `nF1 <= err1 + nR1` by OLD_REAL_ASM_ARITH_TAC
+      \\ `nR1 - err1 <= nF1` by OLD_REAL_ASM_ARITH_TAC
       \\ `(nR2 - nF2 > 0 /\ nR2 - nF2 <= err2) \/ (nR2 - nF2 <= 0 /\ - (nR2 - nF2) <= err2)`
-           by REAL_ASM_ARITH_TAC
+           by OLD_REAL_ASM_ARITH_TAC
       (* Positive case for abs (nR2 - nF2) <= err2 *)
-      >- (`nF2 < nR2` by REAL_ASM_ARITH_TAC
+      >- (`nF2 < nR2` by OLD_REAL_ASM_ARITH_TAC
           \\ qpat_x_assum `nF2 < nR2` (fn thm => assume_tac (ONCE_REWRITE_RULE [GSYM REAL_LT_NEG] thm))
-          \\ `inv (- nF2) < inv (- nR2)` by (match_mp_tac REAL_LT_INV \\ REAL_ASM_ARITH_TAC)
-          \\ `inv (- nF2) = - (inv nF2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ REAL_ASM_ARITH_TAC)
-          \\ `inv (- nR2) = - (inv nR2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ REAL_ASM_ARITH_TAC)
+          \\ `inv (- nF2) < inv (- nR2)` by (match_mp_tac REAL_LT_INV \\ OLD_REAL_ASM_ARITH_TAC)
+          \\ `inv (- nF2) = - (inv nF2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ OLD_REAL_ASM_ARITH_TAC)
+          \\ `inv (- nR2) = - (inv nR2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ OLD_REAL_ASM_ARITH_TAC)
           \\ rpt (qpat_x_assum `inv (- _) = - (inv _)`
                    (fn thm => rule_assum_tac (fn hyp => REWRITE_RULE [thm] hyp)))
-          \\ `inv nR2 < inv nF2` by REAL_ASM_ARITH_TAC
+          \\ `inv nR2 < inv nF2` by OLD_REAL_ASM_ARITH_TAC
           \\ qpat_x_assum `- _ < - _` kall_tac
-          \\ `inv nR2 - inv nF2 < 0` by REAL_ASM_ARITH_TAC
+          \\ `inv nR2 - inv nF2 < 0` by OLD_REAL_ASM_ARITH_TAC
           \\ `- (nR2⁻¹ − nF2⁻¹) ≤ err2 * ((e2hi + err2) * (e2hi + err2))⁻¹`
-               by REAL_ASM_ARITH_TAC
+               by OLD_REAL_ASM_ARITH_TAC
           \\ `inv nF2 <= inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2))`
-               by REAL_ASM_ARITH_TAC
+               by OLD_REAL_ASM_ARITH_TAC
           \\ `inv nR2 - err2 * inv ((e2hi + err2) * (e2hi + err2)) <= inv nF2`
-               by REAL_ASM_ARITH_TAC
+               by OLD_REAL_ASM_ARITH_TAC
           (* Next do a case distinction for the absolute value *)
-          \\ `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by REAL_ASM_ARITH_TAC
+          \\ `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by OLD_REAL_ASM_ARITH_TAC
           \\ qpat_x_assum `!x. A /\ B \/ C`
                (fn thm =>
                    qspec_then `(nR1:real / nR2:real) - (nF1:real / nF2:real)`
@@ -1131,7 +1131,7 @@ Proof
                   \\ conj_tac
                   >- (fs[REAL_LE_LADD]
                       \\ match_mp_tac REAL_MUL_LE_COMPAT_NEG_L
-                      \\ conj_tac \\ REAL_ASM_ARITH_TAC)
+                      \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                   >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)`
                       \\ qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                       >- (match_mp_tac REAL_LE_TRANS
@@ -1140,30 +1140,30 @@ Proof
                           >- (fs [REAL_LE_ADD]
                               \\ once_rewrite_tac [REAL_MUL_COMM]
                               \\ match_mp_tac REAL_MUL_LE_COMPAT_NEG_L
-                              \\ conj_tac \\ TRY REAL_ASM_ARITH_TAC
+                              \\ conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC
                               \\ fs [REAL_LE_NEG])
                           >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 - err_inv) =
                                nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                                by REAL_ASM_ARITH_TAC
+                                by OLD_REAL_ASM_ARITH_TAC
                               \\ simp[REAL_NEG_MUL2]
                               \\ qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                                    (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM
                               \\ qunabbrev_tac `err_inv`
                               \\ match_mp_tac REAL_LE_ADD2
-            \\ conj_tac \\ TRY REAL_ASM_ARITH_TAC
+            \\ conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC
             \\ match_mp_tac REAL_LE_ADD2
-            \\ conj_tac \\ TRY REAL_ASM_ARITH_TAC
+            \\ conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC
             \\ match_mp_tac REAL_LE_RMUL_IMP
-            \\ conj_tac \\ REAL_ASM_ARITH_TAC))
+            \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
           >- (match_mp_tac REAL_LE_TRANS
                           \\ qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv)`
                           \\ conj_tac
         >- (fs [REAL_LE_ADD]
                               \\ match_mp_tac REAL_LE_RMUL_IMP
-            \\ conj_tac \\ REAL_ASM_ARITH_TAC)
+            \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
         >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv) =
              nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                                by REAL_ASM_ARITH_TAC
+                                by OLD_REAL_ASM_ARITH_TAC
                                \\ simp[REAL_NEG_MUL2]
              \\ qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM
@@ -1172,19 +1172,19 @@ Proof
              \\ match_mp_tac REAL_LE_ADD2
              \\ conj_tac
              >- (match_mp_tac REAL_LE_ADD2
-                                   \\ conj_tac \\ TRY REAL_ASM_ARITH_TAC
+                                   \\ conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC
            \\ match_mp_tac REAL_LE_RMUL_IMP
-           \\ conj_tac \\ REAL_ASM_ARITH_TAC)
+           \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
              >- (simp [REAL_NEG_LMUL]
                                    \\ match_mp_tac REAL_LE_RMUL_IMP
-           \\ conj_tac \\ REAL_ASM_ARITH_TAC)))))
+           \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
         (* 0 <= - nF1 *)
         >- (match_mp_tac REAL_LE_TRANS
                   \\ qexists_tac `nR1 * inv nR2 + - nF1 * (inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2)))`
                   \\ conj_tac
       >- (fs[REAL_LE_LADD]
                       \\ match_mp_tac REAL_LE_LMUL_IMP
-                      \\ conj_tac \\ REAL_ASM_ARITH_TAC)
+                      \\ conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
       >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)`
                       \\ qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                       >- (match_mp_tac REAL_LE_TRANS
@@ -1193,11 +1193,11 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                       once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 + err_inv) =
                         - nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1206,31 +1206,31 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                        conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                        conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (simp [REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv) =
                         - nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
             (* Case 2: Absolute value negative *)
             >- (fs[real_sub, real_div, REAL_NEG_LMUL, REAL_NEG_ADD] \\
               qspecl_then [`nF1`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
@@ -1240,7 +1240,7 @@ Proof
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1249,31 +1249,31 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                        once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 - err_inv) =
                        - nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((-e2hi + -err2) * (-e2hi + -err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv) =
                        - nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((-e2hi + -err2) * (-e2hi + -err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1282,20 +1282,20 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
               (* 0 <= - nF1 *)
               >- (match_mp_tac REAL_LE_TRANS \\
                 qexists_tac `- nR1 * inv nR2 + nF1 * (inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2)))` \\
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_LE_LMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1304,11 +1304,11 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                       once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 + err_inv) =
                         nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((-e2hi + -err2) * (-e2hi + -err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1317,51 +1317,51 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                        conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                        conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                         fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL, REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv) =
                         nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((-e2hi + -err2) * (-e2hi + -err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC))))))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC))))))
           (* Negative case for abs (nR2 - nF2) <= err2 *)
           >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
-            `nR2 <= nF2` by REAL_ASM_ARITH_TAC \\
+            `nR2 <= nF2` by OLD_REAL_ASM_ARITH_TAC \\
             qpat_x_assum `nR2 <= nF2` (fn thm => assume_tac (ONCE_REWRITE_RULE [GSYM REAL_LE_NEG] thm)) \\
-            `inv (- nR2) <= inv (- nF2)` by (match_mp_tac REAL_INV_LE_ANTIMONO_IMPR \\ REAL_ASM_ARITH_TAC) \\
-            `inv (- nR2) = - (inv nR2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ REAL_ASM_ARITH_TAC) \\
-            `inv (- nF2) = - (inv nF2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ REAL_ASM_ARITH_TAC) \\
+            `inv (- nR2) <= inv (- nF2)` by (match_mp_tac REAL_INV_LE_ANTIMONO_IMPR \\ OLD_REAL_ASM_ARITH_TAC) \\
+            `inv (- nR2) = - (inv nR2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ OLD_REAL_ASM_ARITH_TAC) \\
+            `inv (- nF2) = - (inv nF2)` by (match_mp_tac (GSYM REAL_NEG_INV) \\ OLD_REAL_ASM_ARITH_TAC) \\
             rpt (
                   qpat_x_assum `inv (- _) = - (inv _)`
                 (fn thm => rule_assum_tac (fn hyp => REWRITE_RULE [thm] hyp))) \\
-            `inv nF2 <= inv nR2` by REAL_ASM_ARITH_TAC \\
+            `inv nF2 <= inv nR2` by OLD_REAL_ASM_ARITH_TAC \\
             qpat_x_assum `- _ <= - _` kall_tac \\
-            `0 <= inv nR2 - inv nF2` by REAL_ASM_ARITH_TAC \\
-            `(nR2⁻¹ − nF2⁻¹) ≤ err2 * ((e2hi + err2) * (e2hi + err2))⁻¹` by REAL_ASM_ARITH_TAC \\
-            `inv nF2 <= inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2))` by REAL_ASM_ARITH_TAC \\
-            `inv nR2 - err2 * inv ((e2hi + err2) * (e2hi + err2)) <= inv nF2` by REAL_ASM_ARITH_TAC \\
+            `0 <= inv nR2 - inv nF2` by OLD_REAL_ASM_ARITH_TAC \\
+            `(nR2⁻¹ − nF2⁻¹) ≤ err2 * ((e2hi + err2) * (e2hi + err2))⁻¹` by OLD_REAL_ASM_ARITH_TAC \\
+            `inv nF2 <= inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2))` by OLD_REAL_ASM_ARITH_TAC \\
+            `inv nR2 - err2 * inv ((e2hi + err2) * (e2hi + err2)) <= inv nF2` by OLD_REAL_ASM_ARITH_TAC \\
             (* Next do a case distinction for the absolute value *)
-            `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by REAL_ASM_ARITH_TAC \\
+            `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by OLD_REAL_ASM_ARITH_TAC \\
             qpat_x_assum `!x. A /\ B \/ C`
               (fn thm => qspec_then `(nR1:real / nR2:real) - (nF1:real / nF2:real)` DISJ_CASES_TAC thm) \\
             fs[real_sub, real_div, REAL_NEG_LMUL, REAL_NEG_ADD, realTheory.abs]
@@ -1373,7 +1373,7 @@ Proof
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1382,30 +1382,30 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                       once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 - err_inv) =
                         nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv) =
                         nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1414,19 +1414,19 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (simp [REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
               (* 0 <= - nF1 *)
               >- (match_mp_tac REAL_LE_TRANS \\
                 qexists_tac `nR1 * inv nR2 + - nF1 * (inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2)))` \\
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_LE_LMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1435,11 +1435,11 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                       once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 + err_inv) =
                         - nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1448,31 +1448,31 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                        conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                        conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (simp [REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv) =
                         - nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
             (* Case 2: Absolute value negative *)
             >- (qspecl_then [`nF1`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
               (* nF1 < 0 *)
@@ -1481,7 +1481,7 @@ Proof
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1490,30 +1490,30 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                        once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 - err_inv) =
                        - nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv) =
                        - nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1522,19 +1522,19 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                        conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                        conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
               (* 0 <= - nF1 *)
               >- (match_mp_tac REAL_LE_TRANS \\
                 qexists_tac `- nR1 * inv nR2 + nF1 * (inv nR2 + err2 * inv ((e2hi + err2) * (e2hi + err2)))` \\
                 conj_tac
                 >- (fs[REAL_LE_LADD] \\
                   match_mp_tac REAL_LE_LMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (qabbrev_tac `err_inv = (err2 * ((e2hi + err2) * (e2hi + err2))⁻¹)` \\
                   qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
                   >- (match_mp_tac REAL_LE_TRANS \\
@@ -1543,11 +1543,11 @@ Proof
                     >- (fs [REAL_LE_ADD] \\
                       once_rewrite_tac [REAL_MUL_COMM] \\
                       match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       fs [REAL_LE_NEG])
                     >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 + err_inv) =
                         nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1556,42 +1556,42 @@ Proof
                       match_mp_tac REAL_LE_ADD2 \\
                       conj_tac
                       >- (match_mp_tac REAL_LE_ADD2 \\
-                        conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                        conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                       >- (fs [REAL_NEG_LMUL] \\
                         match_mp_tac REAL_LE_RMUL_IMP \\
-                        conj_tac \\ REAL_ASM_ARITH_TAC)))
+                        conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
                   >- (match_mp_tac REAL_LE_TRANS \\
                     qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv)` \\
                     conj_tac
                     >- (fs [REAL_LE_ADD] \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                     >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv) =
                         nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                          by REAL_ASM_ARITH_TAC \\
+                          by OLD_REAL_ASM_ARITH_TAC \\
                       simp[REAL_NEG_MUL2] \\
                       qspecl_then [`inv ((e2hi + err2) * (e2hi + err2))`,`err2`]
                         (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                       qunabbrev_tac `err_inv` \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_ADD2 \\
-                      conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                      conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                       match_mp_tac REAL_LE_RMUL_IMP \\
-                      conj_tac \\ REAL_ASM_ARITH_TAC)))))))
+                      conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))))
   >- (CCONTR_TAC \\
       rule_assum_tac (fn thm => REWRITE_RULE[IVlo_def, IVhi_def, widenInterval_def] thm) \\
-      `e2lo <= e2hi` by REAL_ASM_ARITH_TAC \\
-      `e2lo <= e2hi + err2` by REAL_ASM_ARITH_TAC \\
-      `e2lo <= e2hi + err2` by REAL_ASM_ARITH_TAC \\
-      REAL_ASM_ARITH_TAC)
+      `e2lo <= e2hi` by OLD_REAL_ASM_ARITH_TAC \\
+      `e2lo <= e2hi + err2` by OLD_REAL_ASM_ARITH_TAC \\
+      `e2lo <= e2hi + err2` by OLD_REAL_ASM_ARITH_TAC \\
+      OLD_REAL_ASM_ARITH_TAC)
   >- (CCONTR_TAC \\
       rule_assum_tac (fn thm => REWRITE_RULE[IVlo_def, IVhi_def, widenInterval_def] thm) \\
-      `e2lo <= e2hi` by REAL_ASM_ARITH_TAC \\
-      `e2lo - err2 <= e2hi` by REAL_ASM_ARITH_TAC \\
-      REAL_ASM_ARITH_TAC)
+      `e2lo <= e2hi` by OLD_REAL_ASM_ARITH_TAC \\
+      `e2lo - err2 <= e2hi` by OLD_REAL_ASM_ARITH_TAC \\
+      OLD_REAL_ASM_ARITH_TAC)
 (* The range of the divisor lies in the range from 0 to infinity *)
   >- (rule_assum_tac
       (fn thm =>
@@ -1602,22 +1602,22 @@ Proof
                    fs[contained_def, IVlo_def, IVhi_def]) \\
      fs [widenInterval_def, IVlo_def, IVhi_def, invertInterval_def] \\
      `minAbsFun (e2lo - err2, e2hi + err2) = (e2lo - err2)`
-               by (match_mp_tac minAbs_positive_iv_is_lo \\ REAL_ASM_ARITH_TAC) \\
+               by (match_mp_tac minAbs_positive_iv_is_lo \\ OLD_REAL_ASM_ARITH_TAC) \\
      simp[] \\
      qpat_x_assum `minAbsFun _ = _ ` kall_tac \\
-     `nF1 <= err1 + nR1` by REAL_ASM_ARITH_TAC \\
-     `nR1 - err1 <= nF1` by REAL_ASM_ARITH_TAC \\
+     `nF1 <= err1 + nR1` by OLD_REAL_ASM_ARITH_TAC \\
+     `nR1 - err1 <= nF1` by OLD_REAL_ASM_ARITH_TAC \\
      `(nR2 - nF2 > 0 /\ nR2 - nF2 <= err2) \/ (nR2 - nF2 <= 0 /\ - (nR2 - nF2) <= err2)`
-               by REAL_ASM_ARITH_TAC
+               by OLD_REAL_ASM_ARITH_TAC
     (* Positive case for abs (nR2 - nF2) <= err2 *)
-    >- (`nF2 < nR2` by REAL_ASM_ARITH_TAC \\
-      `inv nR2 < inv nF2` by (match_mp_tac REAL_LT_INV \\ TRY REAL_ASM_ARITH_TAC) \\
-      `inv nR2 - inv nF2 < 0` by REAL_ASM_ARITH_TAC \\
-      `nR2⁻¹ − nF2⁻¹ ≤ err2 * ((e2lo - err2) * (e2lo - err2))⁻¹` by REAL_ASM_ARITH_TAC \\
-      `inv nF2 <= inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2))` by REAL_ASM_ARITH_TAC \\
-      `inv nR2 - err2 * inv ((e2lo - err2) * (e2lo - err2)) <= inv nF2` by REAL_ASM_ARITH_TAC \\
+    >- (`nF2 < nR2` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nR2 < inv nF2` by (match_mp_tac REAL_LT_INV \\ TRY OLD_REAL_ASM_ARITH_TAC) \\
+      `inv nR2 - inv nF2 < 0` by OLD_REAL_ASM_ARITH_TAC \\
+      `nR2⁻¹ − nF2⁻¹ ≤ err2 * ((e2lo - err2) * (e2lo - err2))⁻¹` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nF2 <= inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2))` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nR2 - err2 * inv ((e2lo - err2) * (e2lo - err2)) <= inv nF2` by OLD_REAL_ASM_ARITH_TAC \\
       (* Next do a case distinction for the absolute value *)
-      `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by REAL_ASM_ARITH_TAC \\
+      `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by OLD_REAL_ASM_ARITH_TAC \\
       qpat_x_assum `!x. A /\ B \/ C`
         (fn thm => qspec_then `(nR1:real / nR2:real) - (nF1:real / nF2:real)` DISJ_CASES_TAC thm)
       \\ fs[realTheory.abs]
@@ -1630,7 +1630,7 @@ Proof
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1639,31 +1639,31 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 - err_inv) =
                   nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + - err2) * (e2lo + - err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp[GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv) =
                   nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1672,19 +1672,19 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (simp [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
         (* 0 <= - nF1 *)
         >- (match_mp_tac REAL_LE_TRANS \\
           qexists_tac `nR1 * inv nR2 + - nF1 * (inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2)))` \\
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_LE_LMUL_IMP \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1693,11 +1693,11 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 + err_inv) =
                   - nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1706,32 +1706,32 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (simp [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv) =
                   - nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
       (* Case 2: Absolute value negative *)
       >- (fs[real_sub, real_div, REAL_NEG_LMUL, REAL_NEG_ADD] \\
         qspecl_then [`nF1`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
@@ -1741,7 +1741,7 @@ Proof
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1750,31 +1750,31 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                  once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 - err_inv) =
                  - nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv) =
                  - nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1783,20 +1783,20 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
         (* 0 <= - nF1 *)
         >- (match_mp_tac REAL_LE_TRANS \\
           qexists_tac `- nR1 * inv nR2 + nF1 * (inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2)))` \\
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_LE_LMUL_IMP \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1805,11 +1805,11 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 + err_inv) =
                   nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1818,42 +1818,42 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (fs [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv) =
                   nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC))))))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC))))))
     (* Negative case for abs (nR2 - nF2) <= err2 *)
     >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
-      `nR2 <= nF2` by REAL_ASM_ARITH_TAC \\
-      `inv nF2 <= inv nR2` by (match_mp_tac REAL_INV_LE_ANTIMONO_IMPR \\ REAL_ASM_ARITH_TAC) \\
-      `0 <= inv nR2 - inv nF2` by REAL_ASM_ARITH_TAC \\
-      `(nR2⁻¹ − nF2⁻¹) ≤ err2 * ((e2lo - err2) * (e2lo - err2))⁻¹` by REAL_ASM_ARITH_TAC \\
-      `inv nF2 <= inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2))` by REAL_ASM_ARITH_TAC \\
-      `inv nR2 - err2 * inv ((e2lo - err2) * (e2lo - err2)) <= inv nF2` by REAL_ASM_ARITH_TAC \\
+      `nR2 <= nF2` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nF2 <= inv nR2` by (match_mp_tac REAL_INV_LE_ANTIMONO_IMPR \\ OLD_REAL_ASM_ARITH_TAC) \\
+      `0 <= inv nR2 - inv nF2` by OLD_REAL_ASM_ARITH_TAC \\
+      `(nR2⁻¹ − nF2⁻¹) ≤ err2 * ((e2lo - err2) * (e2lo - err2))⁻¹` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nF2 <= inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2))` by OLD_REAL_ASM_ARITH_TAC \\
+      `inv nR2 - err2 * inv ((e2lo - err2) * (e2lo - err2)) <= inv nF2` by OLD_REAL_ASM_ARITH_TAC \\
       (* Next do a case distinction for the absolute value *)
-      `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by REAL_ASM_ARITH_TAC \\
+      `! (x:real). ((abs x = x) /\ 0 <= x) \/ ((abs x = - x) /\ x < 0)` by OLD_REAL_ASM_ARITH_TAC \\
       qpat_x_assum `!x. A /\ B \/ C`
         (fn thm => qspec_then `(nR1:real / nR2:real) - (nF1:real / nF2:real)` DISJ_CASES_TAC thm) \\
       fs[real_sub, real_div, REAL_NEG_LMUL, REAL_NEG_ADD, realTheory.abs]
@@ -1865,7 +1865,7 @@ Proof
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1874,31 +1874,31 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 - err_inv) =
                   nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 - err_inv) =
                   nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1907,19 +1907,19 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (simp [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
         (* 0 <= - nF1 *)
         >- (match_mp_tac REAL_LE_TRANS \\
           qexists_tac `nR1 * inv nR2 + - nF1 * (inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2)))` \\
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_LE_LMUL_IMP \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1928,11 +1928,11 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`nR1 * inv nR2 + - (nR1 + err1) * (inv nR2 + err_inv) =
                   - nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -1941,32 +1941,32 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (simp [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`nR1 * inv nR2 + - (nR1 + - err1) * (inv nR2 + err_inv) =
                   - nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
       (* Case 2: Absolute value negative *)
       >- (qspecl_then [`nF1`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
         (* nF1 < 0 *)
@@ -1975,7 +1975,7 @@ Proof
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_MUL_LE_COMPAT_NEG_L \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 - err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -1984,31 +1984,31 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                  once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 - err_inv) =
                  - nR1 * err_inv + - (inv nR2) * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 - err_inv) =
                  - nR1 * err_inv + inv nR2 * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -2017,19 +2017,19 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (fs [GSYM REAL_NEG_ADD, REAL_NEG_MUL2, REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))
         (* 0 <= - nF1 *)
         >- (match_mp_tac REAL_LE_TRANS \\
           qexists_tac `- nR1 * inv nR2 + nF1 * (inv nR2 + err2 * inv ((e2lo - err2) * (e2lo - err2)))` \\
           conj_tac
           >- (fs[REAL_LE_LADD] \\
             match_mp_tac REAL_LE_LMUL_IMP \\
-            conj_tac \\ REAL_ASM_ARITH_TAC)
+            conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
           >- (qabbrev_tac `err_inv = (err2 * ((e2lo - err2) * (e2lo - err2))⁻¹)` \\
             qspecl_then [`inv nR2 + err_inv`, `0`] DISJ_CASES_TAC REAL_LTE_TOTAL
             >- (match_mp_tac REAL_LE_TRANS \\
@@ -2038,11 +2038,11 @@ Proof
               >- (fs [REAL_LE_ADD] \\
                 once_rewrite_tac [REAL_MUL_COMM] \\
                 match_mp_tac REAL_MUL_LE_COMPAT_NEG_L\\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 fs [REAL_LE_NEG])
               >- (`- nR1 * inv nR2 + (nR1 - err1) * (inv nR2 + err_inv) =
                   nR1 * err_inv + - (inv nR2) * err1 - err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
@@ -2051,32 +2051,32 @@ Proof
                 match_mp_tac REAL_LE_ADD2 \\
                 conj_tac
                 >- (match_mp_tac REAL_LE_ADD2 \\
-                  conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                  conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
                 >- (fs [REAL_NEG_LMUL] \\
                   match_mp_tac REAL_LE_RMUL_IMP \\
-                  conj_tac \\ REAL_ASM_ARITH_TAC)))
+                  conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))
             >- (match_mp_tac REAL_LE_TRANS \\
               qexists_tac `- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv)` \\
               conj_tac
               >- (fs [REAL_LE_ADD] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)
               >- (`- nR1 * inv nR2 + (nR1 + err1) * (inv nR2 + err_inv) =
                   nR1 * err_inv + inv nR2 * err1 + err1 * err_inv`
-                    by REAL_ASM_ARITH_TAC \\
+                    by OLD_REAL_ASM_ARITH_TAC \\
                 simp[REAL_NEG_MUL2] \\
                 qspecl_then [`inv ((e2lo + -err2) * (e2lo + -err2))`,`err2`]
                   (fn thm => once_rewrite_tac [thm]) REAL_MUL_COMM \\
                 qunabbrev_tac `err_inv` \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 match_mp_tac REAL_LE_ADD2 \\
-                conj_tac \\ TRY REAL_ASM_ARITH_TAC \\
+                conj_tac \\ TRY OLD_REAL_ASM_ARITH_TAC \\
                 simp [GSYM real_sub] \\
                 match_mp_tac REAL_LE_RMUL_IMP \\
-                conj_tac \\ REAL_ASM_ARITH_TAC)))))))
+                conj_tac \\ OLD_REAL_ASM_ARITH_TAC)))))))
 QED
 
 Theorem validErrorboundCorrectDiv:
diff --git a/hol4/FPRangeValidatorScript.sml b/hol4/FPRangeValidatorScript.sml
index 87b1530c..bd81e50b 100644
--- a/hol4/FPRangeValidatorScript.sml
+++ b/hol4/FPRangeValidatorScript.sml
@@ -18,7 +18,7 @@ open preambleFloVer;
 
 val _ = new_theory "FPRangeValidator";
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 Definition FPRangeValidator_def:
   FPRangeValidator (e:real expr) A typeMap dVars =
diff --git a/hol4/IEEE_connectionScript.sml b/hol4/IEEE_connectionScript.sml
index 0128b2db..8152f1d3 100644
--- a/hol4/IEEE_connectionScript.sml
+++ b/hol4/IEEE_connectionScript.sml
@@ -13,7 +13,7 @@ open preambleFloVer;
 
 val _ = new_theory "IEEE_connection";
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 val _ = diminish_srw_ss ["RMULCANON_ss","RMULRELNORM_ss"]
 
diff --git a/hol4/IEEE_reverseScript.sml b/hol4/IEEE_reverseScript.sml
index 48b2edba..168a7d42 100644
--- a/hol4/IEEE_reverseScript.sml
+++ b/hol4/IEEE_reverseScript.sml
@@ -14,7 +14,7 @@ open preambleFloVer;
 
 val _ = new_theory "IEEE_reverse";
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 Definition toFlExp_def:
   toFlExp ((Var v):real expr) = Var v ∧
@@ -56,49 +56,40 @@ Proof
   \\ TOP_CASE_TAC \\ gs[]
 QED
 
-(** Some eval test
-EVAL “float_to_real ((real_to_float roundTiesToEven (float_to_real <|Sign := 1w; Exponent := 0w:word11; Significand := 0w:52 word |>)):(52,11) float”
-|> CONV_RULE (RHS_CONV $ RAND_CONV $ binary_ieeeLib.float_round_CONV)
-**)
-
 Theorem eval_expr_gives_IEEE_reverse:
   !(e:real expr) E1 E2 Gamma vR A fVars dVars.
     validTypes e Gamma /\
-    approxEnv E1 (toRExpMap Gamma) A fVars dVars E2 /\
+    approxEnv E1 (toRExpMap Gamma) A fVars dVars (toREnv E2) /\
     validRanges e A E1 (toRTMap (toRExpMap Gamma)) /\
     validErrorbound e Gamma A dVars /\
     FPRangeValidator e A Gamma dVars /\
-    eval_expr E2 (toRExpMap Gamma) e vR M64 /\
+    eval_expr (toREnv E2) (toRExpMap Gamma) e vR M64 /\
     domain (usedVars e) DIFF domain dVars ⊆ domain fVars ∧
     is64BitEval e /\
     is64BitEnv Gamma /\
     noDowncast e /\
-    (∀ x v. E2 x = SOME v ⇒ float_to_real ((real_to_float dmode v):(52,11) float) = v) ∧
     (∀v.
       v ∈ domain dVars ⇒
       ∃vF m.
-      (E2 v = SOME vF ∧ FloverMapTree_find (Var v) Gamma = SOME m ∧
+      ((toREnv E2) v = SOME vF ∧ FloverMapTree_find (Var v) Gamma = SOME m ∧
       validFloatValue vF m)) ==>
     ?v.
-      eval_expr_float (toFlExp e) (toFlEnv E2) = SOME v /\
-      eval_expr E2 (toRExpMap Gamma) e (fp64_to_real v) M64
+      eval_expr_float (toFlExp e) E2 = SOME v /\
+      eval_expr (toREnv E2) (toRExpMap Gamma) e (fp64_to_real v) M64
 Proof
   Induct_on `e` \\ rw[toFlExp_def]
   \\ inversion `eval_expr _ _ _ _ _` eval_expr_cases
   \\ once_rewrite_tac [eval_expr_float_def]
   \\ fs[noDowncast_def]
-  >- (
-    simp [toFlEnv_def, eval_expr_cases, fp64_to_real_def,
-        real_to_fp64_def, fp64_to_float_float_to_fp64]
-    \\ gs[usedVars_def]
-    \\ first_x_assum $ qspecl_then [‘n’, ‘vR’] assume_tac
-    \\ gs[])
+  >- gs [toREnv_def, eval_expr_cases, fp64_to_real_def,
+         real_to_fp64_def, fp64_to_float_float_to_fp64,
+         CaseEq"option"]
   >- (
     simp[eval_expr_cases, fp64_to_real_def, real_to_fp64_def,
          fp64_to_float_float_to_fp64, real_to_float_def, dmode_def,
          float_round_def, float_is_zero_to_real]
     \\ gs[perturb_def]
-    \\ ‘eval_expr E2 (toRExpMap Gamma) (Const M64 v) v M64’
+    \\ ‘eval_expr (toREnv E2) (toRExpMap Gamma) (Const M64 v) v M64’
       by (gs[eval_expr_cases]
           \\ qexists_tac ‘0’ \\ gs[perturb_def, mTypeToR_pos])
     \\ ‘validFloatValue v M64’
@@ -145,15 +136,26 @@ Proof
            \\ irule REAL_LT_TRANS
            \\ first_assum $ irule_at Any
            \\ fs[minExponentPos_def])
-          \\ rpt conj_tac >- gs[]
+          \\ rpt conj_tac
           >~ [‘1 < INT_MAX (:11)’] >- gs[]
-          \\ irule REAL_LET_TRANS \\ qexists_tac ‘2 / 2 pow (INT_MAX (:11) - 1)’
-          \\ reverse conj_tac
-          >- (pop_assum $ mp_tac \\ REAL_ARITH_TAC)
-          \\ gs[threshold_def]
-          \\ rewrite_tac [REAL_INV_1OVER] \\ EVAL_TAC)
-      \\ rpt strip_tac \\ qexists_tac ‘e’ \\ gs[]
-      \\ TOP_CASE_TAC \\ gs[minExponentPos_def])
+          >- (
+            irule REAL_LTE_TRANS
+            \\ first_assum $ irule_at Any
+            \\ simp[threshold_def]
+            \\ rewrite_tac[REAL_INV_1OVER]
+            \\ EVAL_TAC)
+          \\ irule REAL_LTE_TRANS \\ qexists_tac ‘2 / 2 pow (INT_MAX (:11) - 1)’
+          \\ reverse conj_tac >- gs[]
+          \\ pop_assum $ mp_tac \\ REAL_ARITH_TAC)
+      \\ rpt strip_tac \\ TOP_CASE_TAC \\ gs[minExponentPos_def]
+      >- (
+        qexists_tac ‘-v’ \\ gs[]
+        \\ irule REAL_LE_TRANS \\ first_x_assum $ irule_at Any
+        \\ gs[])
+      \\ qexists_tac ‘float_to_real ((round roundTiesToEven v):(52,11) float) - v’ \\ gs[]
+      \\ conj_tac >- REAL_ARITH_TAC
+      \\ irule REAL_LE_TRANS \\ first_x_assum $ irule_at Any
+      \\ gs[])
     >- (gvs[denormal_def] \\ qexists_tac ‘0’ \\ gs[mTypeToR_pos])
   )
   >- (
@@ -358,9 +360,9 @@ Proof
     \\ rename1 `eval_expr E1 _ (toREval e2) nR2 REAL`
     \\ rename1 `eval_expr E1 _ (toREval e1) nR1 REAL`
     (* Obtain evaluation for E2 *)
-    \\ ‘!vF2 m2. eval_expr E2 (toRExpMap Gamma) e2 vF2 m2 ==>
+    \\ ‘!vF2 m2. eval_expr (toREnv E2) (toRExpMap Gamma) e2 vF2 m2 ==>
        abs (nR2 - vF2) <= err2’
-      by (qspecl_then [`e2`, `E1`, `E2`, `A`,`nR2`,
+      by (qspecl_then [`e2`, `E1`, `toREnv E2`, `A`,`nR2`,
                        `err2`, `FST iv2`, `SND iv2`, `fVars`,
                        `dVars`,`Gamma`] destruct validErrorbound_sound
           \\ rpt conj_tac \\ fs[]
@@ -865,9 +867,9 @@ Proof
           \\ rw_asm_star `FloverMapTree_find (Fma _ _ _) Gamma = _`)
       \\ rw_thm_asm `domain (usedVars _) DIFF _ SUBSET _` usedVars_def
       \\ fs[domain_union, DIFF_DEF, SUBSET_DEF])
-      \\ rename1 ‘eval_expr_float (toFlExp e1) (toFlEnv E2) = SOME vF1’
-      \\ rename1 ‘eval_expr_float (toFlExp e2) (toFlEnv E2) = SOME vF2’
-      \\ rename1 ‘eval_expr_float (toFlExp e3) (toFlEnv E2) = SOME vF3’
+      \\ rename1 ‘eval_expr_float (toFlExp e1) E2 = SOME vF1’
+      \\ rename1 ‘eval_expr_float (toFlExp e2) E2 = SOME vF2’
+      \\ rename1 ‘eval_expr_float (toFlExp e3) E2 = SOME vF3’
       \\ `validFloatValue
             (evalFma (float_to_real (fp64_to_float vF1))
              (float_to_real (fp64_to_float vF2))
@@ -1255,14 +1257,12 @@ Theorem IEEE_connection_expr:
       fVars_P_sound fVars E1 P /\
       (domain (usedVars e)) SUBSET (domain fVars) /\
       CertificateChecker e A P defVars = SOME Gamma /\
-      (∀ x v. E2 x = SOME v ⇒
-              float_to_real ((real_to_float dmode v):(52,11) float) = v) ∧
-      approxEnv E1 (toRExpMap Gamma) A fVars LN E2 ⇒
+      approxEnv E1 (toRExpMap Gamma) A fVars LN (toREnv E2) ⇒
         ?iv err vR vF. (* m, currently = M64 *)
           FloverMapTree_find e A = SOME (iv, err) /\
           eval_expr E1 (toRTMap (toRExpMap Gamma)) (toREval e) vR REAL /\
-          eval_expr_float (toFlExp e) (toFlEnv E2) = SOME vF /\
-          eval_expr E2 (toRExpMap Gamma) e (fp64_to_real vF) M64 /\
+          eval_expr_float (toFlExp e) E2 = SOME vF /\
+          eval_expr (toREnv E2) (toRExpMap Gamma) e (fp64_to_real vF) M64 /\
           abs (vR - (fp64_to_real vF)) <= err
 Proof
   simp [CertificateChecker_def]
diff --git a/hol4/Infra/FloverCompLib.sml b/hol4/Infra/FloverCompLib.sml
index 0e0dd4f8..09fd7850 100644
--- a/hol4/Infra/FloverCompLib.sml
+++ b/hol4/Infra/FloverCompLib.sml
@@ -1,3 +1,6 @@
+(**
+  Small changes to computeLib for FloVer
+**)
 structure FloverCompLib =
 struct
 open computeLib;
diff --git a/hol4/Infra/Holmakefile b/hol4/Infra/Holmakefile
index 38c73a13..e64c77e7 100644
--- a/hol4/Infra/Holmakefile
+++ b/hol4/Infra/Holmakefile
@@ -1,3 +1 @@
-INCLUDES = $(HOLDIR)/examples/machine-code/hoare-triple $(HOLDIR)/examples/fun-op-sem/lprefix_lub
-
 OPTIONS = QUIT_ON_FAILURE
diff --git a/hol4/Infra/MachineTypeScript.sml b/hol4/Infra/MachineTypeScript.sml
index b42d184a..39e8a999 100644
--- a/hol4/Infra/MachineTypeScript.sml
+++ b/hol4/Infra/MachineTypeScript.sml
@@ -4,27 +4,19 @@
   @author: Raphael Monat
   @maintainer: Heiko Becker
  **)
-open realTheory realLib integerTheory;
+open realTheory realLib;
 open RealSimpsTheory;
 open preambleFloVer;
 
 val _ = new_theory "MachineType";
 
-Overload abs[local] = “real$abs”
+Overload abs[local] = “realax$abs”
 
 val _ = monadsyntax.enable_monadsyntax();
 val _ = List.app monadsyntax.enable_monad ["option"];
 
 Datatype:
-  mType = REAL
-  (* Floating point formats *)
-  | M16 | M32 | M64
-  (* Fixed point formats:
-   * first num is word length,
-   * second is fractional bits,
-   * bool is for sign of fractional bits, inverse of the exponent sign with T <=> positive
-   *)
-  | F num num bool
+  mType = REAL | M16 | M32 | M64 | F num num bool (* first num is word length, second is fractional bits, bool is for sign of fractional bits *)
 End
 
 Definition isFixedPoint_def :
@@ -189,8 +181,9 @@ QED
   REAL is real-valued evaluation, hence the most precise.
   All floating-point types are compared by
     mTypeToQ m1 <= mTypeToQ m2
-  All fixed-point types are compared by comparing the positions of the
-  least and most significant bits. It is equivalent to a subset check.
+  All fixed-point types are compared by comparing only the word size
+  We consider a 32 bit fixed-point number to be more precise than a 16 bit
+  fixed-point number, no matter what the fractional bits may be.
   For the moment, fixed-point and floating-point formats are incomparable.
  **)
 Definition isMorePrecise_def:
@@ -198,8 +191,13 @@ Definition isMorePrecise_def:
     case m1, m2 of
     | REAL, _ => T
     | F w1 f1 s1, F w2 f2 s2 =>
-      let exp1: int = if s1 then &f1 else -&f1 ; exp2 = if s2 then &f2 else -&f2 in
-      &w2 + exp2 <= &w1 + exp1 /\ exp1 <= exp2
+                    if s1 then
+                      if s2 then
+                        (w2 ≤ w1 ∧ f2 ≤ f1)
+                      else
+                        (w2 ≤ w1)
+                    else if s2 then F
+                    else (w2 ≤ w1 ∧ f2 ≤ f1)
     | F w f s, _ => F
     | _, F w f s=> F
     | M16, M16 => T
@@ -217,8 +215,13 @@ End
 Definition morePrecise_def:
   (morePrecise REAL _ = T) /\
   (morePrecise (F w1 f1 s1) (F w2 f2 s2) =
-    let exp1: int = if s1 then &f1 else -&f1 ; exp2 = if s2 then &f2 else -&f2 in
-    &w2 + exp2 <= &w1 + exp1 /\ exp1 <= exp2) /\
+               (if s1 then
+                  if s2 then
+                    (w2 ≤ w1 ∧ f2 ≤ f1)
+                  else
+                    (w2 ≤ w1)
+                else if s2 then F
+                else (w2 ≤ w1 ∧ f2 ≤ f1))) ∧
   (morePrecise (F w f s) _ = F) /\
   (morePrecise _ (F w f s) = F) /\
   (morePrecise M16 M16 = T) /\
@@ -238,7 +241,7 @@ Proof
   rpt strip_tac
   \\ Cases_on `m1` \\ Cases_on `m2` \\ Cases_on `m3`
   \\ fs[morePrecise_def]
-  \\ ntac 2 $ dxrule_all INT_LE_TRANS \\ simp[]
+  \\ every_case_tac \\ gs[]
 QED
 
 Theorem isMorePrecise_morePrecise:
@@ -302,7 +305,7 @@ End
 Definition isJoin_def:
   isJoin m1 m2 mj =
     if (isFixedPoint m1 /\ isFixedPoint m2)
-    then morePrecise mj m1 /\ morePrecise mj m2
+    then morePrecise m1 mj /\ morePrecise m2 mj
     else
       (case join_fl m1 m2 of
       |NONE => F
@@ -312,7 +315,7 @@ End
 Definition isJoin3_def:
   isJoin3 m1 m2 m3 mj =
     if (isFixedPoint m1 /\ isFixedPoint m2 /\ isFixedPoint m3)
-    then morePrecise mj m1 /\ morePrecise mj m2 /\ morePrecise mj m3
+    then morePrecise m1 mj /\ morePrecise m2 mj /\ morePrecise m3 mj
     else
       (case join_fl3 m1 m2 m3 of
        |NONE => F
diff --git a/hol4/Infra/RealSimpsScript.sml b/hol4/Infra/RealSimpsScript.sml
index 7efdcad7..4889a634 100644
--- a/hol4/Infra/RealSimpsScript.sml
+++ b/hol4/Infra/RealSimpsScript.sml
@@ -7,8 +7,8 @@ open preambleFloVer;
 
 val _ = new_theory "RealSimps";
 
-Overload abs[local] = “real$abs”
-Overload max[local] = “real$max”
+Overload abs[local] = “realax$abs”
+Overload max[local] = “realax$max”
 
 Theorem abs_leq_zero[simp]:
   !v. abs v <= 0 <=> v = 0
diff --git a/hol4/Infra/ResultsLib.sml b/hol4/Infra/ResultsLib.sml
index 43ea08a2..6318af10 100644
--- a/hol4/Infra/ResultsLib.sml
+++ b/hol4/Infra/ResultsLib.sml
@@ -1,3 +1,6 @@
+(**
+  A monad for results used by FlOVer
+**)
 structure ResultsLib =
 struct
 
diff --git a/hol4/IntervalArithScript.sml b/hol4/IntervalArithScript.sml
index 35e5e726..b3aeeb09 100644
--- a/hol4/IntervalArithScript.sml
+++ b/hol4/IntervalArithScript.sml
@@ -10,9 +10,9 @@ val _ = temp_delsimps ["NORMEQ_CONV"]
 
 val _ = new_theory "IntervalArith";
 
-Overload abs[local] = “real$abs”
-Overload max[local] = “real$max”
-Overload min[local] = “real$min”
+Overload abs[local] = “realax$abs”
+Overload max[local] = “realax$max”
+Overload min[local] = “realax$min”
 
 (**
   Define validity of an interval, requiring that the lower bound is less than or equal to the upper bound.
diff --git a/hol4/IntervalValidationScript.sml b/hol4/IntervalValidationScript.sml
index 59b0e6f7..ce147989 100644
--- a/hol4/IntervalValidationScript.sml
+++ b/hol4/IntervalValidationScript.sml
@@ -19,9 +19,9 @@ val _ = temp_delsimps ["RMUL_LEQNORM"]
 
 val _ = Parse.hide "delta"; (* so that it can be used as a variable *)
 
-Overload abs[local] = “real$abs”
-Overload max[local] = “real$max”
-Overload min[local] = “real$min”
+Overload abs[local] = “realax$abs”
+Overload max[local] = “realax$max”
+Overload min[local] = “realax$min”
 
 (** Define a global iteration count for square roots **)
 Definition ITERCOUNT_def:
diff --git a/hol4/TypeValidatorScript.sml b/hol4/TypeValidatorScript.sml
index 1ecb6fe9..d067079b 100644
--- a/hol4/TypeValidatorScript.sml
+++ b/hol4/TypeValidatorScript.sml
@@ -138,7 +138,7 @@ Definition getValidMap_def:
           case mOldO of
           | NONE => Fail "Undefined fixed-point type"
           | SOME mj =>
-            if (morePrecise mj t1 /\ morePrecise mj t2)
+            if (morePrecise t1 mj /\ morePrecise t2 mj)
             then addMono e mj akk2_map
             else Fail "Incorrect fixed-point type"
         else
@@ -172,7 +172,7 @@ Definition getValidMap_def:
           case mOldO of
           | NONE => Fail "Undefined fixed-point type"
           | SOME mj =>
-            if (morePrecise mj t1 /\ morePrecise mj t2 /\ morePrecise mj t3)
+            if (morePrecise t1 mj /\ morePrecise t2 mj /\ morePrecise t3 mj)
             then addMono e mj akk3_map
             else Fail "Incorrect fixed-point type"
         else if (t1 = REAL ∨ t2 = REAL ∨ t3 = REAL)
@@ -261,7 +261,7 @@ Proof
       \\ Cases_on `getValidMap Gamma e1 akk` \\ fs[result_bind_def]
       \\ Cases_on `getValidMap Gamma e2 a` \\ fs[option_case_eq]
       \\ Cases_on `isFixedPoint t1` \\ Cases_on `isFixedPoint t2` \\ fs[option_case_eq]
-      >- (Cases_on `morePrecise mj t1` \\ Cases_on `morePrecise mj t2`
+      >- (Cases_on `morePrecise t1 mj` \\ Cases_on `morePrecise t2 mj`
           \\ fs[addMono_def, option_case_eq]
           \\ rveq \\ res_tac
           \\ by_monotonicity)
@@ -284,9 +284,9 @@ Proof
       \\ Cases_on `isFixedPoint t2`
       \\ Cases_on `isFixedPoint t3`
       \\ fs[option_case_eq]
-      >- (Cases_on `morePrecise mj t1`
-          \\ Cases_on `morePrecise mj t2`
-          \\ Cases_on `morePrecise mj t3`
+      >- (Cases_on `morePrecise t1 mj`
+          \\ Cases_on `morePrecise t2 mj`
+          \\ Cases_on `morePrecise t3 mj`
           \\ fs[addMono_def, option_case_eq]
           \\ rveq \\ res_tac
           \\ by_monotonicity)
@@ -484,7 +484,7 @@ Proof
         by (rpt strip_tac \\ first_x_assum irule \\ fs[]
             \\ qexistsl_tac [`Gamma`, `a`] \\ fs[])
       \\ Cases_on ‘isFixedPoint x ∧ isFixedPoint x'’
-      >- (fs[option_case_eq] \\ Cases_on `morePrecise mj x` \\ Cases_on `morePrecise mj x'`
+      >- (fs[option_case_eq] \\ Cases_on `morePrecise x mj` \\ Cases_on `morePrecise x' mj`
           \\ fs[addMono_def, option_case_eq]
           \\ rveq \\ fs[FloverMapTree_mem_def, map_find_add]
           \\ reverse (Cases_on `e'' = Binop b e1 e2`) \\ fs[]
@@ -613,8 +613,8 @@ Proof
             \\ qexistsl_tac [`Gamma`, `map2`] \\ fs[])
       \\ Cases_on `isFixedPoint x /\ isFixedPoint x' /\ isFixedPoint x''`
       >- (fs[option_case_eq]
-          \\ Cases_on `morePrecise mj x` \\ Cases_on `morePrecise mj x'`
-          \\ Cases_on `morePrecise mj x''`
+          \\ Cases_on `morePrecise x mj` \\ Cases_on `morePrecise x' mj`
+          \\ Cases_on `morePrecise x'' mj`
           \\ fs[addMono_def, option_case_eq]
           \\ rveq \\ fs[FloverMapTree_mem_def, map_find_add]
           \\ rename1 `if eNew = Fma e1 e2 e3 then SOME mj else _`
diff --git a/hol4/semantics/ExpressionSemanticsScript.sml b/hol4/semantics/ExpressionSemanticsScript.sml
index 04695592..8f43dbab 100644
--- a/hol4/semantics/ExpressionSemanticsScript.sml
+++ b/hol4/semantics/ExpressionSemanticsScript.sml
@@ -8,7 +8,7 @@ open preambleFloVer;
 
 val _ = new_theory "ExpressionSemantics";
 
-Overload abs = “real$abs”
+Overload abs = “realax$abs”
 
 (**
   Define a perturbation function to ease writing of basic definitions
@@ -355,4 +355,25 @@ Proof
   \\ metis_tac[]
 QED
 
+Theorem swap_gamma_eval_weak:
+  ∀ e E vR m Gamma1 Gamma2.
+    (∀ e m. Gamma1 e = SOME m ⇒ Gamma2 e = SOME m) ∧
+    eval_expr E Gamma1 e vR m ⇒
+    eval_expr E Gamma2 e vR m
+Proof
+  Induct_on `e` \\ fs[eval_expr_cases] \\ rpt strip_tac
+  >- metis_tac[]
+  >- metis_tac[]
+  >- metis_tac[]
+  >- (
+    res_tac
+    >> rpt $ first_x_assum $ irule_at Any
+    >> gs[])
+  >- (
+    res_tac
+    >> rpt $ first_x_assum $ irule_at Any
+    >> gs[])
+  >- metis_tac[]
+QED
+
 val _ = export_theory();
diff --git a/hol4/semantics/ExpressionsScript.sml b/hol4/semantics/ExpressionsScript.sml
index c4144093..bee53e85 100644
--- a/hol4/semantics/ExpressionsScript.sml
+++ b/hol4/semantics/ExpressionsScript.sml
@@ -1,13 +1,13 @@
 (**
   Formalization of the base expression language for the flover framework
  **)
-open realTheory realLib sptreeTheory
+open realTheory realLib RealArith sptreeTheory intrealTheory;
 open AbbrevsTheory MachineTypeTheory
 open preambleFloVer;
 
 val _ = new_theory "Expressions";
 
-Overload abs = “real$abs”
+Overload abs = “realax$abs”
 
 (**
   expressions will use binary operators.
@@ -98,4 +98,14 @@ Definition usedVars_def:
       | _ => LN
 End
 
+Definition ratExp2realExp_def:
+  ratExp2realExp ((Const m (c,d)):(int#int) expr):real expr =
+  Const m ((real_of_int c) / (real_of_int d)) ∧
+  ratExp2realExp (Var x) = Var x ∧
+  ratExp2realExp (Unop u e1) = Unop u (ratExp2realExp e1) ∧
+  ratExp2realExp (Binop b e1 e2) = Binop b (ratExp2realExp e1) (ratExp2realExp e2) ∧
+  ratExp2realExp (Fma e1 e2 e3) = Fma (ratExp2realExp e1) (ratExp2realExp e2) (ratExp2realExp e3) ∧
+  ratExp2realExp (Downcast m e1) = Downcast m (ratExp2realExp e1)
+End
+
 val _ = export_theory();
diff --git a/hol4/semantics/expressionsLib.sml b/hol4/semantics/expressionsLib.sml
new file mode 100644
index 00000000..8829fc7f
--- /dev/null
+++ b/hol4/semantics/expressionsLib.sml
@@ -0,0 +1,85 @@
+structure expressionsLib = struct
+
+  open HolKernel Parse Abbrev ExpressionsTheory;
+  open RealArith realTheory realLib integerTheory intLib bossLib;
+
+  exception FloVerException of string;
+
+  val fvar_tm     = “Expressions$Var”
+  val fconst_tm   = “Expressions$Const”
+  val unop_tm     = “Expressions$Unop”
+  val bop_tm      = “Expressions$Binop”
+  val fma_tm      = “Expressions$Fma”
+  val downcast_tm = “Expressions$Downcast”
+
+  local fun err s = FloVerException ("Not a FloVer " ^ s) in
+  val dest_fvar     = HolKernel.dest_monop fvar_tm     $ err "var"
+  val dest_fconst   = HolKernel.dest_binop fconst_tm    $ err "const"
+  val dest_unop     = HolKernel.dest_binop unop_tm     $ err "unop"
+  val dest_bop      = HolKernel.dest_triop bop_tm      $ err "bop"
+  val dest_fma      = HolKernel.dest_triop fma_tm      $ err "fma"
+  val dest_downcast = HolKernel.dest_binop downcast_tm $ err "downcast"
+  end;
+
+  local fun getArgTy t = type_of t |> dest_type |> snd |> hd in
+  fun mk_fvar ty n = mk_comb (fvar_tm, n) |> inst [alpha |-> ty]
+  fun mk_fconst m c = list_mk_comb (inst [alpha |-> type_of c] fconst_tm, [m, c])
+  fun mk_unop u e =
+    list_mk_comb (inst [alpha |-> getArgTy e] unop_tm, [u, e])
+  fun mk_bop b e1 e2 =
+    list_mk_comb (inst [alpha |-> getArgTy e1] bop_tm, [b, e1, e2])
+  fun mk_fma e1 e2 e3 =
+    list_mk_comb (inst [alpha |-> getArgTy e1] fma_tm, [e1, e2, e3])
+  fun mk_downcast m e =
+    list_mk_comb (inst [alpha |-> getArgTy e] downcast_tm, [m, e])
+  end;
+
+  val is_fvar     = can dest_fvar
+  val is_fconst   = can dest_fconst
+  val is_unop     = can dest_unop
+  val is_bop      = can dest_bop
+  val is_fma      = can dest_fma
+  val is_downcast = can dest_downcast
+
+  fun realExp2ratExp (t:term) :term =
+    if type_of t = “:real expr” then
+      if is_fvar t then let
+        val var = dest_fvar t in
+        mk_fvar “:(int # int)” var end
+      else if is_fconst t then let
+        val (m,cst) = dest_fconst t
+        val (n,d) =
+          if realSyntax.is_div cst then
+            realSyntax.dest_div cst
+          else raise FloVerException ("Not a rational number" ^ (term_to_string cst))
+        val ni =
+          if realSyntax.is_real_literal n then
+            intSyntax.term_of_int $ realSyntax.int_of_term n
+          else raise FloVerException "Nominator not constant"
+        val di =
+          if realSyntax.is_real_literal d then
+            intSyntax.term_of_int $ realSyntax.int_of_term d
+          else raise FloVerException "Denominator not constant"
+        in
+          mk_fconst m (Parse.Term ‘(^ni, ^di)’) end
+      else if is_unop t then let
+        val (uop, e) = dest_unop t in
+        mk_unop uop (realExp2ratExp e) end
+      else if is_bop t then let
+        val (bop, e1, e2) = dest_bop t in
+        mk_bop bop (realExp2ratExp e1) (realExp2ratExp e2) end
+      else if is_fma t then let
+        val (e1, e2, e3) = dest_fma t in
+        mk_fma (realExp2ratExp e1) (realExp2ratExp e2) (realExp2ratExp e3) end
+      else if is_downcast t then let
+        val (m, e) = dest_downcast t in
+        mk_downcast m (realExp2ratExp e) end
+      else raise FloVerException ("Unsupported expression constructor in" ^ (term_to_string t))
+    else raise FloVerException "Not a real-valued expression";
+
+  fun realExp2ratExpConv t =
+    let val t_rat = realExp2ratExp t in
+      EVAL “^t = ratExp2realExp ^t_rat” |> Rewrite.REWRITE_RULE [boolTheory.EQ_CLAUSES]
+    end;
+
+end;
-- 
GitLab