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

Recorded description

For every n, clog_0(n) = 0.

Formal statement
theorem Nat.clog_zero_left : ((x0 : AxNat) -> Eq.{1} AxNat (AxNat.clog AxNat.zero x0) 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. Current fact
0 direct dependencies 0 direct dependents

Evidence

kernel-Nat.clog_zero_left

Kind
kernel-term
Status
checked

Supports: For every n, clog_0(n) = 0.

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

`build_nat_prelude` admits this theorem 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. The guard's OUTER cut here is `Nat.ble 2 b` -- the opposite nesting from `log.rs`, chosen because this lemma fixes `b = 0` and varies `n`: `ble (succ (succ zero)) zero` reduces to `Bool.false` regardless of `n`, so the whole term collapses to `0` in every fuel case with a single rewrite. The induction on `n` exposes the fuel's constructor and nothing more -- the induction hypothesis is never used, and both minor premises are `Eq.refl`. `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. Controls run 2026-08-28: the real name exits 0 and `clog_zero_leftXX` exits 1.

compute-Nat.clog_zero_left

Kind
kernel-term
Status
checked

Supports: the fuel recursion terminates with the right value, not with an exhausted fuel

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

A fuel-based definition is only correct if the fuel always suffices, and an EXHAUSTED fuel returns `0` -- which is exactly what a wrong answer looks like for a logarithm. So the computation test is the fuel-sufficiency check: `Kernel::def_eq` reduces `clog 2 8` to `3`, `clog 2 7` to `3` (deliberately chosen to differ from the FLOOR logarithm `log 2 7 = 2`, so the test cannot pass by accidentally computing the wrong function), `clog 2 5` to `3` (three levels of the recursive `(n + b - 1) / b` step), `clog 5 4` to `1` and `clog 3 9` to `2`, with two negative controls differing by ONE successor (`clog 2 7 = 4` and `clog 3 9 = 1` must both be rejected) so that `def_eq` cannot pass vacuously.

footprint-Nat.clog_zero_left

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. Mathlib's `Nat.clog` is defined by WELL-FOUNDED recursion on `(n + b - 1) / b`, and the Lean equation compiler's route to that carries `Quot.sound`/`propext`. The fuel-based structural definition in `nat_prelude/clog.rs` -- the same device `nat_prelude/log.rs` uses for `Nat.log` -- was chosen so that this row stays empty, and this command is what makes the claim falsifiable rather than asserted.

Provenance

{
  "date": "2026-08-28",
  "established_by": "axeyum-lean-kernel build_nat_prelude, lane 204-nat-clog",
  "source": "one of the four boundary equations `declare_clog_all` (`crates/axeyum-lean-kernel/src/nat_prelude/clog.rs`) admits alongside the `Nat.clogAux`/`Nat.clog` definitions"
}