kernel-Nat.mod_eq_cancel_left_div_gcd_general
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {m a b c d : ℕ}, 0 < m → c ≡ d [MOD m] → c * a ≡ d * b [MOD m] → a ≡ b [MOD m / m.gcd c]
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- mod_eq_cancel_left_div_gcd_general 2>/dev/null | grep -Ec '^Nat\.mod_eq_cancel_left_div_gcd_general[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.mod_eq_cancel_left_div_gcd_general` (Mathlib's `Nat.ModEq.cancel_left_div_gcd'` -- Rust identifiers cannot carry `'`, so the field/kernel name carries the `_general` suffix this development uses for other primed Mathlib names) through the trusted `Kernel::add_declaration` gate. New proof, lane modeq-div-gcd, in `nat_prelude/modeq_cancel_div_gcd.rs`. Not re-derived from scratch: reduces to `Nat.mod_eq_cancel_left_div_gcd` via `Nat.mod_eq_mul_right`/`Nat.mod_eq_trans` (`c ≡ d [MOD m]` symmetrized and scaled by `b` gives `d*b ≡ c*b [MOD m]`, transitively chained against the hypothesis `c*a ≡ d*b [MOD m]` to reach `c*a ≡ c*b [MOD m]`), exactly Mathlib's own proof (`(h.trans (hcd.symm.mul_right b)).cancel_left_div_gcd hm`). `nat_theorem_inventory`'s rendered type matches this fact's `formal.statement` exactly. `nat_theorem_inventory` exits non-zero (0 rows) for a bogus name (measured), and does not collide with the sibling `F:ml430-nat-modeq-cancel-left-div-gcd-57ef8287` under the anchored pattern (see that fact's own evidence note).