awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
⊢ a * a⁻¹ < a * b ↔ 1 < a * b
have rw : 1 < a * b ↔ 1 < a * b
Tactic: rw [mul_inv_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
⊢ b * a < b * b⁻¹ ↔ b * a < 1
have rw : b * a < 1 ↔ b * a < 1
Tactic: rw [mul_inv_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
⊢ 1 < b⁻¹ * a ↔ b < a
have rw : b * 1 < b * (b⁻¹ * a) ↔ b < a
Tactic: rw [← mul_lt_mul_iff_left b, mul_one, mul_inv_cancel_left]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
rw : b * 1 < b * (b⁻¹ * a) ↔ b < a
⊢ 1 < b⁻¹ * a ↔ b < a
have rw₁ : b < b * (b⁻¹ * a) ↔ b < a
Tactic: rw [← mul_lt_mul_iff_left b, mul_one, mul_inv_cancel_left]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
rw : b * 1 < b * (b⁻¹ * a) ↔ b < a
rw₁ : b < b * (b⁻¹ * a) ↔ b < a
⊢ 1 < b⁻¹ * a ↔ b < a
have rw₂ : b < a ↔ b < a
Tactic: rw [← mul_lt_mul_iff_left b, mul_one, mul_inv_cancel_left]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
⊢ b < a * 1 ↔ b < a
have rw : b < a ↔ b < a
Tactic: rw [mul_one]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a : α
⊢ a⁻¹ ≤ 1 ↔ 1 ≤ a
have rw : a⁻¹ * a ≤ 1 * a ↔ 1 ≤ a
Tactic: rw [← mul_le_mul_iff_right a]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a : α
⊢ 1 ≤ a⁻¹ ↔ a ≤ 1
have rw : 1 * a ≤ a⁻¹ * a ↔ a ≤ 1
Tactic: rw [← mul_le_mul_iff_right a]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ a⁻¹ * a ≤ b * a ↔ 1 ≤ b * a
have rw : 1 ≤ b * a ↔ 1 ≤ b * a
Tactic: rw [inv_mul_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ a * b ≤ b⁻¹ * b ↔ a * b ≤ 1
have rw : a * b ≤ 1 ↔ a * b ≤ 1
Tactic: rw [inv_mul_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b c : α
⊢ a * b⁻¹ * b ≤ c * b ↔ a ≤ c * b
have rw : a ≤ c * b ↔ a ≤ c * b
Tactic: rw [inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b c : α
⊢ c * b ≤ a * b⁻¹ * b ↔ c * b ≤ a
have rw : c * b ≤ a ↔ c * b ≤ a
Tactic: rw [inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ a ≤ 1 * b ↔ a ≤ b
have rw : a ≤ b ↔ a ≤ b
Tactic: rw [one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ 1 ≤ a * b⁻¹ ↔ b ≤ a
have rw : 1 * b ≤ a * b⁻¹ * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : 1 * b ≤ a * b⁻¹ * b ↔ b ≤ a
⊢ 1 ≤ a * b⁻¹ ↔ b ≤ a
have rw₁ : b ≤ a * b⁻¹ * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : 1 * b ≤ a * b⁻¹ * b ↔ b ≤ a
rw₁ : b ≤ a * b⁻¹ * b ↔ b ≤ a
⊢ 1 ≤ a * b⁻¹ ↔ b ≤ a
have rw₂ : b ≤ a ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ b ≤ 1 * a ↔ b ≤ a
have rw : b ≤ a ↔ b ≤ a
Tactic: rw [one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
⊢ a⁻¹ < 1 ↔ 1 < a
have rw : a⁻¹ * a < 1 * a ↔ 1 < a
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
rw : a⁻¹ * a < 1 * a ↔ 1 < a
⊢ a⁻¹ < 1 ↔ 1 < a
have rw₁ : 1 < 1 * a ↔ 1 < a
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
rw : a⁻¹ * a < 1 * a ↔ 1 < a
rw₁ : 1 < 1 * a ↔ 1 < a
⊢ a⁻¹ < 1 ↔ 1 < a
have rw₂ : 1 < a ↔ 1 < a
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
⊢ 1 < a⁻¹ ↔ a < 1
have rw : 1 * a < a⁻¹ * a ↔ a < 1
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
rw : 1 * a < a⁻¹ * a ↔ a < 1
⊢ 1 < a⁻¹ ↔ a < 1
have rw₁ : 1 * a < 1 ↔ a < 1
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a : α
rw : 1 * a < a⁻¹ * a ↔ a < 1
rw₁ : 1 * a < 1 ↔ a < 1
⊢ 1 < a⁻¹ ↔ a < 1
have rw₂ : a < 1 ↔ a < 1
Tactic: rw [← mul_lt_mul_iff_right a, inv_mul_cancel, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
⊢ a⁻¹ * a < b * a ↔ 1 < b * a
have rw : 1 < b * a ↔ 1 < b * a
Tactic: rw [inv_mul_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
⊢ a * b < b⁻¹ * b ↔ a * b < 1
have rw : a * b < 1 ↔ a * b < 1
Tactic: rw [inv_mul_cancel]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b c : α
⊢ a * b⁻¹ < c ↔ a < c * b
have rw : a * b⁻¹ * b < c * b ↔ a < c * b
Tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b c : α
rw : a * b⁻¹ * b < c * b ↔ a < c * b
⊢ a * b⁻¹ < c ↔ a < c * b
have rw₁ : a < c * b ↔ a < c * b
Tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b c : α
⊢ c * b < a * b⁻¹ * b ↔ c * b < a
have rw : c * b < a ↔ c * b < a
Tactic: rw [inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
⊢ a * b⁻¹ < 1 ↔ a < b
have rw : a * b⁻¹ * b < 1 * b ↔ a < b
Tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
rw : a * b⁻¹ * b < 1 * b ↔ a < b
⊢ a * b⁻¹ < 1 ↔ a < b
have rw₁ : a < 1 * b ↔ a < b
Tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
rw : a * b⁻¹ * b < 1 * b ↔ a < b
rw₁ : a < 1 * b ↔ a < b
⊢ a * b⁻¹ < 1 ↔ a < b
have rw₂ : a < b ↔ a < b
Tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right, one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
⊢ 1 < a * b⁻¹ ↔ b < a
have rw : 1 * b < a * b⁻¹ * b ↔ b < a
Tactic: rw [← mul_lt_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
rw : 1 * b < a * b⁻¹ * b ↔ b < a
⊢ 1 < a * b⁻¹ ↔ b < a
have rw₁ : b < a * b⁻¹ * b ↔ b < a
Tactic: rw [← mul_lt_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
rw : 1 * b < a * b⁻¹ * b ↔ b < a
rw₁ : b < a * b⁻¹ * b ↔ b < a
⊢ 1 < a * b⁻¹ ↔ b < a
have rw₂ : b < a ↔ b < a
Tactic: rw [← mul_lt_mul_iff_right b, one_mul, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulRightStrictMono α
a b : α
⊢ b < 1 * a ↔ b < a
have rw : b < a ↔ b < a
Tactic: rw [one_mul]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b : α
inst_3 : MulRightMono α
⊢ a⁻¹ ≤ b⁻¹ ↔ b ≤ a
have rw : a * a⁻¹ * b ≤ a * b⁻¹ * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_left a, ← mul_le_mul_iff_right b]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
inst_3 : MulRightMono α
⊢ a * b⁻¹ ≤ d⁻¹ * c ↔ d * a ≤ c * b
have rw : d * (a * b⁻¹) ≤ d * (d⁻¹ * c) ↔ d * a ≤ c * b
Tactic: rw [← mul_le_mul_iff_left d, ← mul_le_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
inst_3 : MulRightMono α
rw : d * (a * b⁻¹) ≤ d * (d⁻¹ * c) ↔ d * a ≤ c * b
⊢ a * b⁻¹ ≤ d⁻¹ * c ↔ d * a ≤ c * b
have rw₁ : d * (a * b⁻¹) * b ≤ d * (d⁻¹ * c) * b ↔ d * a ≤ c * b
Tactic: rw [← mul_le_mul_iff_left d, ← mul_le_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
inst_3 : MulRightMono α
rw : d * (a * b⁻¹) ≤ d * (d⁻¹ * c) ↔ d * a ≤ c * b
rw₁ : d * (a * b⁻¹) * b ≤ d * (d⁻¹ * c) * b ↔ d * a ≤ c * b
⊢ a * b⁻¹ ≤ d⁻¹ * c ↔ d * a ≤ c * b
have rw₂ : d * (a * b⁻¹) * b ≤ c * b ↔ d * a ≤ c * b
Tactic: rw [← mul_le_mul_iff_left d, ← mul_le_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
inst_3 : MulRightMono α
rw : d * (a * b⁻¹) ≤ d * (d⁻¹ * c) ↔ d * a ≤ c * b
rw₁ : d * (a * b⁻¹) * b ≤ d * (d⁻¹ * c) * b ↔ d * a ≤ c * b
rw₂ : d * (a * b⁻¹) * b ≤ c * b ↔ d * a ≤ c * b
⊢ a * b⁻¹ ≤ d⁻¹ * c ↔ d * a ≤ c * b
have rw₃ : d * (a * b⁻¹ * b) ≤ c * b ↔ d * a ≤ c * b
Tactic: rw [← mul_le_mul_iff_left d, ← mul_le_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
inst_3 : MulRightMono α
rw : d * (a * b⁻¹) ≤ d * (d⁻¹ * c) ↔ d * a ≤ c * b
rw₁ : d * (a * b⁻¹) * b ≤ d * (d⁻¹ * c) * b ↔ d * a ≤ c * b
rw₂ : d * (a * b⁻¹) * b ≤ c * b ↔ d * a ≤ c * b
rw₃ : d * (a * b⁻¹ * b) ≤ c * b ↔ d * a ≤ c * b
⊢ a * b⁻¹ ≤ d⁻¹ * c ↔ d * a ≤ c * b
have rw₄ : d * a ≤ c * b ↔ d * a ≤ c * b
Tactic: rw [← mul_le_mul_iff_left d, ← mul_le_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
inst_3 : MulRightStrictMono α
⊢ a⁻¹ < b⁻¹ ↔ b < a
have rw : a * a⁻¹ * b < a * b⁻¹ * b ↔ b < a
Tactic: rw [← mul_lt_mul_iff_left a, ← mul_lt_mul_iff_right b]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
inst_3 : MulRightStrictMono α
⊢ a⁻¹ < b ↔ b⁻¹ < a
have rw : b⁻¹ < a⁻¹⁻¹ ↔ b⁻¹ < a
Tactic: rw [← inv_lt_inv_iff, inv_inv]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
inst_3 : MulRightStrictMono α
rw : b⁻¹ < a⁻¹⁻¹ ↔ b⁻¹ < a
⊢ a⁻¹ < b ↔ b⁻¹ < a
have rw₁ : b⁻¹ < a ↔ b⁻¹ < a
Tactic: rw [← inv_lt_inv_iff, inv_inv]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
inst_3 : MulRightStrictMono α
⊢ a < b⁻¹ ↔ b < a⁻¹
have rw : b⁻¹⁻¹ < a⁻¹ ↔ b < a⁻¹
Tactic: rw [← inv_lt_inv_iff, inv_inv]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b : α
inst_3 : MulRightStrictMono α
rw : b⁻¹⁻¹ < a⁻¹ ↔ b < a⁻¹
⊢ a < b⁻¹ ↔ b < a⁻¹
have rw₁ : b < a⁻¹ ↔ b < a⁻¹
Tactic: rw [← inv_lt_inv_iff, inv_inv]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
inst_3 : MulRightStrictMono α
⊢ a * b⁻¹ < d⁻¹ * c ↔ d * a < c * b
have rw : d * (a * b⁻¹) < d * (d⁻¹ * c) ↔ d * a < c * b
Tactic: rw [← mul_lt_mul_iff_left d, ← mul_lt_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
inst_3 : MulRightStrictMono α
rw : d * (a * b⁻¹) < d * (d⁻¹ * c) ↔ d * a < c * b
⊢ a * b⁻¹ < d⁻¹ * c ↔ d * a < c * b
have rw₁ : d * (a * b⁻¹) * b < d * (d⁻¹ * c) * b ↔ d * a < c * b
Tactic: rw [← mul_lt_mul_iff_left d, ← mul_lt_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
inst_3 : MulRightStrictMono α
rw : d * (a * b⁻¹) < d * (d⁻¹ * c) ↔ d * a < c * b
rw₁ : d * (a * b⁻¹) * b < d * (d⁻¹ * c) * b ↔ d * a < c * b
⊢ a * b⁻¹ < d⁻¹ * c ↔ d * a < c * b
have rw₂ : d * (a * b⁻¹) * b < c * b ↔ d * a < c * b
Tactic: rw [← mul_lt_mul_iff_left d, ← mul_lt_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
inst_3 : MulRightStrictMono α
rw : d * (a * b⁻¹) < d * (d⁻¹ * c) ↔ d * a < c * b
rw₁ : d * (a * b⁻¹) * b < d * (d⁻¹ * c) * b ↔ d * a < c * b
rw₂ : d * (a * b⁻¹) * b < c * b ↔ d * a < c * b
⊢ a * b⁻¹ < d⁻¹ * c ↔ d * a < c * b
have rw₃ : d * (a * b⁻¹ * b) < c * b ↔ d * a < c * b
Tactic: rw [← mul_lt_mul_iff_left d, ← mul_lt_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
inst_3 : MulRightStrictMono α
rw : d * (a * b⁻¹) < d * (d⁻¹ * c) ↔ d * a < c * b
rw₁ : d * (a * b⁻¹) * b < d * (d⁻¹ * c) * b ↔ d * a < c * b
rw₂ : d * (a * b⁻¹) * b < c * b ↔ d * a < c * b
rw₃ : d * (a * b⁻¹ * b) < c * b ↔ d * a < c * b
⊢ a * b⁻¹ < d⁻¹ * c ↔ d * a < c * b
have rw₄ : d * a < c * b ↔ d * a < c * b
Tactic: rw [← mul_lt_mul_iff_left d, ← mul_lt_mul_iff_right b, mul_inv_cancel_left, mul_assoc,
    inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c : α
⊢ c⁻¹ * a ≤ b ↔ a ≤ b * c
have rw : a ≤ c * b ↔ a ≤ b * c
Tactic: rw [inv_mul_le_iff_le_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c : α
rw : a ≤ c * b ↔ a ≤ b * c
⊢ c⁻¹ * a ≤ b ↔ a ≤ b * c
have rw₁ : a ≤ b * c ↔ a ≤ b * c
Tactic: rw [inv_mul_le_iff_le_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c : α
⊢ a * b⁻¹ ≤ c ↔ a ≤ b * c
have rw : a * b⁻¹ ≤ c ↔ b⁻¹ * a ≤ c
Tactic: rw [← inv_mul_le_iff_le_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c : α
rw : a * b⁻¹ ≤ c ↔ b⁻¹ * a ≤ c
⊢ a * b⁻¹ ≤ c ↔ a ≤ b * c
have rw₁ : b⁻¹ * a ≤ c ↔ b⁻¹ * a ≤ c
Tactic: rw [← inv_mul_le_iff_le_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
⊢ a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b
have rw : a * b⁻¹ ≤ d⁻¹ * c ↔ a * d ≤ c * b
Tactic: rw [mul_comm c, mul_inv_le_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
rw : a * b⁻¹ ≤ d⁻¹ * c ↔ a * d ≤ c * b
⊢ a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b
have rw₁ : d * a ≤ c * b ↔ a * d ≤ c * b
Tactic: rw [mul_comm c, mul_inv_le_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LE α
inst_2 : MulLeftMono α
a b c d : α
rw : a * b⁻¹ ≤ d⁻¹ * c ↔ a * d ≤ c * b
rw₁ : d * a ≤ c * b ↔ a * d ≤ c * b
⊢ a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b
have rw₂ : a * d ≤ c * b ↔ a * d ≤ c * b
Tactic: rw [mul_comm c, mul_inv_le_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c : α
⊢ c⁻¹ * a < b ↔ a < b * c
have rw : a < c * b ↔ a < b * c
Tactic: rw [inv_mul_lt_iff_lt_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c : α
rw : a < c * b ↔ a < b * c
⊢ c⁻¹ * a < b ↔ a < b * c
have rw₁ : a < b * c ↔ a < b * c
Tactic: rw [inv_mul_lt_iff_lt_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c : α
⊢ a * b⁻¹ < c ↔ a < b * c
have rw : a * b⁻¹ < c ↔ b⁻¹ * a < c
Tactic: rw [← inv_mul_lt_iff_lt_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c : α
rw : a * b⁻¹ < c ↔ b⁻¹ * a < c
⊢ a * b⁻¹ < c ↔ a < b * c
have rw₁ : b⁻¹ * a < c ↔ b⁻¹ * a < c
Tactic: rw [← inv_mul_lt_iff_lt_mul, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
⊢ a * b⁻¹ < c * d⁻¹ ↔ a * d < c * b
have rw : a * b⁻¹ < d⁻¹ * c ↔ a * d < c * b
Tactic: rw [mul_comm c, mul_inv_lt_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
rw : a * b⁻¹ < d⁻¹ * c ↔ a * d < c * b
⊢ a * b⁻¹ < c * d⁻¹ ↔ a * d < c * b
have rw₁ : d * a < c * b ↔ a * d < c * b
Tactic: rw [mul_comm c, mul_inv_lt_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : CommGroup α
inst_1 : LT α
inst_2 : MulLeftStrictMono α
a b c d : α
rw : a * b⁻¹ < d⁻¹ * c ↔ a * d < c * b
rw₁ : d * a < c * b ↔ a * d < c * b
⊢ a * b⁻¹ < c * d⁻¹ ↔ a * d < c * b
have rw₂ : a * d < c * b ↔ a * d < c * b
Tactic: rw [mul_comm c, mul_inv_lt_inv_mul_iff, mul_comm]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ 1 ≤ a / b ↔ b ≤ a
have rw : 1 * b ≤ a / b * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : 1 * b ≤ a / b * b ↔ b ≤ a
⊢ 1 ≤ a / b ↔ b ≤ a
have rw₁ : b ≤ a / b * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : 1 * b ≤ a / b * b ↔ b ≤ a
rw₁ : b ≤ a / b * b ↔ b ≤ a
⊢ 1 ≤ a / b ↔ b ≤ a
have rw₂ : b ≤ a * b⁻¹ * b ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : 1 * b ≤ a / b * b ↔ b ≤ a
rw₁ : b ≤ a / b * b ↔ b ≤ a
rw₂ : b ≤ a * b⁻¹ * b ↔ b ≤ a
⊢ 1 ≤ a / b ↔ b ≤ a
have rw₃ : b ≤ a ↔ b ≤ a
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
⊢ a / b ≤ 1 ↔ a ≤ b
have rw : a / b * b ≤ 1 * b ↔ a ≤ b
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : a / b * b ≤ 1 * b ↔ a ≤ b
⊢ a / b ≤ 1 ↔ a ≤ b
have rw₁ : a / b * b ≤ b ↔ a ≤ b
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : a / b * b ≤ 1 * b ↔ a ≤ b
rw₁ : a / b * b ≤ b ↔ a ≤ b
⊢ a / b ≤ 1 ↔ a ≤ b
have rw₂ : a * b⁻¹ * b ≤ b ↔ a ≤ b
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b : α
rw : a / b * b ≤ 1 * b ↔ a ≤ b
rw₁ : a / b * b ≤ b ↔ a ≤ b
rw₂ : a * b⁻¹ * b ≤ b ↔ a ≤ b
⊢ a / b ≤ 1 ↔ a ≤ b
have rw₃ : a ≤ b ↔ a ≤ b
Tactic: rw [← mul_le_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b c : α
⊢ a ≤ c / b ↔ a * b ≤ c
have rw : a * b ≤ c / b * b ↔ a * b ≤ c
Tactic: rw [← mul_le_mul_iff_right b, div_eq_mul_inv, inv_mul_cancel_right]
-- Lean 4 proof step from Mathlib.Algebra.Order.Group.Unbundled.Basic (goal)
Goal:
α : Type u
inst : Group α
inst_1 : LE α
inst_2 : MulRightMono α
a b c : α
rw : a * b ≤ c / b * b ↔ a * b ≤ c
⊢ a ≤ c / b ↔ a * b ≤ c
have rw₁ : a * b ≤ c * b⁻¹ * b ↔ a * b ≤ c
Tactic: rw [← mul_le_mul_iff_right b, div_eq_mul_inv, inv_mul_cancel_right]