(* ---------------------------------------------------------------------- *)
(*  Nums                                                                  *)
(* ---------------------------------------------------------------------- *)
let neq = `(=):num->num->bool`;;
let nlt = `(<):num->num->bool`;;
let ngt = `(>):num->num->bool`;;
let nle = `(<=):num->num->bool`;;
let nge = `(>=):num->num->bool`;;
let nm = `( * ):num->num->num`;;
let np = `(+):num->num->num`;;
let nzero = `0`;;
let even_tm = `EVEN`;;
let odd_tm = `ODD`;;
(* }}} *)
let even_tm = `EVEN`;;
let odd_tm = `ODD`;;
let PARITY_CONV tm = 
  let k = dest_small_numeral tm in
  if even k then
    prove(mk_comb(even_tm,tm),ARITH_TAC)
  else 
    prove(mk_comb(odd_tm,tm),ARITH_TAC);;