anchor.diff:                      |> THENC <| NUM_LT_CONV
                       GEN_REWRITE_CONV I [pth_lt3]
                       |> THENC <| NUM2_NE_CONV]
  -    let [pth_ge1; pth_ge2a; pth_ge2b; pth_ge3] = (CONJUNCTS << prove)((parse_term "(&m >= --(&n) <=> T) /\
  +    let [pth_ge1; pth_ge2a; pth_ge2b; pth_ge3] = 
  +      (CONJUNCTS << prove)((parse_term "(&m >= --(&n) <=> T) /\
         (&m >= &n <=> n <= m) /\
         (--(&m) >= --(&n) <=> m <= n) /\
  -      (--(&m) >= &n <=> (m = 0) /\ (n = 0))"), REWRITE_TAC 
  -                                                   [pth_le1; pth_le2a; pth_le2b; 
  -                                                    pth_le3; INT_GE]
  +      (--(&m) >= &n <=> (m = 0) /\ (n = 0))"), REWRITE_TAC [pth_le1; pth_le2a; pth_le2b; pth_le3; INT_GE]
                                                  |> THEN <| CONV_TAC TAUT)
       let INT_GE_CONV = 
           FIRST_CONV [GEN_REWRITE_CONV I [pth_ge1]
  
positive.code:              (parse_term "(*):int->int->int"), genvar bool_ty, 
               (parse_term "(pow):int->num->int"), INT_INTEGRAL, TRUTH, 
               INT_POLY_CONV)
      pure, (fun tms tm -> 
          if forall (fun t -> type_of t = int_ty) (tm :: tms)
          then ideal tms tm
          else failwith "int_ideal_cofactors: not all terms have type :int")
  
negative.code: 
  let INT_WOP = 
      prove((parse_term "(?x. &0 <= x /\ P x) <=>
      (?x. &0 <= x /\ P x /\ !y. &0 <= y /\ P y ==> x <= y)"), ONCE_REWRITE_TAC 
         [MESON [] (parse_term "(?x. P x /\ Q x) <=> ~(!x. P x ==> ~Q x)")]
     |> THEN <| REWRITE_TAC [IMP_CONJ
                             GSYM INT_FORALL_POS
  