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
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.