SUC_TO_NUMERAL_DEFN_CONV : conv
This procedure uses the following theorem:
  |- !f g. (!n. f (SUC n) = g n (SUC n)) =
           (!n. f (NUMERAL (NUMERAL_BIT1 n)) =
                g (NUMERAL (NUMERAL_BIT1 n))
                  (NUMERAL (NUMERAL_BIT1 n) - 1)) /\
           (!n. f (NUMERAL (NUMERAL_BIT2 n)) =
                g (NUMERAL (NUMERAL_BIT2 n))
                  (NUMERAL (NUMERAL_BIT1 n)))
- CONV_RULE SUC_TO_NUMERAL_DEFN_CONV arithmeticTheory.FACT;
> val it =
    |- (FACT 0 = 1) /\
       (!n.
          FACT (NUMERAL (NUMERAL_BIT1 n)) =
            NUMERAL (NUMERAL_BIT1 n) *
            FACT (NUMERAL (NUMERAL_BIT1 n) - 1)) /\
       !n.
         FACT (NUMERAL (NUMERAL_BIT2 n)) =
           NUMERAL (NUMERAL_BIT2 n) *
           FACT (NUMERAL (NUMERAL_BIT1 n)) : thm