Cast of factorials #
This file allows calculating factorials (including ascending and descending ones) as elements of a semiring.
This is particularly crucial for Nat.descFactorial
as subtraction on ℕ
does not correspond
to subtraction on a general semiring. For example, we can't rely on existing cast lemmas to prove
↑(a.descFactorial 2) = ↑a * (↑a - 1)
. We must use the fact that, whenever ↑(a - 1)
is not equal
to ↑a - 1
, the other factor is 0
anyway.
Convenience lemma. The a - 1
is not using truncated subtraction, as opposed to the definition
of Nat.descFactorial
as a natural.