Identifier
F:ml430-nat-dvd-of-forall-prime-mul-dvd-5898723b
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The proposition declared as `Nat.dvd_of_forall_prime_mul_dvd` in the pinned Mathlib v4.30 source.

Formal statement
∀ {a b : ℕ}, (∀ (p : ℕ), Nat.Prime p → p ∣ a → p * a ∣ b) → a ∣ b

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. A factor divides its product Divisibility is transitive [generated] kernel theorem Nat. Every natural number at least 2 <= on the naturals is antisymme A divisor of a positive natural <= cancels a shared successor Every natural number is below i Current fact
19 direct dependencies 0 direct dependents Graph shows the first 8 on each side.

Evidence

kernel-Nat.dvd_of_forall_prime_mul_dvd

Kind
kernel-term
Status
checked

Supports: if every prime p dividing a satisfies p*a | b, then a | b

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

`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate. The hypothesis only needs to fire at ONE prime dividing `a` (any one), not at all of them, so no induction over `a`'s factorization is used -- `a`'s only role is to be `0`, `1`, or `>= 2`: at `a = 0`, the hypothesis at `k = 2` (`2 | 0` via `dvd_zero`) gives `dvd (2*0) b`, and `2*0` computes to `0`, which is already the goal; at `a = 1`, `dvd_mul` at `(1, b)` gives `dvd 1 (1*b) = dvd 1 b` directly, without even consulting the hypothesis; at `a >= 2`, `exists_prime_dvd` supplies a prime `pw | a`, the hypothesis at `k = pw` gives `dvd (pw*a) b`, and `a | (a*pw)` (`dvd_mul` plus `mul_comm`) chains through `dvd_trans` to `a | b`. `nat_theorem_inventory` exits non-zero for a name that does not exist, and the `grep -c` requires the admitted declaration to be printed.

footprint-Nat.dvd_of_forall_prime_mul_dvd

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. A theorem cannot depend on a trusted declaration the environment does not contain, so an empty trusted surface bounds every individual theorem's footprint by [].

compute-Nat.dvd_of_forall_prime_mul_dvd

Kind
kernel-term
Status
checked

Supports: the a=0 branch of the proof genuinely invokes the universally-quantified hypothesis rather than deriving its conclusion some other way

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

Applies the theorem at the concrete instance a=0, b=0 with a genuine (non-degenerate) hypothesis term that the theorem's own `a = 0` branch actually applies at k=2 internally -- it is not skipped. NEGATIVE CONTROL: the identical proof term reused against `dvd 0 1` (false: 0 does not divide 1) is rejected by the kernel with a TypeMismatch/DeclarationValueMismatch. The `a >= 2` branch (the one that consults `exists_prime_dvd` at a genuinely composite `a`) is exercised only symbolically by the theorem's own admission, not by a further concrete instantiation here, since building a concrete `forall k` hypothesis witness at a>=2 would require re-deriving uniqueness of a prime's divisors -- a separate lemma this fact does not claim.

Provenance

{
  "date": "2026-08-29",
  "established_by": "axeyum-lean-kernel build_nat_prelude, lane nat-singles",
  "source": "statement-only extraction of `Nat.dvd_of_forall_prime_mul_dvd` from Mathlib v4.30.0 (see prior_art), independently proved here as `Nat.dvd_of_forall_prime_mul_dvd` (`crates/axeyum-lean-kernel/src/nat_prelude/primes.rs`) and admitted through `Kernel::add_declaration`",
  "prior_art": [
    {
      "who": "the Mathlib contributors",
      "what": "the theorem declaration `Nat.dvd_of_forall_prime_mul_dvd`",
      "where": "mathlib4 commit c5ea00351c28e24afc9f0f84379aa41082b1188f (v4.30.0)",
      "year": 2026,
      "attribution": "the proposition was read from the pinned statement-only inventory; the proof term and tactic trace were not consulted, and this project's proof is independently constructed"
    }
  ]
}