kernel-Nat.add_descFactorial_eq_ascFactorial
- Kind
- kernel-term
- Status
- checked
Supports: ∀ (n k : ℕ), (n + k).descFactorial k = (n + 1).ascFactorial k
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- add_descFactorial_eq_ascFactorial 2>/dev/null | /usr/bin/grep -Ec '^Nat\.add_descFactorial_eq_ascFactorial[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.add_descFactorial_eq_ascFactorial` through the trusted `Kernel::add_declaration` gate, declared in new module `nat_prelude/add_desc_factorial_asc_factorial.rs`. No induction: both sides already have a closed form through the same shared RHS `k! * choose (n+k) k` -- `Nat.descFactorial_eq_factorial_mul_choose` instantiated at `(n+k, k)` and `Nat.ascFactorial_succ_eq_factorial_mul_choose` instantiated at `(n, k)` -- chained through that shared term (`Kernel::trans`/`Kernel::symm`, no new induction principle). `nat_theorem_inventory`'s rendered type is `((x0 : AxNat) -> ((x1 : AxNat) -> Eq.{1} AxNat (AxNat.descFactorial (AxNat.add x0 x1) x1) (AxNat.ascFactorial (AxNat.succ x0) x1)))`, matching this fact's `formal.statement` (`AxNat.succ x0` is `n+1`). The `-ge 1` count-based test (not `grep -q`) requires the admitted declaration to actually be printed; grepping a made-up name greps to `0`.