kernel-Int.gcd_div_gcd_div_gcd
- Kind
- kernel-term
- Status
- checked
Supports: The proposition declared as `Int.gcd_div_gcd_div_gcd` in the pinned Mathlib v4.30 source.
cargo test -p axeyum-lean-kernel --lib int_prelude:: Evidence notes
`Int.gcd_div_gcd_div_gcd` in `crates/axeyum-lean-kernel/src/int_prelude/gcd.rs` (`declare_gcd_div_gcd_div_gcd`). An INDEPENDENT Bezout route, not a corollary of `Int.gcd_div` (not proved here for a general, possibly negative, divisor -- see `docs/plan/status/234-int-gcd-div.md`); the divisor here, `ofNat (gcd i j)`, is always nonnegative, so that gap never comes up. With `g := gcd i j`, `c := ofNat g`, `qi := i.ediv c`, `qj := j.ediv c`, `u := gcdA i j`, `v := gcdB i j`, `X := qi*u + qj*v`: `c` divides `i`/`j` exactly (`gcd_dvd_left`/`_right` + `emod_eq_zero_iff_dvd` + `ediv_add_emod`), giving `i = c*qi`, `j = c*qj`; Bezout (`gcd_eq_gcd_ab_witnesses`) plus substitution and factoring (`mul_assoc`/`left_distrib`) gives `c = c*X`, hence `c*1 = c*X`; taking `natAbs` (`nat_abs_mul`) and cancelling the shared positive factor `g` (`Nat.mul_left_cancel_of_pos`, fed the hypothesis `h : Nat.lt zero g` directly for the `Le one g` premise -- `Nat.lt` unfolds to exactly that shape) gives `natAbs X = 1`; `gcd qi qj` divides `qi*u` and `qj*v` (`gcd_dvd_left`/`_right` + `dvd_mul_right` + `dvd_trans`), hence divides their sum `X` (`dvd_add`), hence divides `natAbs X = 1` (`nat_abs_dvd_nat_abs_of_dvd`), hence equals `1` (`Nat.eq_one_of_dvd_one`). No new axiom, no new public lemma outside `gcd.rs`; every intermediate lemma used already existed.