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 (BIT1 n)) =
g (NUMERAL (BIT1 n)) (NUMERAL (BIT1 n) - 1)) /\
(!n. f (NUMERAL (BIT2 n)) =
g (NUMERAL (BIT2 n)) (NUMERAL (BIT1 n)))
- CONV_RULE SUC_TO_NUMERAL_DEFN_CONV arithmeticTheory.FACT;
> val it =
|- (FACT 0 = 1) /\
(!n.
FACT (NUMERAL (BIT1 n)) =
NUMERAL (BIT1 n) * FACT (NUMERAL (BIT1 n) - 1)) /\
!n.
FACT (NUMERAL (BIT2 n)) =
NUMERAL (BIT2 n) * FACT (NUMERAL (BIT1 n)) : thm