kernel-Int.dvd_gcd_mul_gcd_iff_dvd_mul
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {k n m : ℤ}, k ∣ ↑(k.gcd n) * ↑(k.gcd m) ↔ k ∣ n * m
test "$(cargo run -q -p axeyum-lean-kernel --example int_theorem_inventory -- dvd_gcd_mul_gcd_iff_dvd_mul 2>/dev/null | /usr/bin/grep -cE '^theorem[[:space:]]+Int\.dvd_gcd_mul_gcd_iff_dvd_mul[[:space:]]')" -ge 1 Evidence notes
build_int_prelude admits Int.dvd_gcd_mul_gcd_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. Built by applying the shared shape at (b,c) := (n, ofNat (k.gcd m)), then chaining one more Iff.trans against the already-proved Int.dvd_mul_gcd_iff_dvd_mul, mirroring nat_prelude/gcd_mul_right_mirrors.rs's dvd_gcd_mul_gcd_iff_dvd_mul one layer up (which is why dvd_mul_gcd_iff_dvd_mul had to be declared first). 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)) (Int.ofNat (Int.gcd x0 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_gcd_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-overlapped Int.dvd_gcd_mul_iff_dvd_mul.