kernel-Nat.prime_dvd_mul_of_dvd_ne
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {p1 p2 n : ℕ}, p1 ≠ p2 → Nat.Prime p1 → Nat.Prime p2 → p1 ∣ n → p2 ∣ n → p1 * p2 ∣ n
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- prime_dvd_mul_of_dvd_ne 2>/dev/null | grep -Ec '^Nat\.prime_dvd_mul_of_dvd_ne[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.prime_dvd_mul_of_dvd_ne` 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. `nat_theorem_inventory` exits non-zero for a name that does not exist, and the `grep -c` count (tested `-ge 1`, not piped into `grep -q`) requires the admitted declaration to actually be printed. Primality is spelled inline (`2 ≤ p ∧ ∀ d, d ∣ p → d = 1 ∨ d = p`) rather than through a named `Nat.Prime` predicate. `coprime_primes`'s `mpr` direction turns the `p1 ≠ p2` hypothesis (with both primality hypotheses) into `Coprime p1 p2`, then `coprime_mul_dvd` (`crt.rs`) combines the two divisibility hypotheses into `dvd (mul p1 p2) n`. Declared after `declare_crt` in the build pipeline for that reason.