kernel-Nat.dvd_mul_gcd_iff_dvd_mul
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {k n m : ℕ}, k ∣ n * k.gcd m ↔ k ∣ n * m
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- dvd_mul_gcd_iff_dvd_mul 2>/dev/null | grep -Ec '^Nat\.dvd_mul_gcd_iff_dvd_mul[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.dvd_mul_gcd_iff_dvd_mul` through the trusted `Kernel::add_declaration` gate. New proof, lane gcd-mul-right, in `nat_prelude/gcd_mul_right_mirrors.rs`, wired in via `declare_gcd_mul_right_mirrors`. Route: the general shape `dvd_gcd_scaled_iff` applied at (a,b,c):=(k,m,n) gives `Iff (dvd k (gcd(k,m)*n)) (dvd k (m*n))`; `mul_comm` commutes the scaling factor from the right to the left on both sides (`gcd(k,m)*n -> n*gcd(k,m)`, `m*n -> n*m`) to land on the stated form. `nat_theorem_inventory`'s rendered type is `(x0:AxNat)->(x1:AxNat)->(x2:AxNat)->Iff (dvd x0 (mul x1 (gcd x0 x2))) (dvd x0 (mul x1 x2))`, matching this fact's `formal.statement` exactly. `nat_theorem_inventory` exits non-zero for a name that does not exist (measured: exit 1, `0 theorems` on stdout, so `test -ge 1` fails). Verified no substring overlap against the sibling facts `Nat.dvd_gcd_mul_iff_dvd_mul`/`Nat.dvd_gcd_mul_gcd_iff_dvd_mul`: the anchored pattern matched exactly its own row (count 1) in a combined inventory of all three.