Identifier
F:nat-multichoose-zero-right
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The number of size-0 multisets from an n-element type is 1 (the empty multiset), for any n.

Formal statement
theorem Nat.multichoose_zero_right : ((x0 : AxNat) -> Eq.{1} AxNat (AxNat.multichoose x0 AxNat.zero) (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. Choosing zero elements has exac Current fact
1 direct dependencies 0 direct dependents

Evidence

kernel-Nat.multichoose_zero_right

Kind
kernel-term
Status
checked

Supports: n.multichoose 0 = 1

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

`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate. `Nat.multichoose` is declared (`nat_prelude/multichoose.rs`) as the plain, non-recursive abbreviation `fun n k => choose (pred (add n k)) k`, so `n.multichoose 0` reduces by β/δ alone to `choose (pred (add n 0)) 0`, and `Nat.choose_zero_right : ∀ m, choose m 0 = 1` proves `choose _ 0 = 1` for ANY first argument -- instantiating it at `pred (add n 0)` closes the goal directly, with no need to reduce that expression further and no dependency on `Nat.multichoose_one`/`_one_right`. `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.multichoose_zero_right

Kind
kernel-term
Status
checked

Supports: the abbreviation computes the right value at a concrete instance, not merely an opaque application

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

`Kernel::def_eq` reduces `0.multichoose 0` directly (definition unfolding through `choose 0 0`) and confirms it is `1` (the empty multiset), with a negative reduction control at a different pair (`3.multichoose 2` must NOT be def-eq to `10`, the value a `pred`-dropping copy-paste would compute) so the assertion cannot pass on a vacuous `def_eq`.

footprint-Nat.multichoose_zero_right

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. `Nat.multichoose` is not a recursion at all -- a plain abbreviation over already-declared `Nat.add`/`Nat.pred`/`Nat.choose` -- so nothing here was ever at risk of needing a fuel device or `WellFounded`. 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_multichoose_zero_right (crates/axeyum-lean-kernel/src/nat_prelude/multichoose.rs)"
}