(* ---------------------------------------------------------------------- *)
(* 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);;