NUM_RED_CONV : term -> thm

SYNOPSIS
Performs one arithmetic or relational operation on natural number numerals by proof.

DESCRIPTION
When applied to a term that is either a unary operator application `SUC n`, `PRE n` or `FACT n` for a numeral n, or a relational operator application `m < n`, `m <= n`, `m > n`, `m >= n` or `m = n`, or a binary arithmetic operation `m + n`, `m - n`, `m * n`, `m EXP n`, `m DIV n` or `m MOD n` applied to numerals m and n, the conversion NUM_RED_CONV will `reduce' it and return a theorem asserting its equality to the reduced form.

FAILURE CONDITIONS
NUM_RED_CONV tm fails if tm is not of one of the forms specified.

EXAMPLE
  # NUM_RED_CONV `2 + 2`;;
  val it : thm = |- 2 + 2 = 4

  # NUM_RED_CONV `1089 < 2231`;;
  val it : thm = |- 1089 < 2231 <=> T

  # NUM_RED_CONV `FACT 11`;;
  val it : thm = |- FACT 11 = 39916800
Note that the immediate operands must be numerals. For deeper reduction of combinations of numerals, use NUM_REDUCE_CONV:
  # NUM_RED_CONV `(432 - 234) + 198`;;
  Exception: Failure "REWRITES_CONV".

  # NUM_REDUCE_CONV `(432 - 234) + 198`;;
  val it : thm = |- 432 - 234 + 198 = 396

USES
Access to this `one-step' reduction is not usually especially useful, but if you want to add a conversion conv for some other operator on numbers, you can conveniently incorporate it into NUM_REDUCE_CONV with
  # let NUM_REDUCE_CONV' = DEPTH_CONV(REAL_RAT_RED_CONV ORELSEC conv);;

SEE ALSO
NUM_ADD_CONV, NUM_DIV_CONV, NUM_EQ_CONV, NUM_EVEN_CONV, NUM_EXP_CONV, NUM_FACT_CONV, NUM_GE_CONV, NUM_GT_CONV, NUM_LE_CONV, NUM_LT_CONV, NUM_MAX_CONV, NUM_MIN_CONV, NUM_MOD_CONV, NUM_MULT_CONV, NUM_ODD_CONV, NUM_PRE_CONV, NUM_REDUCE_CONV, NUM_REL_CONV, NUM_SUB_CONV, NUM_SUC_CONV, REAL_RAT_RED_CONV.