Identifier
F:nat-prod-range-eq-one-of-below
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

If a function is 1 at every point strictly below k, its product over [0, k) is 1. The hypothesis lives inside the induction's motive, because the bound moves as the induction proceeds.

Formal statement
theorem Nat.prodRange_eq_one_of_below : ((x0 : ((x0 : AxNat) -> AxNat)) -> ((x1 : AxNat) -> ((x2 : ((x2 : AxNat) -> ((x3 : AxNat.lt x2 x1) -> Eq.{1} AxNat (x0 x2) (AxNat.succ AxNat.zero)))) -> Eq.{1} AxNat (AxNat.prodRange x0 x1) (AxNat.succ AxNat.zero))))

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. Mathlib v4.30 source propositio Current fact The product of a singleton mult
1 direct dependencies 1 direct dependents

Evidence

nat-prod-range-eq-one-of-below-1

Kind
kernel-term
Status
checked

Supports: Nat.prodRange_eq_one_of_below is admitted by the trusted kernel gate with the type recorded in formal.statement.

Checker command
out=$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- prodRange_eq_one_of_below 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^Nat\.prodRange_eq_one_of_below.6.\(\(x0 : \(\(x0 : AxNat\) -> AxNat\)\) -> \(\(x1 : AxNat\) -> \(\(x2 : \(\(x2 : AxNat\) -> \(\(x3 : AxNat\.lt x2 x1\) -> Eq\.\{1\} AxNat \(x0 x2\) \(AxNat\.succ AxNat\.zero\)\)\)\) -> Eq\.\{1\} AxNat \(AxNat\.prodRange x0 x1\) \(AxNat\.succ AxNat\.zero\)\)\)\)$')" = 1
Evidence notes

`build_nat_prelude` admits this theorem only through the trusted kernel gate, so a successful build IS the type-check. The pattern pins the ARITY and the FULL rendered type, not the theorem's presence: `scripts/new-fact.py` rejected a name-only pattern as population-only, because it catches the row disappearing but not the statement changing inside a row that is still there.

footprint-nat-prod-range-eq-one-of-below

Kind
instance-pin
Status
checked

Supports: axiom_footprint: [] -- the Nat environment admits no trusted declaration

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

Reports `nat: axiom=0 opaque=0 quotient=0 total_trusted=0` over the FULL trusted surface (Axiom, Opaque and Quotient), not `Declaration::Axiom` alone, and exits non-zero unless the surface is empty. The enumeration is per-environment rather than per-theorem; it bounds this theorem's footprint because a proof cannot depend on a trusted declaration the environment does not contain. Read directly from `Kernel::axiom_footprint` via `theorem_axiom_footprint`, this theorem's row prints footprint size 0 and an empty axiom column, and all 904 `nat` rows do. (Count the tool's OWN summary line, not `grep -c '^nat'` -- the summary starts with `nat:` too, so the naive count is 905.)

Provenance

{
  "date": "2026-09-02",
  "established_by": "axeyum-lean-kernel build_nat_prelude",
  "source": "theorem name and canonical type read directly via nat_theorem_inventory, which prints render_lean of the admitted type; declared by `nat_prelude/factorization_multiset.rs` (lane nat-factorization)."
}