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

Recorded description

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

Formal statement
theorem Nat.ascFactorial_one : ((x0 : AxNat) -> Eq.{1} AxNat (AxNat.ascFactorial 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. ascFactorial(n, k+1) = (n+k) * ascFactorial(n, 0) = 1 One is a right identity for mul Current fact
3 direct dependencies 0 direct dependents

Evidence

kernel-Nat.ascFactorial_one

Kind
kernel-term
Status
checked

Supports: n.ascFactorial 1 = n

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

`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate. `n.ascFactorial 1` is defeq (via `ascFactorial_succ` at `k := 0`, itself definitional) to `(n + 0) * n.ascFactorial 0`, and `n + 0 ≡ n` is itself definitional (`Nat.add`'s own base case, right-recursive, holds for any `n`). 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, exactly mirroring `F:nat-desc-factorial-one`. `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.ascFactorial_one

Kind
kernel-term
Status
checked

Supports: the equation holds at a concrete instance, not merely symbolically

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

The companion concrete test instantiates this exact equation directly: `5.ascFactorial 1` reduces to `5`, exercising the same `ascFactorial_succ` + `mul_one` unfolding chain this theorem's proof relies on.

footprint-Nat.ascFactorial_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.ascFactorial` and its three theorems, and `Nat.multichoose` and its three theorems, all declared.

Provenance

{
  "date": "2026-08-28",
  "established_by": "axeyum-lean-kernel build_nat_prelude, lane nat-asc-multichoose",
  "source": "declare_asc_factorial_one (crates/axeyum-lean-kernel/src/nat_prelude/asc_factorial.rs)"
}