anchor.diff:                    |> THEN <| ASM_REWRITE_TAC []
                     DISCH_THEN(fun th -> ASM_REWRITE_TAC [MATCH_MP RAT_LEMMA5 th])])
   
  -  let dest_divop = Choice.get << dest_binop(parse_term @"(/)")
  -  let dest_addop = Choice.get << dest_binop(parse_term @"(+)")
  +  let dest_divop = dest_binop(parse_term @"(/)")
  +  let dest_addop = dest_binop(parse_term @"(+)")
  +
     let x1 = (parse_term @"x1:real")
     let x2 = (parse_term @"x2:real")
     let x3 = (parse_term @"x3:real")
  
positive.code: let REAL_ARITH =
    let init = GEN_REWRITE_CONV ONCE_DEPTH_CONV [DECIMAL]
    let ``pure`` = GEN_REAL_ARITH REAL_LINEAR_PROVER
    fun tm -> 
      let th = init tm 
      EQ_MP (SYM th) (``pure``(Choice.get <| rand(concl <| Choice.get th)))
  
  /// Attempt to prove goal using basic algebra and linear arithmetic over the reals.
  let REAL_ARITH_TAC = CONV_TAC REAL_ARITH
  
negative.code: /// Performs one arithmetic or relational operation on rational literals of type :real.
  let REAL_RAT_RED_CONV = 
      let gconv_net = 
          Choice.List.fold (fun acc (term, conv) -> net_of_conv term conv acc) (basic_net())
                                       [(parse_term @"x <= y"), REAL_RAT_LE_CONV;
                                        (parse_term @"x < y"), REAL_RAT_LT_CONV;
                                        (parse_term @"x >= y"), REAL_RAT_GE_CONV;
  