anchor.diff:               |> THEN <| REWRITE_TAC [GSYM INT_ENTIRE]
                |> THEN <| INT_ARITH_TAC)
       let int_ty = (parse_type ":int")
  -    let pure, ideal = 
  +    let ``pure``, ideal = 
           RING_AND_IDEAL_CONV
               (dest_intconst, mk_intconst, INT_EQ_CONV, 
                (parse_term "(--):int->int"), (parse_term "(+):int->int->int"), 
  
positive.code:                     |> 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) /\
        (&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]
                                                 |> THEN <| CONV_TAC TAUT)
      let INT_GE_CONV = 
          FIRST_CONV [GEN_REWRITE_CONV I [pth_ge1]
  
negative.code:     new_specification ["div"
                         "rem"] (REWRITE_RULE [SKOLEM_THM] INT_DIVMOD_EXIST_0)
  
  let INT_DIVISION = 
      prove((parse_term "!m n. ~(n = &0)
             ==> m = m div n * n + m rem n /\ &0 <= m rem n /\ m rem n < abs n"),
            MESON_TAC [INT_DIVISION_0])
  
  