anchor.diff:           MESON_TAC [REAL_MUL_SYM; REAL_LT_LMUL])
   
   let REAL_EQ_MUL_LCANCEL = 
  +#if BUGGY
       prove
           ((parse_term @"!x y z. (x * y = x * z) <=> (x = &0) \/ (y = z)"), 
            REPEAT GEN_TAC
  
positive.code:     prove((parse_term @"!x. (--x <= x) <=> (&0 <= x)"), REAL_ARITH_TAC)
  let REAL_LE_NEGR = 
      prove((parse_term @"!x. (x <= --x) <=> (x <= &0)"), REAL_ARITH_TAC)
  let REAL_NEG_EQ_0 = 
      prove((parse_term @"!x. (--x = &0) <=> (x = &0)"), REAL_ARITH_TAC)
  let REAL_ADD_SUB = prove((parse_term @"!x y. (x + y) - x = y"), REAL_ARITH_TAC)
  let REAL_NEG_EQ = 
      prove((parse_term @"!x y. (--x = y) <=> (x = --y)"), REAL_ARITH_TAC)
  let REAL_NEG_MINUS1 = 
      prove((parse_term @"!x. --x = (--(&1)) * x"), REAL_ARITH_TAC)
  let REAL_LT_IMP_NE = 
      prove((parse_term @"!x y. x < y ==> ~(x = y)"), REAL_ARITH_TAC)
  let REAL_LE_ADDR = 
      prove((parse_term @"!x y. x <= x + y <=> &0 <= y"), REAL_ARITH_TAC)
  let REAL_LE_ADDL = 
  
negative.code:          |> THEN <| REWRITE_TAC [real_div; REAL_INV_MUL; REAL_INV_INV]
           |> THEN <| REAL_ARITH_TAC)
  
  let REAL_SGN_EQ = 
  #if BUGGY
      prove((parse_term @"(!x. real_sgn x = &0 <=> x = &0) /\
         (!x. real_sgn x = &1 <=> x > &0) /\
         (!x. real_sgn x = -- &1 <=> x < &0)"), REWRITE_TAC [real_sgn]
                                                |> THEN <| REAL_ARITH_TAC)
  #else
      Sequent([],parse_term @"!x n. x pow n = &1 <=> abs(x) = &1 /\ (x < &0 ==> EVEN(n)) \/ n = 0")
  #endif
  
  let REAL_SGN_CASES = 
      prove
          ((parse_term @"!x. real_sgn x = &0 \/ real_sgn x = &1 \/ real_sgn x = -- &1"), 
  