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: 
  // REAL_RING: Ring decision procedure instantiated to real numbers.
  // real_ideal_cofactors: Produces cofactors proving that one real polynomial is in the ideal generated by others.
  let REAL_RING,real_ideal_cofactors =
     let REAL_INTEGRAL = 
     #if BUGGY
       prove((parse_term @"(!x. &0 * x = &0) /\
  
negative.code:                    y2', y2;
                     x3', x3;
                     y3', y3] pth
           let! th1 = funpow 3 (MP_CONV REAL_INT_LT_CONV) th0
           let! (tm1, _) = dest_imp(concl th1) 
           let! tm2, tm3 = dest_eq tm1
           let th2 = (LAND_CONV(BINOP_CONV REAL_INT_MUL_CONV
                                |> THENC <| REAL_INT_ADD_CONV)
                      |> THENC <| REAL_INT_MUL_CONV) tm2
           let th3 = (RAND_CONV REAL_INT_MUL_CONV
                      |> THENC <| REAL_INT_MUL_CONV) tm3
           return! MP (Choice.result th1) (TRANS th2 (SYM th3))
      }
  
    BINOP_CONV REAL_INT_RAT_CONV
  