Lean4
theorem isRat_le_true [Ring α] [LinearOrder α] [IsStrictOrderedRing α] :
{a b : α} →
{na nb : ℤ} →
{da db : ℕ} → IsRat a na da → IsRat b nb db → decide (Int.mul na (.ofNat db) ≤ Int.mul nb (.ofNat da)) → a ≤ b
| _, _, _, _, da, db, ⟨_, rfl⟩, ⟨_, rfl⟩, h =>
by
have h := Int.cast_mono (R := α) <| of_decide_eq_true h
have ha : 0 ≤ ⅟(da : α) := invOf_nonneg.mpr <| Nat.cast_nonneg da
have hb : 0 ≤ ⅟(db : α) := invOf_nonneg.mpr <| Nat.cast_nonneg db
have h := (mul_le_mul_of_nonneg_left · hb) <| mul_le_mul_of_nonneg_right h ha
rw [← mul_assoc, Int.commute_cast] at h
simp only [Int.ofNat_eq_coe, Int.mul_def, Int.cast_mul, Int.cast_natCast, mul_invOf_cancel_right'] at h
rwa [Int.commute_cast] at h