kernel-Nat.choose_mono
- Kind
- kernel-term
- Status
- checked
Supports: ∀ c a a', Le a a' → Le (choose a c) (choose a' c)
test "$(cargo run -q -p axeyum-lean-kernel --release --example nat_theorem_inventory -- choose_mono 2>/dev/null | grep -Ec '^Nat\.choose_mono[[:space:]]+4[[:space:]]+\(\(x0 : AxNat\) -> \(\(x1 : AxNat\) -> \(\(x2 : AxNat\) -> \(\(x3 : AxNat\.le x1 x2\) -> AxNat\.le \(AxNat\.choose x1 x0\) \(AxNat\.choose x2 x0\)\)\)\)\)$')" -ge 1 Evidence notes
The kernel re-infers the theorem type from the constructed term. Lean's `Monotone (fun a => a.choose b)` unfolds to `forall x y, x <= y -> choose x b <= choose y b`, exactly the rendered core proposition checked here (rendered with `b`/`x`/`y` as `x0`/`x1`/`x2`). The proof specializes the already-admitted `Nat.choose_le_choose` with its arguments permuted so the fixed column comes first; no new induction. The kernel-observed dependency closure, not this note, is authoritative.