Identifier
F:nat-prime-counting-prime-unbounded
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

For every k there is an n with k <= pi'(n): the prime-counting function takes arbitrarily large values. This is Euclid's theorem in counting form.

Formal statement
theorem Nat.primeCounting'_unbounded : ((x0 : AxNat) -> Exists.{1} AxNat (fun (x1 : AxNat) => AxNat.le x0 (AxNat.primeCounting' x1)))

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. There is no largest prime A prime has exactly two divisor The prime-counting function is <= on the naturals is transitiv [generated] kernel theorem Nat. Zero is a lower bound for every Current fact
6 direct dependencies 0 direct dependents

Evidence

kernel-Nat.primeCounting'_unbounded

Kind
kernel-term
Status
checked

Supports: pi' takes arbitrarily large values

Checker command
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- 'Nat.primeCounting'_unbounded' 2>/dev/null | grep -xFc 'Nat.primeCounting'_unbounded	1	((x0 : AxNat) -> Exists.{1} AxNat (fun (x1 : AxNat) => AxNat.le x0 (AxNat.primeCounting' x1)))')" -ge 1
Evidence notes

Induction on k. The base takes the witness 0 and `Nat.zero_le`. The step eliminates the hypothesis' witness n, takes a prime p > n from `Nat.exists_prime_gt`, and uses the witness succ p: pi'(succ p) = succ (pi'(p)) >= succ (pi'(n)) >= succ k. The first equality is `countRange_succ_of_true`, which needs `Eq Bool (isPrime p) true` -- and that is exactly where `F:nat-is-prime-eq-true-of-prime` is spent. Without it the two halves do not meet and this statement is not reachable from anything else in the prelude.

footprint-Nat.primeCounting'_unbounded

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` bounds the footprint by enumerating the whole trusted surface: a theorem cannot depend on a trusted declaration the environment does not contain. All three kinds are covered -- counting `Declaration::Axiom` alone would not suffice, because `Opaque` has no proof body and `Quotient` admits `Quot.sound`. The module's own test `the_prime_counting_shelf_is_admitted_and_axiom_free` additionally asserts `Environment::contains` BEFORE reading the footprint, because `axiom_footprint` returns an empty set for a name that was never declared.

Provenance

{
  "date": "2026-09-06",
  "established_by": "lane chebyshev-pi-bounds (ADR-1655), roadmap W3-11",
  "source": "statement authored here against this kernel's own vocabulary; nothing copied",
  "prior_art": [
    {
      "who": "Euclid",
      "what": "Elements, Book IX, Proposition 20 (the set form)",
      "year": -300,
      "attribution": "standard textbook attribution; this lane did not consult the primary source"
    }
  ]
}