Identifier
F:nat-desc-factorial-one
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The falling factorial of n with exactly 1 factor equals n.

Formal statement
theorem Nat.descFactorial_one : ((x0 : AxNat) -> Eq.{1} AxNat (AxNat.descFactorial x0 (AxNat.succ AxNat.zero)) x0)

Dependencies

The graph shows direct ledger edges. Follow a node to open its artifact page.

Direct dependencies appear to the left. The current fact is in the center. Facts that depend directly on it appear to the right. descFactorial(n, k+1) = (n-k) * descFactorial(n, 0) = 1 One is a right identity for mul Current fact
3 direct dependencies 0 direct dependents

Evidence

kernel-Nat.descFactorial_one

Kind
kernel-term
Status
checked

Supports: n.descFactorial 1 = n

Checker command
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- descFactorial_one 2>/dev/null | grep -Ec '^Nat\.descFactorial_one[[:space:]]')" -ge 1
Evidence notes

`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate. `n.descFactorial 1` is defeq (via `descFactorial_succ` at `k := 0`, itself definitional) to `(n - 0) * n.descFactorial 0`, and `n - 0 ≡ n` is itself definitional (`Nat.sub`'s own base case). So the stated goal is defeq to `n * 1 = n`, and this theorem's proof term is literally `Nat.mul_one`'s own proof, applied at `n` -- the kernel accepts it by unifying the stated type against `mul_one`'s inferred type up to full defeq, with no explicit rewrite combinator. `nat_theorem_inventory` exits non-zero for a name that does not exist, and `grep -Ec` consumes the pipe and the count is tested, so the exit status depends on what the run found.

compute-Nat.descFactorial_one

Kind
kernel-term
Status
checked

Supports: the successor-equation unfolding the proof term relies on is exercised at concrete instances elsewhere in the same suite

Checker command
cargo test -p axeyum-lean-kernel --lib nat_prelude::nat_prelude_tests::desc_factorial_computes_and_collapses_past_its_base
Evidence notes

The companion concrete test does not instantiate this exact equation (its concrete instances are 0, 2, 5, 6), but it independently exercises the SAME `descFactorial_succ` unfolding chain this theorem's proof relies on, at `5.descFactorial 5 = 120` and `5.descFactorial 2 = 20`, both with negative reduction controls.

footprint-Nat.descFactorial_one

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- the Nat prelude's trusted surface is empty

Checker command
cargo run -q -p axeyum-lean-kernel --example nat_axiom_inventory -- --require-axiom-free nat
Evidence notes

`nat_axiom_inventory --require-axiom-free nat` enumerates the built Nat environment and exits non-zero unless it admits no Axiom, Opaque or Quotient declaration. Measured 2026-08-28: `nat: axiom=0 opaque=0 quotient=0 total_trusted=0` with `Nat.descFactorial` and its four theorems declared.

Provenance

{
  "date": "2026-08-28",
  "established_by": "axeyum-lean-kernel build_nat_prelude, lane 212-nat-factorial-variants",
  "source": "declare_desc_factorial_one (crates/axeyum-lean-kernel/src/nat_prelude/desc_factorial.rs)"
}