kernel-Nat.choose_le_choose
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {a b : ℕ} (c : ℕ), a ≤ b → a.choose c ≤ b.choose c
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- choose_le_choose 2>/dev/null | grep -Ec '^Nat\.choose_le_choose[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.choose_le_choose` through the trusted `Kernel::add_declaration` gate, which re-checks the proof term against the stated type, so producing this row at all is a machine-checked proof. `nat_theorem_inventory` exits non-zero for a name that does not exist, and the `grep -c` count (tested `-ge 1`, not piped into `grep -q`) requires the admitted declaration to actually be printed. Route: `d0 := sub b a`; `sub_add_cancel(a, b, h) : add d0 a = b`; `add_comm(d0, a)` flips the addend order to `add a d0 = b`; `choose_le_add(a, d0, c) : choose a c ≤ choose (add a d0) c` transports along that equation to `choose a c ≤ choose b c`. Kernel accepted the term on the first attempt.