kernel-Int.dvd_gcd_mul_iff_dvd_mul
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {k n m : ℤ}, k ∣ ↑(k.gcd n) * m ↔ k ∣ n * m
test "$(cargo run -q -p axeyum-lean-kernel --example int_theorem_inventory -- dvd_gcd_mul_iff_dvd_mul 2>/dev/null | /usr/bin/grep -cE '^theorem[[:space:]]+Int\.dvd_gcd_mul_iff_dvd_mul[[:space:]]')" -ge 1 Evidence notes
build_int_prelude admits Int.dvd_gcd_mul_iff_dvd_mul through the trusted Kernel::add_declaration gate, so producing this row at all is a machine-checked proof. New proof, lane int-gcd-mul-transport: int_prelude/gcd_scaled_mirrors.rs, transporting the already-proved Nat-level Nat.dvd_gcd_mul_iff_dvd_mul (nat_prelude/gcd_mul_right_mirrors.rs, built on Nat.gcd_mul_right, nat_prelude/gcd_mul_right.rs) across Int.gcd's natAbs bridge (nat_abs_dvd_nat_abs_of_dvd/dvd_of_nat_abs_dvd/nat_abs_mul, int_prelude/gcd.rs). No new base algebra or Int.rec/Nat.rec case split. int_theorem_inventory's rendered type is `(x0:Int)->(x1:Int)->(x2:Int)->Iff (Int.dvd x0 (Int.mul (Int.ofNat (Int.gcd x0 x1)) x2)) (Int.dvd x0 (Int.mul x1 x2))`, matching this fact's formal.statement character for character (x0/x1/x2 = k/n/m). int_theorem_inventory exits non-zero for a name that does not exist (verified: dvd_gcd_mul_iff_dvd_mul_bogus_xyz -> exit 1, "no Int declaration matches"), and the anchored grep -c (tested -ge 1, not piped through grep -q) requires the exact name followed by whitespace, so it does not also match the substring-overlapping sibling Int.dvd_gcd_mul_gcd_iff_dvd_mul.